diff --git a/Common/ConsoleListener.cpp b/Common/ConsoleListener.cpp index d83d800b3b..86fe3e07a6 100644 --- a/Common/ConsoleListener.cpp +++ b/Common/ConsoleListener.cpp @@ -358,7 +358,7 @@ void ConsoleListener::LogWriterThread() for (char *Text = logLocal, *End = logLocal + logLocalSize; Text < End; ) { - LogTypes::LOG_LEVELS Level = LogTypes::LINFO; + LogLevel Level = LogLevel::LINFO; char *next = (char *) memchr(Text + 1, '\033', End - Text); size_t Len = next - Text; @@ -367,7 +367,7 @@ void ConsoleListener::LogWriterThread() if (Text[0] == '\033' && Text + 1 < End) { - Level = (LogTypes::LOG_LEVELS) (Text[1] - '0'); + Level = (LogLevel)(Text[1] - '0'); Len -= 2; Text += 2; } @@ -384,7 +384,7 @@ void ConsoleListener::LogWriterThread() delete [] logLocal; } -void ConsoleListener::SendToThread(LogTypes::LOG_LEVELS Level, const char *Text) +void ConsoleListener::SendToThread(LogLevel Level, const char *Text) { // Oops, we're already quitting. Just do nothing. if (logPendingWritePos == (u32) -1) @@ -462,7 +462,7 @@ void ConsoleListener::SendToThread(LogTypes::LOG_LEVELS Level, const char *Text) SetEvent(hTriggerEvent); } -void ConsoleListener::WriteToConsole(LogTypes::LOG_LEVELS Level, const char *Text, size_t Len) +void ConsoleListener::WriteToConsole(LogLevel Level, const char *Text, size_t Len) { _dbg_assert_msg_(IsOpen(), "Don't call this before opening the console."); @@ -479,21 +479,20 @@ void ConsoleListener::WriteToConsole(LogTypes::LOG_LEVELS Level, const char *Tex WORD Color; static wchar_t tempBuf[2048]; - switch (Level) - { - case NOTICE_LEVEL: // light green + switch (Level) { + case LogLevel::LNOTICE: // light green Color = FOREGROUND_GREEN | FOREGROUND_INTENSITY; break; - case ERROR_LEVEL: // light red + case LogLevel::LERROR: // light red Color = FOREGROUND_RED | FOREGROUND_INTENSITY; break; - case WARNING_LEVEL: // light yellow + case LogLevel::LWARNING: // light yellow Color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; break; - case INFO_LEVEL: // cyan + case LogLevel::LINFO: // cyan Color = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY; break; - case DEBUG_LEVEL: // gray + case LogLevel::LDEBUG: // gray Color = FOREGROUND_INTENSITY; break; default: // off-white @@ -593,7 +592,7 @@ void ConsoleListener::PixelSpace(int Left, int Top, int Width, int Height, bool COORD Coo = GetCoordinates(OldCursor, LBufWidth); SetConsoleCursorPosition(hConsole, Coo); - // if (SLog.length() > 0) Log(LogTypes::LNOTICE, SLog.c_str()); + // if (SLog.length() > 0) Log(LogLevel::LNOTICE, SLog.c_str()); // Resize the window too if (Resize) MoveWindow(GetConsoleWindow(), Left,Top, (Width + 100),Height, true); @@ -615,18 +614,16 @@ void ConsoleListener::Log(const LogMessage &msg) { char ColorAttr[16] = ""; char ResetAttr[16] = ""; - if (bUseColor) - { + if (bUseColor) { strcpy(ResetAttr, "\033[0m"); - switch (msg.level) - { - case NOTICE_LEVEL: // light green + switch (msg.level) { + case LogLevel::LNOTICE: // light green strcpy(ColorAttr, "\033[92m"); break; - case ERROR_LEVEL: // light red + case LogLevel::LERROR: // light red strcpy(ColorAttr, "\033[91m"); break; - case WARNING_LEVEL: // light yellow + case LogLevel::LWARNING: // light yellow strcpy(ColorAttr, "\033[93m"); break; default: @@ -656,5 +653,3 @@ void ConsoleListener::ClearScreen(bool Cursor) if (Cursor) SetConsoleCursorPosition(hConsole, coordScreen); #endif } - - diff --git a/Common/ConsoleListener.h b/Common/ConsoleListener.h index 99c6730750..a84bb25765 100644 --- a/Common/ConsoleListener.h +++ b/Common/ConsoleListener.h @@ -54,8 +54,8 @@ private: static unsigned int WINAPI RunThread(void *lpParam); void LogWriterThread(); - void SendToThread(LogTypes::LOG_LEVELS Level, const char *Text); - void WriteToConsole(LogTypes::LOG_LEVELS Level, const char *Text, size_t Len); + void SendToThread(LogLevel Level, const char *Text); + void WriteToConsole(LogLevel Level, const char *Text, size_t Len); static int refCount; static HANDLE hThread; diff --git a/Common/Input/InputState.h b/Common/Input/InputState.h index 840a8ae1d4..c01680a0ae 100644 --- a/Common/Input/InputState.h +++ b/Common/Input/InputState.h @@ -36,6 +36,7 @@ enum InputDeviceID { DEVICE_ID_XR_CONTROLLER_LEFT = 40, DEVICE_ID_XR_CONTROLLER_RIGHT = 41, DEVICE_ID_TOUCH = 42, + DEVICE_ID_COUNT, }; inline InputDeviceID operator +(InputDeviceID deviceID, int addend) { @@ -121,6 +122,9 @@ public: if (keyCode != other.keyCode) return false; return true; } + bool operator != (const InputMapping &other) const { + return !(*this == other); + } void FormatDebug(char *buffer, size_t bufSize) const; }; diff --git a/Common/Log.h b/Common/Log.h index 50be16ba9a..db5c23ba9f 100644 --- a/Common/Log.h +++ b/Common/Log.h @@ -26,9 +26,8 @@ #define DEBUG_LEVEL 5 // Detailed debugging - might make things slow. #define VERBOSE_LEVEL 6 // Noisy debugging - sometimes needed but usually unimportant. -namespace LogTypes { - -enum LOG_TYPE { +// NOTE: Needs to be kept in sync with the g_logTypeNames array. +enum class LogType { SYSTEM = 0, // Catch-all for uncategorized things BOOT, COMMON, @@ -45,6 +44,8 @@ enum LOG_TYPE { FRAMEBUF, AUDIO, IO, + ACHIEVEMENTS, + HTTP, SCEAUDIO, SCECTRL, @@ -62,12 +63,9 @@ enum LOG_TYPE { SCEMISC, NUMBER_OF_LOGS, // Must be last - - // Temporary aliases - ACHIEVEMENTS = HLE, // TODO: Make a real category }; -enum LOG_LEVELS : int { +enum class LogLevel : int { LNOTICE = NOTICE_LEVEL, LERROR = ERROR_LEVEL, LWARNING = WARNING_LEVEL, @@ -76,19 +74,18 @@ enum LOG_LEVELS : int { LVERBOSE = VERBOSE_LEVEL, }; -} // namespace - -void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, +void GenericLog(LogLevel level, LogType type, const char *file, int line, const char *fmt, ...) #ifdef __GNUC__ __attribute__((format(printf, 5, 6))) #endif ; -bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type); +bool GenericLogEnabled(LogLevel level, LogType type); // Exception for Windows - enable more log levels in release mode than on other platforms. #if defined(_DEBUG) || defined(_WIN32) +// Needs to be an int (and not use the enum) because it's used by the preprocessor! #define MAX_LOGLEVEL DEBUG_LEVEL #else @@ -102,16 +99,16 @@ bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type); // Let the compiler optimize this out. // TODO: Compute a dynamic max level as well that can be checked here. #define GENERIC_LOG(t, v, ...) { \ - if (v <= MAX_LOGLEVEL) \ + if ((int)v <= MAX_LOGLEVEL) \ GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \ } -#define ERROR_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (false) -#define WARN_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LWARNING, __VA_ARGS__) } while (false) -#define NOTICE_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LNOTICE, __VA_ARGS__) } while (false) -#define INFO_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LINFO, __VA_ARGS__) } while (false) -#define DEBUG_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LDEBUG, __VA_ARGS__) } while (false) -#define VERBOSE_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LVERBOSE, __VA_ARGS__) } while (false) +#define ERROR_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LERROR, __VA_ARGS__) } while (false) +#define WARN_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LWARNING, __VA_ARGS__) } while (false) +#define NOTICE_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LNOTICE, __VA_ARGS__) } while (false) +#define INFO_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LINFO, __VA_ARGS__) } while (false) +#define DEBUG_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LDEBUG, __VA_ARGS__) } while (false) +#define VERBOSE_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LVERBOSE, __VA_ARGS__) } while (false) // Currently only actually shows a dialog box on Windows. bool HandleAssert(const char *function, const char *file, int line, const char *expression, const char* format, ...) diff --git a/Common/LogManager.cpp b/Common/LogManager.cpp index 13084098a4..008789d167 100644 --- a/Common/LogManager.cpp +++ b/Common/LogManager.cpp @@ -47,7 +47,7 @@ static const char level_to_char[8] = "-NEWIDV"; #define LOG_MSC_OUTPUTDEBUG false #endif -void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char* fmt, ...) { +void GenericLog(LogLevel level, LogType type, const char *file, int line, const char* fmt, ...) { if (g_bLogEnabledSetting && !(*g_bLogEnabledSetting)) return; va_list args; @@ -69,7 +69,7 @@ void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char va_end(args); } -bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type) { +bool GenericLogEnabled(LogLevel level, LogType type) { if (LogManager::GetInstance()) return (*g_bLogEnabledSetting) && LogManager::GetInstance()->IsEnabled(level, type); return false; @@ -77,56 +77,55 @@ bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type) { LogManager *LogManager::logManager_ = NULL; -struct LogNameTableEntry { - LogTypes::LOG_TYPE logType; - const char *name; -}; +// NOTE: Needs to be kept in sync with the LogType enum. +static const char *g_logTypeNames[] = { + "SYSTEM", + "BOOT", + "COMMON", + "CPU", + "FILESYS", + "G3D", + "HLE", + "JIT", + "LOADER", + "ME", // Media Engine + "MEMMAP", + "SASMIX", + "SAVESTATE", + "FRAMEBUF", + "AUDIO", + "IO", + "ACHIEVEMENTS", + "HTTP", -static const LogNameTableEntry logTable[] = { - {LogTypes::SYSTEM, "SYSTEM"}, - {LogTypes::BOOT, "BOOT"}, - {LogTypes::COMMON, "COMMON"}, - {LogTypes::CPU, "CPU"}, - {LogTypes::FILESYS, "FILESYS"}, - {LogTypes::G3D, "G3D"}, - {LogTypes::HLE, "HLE"}, - {LogTypes::JIT, "JIT"}, - {LogTypes::LOADER, "LOADER"}, - {LogTypes::ME, "ME"}, // Media Engine - {LogTypes::MEMMAP, "MEMMAP"}, - {LogTypes::SASMIX, "SASMIX"}, - {LogTypes::SAVESTATE, "SAVESTATE"}, - {LogTypes::FRAMEBUF, "FRAMEBUF"}, - {LogTypes::AUDIO, "AUDIO"}, - {LogTypes::IO, "IO"}, - - {LogTypes::SCEAUDIO, "SCEAUDIO"}, - {LogTypes::SCECTRL, "SCECTRL"}, - {LogTypes::SCEDISPLAY, "SCEDISP"}, - {LogTypes::SCEFONT, "SCEFONT"}, - {LogTypes::SCEGE, "SCEGE"}, - {LogTypes::SCEINTC, "SCEINTC"}, - {LogTypes::SCEIO, "SCEIO"}, - {LogTypes::SCEKERNEL, "SCEKERNEL"}, - {LogTypes::SCEMODULE, "SCEMODULE"}, - {LogTypes::SCENET, "SCENET"}, - {LogTypes::SCERTC, "SCERTC"}, - {LogTypes::SCESAS, "SCESAS"}, - {LogTypes::SCEUTILITY, "SCEUTIL"}, - {LogTypes::SCEMISC, "SCEMISC"}, + "SCEAUDIO", + "SCECTRL", + "SCEDISP", + "SCEFONT", + "SCEGE", + "SCEINTC", + "SCEIO", + "SCEKERNEL", + "SCEMODULE", + "SCENET", + "SCERTC", + "SCESAS", + "SCEUTIL", + "SCEMISC", }; LogManager::LogManager(bool *enabledSetting) { g_bLogEnabledSetting = enabledSetting; - for (size_t i = 0; i < ARRAY_SIZE(logTable); i++) { - _assert_msg_(i == logTable[i].logType, "Bad logtable at %i", (int)i); - truncate_cpy(log_[logTable[i].logType].m_shortName, logTable[i].name); - log_[logTable[i].logType].enabled = true; + _dbg_assert_(ARRAY_SIZE(g_logTypeNames) == (size_t)LogType::NUMBER_OF_LOGS); + + for (size_t i = 0; i < ARRAY_SIZE(g_logTypeNames); i++) { + truncate_cpy(log_[i].m_shortName, g_logTypeNames[i]); + log_[i].enabled = true; #if defined(_DEBUG) - log_[logTable[i].logType].level = LogTypes::LDEBUG; + log_[i].level = LogLevel::LDEBUG; #else - log_[logTable[i].logType].level = LogTypes::LINFO; + log_[i].level = LogLevel::LINFO; #endif } @@ -158,7 +157,7 @@ LogManager::LogManager(bool *enabledSetting) { } LogManager::~LogManager() { - for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) { + for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; ++i) { #if !defined(MOBILE_DEVICE) || defined(_DEBUG) RemoveListener(fileLog_); RemoveListener(consoleLog_); @@ -194,25 +193,25 @@ void LogManager::ChangeFileLog(const char *filename) { } void LogManager::SaveConfig(Section *section) { - for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++) { + for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; i++) { section->Set((std::string(log_[i].m_shortName) + "Enabled").c_str(), log_[i].enabled); section->Set((std::string(log_[i].m_shortName) + "Level").c_str(), (int)log_[i].level); } } void LogManager::LoadConfig(const Section *section, bool debugDefaults) { - for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++) { + for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; i++) { bool enabled = false; int level = 0; section->Get((std::string(log_[i].m_shortName) + "Enabled").c_str(), &enabled, true); - section->Get((std::string(log_[i].m_shortName) + "Level").c_str(), &level, debugDefaults ? (int)LogTypes::LDEBUG : (int)LogTypes::LERROR); + section->Get((std::string(log_[i].m_shortName) + "Level").c_str(), &level, (int)(debugDefaults ? LogLevel::LDEBUG : LogLevel::LERROR)); log_[i].enabled = enabled; - log_[i].level = (LogTypes::LOG_LEVELS)level; + log_[i].level = (LogLevel)level; } } -void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char *format, va_list args) { - const LogChannel &log = log_[type]; +void LogManager::Log(LogLevel level, LogType type, const char *file, int line, const char *format, va_list args) { + const LogChannel &log = log_[(size_t)type]; if (level > log.level || !log.enabled) return; @@ -268,8 +267,8 @@ void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const } } -bool LogManager::IsEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type) { - LogChannel &log = log_[type]; +bool LogManager::IsEnabled(LogLevel level, LogType type) { + LogChannel &log = log_[(size_t)type]; if (level > log.level || !log.enabled) return false; return true; diff --git a/Common/LogManager.h b/Common/LogManager.h index 3ee1347f42..7151774067 100644 --- a/Common/LogManager.h +++ b/Common/LogManager.h @@ -37,7 +37,7 @@ extern const char *hleCurrentThreadName; struct LogMessage { char timestamp[16]; char header[64]; // Filename/thread/etc. in front. - LogTypes::LOG_LEVELS level; + LogLevel level; const char *log; std::string msg; // The actual log message. }; @@ -83,7 +83,7 @@ public: int GetCount() const { return count_ < MAX_LOGS ? count_ : MAX_LOGS; } const char *TextAt(int i) const { return messages_[(curMessage_ - i - 1) & (MAX_LOGS - 1)].msg.c_str(); } - LogTypes::LOG_LEVELS LevelAt(int i) const { return messages_[(curMessage_ - i - 1) & (MAX_LOGS - 1)].level; } + LogLevel LevelAt(int i) const { return messages_[(curMessage_ - i - 1) & (MAX_LOGS - 1)].level; } private: enum { MAX_LOGS = 128 }; @@ -99,7 +99,7 @@ private: struct LogChannel { char m_shortName[32]{}; - LogTypes::LOG_LEVELS level; + LogLevel level; bool enabled; }; @@ -114,7 +114,7 @@ private: LogManager(const LogManager &) = delete; void operator=(const LogManager &) = delete; - LogChannel log_[LogTypes::NUMBER_OF_LOGS]; + LogChannel log_[(size_t)LogType::NUMBER_OF_LOGS]; FileLogListener *fileLog_ = nullptr; ConsoleListener *consoleLog_ = nullptr; OutputDebugStringLogListener *debuggerLog_ = nullptr; @@ -128,33 +128,33 @@ public: void AddListener(LogListener *listener); void RemoveListener(LogListener *listener); - static u32 GetMaxLevel() { return MAX_LOGLEVEL; } - static int GetNumChannels() { return LogTypes::NUMBER_OF_LOGS; } + static u32 GetMaxLevel() { return (u32)MAX_LOGLEVEL; } + static int GetNumChannels() { return (int)LogType::NUMBER_OF_LOGS; } - void Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, + void Log(LogLevel level, LogType type, const char *file, int line, const char *fmt, va_list args); - bool IsEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type); + bool IsEnabled(LogLevel level, LogType type); - LogChannel *GetLogChannel(LogTypes::LOG_TYPE type) { - return &log_[type]; + LogChannel *GetLogChannel(LogType type) { + return &log_[(size_t)type]; } - void SetLogLevel(LogTypes::LOG_TYPE type, LogTypes::LOG_LEVELS level) { - log_[type].level = level; + void SetLogLevel(LogType type, LogLevel level) { + log_[(size_t)type].level = level; } - void SetAllLogLevels(LogTypes::LOG_LEVELS level) { - for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) { + void SetAllLogLevels(LogLevel level) { + for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; ++i) { log_[i].level = level; } } - void SetEnabled(LogTypes::LOG_TYPE type, bool enable) { - log_[type].enabled = enable; + void SetEnabled(LogType type, bool enable) { + log_[(size_t)type].enabled = enable; } - LogTypes::LOG_LEVELS GetLogLevel(LogTypes::LOG_TYPE type) { - return log_[type].level; + LogLevel GetLogLevel(LogType type) { + return log_[(size_t)type].level; } ConsoleListener *GetConsoleListener() const { diff --git a/Common/Net/HTTPClient.cpp b/Common/Net/HTTPClient.cpp index 0d76d86c5f..5a8e12f7ee 100644 --- a/Common/Net/HTTPClient.cpp +++ b/Common/Net/HTTPClient.cpp @@ -339,13 +339,13 @@ int Client::ReadResponseHeaders(net::Buffer *readbuf, std::vector & return -1; ready = fd_util::WaitUntilReady(sock(), CANCEL_INTERVAL, false); if (!ready && time_now_d() > endTimeout) { - ERROR_LOG(IO, "HTTP headers timed out"); + ERROR_LOG(HTTP, "HTTP headers timed out"); return -1; } }; // Let's hope all the headers are available in a single packet... if (readbuf->Read(sock(), 4096) < 0) { - ERROR_LOG(IO, "Failed to read HTTP headers :("); + ERROR_LOG(HTTP, "Failed to read HTTP headers :("); return -1; } @@ -363,7 +363,7 @@ int Client::ReadResponseHeaders(net::Buffer *readbuf, std::vector & if (code_pos != line.npos) { code = atoi(&line[code_pos]); } else { - ERROR_LOG(IO, "Could not parse HTTP status code: %s", line.c_str()); + ERROR_LOG(HTTP, "Could not parse HTTP status code: %s", line.c_str()); return -1; } @@ -375,7 +375,7 @@ int Client::ReadResponseHeaders(net::Buffer *readbuf, std::vector & } if (responseHeaders.size() == 0) { - ERROR_LOG(IO, "No HTTP response headers"); + ERROR_LOG(HTTP, "No HTTP response headers"); return -1; } @@ -412,7 +412,7 @@ int Client::ReadResponseEntity(net::Buffer *readbuf, const std::vectorTakeAll(&compressed); bool result = decompress_string(compressed, &decompressed); if (!result) { - ERROR_LOG(IO, "Error decompressing using zlib"); + ERROR_LOG(HTTP, "Error decompressing using zlib"); progress->Update(0, 0, true); return -1; } @@ -462,7 +462,7 @@ void HTTPRequest::Start() { void HTTPRequest::Join() { if (joined_) { - ERROR_LOG(IO, "Already joined thread!"); + ERROR_LOG(HTTP, "Already joined thread!"); } thread_.join(); joined_ = true; @@ -486,7 +486,7 @@ int HTTPRequest::Perform(const std::string &url) { } if (!client.Resolve(fileUrl.Host().c_str(), fileUrl.Port())) { - ERROR_LOG(IO, "Failed resolving %s", url.c_str()); + ERROR_LOG(HTTP, "Failed resolving %s", url.c_str()); return -1; } @@ -495,7 +495,7 @@ int HTTPRequest::Perform(const std::string &url) { } if (!client.Connect(2, 20.0, &cancelled_)) { - ERROR_LOG(IO, "Failed connecting to server or cancelled."); + ERROR_LOG(HTTP, "Failed connecting to server or cancelled."); return -1; } @@ -539,7 +539,7 @@ void HTTPRequest::Do() { if (resultCode == 301 || resultCode == 302 || resultCode == 303 || resultCode == 307 || resultCode == 308) { std::string redirectURL = RedirectLocation(downloadURL); if (redirectURL.empty()) { - ERROR_LOG(IO, "Could not find Location header for redirect"); + ERROR_LOG(HTTP, "Could not find Location header for redirect"); resultCode_ = resultCode; } else if (redirectURL == downloadURL || redirectURL == url_) { // Simple loop detected, bail out. @@ -548,18 +548,18 @@ void HTTPRequest::Do() { // Perform the next GET. if (resultCode_ == 0) - INFO_LOG(IO, "Download of %s redirected to %s", downloadURL.c_str(), redirectURL.c_str()); + INFO_LOG(HTTP, "Download of %s redirected to %s", downloadURL.c_str(), redirectURL.c_str()); downloadURL = redirectURL; continue; } if (resultCode == 200) { - INFO_LOG(IO, "Completed requesting %s (storing result to %s)", url_.c_str(), outfile_.empty() ? "memory" : outfile_.c_str()); + INFO_LOG(HTTP, "Completed requesting %s (storing result to %s)", url_.c_str(), outfile_.empty() ? "memory" : outfile_.c_str()); if (!outfile_.empty() && !buffer_.FlushToFile(outfile_)) { - ERROR_LOG(IO, "Failed writing download to '%s'", outfile_.c_str()); + ERROR_LOG(HTTP, "Failed writing download to '%s'", outfile_.c_str()); } } else { - ERROR_LOG(IO, "Error requesting '%s' (storing result to '%s'): %i", url_.c_str(), outfile_.empty() ? "memory" : outfile_.c_str(), resultCode); + ERROR_LOG(HTTP, "Error requesting '%s' (storing result to '%s'): %i", url_.c_str(), outfile_.empty() ? "memory" : outfile_.c_str(), resultCode); } resultCode_ = resultCode; } diff --git a/Common/Net/HTTPRequest.cpp b/Common/Net/HTTPRequest.cpp index 50ea7eaa37..e0009b0e35 100644 --- a/Common/Net/HTTPRequest.cpp +++ b/Common/Net/HTTPRequest.cpp @@ -5,10 +5,13 @@ #include "Common/StringUtils.h" #include "Common/Log.h" #include "Common/System/OSD.h" +#include "Common/System/System.h" namespace http { Request::Request(RequestMethod method, const std::string &url, const std::string &name, bool *cancelled, ProgressBarMode mode) : method_(method), url_(url), name_(name), progress_(cancelled), progressBarMode_(mode) { + INFO_LOG(HTTP, "HTTP %s request: %s (%s)", RequestMethodToString(method), url.c_str(), name.c_str()); + progress_.callback = [=](int64_t bytes, int64_t contentLength, bool done) { std::string message; if (!name_.empty()) { @@ -37,7 +40,7 @@ bool RequestManager::IsHttpsUrl(const std::string &url) { std::shared_ptr RequestManager::StartDownload(const std::string &url, const Path &outfile, ProgressBarMode mode, const char *acceptMime) { std::shared_ptr dl; - if (IsHttpsUrl(url)) { + if (IsHttpsUrl(url) && System_GetPropertyBool(SYSPROP_SUPPORTS_HTTPS)) { #ifndef HTTPS_NOT_AVAILABLE dl.reset(new HTTPSRequest(RequestMethod::GET, url, "", "", outfile, mode)); #else @@ -64,7 +67,7 @@ std::shared_ptr RequestManager::StartDownloadWithCallback( const std::string &name, const char *acceptMime) { std::shared_ptr dl; - if (IsHttpsUrl(url)) { + if (IsHttpsUrl(url) && System_GetPropertyBool(SYSPROP_SUPPORTS_HTTPS)) { #ifndef HTTPS_NOT_AVAILABLE dl.reset(new HTTPSRequest(RequestMethod::GET, url, "", "", outfile, mode, name)); #else @@ -91,7 +94,7 @@ std::shared_ptr RequestManager::AsyncPostWithCallback( std::function callback, const std::string &name) { std::shared_ptr dl; - if (IsHttpsUrl(url)) { + if (IsHttpsUrl(url) && System_GetPropertyBool(SYSPROP_SUPPORTS_HTTPS)) { #ifndef HTTPS_NOT_AVAILABLE dl.reset(new HTTPSRequest(RequestMethod::POST, url, postData, postMime, Path(), mode, name)); #else diff --git a/Common/Net/HTTPRequest.h b/Common/Net/HTTPRequest.h index b04b04d87c..4201fc9078 100644 --- a/Common/Net/HTTPRequest.h +++ b/Common/Net/HTTPRequest.h @@ -124,4 +124,12 @@ private: std::string userAgent_; }; +inline const char *RequestMethodToString(RequestMethod method) { + switch (method) { + case RequestMethod::GET: return "GET"; + case RequestMethod::POST: return "POST"; + default: return "N/A"; + } +} + } // namespace net diff --git a/Common/Render/Text/draw_text_sdl.cpp b/Common/Render/Text/draw_text_sdl.cpp index fcc1150ee9..df32f9fb6c 100644 --- a/Common/Render/Text/draw_text_sdl.cpp +++ b/Common/Render/Text/draw_text_sdl.cpp @@ -173,7 +173,6 @@ bool TextDrawerSDL::FindFallbackFonts(uint32_t missingGlyph, int ptSize) { if (TTF_GlyphIsProvided32(font, missingGlyph)) { fallbackFonts_.insert(fallbackFonts_.begin(), font); - fallbackFontPaths_.erase(fallbackFontPaths_.begin() + i); return true; } else { TTF_CloseFont(font); diff --git a/Common/StringUtils.h b/Common/StringUtils.h index 945a37de94..49e8610457 100644 --- a/Common/StringUtils.h +++ b/Common/StringUtils.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #ifdef _MSC_VER @@ -35,6 +36,14 @@ std::string IndentString(const std::string &str, const std::string &sep, bool sk // Other simple string utilities. +// Optimized for string constants. +inline bool startsWith(const std::string &str, const char *key) { + size_t keyLen = strlen(key); + if (str.size() < keyLen) + return false; + return !memcmp(str.data(), key, keyLen); +} + inline bool startsWith(const std::string &str, const std::string &what) { if (str.size() < what.size()) return false; diff --git a/Common/System/OSD.cpp b/Common/System/OSD.cpp index 73fb2bf3c7..5b2972caa0 100644 --- a/Common/System/OSD.cpp +++ b/Common/System/OSD.cpp @@ -91,6 +91,11 @@ void OnScreenDisplay::Show(OSDType type, const std::string &text, const std::str entries_.insert(entries_.begin(), msg); } +void OnScreenDisplay::ShowOnOff(const std::string &message, bool on, float duration_s) { + // TODO: translate "on" and "off"? Or just get rid of this whole thing? + Show(OSDType::MESSAGE_INFO, message + ": " + (on ? "on" : "off"), duration_s); +} + void OnScreenDisplay::ShowAchievementUnlocked(int achievementID) { double now = time_now_d(); @@ -201,18 +206,12 @@ void OnScreenDisplay::ShowLeaderboardTracker(int leaderboardTrackerID, const cha void OnScreenDisplay::ShowLeaderboardStartEnd(const std::string &title, const std::string &description, bool started) { g_OSD.Show(OSDType::LEADERBOARD_STARTED_FAILED, title, description, 3.0f); - } void OnScreenDisplay::ShowLeaderboardSubmitted(const std::string &title, const std::string &value) { g_OSD.Show(OSDType::MESSAGE_SUCCESS, title, value, 3.0f); } -void OnScreenDisplay::ShowOnOff(const std::string &message, bool on, float duration_s) { - // TODO: translate "on" and "off"? Or just get rid of this whole thing? - Show(OSDType::MESSAGE_INFO, message + ": " + (on ? "on" : "off"), duration_s); -} - void OnScreenDisplay::SetProgressBar(std::string id, std::string &&message, float minValue, float maxValue, float progress, float delay) { _dbg_assert_(!my_isnanorinf(progress)); _dbg_assert_(!my_isnanorinf(minValue)); diff --git a/Common/System/Request.cpp b/Common/System/Request.cpp index 8e78352908..3dc290af1a 100644 --- a/Common/System/Request.cpp +++ b/Common/System/Request.cpp @@ -115,3 +115,7 @@ void RequestManager::Clear() { void System_CreateGameShortcut(const Path &path, const std::string &title) { g_requestManager.MakeSystemRequest(SystemRequestType::CREATE_GAME_SHORTCUT, nullptr, nullptr, path.ToString(), title, 0); } + +void System_ShowFileInFolder(const Path &path) { + g_requestManager.MakeSystemRequest(SystemRequestType::SHOW_FILE_IN_FOLDER, nullptr, nullptr, path.ToString(), "", 0); +} diff --git a/Common/System/Request.h b/Common/System/Request.h index e6b3a10b37..8f734cdd02 100644 --- a/Common/System/Request.h +++ b/Common/System/Request.h @@ -166,4 +166,4 @@ inline void System_SendDebugScreenshot(const std::string &data, int height) { // Non-inline to avoid including Path.h void System_CreateGameShortcut(const Path &path, const std::string &title); - +void System_ShowFileInFolder(const Path &path); diff --git a/Common/System/System.h b/Common/System/System.h index 1032411069..f0e496d402 100644 --- a/Common/System/System.h +++ b/Common/System/System.h @@ -49,7 +49,6 @@ enum class LaunchUrlType { }; void System_Vibrate(int length_ms); -void System_ShowFileInFolder(const char *path); void System_LaunchUrl(LaunchUrlType urlType, const char *url); // It's sometimes a little unclear what should be a request, and what should be a separate function. @@ -72,6 +71,7 @@ enum class SystemRequestType { TOGGLE_FULLSCREEN_STATE, GRAPHICS_BACKEND_FAILED_ALERT, CREATE_GAME_SHORTCUT, + SHOW_FILE_IN_FOLDER, // Commonly ignored, used when automated tests generate output. SEND_DEBUG_OUTPUT, @@ -135,6 +135,7 @@ enum SystemProperty { SYSPROP_HAS_TEXT_INPUT_DIALOG, // Indicates that System_InputBoxGetString is available. SYSPROP_CAN_CREATE_SHORTCUT, + SYSPROP_CAN_SHOW_FILE, SYSPROP_SUPPORTS_HTTPS, diff --git a/Common/UI/Screen.cpp b/Common/UI/Screen.cpp index 036473794b..08ce0a31eb 100644 --- a/Common/UI/Screen.cpp +++ b/Common/UI/Screen.cpp @@ -178,12 +178,13 @@ void ScreenManager::render() { iter++; } stack_.back().screen->render(); - if (postRenderCb_) { - postRenderCb_(getUIContext(), postRenderUserdata_); - } if (overlayScreen_) { overlayScreen_->render(); } + if (postRenderCb_) { + // Really can't render anything after this! Will crash the screenshot mechanism if we do. + postRenderCb_(getUIContext(), postRenderUserdata_); + } first->screen->postRender(); break; } @@ -191,11 +192,13 @@ void ScreenManager::render() { _assert_(stack_.back().screen); stack_.back().screen->preRender(); stack_.back().screen->render(); - if (postRenderCb_) - postRenderCb_(getUIContext(), postRenderUserdata_); if (overlayScreen_) { overlayScreen_->render(); } + if (postRenderCb_) { + // Really can't render anything after this! Will crash the screenshot mechanism if we do. + postRenderCb_(getUIContext(), postRenderUserdata_); + } stack_.back().screen->postRender(); break; } diff --git a/Core/Compatibility.cpp b/Core/Compatibility.cpp index 11a404f7bc..58acbd7c69 100644 --- a/Core/Compatibility.cpp +++ b/Core/Compatibility.cpp @@ -132,6 +132,7 @@ void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) { CheckSetting(iniFile, gameID, "ForceMaxDepthResolution", &flags_.ForceMaxDepthResolution); CheckSetting(iniFile, gameID, "SOCOMClut8Replacement", &flags_.SOCOMClut8Replacement); CheckSetting(iniFile, gameID, "Fontltn12Hack", &flags_.Fontltn12Hack); + CheckSetting(iniFile, gameID, "LoadCLUTFromCurrentFrameOnly", &flags_.LoadCLUTFromCurrentFrameOnly); } void Compatibility::CheckVRSettings(IniFile &iniFile, const std::string &gameID) { diff --git a/Core/Compatibility.h b/Core/Compatibility.h index 896e8fa639..1079618c87 100644 --- a/Core/Compatibility.h +++ b/Core/Compatibility.h @@ -102,6 +102,7 @@ struct CompatFlags { bool ForceMaxDepthResolution; bool SOCOMClut8Replacement; bool Fontltn12Hack; + bool LoadCLUTFromCurrentFrameOnly; }; struct VRCompat { diff --git a/Core/Config.cpp b/Core/Config.cpp index 3873d026b1..33c8d9ac82 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -183,6 +183,7 @@ static const ConfigSetting generalSettings[] = { ConfigSetting("DiscordPresence", &g_Config.bDiscordPresence, true, CfgFlag::DEFAULT), // Or maybe it makes sense to have it per-game? Race conditions abound... ConfigSetting("UISound", &g_Config.bUISound, false, CfgFlag::DEFAULT), + ConfigSetting("DisableHTTPS", &g_Config.bDisableHTTPS, false, CfgFlag::DONT_SAVE), ConfigSetting("AutoLoadSaveState", &g_Config.iAutoLoadSaveState, 0, CfgFlag::PER_GAME), ConfigSetting("EnableCheats", &g_Config.bEnableCheats, false, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("CwCheatRefreshRate", &g_Config.iCwCheatRefreshRate, 77, CfgFlag::PER_GAME), diff --git a/Core/Config.h b/Core/Config.h index fa6be416bb..f199992322 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -92,6 +92,8 @@ public: bool bPreloadFunctions; uint32_t uJitDisableFlags; + bool bDisableHTTPS; + bool bSeparateSASThread; int iIOTimingMethod; int iLockedCPUSpeed; diff --git a/Core/ControlMapper.cpp b/Core/ControlMapper.cpp index 07945a02c5..c3808150ec 100644 --- a/Core/ControlMapper.cpp +++ b/Core/ControlMapper.cpp @@ -156,11 +156,12 @@ void ControlMapper::UpdateAnalogOutput(int stick) { void ControlMapper::ForceReleaseVKey(int vkey) { std::vector multiMappings; if (KeyMap::InputMappingsFromPspButton(vkey, &multiMappings, true)) { + double now = time_now_d(); for (const auto &entry : multiMappings) { for (const auto &mapping : entry.mappings) { - curInput_[mapping] = 0.0f; + curInput_[mapping] = { 0.0f, now }; // Different logic for signed axes? - UpdatePSPState(mapping); + UpdatePSPState(mapping, now); } } } @@ -178,12 +179,15 @@ static int RotatePSPKeyCode(int x) { } // Used to decay analog values when clashing with digital ones. -static float ReduceMagnitude(float value) { - value *= 0.75f; - if ((value > 0.0f && value < 0.05f) || (value < 0.0f && value > -0.05f)) { - value = 0.0f; +static ControlMapper::InputSample ReduceMagnitude(ControlMapper::InputSample sample, double now) { + float reduction = std::min(std::max(0.0f, (float)(now - sample.timestamp) - 2.0f), 1.0f); + if (reduction > 0.0f) { + sample.value *= (1.0f - reduction); } - return value; + if ((sample.value > 0.0f && sample.value < 0.05f) || (sample.value < 0.0f && sample.value > -0.05f)) { + sample.value = 0.0f; + } + return sample; } float ControlMapper::MapAxisValue(float value, int vkId, const InputMapping &mapping, const InputMapping &changedMapping, bool *oppositeTouched) { @@ -199,7 +203,7 @@ float ControlMapper::MapAxisValue(float value, int vkId, const InputMapping &map if (other == changedMapping) { *oppositeTouched = true; } - float valueOther = curInput_[other]; + float valueOther = curInput_[other].value; float signedValue = value - valueOther; float ranged = (signedValue + 1.0f) * 0.5f; if (direction == -1) { @@ -247,7 +251,8 @@ void ControlMapper::SwapMappingIfEnabled(uint32_t *vkey) { } // Can only be called from Key or Axis. -bool ControlMapper::UpdatePSPState(const InputMapping &changedMapping) { +// TODO: We should probably make a batched version of this. +bool ControlMapper::UpdatePSPState(const InputMapping &changedMapping, double now) { // Instead of taking an input key and finding what it outputs, we loop through the OUTPUTS and // see if the input that corresponds to it has a value. That way we can easily implement all sorts // of crazy input combos if needed. @@ -290,7 +295,7 @@ bool ControlMapper::UpdatePSPState(const InputMapping &changedMapping) { bool all = true; for (auto mapping : multiMapping.mappings) { auto iter = curInput_.find(mapping); - bool down = iter != curInput_.end() && iter->second > GetDeviceAxisThreshold(iter->first.deviceId); + bool down = iter != curInput_.end() && iter->second.value > GetDeviceAxisThreshold(iter->first.deviceId); if (!down) all = false; } @@ -307,6 +312,7 @@ bool ControlMapper::UpdatePSPState(const InputMapping &changedMapping) { bool updateAnalogSticks = false; // OK, handle all the virtual keys next. For these we need to do deltas here and send events. + // Note that virtual keys include the analog directions, as they are driven by them. for (int i = 0; i < VIRTKEY_COUNT; i++) { int vkId = i + VIRTKEY_FIRST; std::vector inputMappings; @@ -334,9 +340,9 @@ bool ControlMapper::UpdatePSPState(const InputMapping &changedMapping) { if (iter != curInput_.end()) { if (mapping.IsAxis()) { threshold = GetDeviceAxisThreshold(iter->first.deviceId); - product *= MapAxisValue(iter->second, idForMapping, mapping, changedMapping, &touchedByMapping); + product *= MapAxisValue(iter->second.value, idForMapping, mapping, changedMapping, &touchedByMapping); } else { - product *= iter->second; + product *= iter->second.value; } } else { product = 0.0f; @@ -361,7 +367,11 @@ bool ControlMapper::UpdatePSPState(const InputMapping &changedMapping) { if (!changedMapping.IsAxis()) { for (auto &multiMapping : inputMappings) { for (auto &mapping : multiMapping.mappings) { - curInput_[mapping] = ReduceMagnitude(curInput_[mapping]); + if (mapping != changedMapping && curInput_[mapping].value > 0.0f) { + // Note that this takes the time into account now - values will + // decay after a while, not immediately. + curInput_[mapping] = ReduceMagnitude(curInput_[mapping], now); + } } } } @@ -412,15 +422,19 @@ bool ControlMapper::Key(const KeyInput &key, bool *pauseTrigger) { // Claim that we handled this. Prevents volume key repeats from popping up the volume control on Android. return true; } - - std::lock_guard guard(mutex_); + double now = time_now_d(); + if (key.deviceId < DEVICE_ID_COUNT) { + deviceTimestamps_[(int)key.deviceId] = now; + } InputMapping mapping(key.deviceId, key.keyCode); + std::lock_guard guard(mutex_); + if (key.flags & KEY_DOWN) { - curInput_[mapping] = 1.0f; + curInput_[mapping] = { 1.0f, now }; } else if (key.flags & KEY_UP) { - curInput_[mapping] = 0.0f; + curInput_[mapping] = { 0.0f, now}; } // TODO: See if this can be simplified further somehow. @@ -433,7 +447,7 @@ bool ControlMapper::Key(const KeyInput &key, bool *pauseTrigger) { } } - return UpdatePSPState(mapping); + return UpdatePSPState(mapping, now); } void ControlMapper::ToggleSwapAxes() { @@ -462,34 +476,37 @@ void ControlMapper::ToggleSwapAxes() { } void ControlMapper::Axis(const AxisInput &axis) { + double now = time_now_d(); + std::lock_guard guard(mutex_); + if (axis.deviceId < DEVICE_ID_COUNT) { + deviceTimestamps_[(int)axis.deviceId] = now; + } if (axis.value >= 0.0f) { InputMapping mapping(axis.deviceId, axis.axisId, 1); InputMapping opposite(axis.deviceId, axis.axisId, -1); - curInput_[mapping] = axis.value; - curInput_[opposite] = 0.0f; - UpdatePSPState(mapping); - UpdatePSPState(opposite); + curInput_[mapping] = { axis.value, now }; + curInput_[opposite] = { 0.0f, now }; + UpdatePSPState(mapping, now); + UpdatePSPState(opposite, now); } else if (axis.value < 0.0f) { InputMapping mapping(axis.deviceId, axis.axisId, -1); InputMapping opposite(axis.deviceId, axis.axisId, 1); - curInput_[mapping] = -axis.value; - curInput_[opposite] = 0.0f; - UpdatePSPState(mapping); - UpdatePSPState(opposite); + curInput_[mapping] = { -axis.value, now }; + curInput_[opposite] = { 0.0f, now }; + UpdatePSPState(mapping, now); + UpdatePSPState(opposite, now); } } -void ControlMapper::Update() { +void ControlMapper::Update(double now) { if (autoRotatingAnalogCW_) { - const double now = time_now_d(); // Clamp to a square float x = std::min(1.0f, std::max(-1.0f, 1.42f * (float)cos(now * -g_Config.fAnalogAutoRotSpeed))); float y = std::min(1.0f, std::max(-1.0f, 1.42f * (float)sin(now * -g_Config.fAnalogAutoRotSpeed))); setPSPAnalog_(0, x, y); } else if (autoRotatingAnalogCCW_) { - const double now = time_now_d(); float x = std::min(1.0f, std::max(-1.0f, 1.42f * (float)cos(now * g_Config.fAnalogAutoRotSpeed))); float y = std::min(1.0f, std::max(-1.0f, 1.42f * (float)sin(now * g_Config.fAnalogAutoRotSpeed))); @@ -583,7 +600,7 @@ void ControlMapper::GetDebugString(char *buffer, size_t bufSize) const { for (auto iter : curInput_) { char temp[256]; iter.first.FormatDebug(temp, sizeof(temp)); - str << temp << ": " << iter.second << std::endl; + str << temp << ": " << iter.second.value << std::endl; } for (int i = 0; i < ARRAY_SIZE(virtKeys_); i++) { int vkId = VIRTKEY_FIRST + i; diff --git a/Core/ControlMapper.h b/Core/ControlMapper.h index bca32ff0e8..c90ae68dae 100644 --- a/Core/ControlMapper.h +++ b/Core/ControlMapper.h @@ -11,7 +11,7 @@ // Main use is of course from EmuScreen.cpp, but also useful from control settings etc. class ControlMapper { public: - void Update(); + void Update(double now); // Inputs to the table-based mapping // These functions are free-threaded. @@ -42,8 +42,13 @@ public: void GetDebugString(char *buffer, size_t bufSize) const; + struct InputSample { + float value; + double timestamp; + }; + private: - bool UpdatePSPState(const InputMapping &changedMapping); + bool UpdatePSPState(const InputMapping &changedMapping, double now); float MapAxisValue(float value, int vkId, const InputMapping &mapping, const InputMapping &changedMapping, bool *oppositeTouched); void SwapMappingIfEnabled(uint32_t *vkey); @@ -57,6 +62,8 @@ private: float virtKeys_[VIRTKEY_COUNT]{}; bool virtKeyOn_[VIRTKEY_COUNT]{}; // Track boolean output separaately since thresholds may differ. + double deviceTimestamps_[42]{}; + int lastNonDeadzoneDeviceID_[2]{}; float history_[2][2]{}; @@ -71,7 +78,7 @@ private: // Protects basically all the state. std::mutex mutex_; - std::map curInput_; + std::map curInput_; // Callbacks std::function onVKey_; diff --git a/Core/Debugger/WebSocket.cpp b/Core/Debugger/WebSocket.cpp index 1ba39ad0ec..c17aa57c70 100644 --- a/Core/Debugger/WebSocket.cpp +++ b/Core/Debugger/WebSocket.cpp @@ -160,14 +160,14 @@ void HandleDebuggerRequest(const http::ServerRequest &request) { ws->SetTextHandler([&](const std::string &t) { JsonReader reader(t.c_str(), t.size()); if (!reader.ok()) { - ws->Send(DebuggerErrorEvent("Bad message: invalid JSON", LogTypes::LERROR)); + ws->Send(DebuggerErrorEvent("Bad message: invalid JSON", LogLevel::LERROR)); return; } const JsonGet root = reader.root(); const char *event = root ? root.getString("event", nullptr) : nullptr; if (!event) { - ws->Send(DebuggerErrorEvent("Bad message: no event property", LogTypes::LERROR, root)); + ws->Send(DebuggerErrorEvent("Bad message: no event property", LogLevel::LERROR, root)); return; } @@ -185,7 +185,7 @@ void HandleDebuggerRequest(const http::ServerRequest &request) { } }); ws->SetBinaryHandler([&](const std::vector &d) { - ws->Send(DebuggerErrorEvent("Bad message", LogTypes::LERROR)); + ws->Send(DebuggerErrorEvent("Bad message", LogLevel::LERROR)); }); while (ws->Process(highActivity ? 1.0f / 1000.0f : 1.0f / 60.0f)) { diff --git a/Core/Debugger/WebSocket/GPURecordSubscriber.cpp b/Core/Debugger/WebSocket/GPURecordSubscriber.cpp index f1aad51e12..30516ba81e 100644 --- a/Core/Debugger/WebSocket/GPURecordSubscriber.cpp +++ b/Core/Debugger/WebSocket/GPURecordSubscriber.cpp @@ -44,7 +44,7 @@ DebuggerSubscriber *WebSocketGPURecordInit(DebuggerEventHandlerMap &map) { WebSocketGPURecordState::~WebSocketGPURecordState() { // Clear the callback to hopefully avoid a crash. if (pending_) - GPURecord::SetCallback(nullptr); + GPURecord::ClearCallback(); } // Begin recording (gpu.record.dump) @@ -56,18 +56,21 @@ WebSocketGPURecordState::~WebSocketGPURecordState() { // // Note: recording may take a moment. void WebSocketGPURecordState::Dump(DebuggerRequest &req) { - if (!PSP_IsInited()) + if (!PSP_IsInited()) { return req.Fail("CPU not started"); + } - if (!GPURecord::Activate()) - return req.Fail("Recording already in progress"); - - pending_ = true; - GPURecord::SetCallback([=](const Path &filename) { + bool result = GPURecord::RecordNextFrame([=](const Path &filename) { lastFilename_ = filename; pending_ = false; }); + if (!result) { + return req.Fail("Recording already in progress"); + } + + pending_ = true; + const JsonNode *value = req.data.get("ticket"); lastTicket_ = value ? json_stringify(value) : ""; } diff --git a/Core/Debugger/WebSocket/LogBroadcaster.cpp b/Core/Debugger/WebSocket/LogBroadcaster.cpp index 07070be7b0..b3d4359c89 100644 --- a/Core/Debugger/WebSocket/LogBroadcaster.cpp +++ b/Core/Debugger/WebSocket/LogBroadcaster.cpp @@ -95,7 +95,7 @@ struct DebuggerLogEvent { j.writeString("timestamp", l.timestamp); j.writeString("header", l.header); j.writeString("message", l.msg); - j.writeInt("level", l.level); + j.writeInt("level", (int)l.level); j.writeString("channel", l.log); j.end(); return j.str(); diff --git a/Core/Debugger/WebSocket/WebSocketUtils.h b/Core/Debugger/WebSocket/WebSocketUtils.h index c5cbb32c88..3a4e5fc263 100644 --- a/Core/Debugger/WebSocket/WebSocketUtils.h +++ b/Core/Debugger/WebSocket/WebSocketUtils.h @@ -42,7 +42,7 @@ struct WebSocketClientInfo { }; struct DebuggerErrorEvent { - DebuggerErrorEvent(const std::string m, LogTypes::LOG_LEVELS l, const JsonGet data = JsonValue(JSON_NULL)) + DebuggerErrorEvent(const std::string m, LogLevel l, const JsonGet data = JsonValue(JSON_NULL)) : message(m), level(l) { // Need to format right away, before it's out of scope. if (data) { @@ -53,7 +53,7 @@ struct DebuggerErrorEvent { } std::string message; - LogTypes::LOG_LEVELS level; + LogLevel level; std::string ticketRaw; operator std::string() const { @@ -61,7 +61,7 @@ struct DebuggerErrorEvent { j.begin(); j.writeString("event", "error"); j.writeString("message", message); - j.writeInt("level", level); + j.writeInt("level", (int)level); if (!ticketRaw.empty()) { j.writeRaw("ticket", ticketRaw); } @@ -88,7 +88,7 @@ struct DebuggerRequest { WebSocketClientInfo *client; void Fail(const std::string &message) { - ws->Send(DebuggerErrorEvent(message, LogTypes::LERROR, data)); + ws->Send(DebuggerErrorEvent(message, LogLevel::LERROR, data)); responseSent_ = true; } diff --git a/Core/FileSystems/VirtualDiscFileSystem.cpp b/Core/FileSystems/VirtualDiscFileSystem.cpp index 42684a0fc2..df73ad544d 100644 --- a/Core/FileSystems/VirtualDiscFileSystem.cpp +++ b/Core/FileSystems/VirtualDiscFileSystem.cpp @@ -813,7 +813,7 @@ bool VirtualDiscFileSystem::RemoveFile(const std::string &filename) return false; } -void VirtualDiscFileSystem::HandlerLogger(void *arg, HandlerHandle handle, LogTypes::LOG_LEVELS level, const char *msg) { +void VirtualDiscFileSystem::HandlerLogger(void *arg, HandlerHandle handle, LogLevel level, const char *msg) { VirtualDiscFileSystem *sys = static_cast(arg); // TODO: Probably could do this smarter / use a lookup. @@ -826,9 +826,9 @@ void VirtualDiscFileSystem::HandlerLogger(void *arg, HandlerHandle handle, LogTy } if (filename != NULL) { - GENERIC_LOG(LogTypes::FILESYS, level, "%s: %s", filename, msg); + GENERIC_LOG(LogType::FILESYS, level, "%s: %s", filename, msg); } else { - GENERIC_LOG(LogTypes::FILESYS, level, "%s", msg); + GENERIC_LOG(LogType::FILESYS, level, "%s", msg); } } diff --git a/Core/FileSystems/VirtualDiscFileSystem.h b/Core/FileSystems/VirtualDiscFileSystem.h index eb3ef16e8b..4098588170 100644 --- a/Core/FileSystems/VirtualDiscFileSystem.h +++ b/Core/FileSystems/VirtualDiscFileSystem.h @@ -64,9 +64,9 @@ private: typedef void *HandlerLibrary; typedef int HandlerHandle; typedef s64 HandlerOffset; - typedef void (*HandlerLogFunc)(void *arg, HandlerHandle handle, LogTypes::LOG_LEVELS level, const char *msg); + typedef void (*HandlerLogFunc)(void *arg, HandlerHandle handle, LogLevel level, const char *msg); - static void HandlerLogger(void *arg, HandlerHandle handle, LogTypes::LOG_LEVELS level, const char *msg); + static void HandlerLogger(void *arg, HandlerHandle handle, LogLevel level, const char *msg); // The primary purpose of handlers is to make it easier to work with large archives. // However, they have other uses as well, such as patching individual files. diff --git a/Core/HLE/HLE.cpp b/Core/HLE/HLE.cpp index 363a809476..5fd835d1be 100644 --- a/Core/HLE/HLE.cpp +++ b/Core/HLE/HLE.cpp @@ -853,7 +853,7 @@ size_t hleFormatLogArgs(char *message, size_t sz, const char *argmask) { return used; } -void hleDoLogInternal(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason) { +void hleDoLogInternal(LogType t, LogLevel level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason) { char formatted_args[4096]; const char *funcName = "?"; u32 funcFlags = 0; diff --git a/Core/HLE/HLE.h b/Core/HLE/HLE.h index 0ddba13b6f..b11efca78e 100644 --- a/Core/HLE/HLE.h +++ b/Core/HLE/HLE.h @@ -155,11 +155,11 @@ const HLEFunction *GetSyscallFuncPointer(MIPSOpcode op); // For jit, takes arg: const HLEFunction * void *GetQuickSyscallFunc(MIPSOpcode op); -void hleDoLogInternal(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason); +void hleDoLogInternal(LogType t, LogLevel level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason); template -T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char *file, int line, const char *reportTag, char retmask, const char *reason, ...) { - if (level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) { +T hleDoLog(LogType t, LogLevel level, T res, const char *file, int line, const char *reportTag, char retmask, const char *reason, ...) { + if ((int)level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) { return res; } @@ -186,8 +186,8 @@ T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char * } template -T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char *file, int line, const char *reportTag, char retmask) { - if ((level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) && !reportTag) { +T hleDoLog(LogType t, LogLevel level, T res, const char *file, int line, const char *reportTag, char retmask) { + if (((int)level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) && !reportTag) { return res; } @@ -216,7 +216,7 @@ T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char * #define HLE_LOG_LVERBOSE LVERBOSE #endif -#define hleLogHelper(t, level, res, retmask, ...) hleDoLog(LogTypes::t, LogTypes::level, res, __FILE__, __LINE__, nullptr, retmask, ##__VA_ARGS__) +#define hleLogHelper(t, level, res, retmask, ...) hleDoLog(LogType::t, LogLevel::level, res, __FILE__, __LINE__, nullptr, retmask, ##__VA_ARGS__) #define hleLogError(t, res, ...) hleLogHelper(t, LERROR, res, 'x', ##__VA_ARGS__) #define hleLogWarning(t, res, ...) hleLogHelper(t, LWARNING, res, 'x', ##__VA_ARGS__) #define hleLogDebug(t, res, ...) hleLogHelper(t, HLE_LOG_LDEBUG, res, 'x', ##__VA_ARGS__) @@ -228,7 +228,7 @@ T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char * #define hleLogSuccessVerboseX(t, res, ...) hleLogHelper(t, HLE_LOG_LVERBOSE, res, 'x', ##__VA_ARGS__) #define hleLogSuccessVerboseI(t, res, ...) hleLogHelper(t, HLE_LOG_LVERBOSE, res, 'i', ##__VA_ARGS__) -#define hleReportError(t, res, ...) hleDoLog(LogTypes::t, LogTypes::LERROR, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) -#define hleReportWarning(t, res, ...) hleDoLog(LogTypes::t, LogTypes::LWARNING, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) -#define hleReportDebug(t, res, ...) hleDoLog(LogTypes::t, LogTypes::HLE_LOG_LDEBUG, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) -#define hleReportVerbose(t, res, ...) hleDoLog(LogTypes::t, LogTypes::HLE_LOG_LVERBOSE, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) +#define hleReportError(t, res, ...) hleDoLog(LogType::t, LogLevel::LERROR, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) +#define hleReportWarning(t, res, ...) hleDoLog(LogType::t, LogLevel::LWARNING, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) +#define hleReportDebug(t, res, ...) hleDoLog(LogType::t, LogLevel::HLE_LOG_LDEBUG, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) +#define hleReportVerbose(t, res, ...) hleDoLog(LogType::t, LogLevel::HLE_LOG_LVERBOSE, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) diff --git a/Core/HLE/proAdhoc.h b/Core/HLE/proAdhoc.h index c448d0189b..bb80a10a64 100644 --- a/Core/HLE/proAdhoc.h +++ b/Core/HLE/proAdhoc.h @@ -84,7 +84,7 @@ #define EALREADY WSAEALREADY #define ETIMEDOUT WSAETIMEDOUT #define EOPNOTSUPP WSAEOPNOTSUPP -inline bool connectInProgress(int errcode){ return (errcode == WSAEWOULDBLOCK || errcode == WSAEINPROGRESS || errcode == WSAEALREADY); } +inline bool connectInProgress(int errcode){ return (errcode == WSAEWOULDBLOCK || errcode == WSAEINPROGRESS || errcode == WSAEALREADY || errcode == WSAEINVAL); } // WSAEINVAL should be treated as WSAEALREADY during connect for backward-compatibility with Winsock 1.1 inline bool isDisconnected(int errcode) { return (errcode == WSAECONNRESET || errcode == WSAECONNABORTED || errcode == WSAESHUTDOWN); } #else #define INVALID_SOCKET -1 diff --git a/Core/HLE/sceNetAdhoc.cpp b/Core/HLE/sceNetAdhoc.cpp index ad1363cf7a..8040926214 100644 --- a/Core/HLE/sceNetAdhoc.cpp +++ b/Core/HLE/sceNetAdhoc.cpp @@ -1492,7 +1492,8 @@ static int sceNetAdhocPdpCreate(const char *mac, int port, int bufferSize, u32 f changeBlockingMode(usocket, 1); // Success - return hleLogDebug(SCENET, i + 1, "success"); + INFO_LOG(SCENET, "sceNetAdhocPdpCreate - PSP Socket id: %i, Host Socket id: %i", i + 1, usocket); + return i + 1; } // Free Memory for Internal Data @@ -3509,8 +3510,9 @@ static int sceNetAdhocPtpOpen(const char *srcmac, int sport, const char *dstmac, if (g_Config.bForcedFirstConnect && internal->attemptCount == 1) hleDelayResult(i + 1, "delayed ptpopen", rexmt_int); - // Return PTP Socket Pointer - return hleLogDebug(SCENET, i + 1, "success"); + // Return PTP Socket id + INFO_LOG(SCENET, "sceNetAdhocPtpOpen - PSP Socket id: %i, Host Socket id: %i", i + 1, tcpsocket); + return i + 1; } // Free Memory @@ -3635,7 +3637,7 @@ int AcceptPtpSocket(int ptpId, int newsocket, sockaddr_in& peeraddr, SceNetEther // Switch to non-blocking for futher usage changeBlockingMode(newsocket, 1); - INFO_LOG(SCENET, "sceNetAdhocPtpAccept[%i->%i:%u]: Established (%s:%u) - state: %d", ptpId, i + 1, internal->data.ptp.lport, ip2str(peeraddr.sin_addr).c_str(), internal->data.ptp.pport, internal->data.ptp.state); + INFO_LOG(SCENET, "sceNetAdhocPtpAccept[%i->%i(%i):%u]: Established (%s:%u) - state: %d", ptpId, i + 1, newsocket, internal->data.ptp.lport, ip2str(peeraddr.sin_addr).c_str(), internal->data.ptp.pport, internal->data.ptp.state); // Return Socket return i + 1; @@ -4102,8 +4104,9 @@ static int sceNetAdhocPtpListen(const char *srcmac, int sport, int bufsize, int // Switch to non-blocking for futher usage changeBlockingMode(tcpsocket, 1); - // Return PTP Socket Pointer - return hleLogDebug(SCENET, i + 1, "success"); + // Return PTP Socket id + INFO_LOG(SCENET, "sceNetAdhocPtpListen - PSP Socket id: %i, Host Socket id: %i", i + 1, tcpsocket); + return i + 1; } // Free Memory diff --git a/Core/KeyMap.cpp b/Core/KeyMap.cpp index b86644dd97..0b9a18dff1 100644 --- a/Core/KeyMap.cpp +++ b/Core/KeyMap.cpp @@ -431,6 +431,8 @@ const KeyMap_IntStrPair psp_button_names[] = { {VIRTKEY_SCREEN_ROTATION_HORIZONTAL180, "Display Landscape Reversed"}, #endif + {VIRTKEY_TOGGLE_WLAN, "Toggle WLAN"}, + {CTRL_HOME, "Home"}, {CTRL_HOLD, "Hold"}, {CTRL_WLAN, "Wlan"}, @@ -796,6 +798,8 @@ void AutoConfForPad(const std::string &name) { SetDefaultKeyMap(DEFAULT_MAPPING_ANDROID_XBOX, false); } else if (name == "Retro Station Controller") { SetDefaultKeyMap(DEFAULT_MAPPING_RETRO_STATION_CONTROLLER, false); + } else { + SetDefaultKeyMap(DEFAULT_MAPPING_ANDROID_PAD, false); } #else // TODO: Should actually check for XInput? diff --git a/Core/KeyMap.h b/Core/KeyMap.h index 660c907652..c9ae1c333d 100644 --- a/Core/KeyMap.h +++ b/Core/KeyMap.h @@ -72,6 +72,7 @@ enum { VIRTKEY_VR_CAMERA_ADJUST = 0x40000025, VIRTKEY_VR_CAMERA_RESET = 0x40000026, VIRTKEY_PREVIOUS_SLOT = 0x40000027, + VIRTKEY_TOGGLE_WLAN = 0x40000028, VIRTKEY_LAST, VIRTKEY_COUNT = VIRTKEY_LAST - VIRTKEY_FIRST }; diff --git a/Core/MIPS/ARM/ArmCompVFPU.cpp b/Core/MIPS/ARM/ArmCompVFPU.cpp index 716e9e3166..b843e84cbb 100644 --- a/Core/MIPS/ARM/ArmCompVFPU.cpp +++ b/Core/MIPS/ARM/ArmCompVFPU.cpp @@ -1310,10 +1310,13 @@ namespace MIPSComp // Set these BEFORE disable! if (imm - 128 == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } else { //ERROR @@ -1369,10 +1372,13 @@ namespace MIPSComp if (imm == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } } diff --git a/Core/MIPS/ARM/ArmCompVFPUNEON.cpp b/Core/MIPS/ARM/ArmCompVFPUNEON.cpp index f11f1c503d..1f4f783e76 100644 --- a/Core/MIPS/ARM/ArmCompVFPUNEON.cpp +++ b/Core/MIPS/ARM/ArmCompVFPUNEON.cpp @@ -722,10 +722,13 @@ void ArmJit::CompNEON_Mftv(MIPSOpcode op) { // Set these BEFORE disable! if (imm - 128 == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } else { //ERROR @@ -757,10 +760,13 @@ void ArmJit::CompNEON_Vmtvc(MIPSOpcode op) { if (imm - 128 == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } } diff --git a/Core/MIPS/ARM/ArmJit.cpp b/Core/MIPS/ARM/ArmJit.cpp index f8613d0826..cb4a505e8d 100644 --- a/Core/MIPS/ARM/ArmJit.cpp +++ b/Core/MIPS/ARM/ArmJit.cpp @@ -160,8 +160,16 @@ void ArmJit::FlushAll() FlushPrefixV(); } -void ArmJit::FlushPrefixV() -{ +void ArmJit::FlushPrefixV() { + if (js.startDefaultPrefix && !js.blockWrotePrefixes && js.HasNoPrefix()) { + // They started default, we never modified in memory, and they're default now. + // No reason to modify memory. This is common at end of blocks. Just clear dirty. + js.prefixSFlag = (JitState::PrefixState)(js.prefixSFlag & ~JitState::PREFIX_DIRTY); + js.prefixTFlag = (JitState::PrefixState)(js.prefixTFlag & ~JitState::PREFIX_DIRTY); + js.prefixDFlag = (JitState::PrefixState)(js.prefixDFlag & ~JitState::PREFIX_DIRTY); + return; + } + if ((js.prefixSFlag & JitState::PREFIX_DIRTY) != 0) { gpr.SetRegImm(SCRATCHREG1, js.prefixS); STR(SCRATCHREG1, CTXREG, offsetof(MIPSState, vfpuCtrl[VFPU_CTRL_SPREFIX])); @@ -179,6 +187,9 @@ void ArmJit::FlushPrefixV() STR(SCRATCHREG1, CTXREG, offsetof(MIPSState, vfpuCtrl[VFPU_CTRL_DPREFIX])); js.prefixDFlag = (JitState::PrefixState) (js.prefixDFlag & ~JitState::PREFIX_DIRTY); } + + // If we got here, we must've written prefixes to memory in this block. + js.blockWrotePrefixes = true; } void ArmJit::ClearCache() @@ -298,6 +309,7 @@ const u8 *ArmJit::DoJit(u32 em_address, JitBlock *b) js.curBlock = b; js.compiling = true; js.inDelaySlot = false; + js.blockWrotePrefixes = false; js.PrefixStart(); // We add a downcount flag check before the block, used when entering from a linked block. @@ -636,6 +648,10 @@ void ArmJit::Comp_Generic(MIPSOpcode op) // If it does eat them, it'll happen in MIPSCompileOp(). if ((info & OUT_EAT_PREFIX) == 0) js.PrefixUnknown(); + + // Even if DISABLE'd, we want to set this flag so we overwrite. + if ((info & OUT_VFPU_PREFIX) != 0) + js.blockWrotePrefixes = true; } } diff --git a/Core/MIPS/ARM64/Arm64CompVFPU.cpp b/Core/MIPS/ARM64/Arm64CompVFPU.cpp index 76545ff7fb..775b95df15 100644 --- a/Core/MIPS/ARM64/Arm64CompVFPU.cpp +++ b/Core/MIPS/ARM64/Arm64CompVFPU.cpp @@ -1062,10 +1062,13 @@ namespace MIPSComp { // Set these BEFORE disable! if (imm - 128 == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } else { //ERROR @@ -1119,10 +1122,13 @@ namespace MIPSComp { if (imm == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } } diff --git a/Core/MIPS/ARM64/Arm64Jit.cpp b/Core/MIPS/ARM64/Arm64Jit.cpp index 7f7f459256..1b5c4aca69 100644 --- a/Core/MIPS/ARM64/Arm64Jit.cpp +++ b/Core/MIPS/ARM64/Arm64Jit.cpp @@ -16,6 +16,7 @@ // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. #include "ppsspp_config.h" + #if PPSSPP_ARCH(ARM64) #include "Common/Profiler/Profiler.h" @@ -159,6 +160,15 @@ void Arm64Jit::FlushAll() { } void Arm64Jit::FlushPrefixV() { + if (js.startDefaultPrefix && !js.blockWrotePrefixes && js.HasNoPrefix()) { + // They started default, we never modified in memory, and they're default now. + // No reason to modify memory. This is common at end of blocks. Just clear dirty. + js.prefixSFlag = (JitState::PrefixState)(js.prefixSFlag & ~JitState::PREFIX_DIRTY); + js.prefixTFlag = (JitState::PrefixState)(js.prefixTFlag & ~JitState::PREFIX_DIRTY); + js.prefixDFlag = (JitState::PrefixState)(js.prefixDFlag & ~JitState::PREFIX_DIRTY); + return; + } + if ((js.prefixSFlag & JitState::PREFIX_DIRTY) != 0) { gpr.SetRegImm(SCRATCH1, js.prefixS); STR(INDEX_UNSIGNED, SCRATCH1, CTXREG, offsetof(MIPSState, vfpuCtrl[VFPU_CTRL_SPREFIX])); @@ -176,6 +186,9 @@ void Arm64Jit::FlushPrefixV() { STR(INDEX_UNSIGNED, SCRATCH1, CTXREG, offsetof(MIPSState, vfpuCtrl[VFPU_CTRL_DPREFIX])); js.prefixDFlag = (JitState::PrefixState) (js.prefixDFlag & ~JitState::PREFIX_DIRTY); } + + // If we got here, we must've written prefixes to memory in this block. + js.blockWrotePrefixes = true; } void Arm64Jit::ClearCache() { @@ -298,6 +311,7 @@ const u8 *Arm64Jit::DoJit(u32 em_address, JitBlock *b) { js.curBlock = b; js.compiling = true; js.inDelaySlot = false; + js.blockWrotePrefixes = false; js.PrefixStart(); // We add a downcount flag check before the block, used when entering from a linked block. @@ -629,6 +643,10 @@ void Arm64Jit::Comp_Generic(MIPSOpcode op) { // If it does eat them, it'll happen in MIPSCompileOp(). if ((info & OUT_EAT_PREFIX) == 0) js.PrefixUnknown(); + + // Even if DISABLE'd, we want to set this flag so we overwrite. + if ((info & OUT_VFPU_PREFIX) != 0) + js.blockWrotePrefixes = true; } } diff --git a/Core/MIPS/IR/IRCompVFPU.cpp b/Core/MIPS/IR/IRCompVFPU.cpp index dbb63fd04b..e2f1496860 100644 --- a/Core/MIPS/IR/IRCompVFPU.cpp +++ b/Core/MIPS/IR/IRCompVFPU.cpp @@ -1264,10 +1264,13 @@ namespace MIPSComp { if (imm - 128 == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } else { INVALIDOP; @@ -1316,10 +1319,13 @@ namespace MIPSComp { } if (imm == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } else { INVALIDOP; diff --git a/Core/MIPS/IR/IRFrontend.cpp b/Core/MIPS/IR/IRFrontend.cpp index 77e787ba74..9eea3be026 100644 --- a/Core/MIPS/IR/IRFrontend.cpp +++ b/Core/MIPS/IR/IRFrontend.cpp @@ -64,6 +64,15 @@ void IRFrontend::FlushAll() { } void IRFrontend::FlushPrefixV() { + if (js.startDefaultPrefix && !js.blockWrotePrefixes && js.HasNoPrefix()) { + // They started default, we never modified in memory, and they're default now. + // No reason to modify memory. This is common at end of blocks. Just clear dirty. + js.prefixSFlag = (JitState::PrefixState)(js.prefixSFlag & ~JitState::PREFIX_DIRTY); + js.prefixTFlag = (JitState::PrefixState)(js.prefixTFlag & ~JitState::PREFIX_DIRTY); + js.prefixDFlag = (JitState::PrefixState)(js.prefixDFlag & ~JitState::PREFIX_DIRTY); + return; + } + if ((js.prefixSFlag & JitState::PREFIX_DIRTY) != 0) { ir.Write(IROp::SetCtrlVFPU, VFPU_CTRL_SPREFIX, ir.AddConstant(js.prefixS)); js.prefixSFlag = (JitState::PrefixState) (js.prefixSFlag & ~JitState::PREFIX_DIRTY); @@ -78,6 +87,9 @@ void IRFrontend::FlushPrefixV() { ir.Write(IROp::SetCtrlVFPU, VFPU_CTRL_DPREFIX, ir.AddConstant(js.prefixD)); js.prefixDFlag = (JitState::PrefixState) (js.prefixDFlag & ~JitState::PREFIX_DIRTY); } + + // If we got here, we must've written prefixes to memory in this block. + js.blockWrotePrefixes = true; } void IRFrontend::EatInstruction(MIPSOpcode op) { @@ -120,8 +132,7 @@ bool IRFrontend::CheckRounding(u32 blockAddress) { // Let's try that one more time. We won't get back here because we toggled the value. js.startDefaultPrefix = false; - // TODO: Make sure this works. - // cleanSlate = true; + cleanSlate = true; } return cleanSlate; @@ -179,6 +190,10 @@ void IRFrontend::Comp_Generic(MIPSOpcode op) { // If it does eat them, it'll happen in MIPSCompileOp(). if ((info & OUT_EAT_PREFIX) == 0) js.PrefixUnknown(); + + // Even if DISABLE'd, we want to set this flag so we overwrite. + if ((info & OUT_VFPU_PREFIX) != 0) + js.blockWrotePrefixes = true; } } @@ -233,6 +248,7 @@ void IRFrontend::DoJit(u32 em_address, std::vector &instructions, u32 &m js.curBlock = nullptr; js.compiling = true; js.hadBreakpoints = false; + js.blockWrotePrefixes = false; js.inDelaySlot = false; js.PrefixStart(); ir.Clear(); diff --git a/Core/MIPS/IR/IRInterpreter.cpp b/Core/MIPS/IR/IRInterpreter.cpp index 1beed06f8d..d3535fd16e 100644 --- a/Core/MIPS/IR/IRInterpreter.cpp +++ b/Core/MIPS/IR/IRInterpreter.cpp @@ -794,10 +794,10 @@ u32 IRInterpret(MIPSState *mips, const IRInst *inst, int count) { case IROp::FMin: if (my_isnan(mips->f[inst->src1]) || my_isnan(mips->f[inst->src2])) { // See interpreter for this logic: this is for vmin, we're comparing mantissa+exp. - if (mips->fi[inst->src1] < 0 && mips->fi[inst->src2] < 0) { - mips->fi[inst->dest] = std::max(mips->fi[inst->src1], mips->fi[inst->src2]); + if (mips->fs[inst->src1] < 0 && mips->fs[inst->src2] < 0) { + mips->fs[inst->dest] = std::max(mips->fs[inst->src1], mips->fs[inst->src2]); } else { - mips->fi[inst->dest] = std::min(mips->fi[inst->src1], mips->fi[inst->src2]); + mips->fs[inst->dest] = std::min(mips->fs[inst->src1], mips->fs[inst->src2]); } } else { mips->f[inst->dest] = std::min(mips->f[inst->src1], mips->f[inst->src2]); @@ -806,10 +806,10 @@ u32 IRInterpret(MIPSState *mips, const IRInst *inst, int count) { case IROp::FMax: if (my_isnan(mips->f[inst->src1]) || my_isnan(mips->f[inst->src2])) { // See interpreter for this logic: this is for vmax, we're comparing mantissa+exp. - if (mips->fi[inst->src1] < 0 && mips->fi[inst->src2] < 0) { - mips->fi[inst->dest] = std::min(mips->fi[inst->src1], mips->fi[inst->src2]); + if (mips->fs[inst->src1] < 0 && mips->fs[inst->src2] < 0) { + mips->fs[inst->dest] = std::min(mips->fs[inst->src1], mips->fs[inst->src2]); } else { - mips->fi[inst->dest] = std::max(mips->fi[inst->src1], mips->fi[inst->src2]); + mips->fs[inst->dest] = std::max(mips->fs[inst->src1], mips->fs[inst->src2]); } } else { mips->f[inst->dest] = std::max(mips->f[inst->src1], mips->f[inst->src2]); diff --git a/Core/MIPS/IR/IRRegCache.cpp b/Core/MIPS/IR/IRRegCache.cpp index dd4f49cdec..73ee3fa52d 100644 --- a/Core/MIPS/IR/IRRegCache.cpp +++ b/Core/MIPS/IR/IRRegCache.cpp @@ -367,7 +367,7 @@ IRNativeReg IRNativeRegCacheBase::FindFreeReg(MIPSLoc type, MIPSMap flags) const for (int i = 0; i < allocCount; i++) { IRNativeReg nreg = IRNativeReg(allocOrder[i] - base); - if (nr[nreg].mipsReg == IRREG_INVALID) { + if (nr[nreg].mipsReg == IRREG_INVALID && nr[nreg].tempLockIRIndex < irIndex_) { return nreg; } } @@ -427,6 +427,7 @@ IRNativeReg IRNativeRegCacheBase::FindBestToSpill(MIPSLoc type, MIPSMap flags, b if (!unusedOnly || usage == IRUsage::UNUSED) { // TODO: Use age or something to choose which register to spill? // TODO: Spill dirty regs first? or opposite? + *clobbered = mipsReg == MIPS_REG_ZERO; return nreg; } } @@ -697,6 +698,10 @@ void IRNativeRegCacheBase::ApplyMapping(const Mapping *mapping, int count) { } } + auto isNoinit = [](MIPSMap f) { + return (f & MIPSMap::NOINIT) == MIPSMap::NOINIT; + }; + auto mapRegs = [&](int i) { MIPSLoc type = MIPSLoc::MEM; switch (mapping[i].type) { @@ -713,24 +718,39 @@ void IRNativeRegCacheBase::ApplyMapping(const Mapping *mapping, int count) { return; } + MIPSMap flags = mapping[i].flags; + for (int j = 0; j < count; ++j) { + if (mapping[j].type == mapping[i].type && mapping[j].reg == mapping[i].reg && i != j) { + _assert_msg_(mapping[j].lanes == mapping[i].lanes, "Lane aliasing not supported yet"); + + if (!isNoinit(mapping[j].flags) && isNoinit(flags)) { + flags = (flags & MIPSMap::BACKEND_MASK) | MIPSMap::DIRTY; + } + } + } + if (config_.mapFPUSIMD || mapping[i].type == 'G') { - MapNativeReg(type, mapping[i].reg, mapping[i].lanes, mapping[i].flags); + MapNativeReg(type, mapping[i].reg, mapping[i].lanes, flags); return; } for (int j = 0; j < mapping[i].lanes; ++j) - MapNativeReg(type, mapping[i].reg + j, 1, mapping[i].flags); + MapNativeReg(type, mapping[i].reg + j, 1, flags); + }; + auto mapFilteredRegs = [&](auto pred) { + for (int i = 0; i < count; ++i) { + if (pred(mapping[i].flags)) + mapRegs(i); + } }; - // Do two passes: first any without NOINIT, then NOINIT. - for (int i = 0; i < count; ++i) { - if ((mapping[i].flags & MIPSMap::NOINIT) != MIPSMap::NOINIT) - mapRegs(i); - } - for (int i = 0; i < count; ++i) { - if ((mapping[i].flags & MIPSMap::NOINIT) == MIPSMap::NOINIT) - mapRegs(i); - } + // Do two passes: with backend special flags, and without. + mapFilteredRegs([](MIPSMap flags) { + return (flags & MIPSMap::BACKEND_MASK) != MIPSMap::INIT; + }); + mapFilteredRegs([](MIPSMap flags) { + return (flags & MIPSMap::BACKEND_MASK) == MIPSMap::INIT; + }); } void IRNativeRegCacheBase::CleanupMapping(const Mapping *mapping, int count) { @@ -1030,6 +1050,11 @@ IRNativeReg IRNativeRegCacheBase::MapNativeRegAsPointer(IRReg gpr) { return mr[gpr].nReg; } + // Cannot use if somehow multilane. + if (mr[gpr].nReg != -1 && mr[gpr].lane != -1) { + FlushNativeReg(mr[gpr].nReg); + } + IRNativeReg nreg = mr[gpr].nReg; if (mr[gpr].loc != MIPSLoc::REG && mr[gpr].loc != MIPSLoc::REG_IMM) { nreg = MapNativeReg(MIPSLoc::REG, gpr, 1, MIPSMap::INIT); @@ -1040,6 +1065,13 @@ IRNativeReg IRNativeRegCacheBase::MapNativeRegAsPointer(IRReg gpr) { mr[gpr].loc = MIPSLoc::REG; mr[gpr].imm = 0; +#ifdef MASKED_PSP_MEMORY + if (nr[mr[gpr].nReg].isDirty) { + StoreNativeReg(mr[gpr].nReg, gpr, 1); + nr[mr[gpr].nReg].isDirty = false; + } +#endif + if (!jo_->enablePointerify) { AdjustNativeRegAsPtr(nreg, true); mr[gpr].loc = MIPSLoc::REG_AS_PTR; diff --git a/Core/MIPS/IR/IRRegCache.h b/Core/MIPS/IR/IRRegCache.h index 63a2eb4df3..3f7d78686a 100644 --- a/Core/MIPS/IR/IRRegCache.h +++ b/Core/MIPS/IR/IRRegCache.h @@ -79,6 +79,8 @@ enum class MIPSMap : uint8_t { INIT = 0, DIRTY = 1, NOINIT = 2 | DIRTY, + + BACKEND_MASK = 0xF0, }; static inline MIPSMap operator |(const MIPSMap &lhs, const MIPSMap &rhs) { return MIPSMap((uint8_t)lhs | (uint8_t)rhs); diff --git a/Core/MIPS/JitCommon/JitState.h b/Core/MIPS/JitCommon/JitState.h index e453a33d8c..37acde3b62 100644 --- a/Core/MIPS/JitCommon/JitState.h +++ b/Core/MIPS/JitCommon/JitState.h @@ -77,6 +77,7 @@ namespace MIPSComp { // VFPU prefix magic bool startDefaultPrefix = true; + bool blockWrotePrefixes = false; u32 prefixS; u32 prefixT; u32 prefixD; diff --git a/Core/MIPS/MIPSTables.cpp b/Core/MIPS/MIPSTables.cpp index 28ff363da9..825c2d24d7 100644 --- a/Core/MIPS/MIPSTables.cpp +++ b/Core/MIPS/MIPSTables.cpp @@ -340,7 +340,7 @@ static const MIPSInstruction tableCop2[32] = // 010010 xxxxx ..... ............. INSTR("mtc2", JITFUNC(Comp_Generic), Dis_Generic, 0, IN_RT), INVALID, INSTR("ctc2", JITFUNC(Comp_Generic), Dis_Generic, 0, 0), - INSTR("mtv", JITFUNC(Comp_Mftv), Dis_Mftv, Int_Mftv, IN_RT|OUT_VFPU_CC|OUT_OTHER|IS_VFPU), + INSTR("mtv", JITFUNC(Comp_Mftv), Dis_Mftv, Int_Mftv, IN_RT|OUT_VFPU_CC|OUT_OTHER|IS_VFPU|OUT_VFPU_PREFIX), //8 ENCODING(Cop2BC2), INSTR("??", JITFUNC(Comp_Generic), Dis_Generic, 0, 0), @@ -749,7 +749,7 @@ static const MIPSInstruction tableVFPU9[32] = // 110100 00010 xxxxx . ....... . //16 INSTR("vmfvc", JITFUNC(Comp_Vmfvc), Dis_Vmfvc, Int_Vmfvc, IN_OTHER|IN_VFPU_CC|OUT_OTHER|IS_VFPU), - INSTR("vmtvc", JITFUNC(Comp_Vmtvc), Dis_Vmtvc, Int_Vmtvc, IN_OTHER|OUT_VFPU_CC|OUT_OTHER|IS_VFPU), + INSTR("vmtvc", JITFUNC(Comp_Vmtvc), Dis_Vmtvc, Int_Vmtvc, IN_OTHER|OUT_VFPU_CC|OUT_OTHER|IS_VFPU|OUT_VFPU_PREFIX), INVALID, INVALID, diff --git a/Core/MIPS/MIPSTables.h b/Core/MIPS/MIPSTables.h index e82a3c40de..3a468479e8 100644 --- a/Core/MIPS/MIPSTables.h +++ b/Core/MIPS/MIPSTables.h @@ -71,8 +71,9 @@ #define OUT_EAT_PREFIX 0x08000000ULL #define VFPU_NO_PREFIX 0x10000000ULL -#define IS_VFPU 0x20000000ULL -#define IS_FPU 0x40000000ULL +#define OUT_VFPU_PREFIX 0x20000000ULL +#define IS_VFPU 0x40000000ULL +#define IS_FPU 0x80000000ULL #define IN_FS 0x000100000000ULL #define IN_FT 0x000200000000ULL diff --git a/Core/MIPS/x86/CompVFPU.cpp b/Core/MIPS/x86/CompVFPU.cpp index e553354d61..99f6640c94 100644 --- a/Core/MIPS/x86/CompVFPU.cpp +++ b/Core/MIPS/x86/CompVFPU.cpp @@ -2544,10 +2544,13 @@ void Jit::Comp_Mftv(MIPSOpcode op) { // TODO: Optimization if rt is Imm? if (imm - 128 == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm - 128 == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } else { //ERROR @@ -2596,10 +2599,13 @@ void Jit::Comp_Vmtvc(MIPSOpcode op) { if (imm == VFPU_CTRL_SPREFIX) { js.prefixSFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_TPREFIX) { js.prefixTFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } else if (imm == VFPU_CTRL_DPREFIX) { js.prefixDFlag = JitState::PREFIX_UNKNOWN; + js.blockWrotePrefixes = true; } } } diff --git a/Core/MIPS/x86/Jit.cpp b/Core/MIPS/x86/Jit.cpp index 85285d055c..dab0032b65 100644 --- a/Core/MIPS/x86/Jit.cpp +++ b/Core/MIPS/x86/Jit.cpp @@ -182,6 +182,15 @@ void Jit::FlushAll() { } void Jit::FlushPrefixV() { + if (js.startDefaultPrefix && !js.blockWrotePrefixes && js.HasNoPrefix()) { + // They started default, we never modified in memory, and they're default now. + // No reason to modify memory. This is common at end of blocks. Just clear dirty. + js.prefixSFlag = (JitState::PrefixState)(js.prefixSFlag & ~JitState::PREFIX_DIRTY); + js.prefixTFlag = (JitState::PrefixState)(js.prefixTFlag & ~JitState::PREFIX_DIRTY); + js.prefixDFlag = (JitState::PrefixState)(js.prefixDFlag & ~JitState::PREFIX_DIRTY); + return; + } + if ((js.prefixSFlag & JitState::PREFIX_DIRTY) != 0) { MOV(32, MIPSSTATE_VAR(vfpuCtrl[VFPU_CTRL_SPREFIX]), Imm32(js.prefixS)); js.prefixSFlag = (JitState::PrefixState) (js.prefixSFlag & ~JitState::PREFIX_DIRTY); @@ -196,6 +205,9 @@ void Jit::FlushPrefixV() { MOV(32, MIPSSTATE_VAR(vfpuCtrl[VFPU_CTRL_DPREFIX]), Imm32(js.prefixD)); js.prefixDFlag = (JitState::PrefixState) (js.prefixDFlag & ~JitState::PREFIX_DIRTY); } + + // If we got here, we must've written prefixes to memory in this block. + js.blockWrotePrefixes = true; } void Jit::WriteDowncount(int offset) { @@ -356,6 +368,7 @@ const u8 *Jit::DoJit(u32 em_address, JitBlock *b) { js.curBlock = b; js.compiling = true; js.inDelaySlot = false; + js.blockWrotePrefixes = false; js.afterOp = JitState::AFTER_NONE; js.PrefixStart(); @@ -681,6 +694,10 @@ void Jit::Comp_Generic(MIPSOpcode op) { // If it does eat them, it'll happen in MIPSCompileOp(). if ((info & OUT_EAT_PREFIX) == 0) js.PrefixUnknown(); + + // Even if DISABLE'd, we want to set this flag so we overwrite. + if ((info & OUT_VFPU_PREFIX) != 0) + js.blockWrotePrefixes = true; } } diff --git a/Core/MIPS/x86/X64IRCompALU.cpp b/Core/MIPS/x86/X64IRCompALU.cpp index 505c0b6f2a..4f45f6cd46 100644 --- a/Core/MIPS/x86/X64IRCompALU.cpp +++ b/Core/MIPS/x86/X64IRCompALU.cpp @@ -135,19 +135,13 @@ void X64JitBackend::CompIR_Assign(IRInst inst) { break; case IROp::Ext8to32: -#if PPSSPP_ARCH(X86) - DISABLE; // 8-bit registers need special handling -#endif - regs_.Map(inst); - MOVZX(32, 8, regs_.RX(inst.dest), regs_.R(inst.src1)); + regs_.MapWithFlags(inst, X64Map::NONE, X64Map::LOW_SUBREG); + MOVSX(32, 8, regs_.RX(inst.dest), regs_.R(inst.src1)); break; case IROp::Ext16to32: -#if PPSSPP_ARCH(X86) - DISABLE; // 8-bit registers need special handling -#endif regs_.Map(inst); - MOVZX(32, 16, regs_.RX(inst.dest), regs_.R(inst.src1)); + MOVSX(32, 16, regs_.RX(inst.dest), regs_.R(inst.src1)); break; default: @@ -183,12 +177,49 @@ void X64JitBackend::CompIR_Bits(IRInst inst) { void X64JitBackend::CompIR_Compare(IRInst inst) { CONDITIONAL_DISABLE; + auto setCC = [&](const OpArg &arg, CCFlags cc) { + if (regs_.HasLowSubregister(regs_.RX(inst.dest)) && inst.dest != inst.src1 && inst.dest != inst.src2) { + XOR(32, regs_.R(inst.dest), regs_.R(inst.dest)); + CMP(32, regs_.R(inst.src1), arg); + SETcc(cc, regs_.R(inst.dest)); + } else { + CMP(32, regs_.R(inst.src1), arg); + SETcc(cc, R(SCRATCH1)); + MOVZX(32, 8, regs_.RX(inst.dest), R(SCRATCH1)); + } + }; + switch (inst.op) { case IROp::Slt: + regs_.Map(inst); + setCC(regs_.R(inst.src2), CC_L); + break; + case IROp::SltConst: + if (inst.constant == 0) { + // Basically, getting the sign bit. Let's shift instead. + regs_.Map(inst); + if (inst.dest != inst.src1) + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + SHR(32, regs_.R(inst.dest), Imm8(31)); + } else { + regs_.Map(inst); + setCC(Imm32(inst.constant), CC_L); + } + break; + case IROp::SltU: + regs_.Map(inst); + setCC(regs_.R(inst.src2), CC_B); + break; + case IROp::SltUConst: - CompIR_Generic(inst); + if (inst.constant == 0) { + regs_.SetGPRImm(inst.dest, 0); + } else { + regs_.Map(inst); + setCC(Imm32(inst.constant), CC_B); + } break; default: @@ -202,10 +233,53 @@ void X64JitBackend::CompIR_CondAssign(IRInst inst) { switch (inst.op) { case IROp::MovZ: + if (inst.dest != inst.src2) { + regs_.Map(inst); + CMP(32, regs_.R(inst.src1), Imm32(0)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src2), CC_Z); + } + break; + case IROp::MovNZ: + if (inst.dest != inst.src2) { + regs_.Map(inst); + CMP(32, regs_.R(inst.src1), Imm32(0)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src2), CC_NZ); + } + break; + case IROp::Max: + regs_.Map(inst); + if (inst.src1 == inst.src2) { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + } else if (inst.dest == inst.src1) { + CMP(32, regs_.R(inst.src1), regs_.R(inst.src2)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src2), CC_L); + } else if (inst.dest == inst.src2) { + CMP(32, regs_.R(inst.src1), regs_.R(inst.src2)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src1), CC_G); + } else { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + CMP(32, regs_.R(inst.dest), regs_.R(inst.src2)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src2), CC_L); + } + break; + case IROp::Min: - CompIR_Generic(inst); + regs_.Map(inst); + if (inst.src1 == inst.src2) { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + } else if (inst.dest == inst.src1) { + CMP(32, regs_.R(inst.src1), regs_.R(inst.src2)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src2), CC_G); + } else if (inst.dest == inst.src2) { + CMP(32, regs_.R(inst.src1), regs_.R(inst.src2)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src1), CC_L); + } else { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + CMP(32, regs_.R(inst.dest), regs_.R(inst.src2)); + CMOVcc(32, regs_.RX(inst.dest), regs_.R(inst.src2), CC_G); + } break; default: @@ -234,10 +308,54 @@ void X64JitBackend::CompIR_HiLo(IRInst inst) { switch (inst.op) { case IROp::MtLo: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::DIRTY } }); + // First, clear the bits we're replacing. + MOV(64, R(SCRATCH1), Imm64(0xFFFFFFFF00000000ULL)); + AND(64, regs_.R(IRREG_LO), R(SCRATCH1)); + // Now clear the high bits and merge. + MOVZX(64, 32, regs_.RX(inst.src1), regs_.R(inst.src1)); + OR(64, regs_.R(IRREG_LO), regs_.R(inst.src1)); +#else + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::DIRTY } }); + MOV(32, regs_.R(IRREG_LO), regs_.R(inst.src1)); +#endif + break; + case IROp::MtHi: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::DIRTY } }); + // First, clear the bits we're replacing. + MOVZX(64, 32, regs_.RX(IRREG_LO), regs_.R(IRREG_LO)); + // Then move the new bits into place. + MOV(32, R(SCRATCH1), regs_.R(inst.src1)); + SHL(64, R(SCRATCH1), Imm8(32)); + OR(64, regs_.R(IRREG_LO), R(SCRATCH1)); +#else + regs_.MapWithExtra(inst, { { 'G', IRREG_HI, 1, MIPSMap::DIRTY } }); + MOV(32, regs_.R(IRREG_HI), regs_.R(inst.src1)); +#endif + break; + case IROp::MfLo: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::INIT } }); + MOV(32, regs_.R(inst.dest), regs_.R(IRREG_LO)); +#else + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::INIT } }); + MOV(32, regs_.R(inst.dest), regs_.R(IRREG_LO)); +#endif + break; + case IROp::MfHi: - CompIR_Generic(inst); +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::INIT } }); + MOV(64, regs_.R(inst.dest), regs_.R(IRREG_LO)); + SHR(64, regs_.R(inst.dest), Imm8(32)); +#else + regs_.MapWithExtra(inst, { { 'G', IRREG_HI, 1, MIPSMap::INIT } }); + MOV(32, regs_.R(inst.dest), regs_.R(IRREG_HI)); +#endif break; default: @@ -315,12 +433,111 @@ void X64JitBackend::CompIR_Mult(IRInst inst) { switch (inst.op) { case IROp::Mult: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::NOINIT } }); + MOVSX(64, 32, regs_.RX(IRREG_LO), regs_.R(inst.src1)); + MOVSX(64, 32, regs_.RX(inst.src2), regs_.R(inst.src2)); + IMUL(64, regs_.RX(IRREG_LO), regs_.R(inst.src2)); +#else + // Force a spill (before spill locks.) + regs_.MapGPR(IRREG_HI, MIPSMap::NOINIT | X64Map::HIGH_DATA); + // We keep it here so it stays locked. + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::NOINIT }, { 'G', IRREG_HI, 1, MIPSMap::NOINIT | X64Map::HIGH_DATA } }); + MOV(32, R(EAX), regs_.R(inst.src1)); + IMUL(32, regs_.R(inst.src2)); + MOV(32, regs_.R(IRREG_LO), R(EAX)); + // IRREG_HI was mapped to EDX. +#endif + break; + case IROp::MultU: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::NOINIT } }); + MOVZX(64, 32, regs_.RX(IRREG_LO), regs_.R(inst.src1)); + MOVZX(64, 32, regs_.RX(inst.src2), regs_.R(inst.src2)); + IMUL(64, regs_.RX(IRREG_LO), regs_.R(inst.src2)); +#else + // Force a spill (before spill locks.) + regs_.MapGPR(IRREG_HI, MIPSMap::NOINIT | X64Map::HIGH_DATA); + // We keep it here so it stays locked. + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::NOINIT }, { 'G', IRREG_HI, 1, MIPSMap::NOINIT | X64Map::HIGH_DATA } }); + MOV(32, R(EAX), regs_.R(inst.src1)); + MUL(32, regs_.R(inst.src2)); + MOV(32, regs_.R(IRREG_LO), R(EAX)); + // IRREG_HI was mapped to EDX. +#endif + break; + case IROp::Madd: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::DIRTY } }); + MOVSX(64, 32, SCRATCH1, regs_.R(inst.src1)); + MOVSX(64, 32, regs_.RX(inst.src2), regs_.R(inst.src2)); + IMUL(64, SCRATCH1, regs_.R(inst.src2)); + ADD(64, regs_.R(IRREG_LO), R(SCRATCH1)); +#else + // For ones that modify LO/HI, we can't have anything else in EDX. + regs_.ReserveAndLockXGPR(EDX); + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::DIRTY }, { 'G', IRREG_HI, 1, MIPSMap::DIRTY } }); + MOV(32, R(EAX), regs_.R(inst.src1)); + IMUL(32, regs_.R(inst.src2)); + ADD(32, regs_.R(IRREG_LO), R(EAX)); + ADC(32, regs_.R(IRREG_HI), R(EDX)); +#endif + break; + case IROp::MaddU: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::DIRTY } }); + MOVZX(64, 32, SCRATCH1, regs_.R(inst.src1)); + MOVZX(64, 32, regs_.RX(inst.src2), regs_.R(inst.src2)); + IMUL(64, SCRATCH1, regs_.R(inst.src2)); + ADD(64, regs_.R(IRREG_LO), R(SCRATCH1)); +#else + // For ones that modify LO/HI, we can't have anything else in EDX. + regs_.ReserveAndLockXGPR(EDX); + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::DIRTY }, { 'G', IRREG_HI, 1, MIPSMap::DIRTY } }); + MOV(32, R(EAX), regs_.R(inst.src1)); + MUL(32, regs_.R(inst.src2)); + ADD(32, regs_.R(IRREG_LO), R(EAX)); + ADC(32, regs_.R(IRREG_HI), R(EDX)); +#endif + break; + case IROp::Msub: +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::DIRTY } }); + MOVSX(64, 32, SCRATCH1, regs_.R(inst.src1)); + MOVSX(64, 32, regs_.RX(inst.src2), regs_.R(inst.src2)); + IMUL(64, SCRATCH1, regs_.R(inst.src2)); + SUB(64, regs_.R(IRREG_LO), R(SCRATCH1)); +#else + // For ones that modify LO/HI, we can't have anything else in EDX. + regs_.ReserveAndLockXGPR(EDX); + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::DIRTY }, { 'G', IRREG_HI, 1, MIPSMap::DIRTY } }); + MOV(32, R(EAX), regs_.R(inst.src1)); + IMUL(32, regs_.R(inst.src2)); + SUB(32, regs_.R(IRREG_LO), R(EAX)); + SBB(32, regs_.R(IRREG_HI), R(EDX)); +#endif + break; + case IROp::MsubU: - CompIR_Generic(inst); +#if PPSSPP_ARCH(AMD64) + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 2, MIPSMap::DIRTY } }); + MOVZX(64, 32, SCRATCH1, regs_.R(inst.src1)); + MOVZX(64, 32, regs_.RX(inst.src2), regs_.R(inst.src2)); + IMUL(64, SCRATCH1, regs_.R(inst.src2)); + SUB(64, regs_.R(IRREG_LO), R(SCRATCH1)); +#else + // For ones that modify LO/HI, we can't have anything else in EDX. + regs_.ReserveAndLockXGPR(EDX); + regs_.MapWithExtra(inst, { { 'G', IRREG_LO, 1, MIPSMap::DIRTY }, { 'G', IRREG_HI, 1, MIPSMap::DIRTY } }); + MOV(32, R(EAX), regs_.R(inst.src1)); + MUL(32, regs_.R(inst.src2)); + SUB(32, regs_.R(IRREG_LO), R(EAX)); + SBB(32, regs_.R(IRREG_HI), R(EDX)); +#endif break; default: @@ -334,10 +551,74 @@ void X64JitBackend::CompIR_Shift(IRInst inst) { switch (inst.op) { case IROp::Shl: + if (cpu_info.bBMI2) { + regs_.Map(inst); + SHLX(32, regs_.RX(inst.dest), regs_.R(inst.src1), regs_.RX(inst.src2)); + } else { + regs_.MapWithFlags(inst, X64Map::NONE, X64Map::NONE, X64Map::SHIFT); + if (inst.dest == inst.src1) { + SHL(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } else if (inst.dest == inst.src2) { + MOV(32, R(SCRATCH1), regs_.R(inst.src1)); + SHL(32, R(SCRATCH1), regs_.R(inst.src2)); + MOV(32, regs_.R(inst.dest), R(SCRATCH1)); + } else { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + SHL(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } + } + break; + case IROp::Shr: + if (cpu_info.bBMI2) { + regs_.Map(inst); + SHRX(32, regs_.RX(inst.dest), regs_.R(inst.src1), regs_.RX(inst.src2)); + } else { + regs_.MapWithFlags(inst, X64Map::NONE, X64Map::NONE, X64Map::SHIFT); + if (inst.dest == inst.src1) { + SHR(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } else if (inst.dest == inst.src2) { + MOV(32, R(SCRATCH1), regs_.R(inst.src1)); + SHR(32, R(SCRATCH1), regs_.R(inst.src2)); + MOV(32, regs_.R(inst.dest), R(SCRATCH1)); + } else { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + SHR(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } + } + break; + case IROp::Sar: + if (cpu_info.bBMI2) { + regs_.Map(inst); + SARX(32, regs_.RX(inst.dest), regs_.R(inst.src1), regs_.RX(inst.src2)); + } else { + regs_.MapWithFlags(inst, X64Map::NONE, X64Map::NONE, X64Map::SHIFT); + if (inst.dest == inst.src1) { + SAR(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } else if (inst.dest == inst.src2) { + MOV(32, R(SCRATCH1), regs_.R(inst.src1)); + SAR(32, R(SCRATCH1), regs_.R(inst.src2)); + MOV(32, regs_.R(inst.dest), R(SCRATCH1)); + } else { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + SAR(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } + } + break; + case IROp::Ror: - CompIR_Generic(inst); + regs_.MapWithFlags(inst, X64Map::NONE, X64Map::NONE, X64Map::SHIFT); + if (inst.dest == inst.src1) { + ROR(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } else if (inst.dest == inst.src2) { + MOV(32, R(SCRATCH1), regs_.R(inst.src1)); + ROR(32, R(SCRATCH1), regs_.R(inst.src2)); + MOV(32, regs_.R(inst.dest), R(SCRATCH1)); + } else { + MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); + ROR(32, regs_.R(inst.dest), regs_.R(inst.src2)); + } break; case IROp::ShlImm: @@ -400,6 +681,9 @@ void X64JitBackend::CompIR_Shift(IRInst inst) { regs_.Map(inst); MOV(32, regs_.R(inst.dest), regs_.R(inst.src1)); } + } else if (cpu_info.bBMI2) { + regs_.Map(inst); + RORX(32, regs_.RX(inst.dest), regs_.R(inst.src1), inst.src2 & 31); } else { regs_.Map(inst); if (inst.dest != inst.src1) diff --git a/Core/MIPS/x86/X64IRCompBranch.cpp b/Core/MIPS/x86/X64IRCompBranch.cpp index 367336eee9..a3e463114a 100644 --- a/Core/MIPS/x86/X64IRCompBranch.cpp +++ b/Core/MIPS/x86/X64IRCompBranch.cpp @@ -54,7 +54,8 @@ void X64JitBackend::CompIR_Exit(IRInst inst) { break; case IROp::ExitToPC: - CompIR_Generic(inst); + FlushAll(); + JMP(dispatcherCheckCoreState_, true); break; default: diff --git a/Core/MIPS/x86/X64IRCompFPU.cpp b/Core/MIPS/x86/X64IRCompFPU.cpp index e9c1b9f683..fe5d86f435 100644 --- a/Core/MIPS/x86/X64IRCompFPU.cpp +++ b/Core/MIPS/x86/X64IRCompFPU.cpp @@ -18,6 +18,10 @@ #include "ppsspp_config.h" #if PPSSPP_ARCH(X86) || PPSSPP_ARCH(AMD64) +#ifndef offsetof +#include +#endif + #include "Core/MIPS/x86/X64IRJit.h" #include "Core/MIPS/x86/X64IRRegCache.h" @@ -36,7 +40,12 @@ namespace MIPSComp { using namespace Gen; using namespace X64IRJitConstants; +static struct SimdConstants { alignas(16) const u32 reverseQNAN[4] = { 0x803FFFFF, 0x803FFFFF, 0x803FFFFF, 0x803FFFFF }; +alignas(16) const u32 noSignMask[4] = { 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF }; +alignas(16) const u32 positiveInfinity[4] = { 0x7F800000, 0x7F800000, 0x7F800000, 0x7F800000 }; +alignas(16) const u32 signBitAll[4] = { 0x80000000, 0x80000000, 0x80000000, 0x80000000 }; +} simdConstants; void X64JitBackend::CompIR_FArith(IRInst inst) { CONDITIONAL_DISABLE; @@ -100,10 +109,10 @@ void X64JitBackend::CompIR_FArith(IRInst inst) { ANDPS(regs_.FX(inst.dest), R(tempReg)); // At this point fd = FFFFFFFF if non-NAN inputs produced a NAN output. // We'll AND it with the inverse QNAN bits to clear (00000000 means no change.) - if (RipAccessible(&reverseQNAN)) { - ANDPS(regs_.FX(inst.dest), M(&reverseQNAN)); // rip accessible + if (RipAccessible(&simdConstants.reverseQNAN)) { + ANDPS(regs_.FX(inst.dest), M(&simdConstants.reverseQNAN)); // rip accessible } else { - MOV(PTRBITS, R(SCRATCH1), ImmPtr(&reverseQNAN)); + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.reverseQNAN)); ANDPS(regs_.FX(inst.dest), MatR(SCRATCH1)); } // ANDN is backwards, which is why we saved XMM0 to start. Now put it back. @@ -113,9 +122,48 @@ void X64JitBackend::CompIR_FArith(IRInst inst) { } case IROp::FDiv: + if (inst.dest == inst.src1) { + regs_.Map(inst); + DIVSS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } else if (cpu_info.bAVX) { + regs_.Map(inst); + VDIVSS(regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else if (inst.dest == inst.src2) { + X64Reg tempReg = regs_.MapWithFPRTemp(inst); + MOVAPS(tempReg, regs_.F(inst.src2)); + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + DIVSS(regs_.FX(inst.dest), R(tempReg)); + } else { + regs_.Map(inst); + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + DIVSS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + break; + case IROp::FSqrt: + regs_.Map(inst); + SQRTSS(regs_.FX(inst.dest), regs_.F(inst.src1)); + break; + case IROp::FNeg: - CompIR_Generic(inst); + regs_.Map(inst); + if (cpu_info.bAVX) { + if (RipAccessible(&simdConstants.signBitAll)) { + VXORPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), M(&simdConstants.signBitAll)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.signBitAll)); + VXORPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), MatR(SCRATCH1)); + } + } else { + if (inst.dest != inst.src1) + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + if (RipAccessible(&simdConstants.signBitAll)) { + XORPS(regs_.FX(inst.dest), M(&simdConstants.signBitAll)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.signBitAll)); + XORPS(regs_.FX(inst.dest), MatR(SCRATCH1)); + } + } break; default: @@ -136,6 +184,26 @@ void X64JitBackend::CompIR_FAssign(IRInst inst) { break; case IROp::FAbs: + regs_.Map(inst); + if (cpu_info.bAVX) { + if (RipAccessible(&simdConstants.noSignMask)) { + VANDPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), M(&simdConstants.noSignMask)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.noSignMask)); + VANDPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), MatR(SCRATCH1)); + } + } else { + if (inst.dest != inst.src1) + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + if (RipAccessible(&simdConstants.noSignMask)) { + ANDPS(regs_.FX(inst.dest), M(&simdConstants.noSignMask)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.noSignMask)); + ANDPS(regs_.FX(inst.dest), MatR(SCRATCH1)); + } + } + break; + case IROp::FSign: CompIR_Generic(inst); break; @@ -151,14 +219,233 @@ void X64JitBackend::CompIR_FCompare(IRInst inst) { constexpr IRReg IRREG_VFPU_CC = IRREG_VFPU_CTRL_BASE + VFPU_CTRL_CC; + auto ccToFpcond = [&](IRReg lhs, IRReg rhs, CCFlags cc) { + if (regs_.HasLowSubregister(regs_.RX(IRREG_FPCOND))) { + XOR(32, regs_.R(IRREG_FPCOND), regs_.R(IRREG_FPCOND)); + UCOMISS(regs_.FX(lhs), regs_.F(rhs)); + SETcc(cc, regs_.R(IRREG_FPCOND)); + } else { + UCOMISS(regs_.FX(lhs), regs_.F(rhs)); + SETcc(cc, R(SCRATCH1)); + MOVZX(32, 8, regs_.RX(IRREG_FPCOND), R(SCRATCH1)); + } + }; + switch (inst.op) { case IROp::FCmp: + switch (inst.dest) { + case IRFpCompareMode::False: + regs_.SetGPRImm(IRREG_FPCOND, 0); + break; + + case IRFpCompareMode::EitherUnordered: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + // PF = UNORDERED. + ccToFpcond(inst.src1, inst.src2, CC_P); + break; + + case IRFpCompareMode::EqualOrdered: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + // Clear the upper bits of SCRATCH1 so we can AND later. + // We don't have a single flag we can check, unfortunately. + XOR(32, R(SCRATCH1), R(SCRATCH1)); + UCOMISS(regs_.FX(inst.src1), regs_.F(inst.src2)); + // E/ZF = EQUAL or UNORDERED (not exactly what we want.) + SETcc(CC_E, R(SCRATCH1)); + if (regs_.HasLowSubregister(regs_.RX(IRREG_FPCOND))) { + // NP/!PF = ORDERED. + SETcc(CC_NP, regs_.R(IRREG_FPCOND)); + AND(32, regs_.R(IRREG_FPCOND), R(SCRATCH1)); + } else { + MOVZX(32, 8, regs_.RX(IRREG_FPCOND), R(SCRATCH1)); + // Neither of those affected flags, luckily. + // NP/!PF = ORDERED. + SETcc(CC_NP, R(SCRATCH1)); + AND(32, regs_.R(IRREG_FPCOND), R(SCRATCH1)); + } + break; + + case IRFpCompareMode::EqualUnordered: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + // E/ZF = EQUAL or UNORDERED. + ccToFpcond(inst.src1, inst.src2, CC_E); + break; + + case IRFpCompareMode::LessEqualOrdered: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + // AE/!CF = GREATER or EQUAL (src2/src1 reversed.) + ccToFpcond(inst.src2, inst.src1, CC_AE); + break; + + case IRFpCompareMode::LessEqualUnordered: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + // BE/CF||ZF = LESS THAN or EQUAL or UNORDERED. + ccToFpcond(inst.src1, inst.src2, CC_BE); + break; + + case IRFpCompareMode::LessOrdered: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + // A/!CF&&!ZF = GREATER (src2/src1 reversed.) + ccToFpcond(inst.src2, inst.src1, CC_A); + break; + + case IRFpCompareMode::LessUnordered: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + // B/CF = LESS THAN or UNORDERED. + ccToFpcond(inst.src1, inst.src2, CC_B); + break; + } + break; + case IROp::FCmovVfpuCC: - case IROp::FCmpVfpuBit: - case IROp::FCmpVfpuAggregate: CompIR_Generic(inst); break; + case IROp::FCmpVfpuBit: + { + regs_.MapGPR(IRREG_VFPU_CC, MIPSMap::DIRTY); + X64Reg tempReg = regs_.MapWithFPRTemp(inst); + uint8_t affectedBit = 1 << (inst.dest >> 4); + bool condNegated = (inst.dest & 4) != 0; + + bool takeBitFromTempReg = true; + switch (VCondition(inst.dest & 0xF)) { + case VC_EQ: + if (cpu_info.bAVX) { + VCMPSS(tempReg, regs_.FX(inst.src1), regs_.F(inst.src2), CMP_EQ); + } else { + MOVAPS(tempReg, regs_.F(inst.src1)); + CMPSS(tempReg, regs_.F(inst.src2), CMP_EQ); + } + break; + case VC_NE: + if (cpu_info.bAVX) { + VCMPSS(tempReg, regs_.FX(inst.src1), regs_.F(inst.src2), CMP_NEQ); + } else { + MOVAPS(tempReg, regs_.F(inst.src1)); + CMPSS(tempReg, regs_.F(inst.src2), CMP_NEQ); + } + break; + case VC_LT: + if (cpu_info.bAVX) { + VCMPSS(tempReg, regs_.FX(inst.src1), regs_.F(inst.src2), CMP_LT); + } else { + MOVAPS(tempReg, regs_.F(inst.src1)); + CMPSS(tempReg, regs_.F(inst.src2), CMP_LT); + } + break; + case VC_LE: + if (cpu_info.bAVX) { + VCMPSS(tempReg, regs_.FX(inst.src1), regs_.F(inst.src2), CMP_LE); + } else { + MOVAPS(tempReg, regs_.F(inst.src1)); + CMPSS(tempReg, regs_.F(inst.src2), CMP_LE); + } + break; + case VC_GT: + // This is just LT with src1/src2 swapped. + if (cpu_info.bAVX) { + VCMPSS(tempReg, regs_.FX(inst.src2), regs_.F(inst.src1), CMP_LT); + } else { + MOVAPS(tempReg, regs_.F(inst.src2)); + CMPSS(tempReg, regs_.F(inst.src1), CMP_LT); + } + break; + case VC_GE: + // This is just LE with src1/src2 swapped. + if (cpu_info.bAVX) { + VCMPSS(tempReg, regs_.FX(inst.src2), regs_.F(inst.src1), CMP_LE); + } else { + MOVAPS(tempReg, regs_.F(inst.src2)); + CMPSS(tempReg, regs_.F(inst.src1), CMP_LE); + } + break; + case VC_EZ: + case VC_NZ: + XORPS(tempReg, R(tempReg)); + CMPSS(tempReg, regs_.F(inst.src1), !condNegated ? CMP_EQ : CMP_NEQ); + break; + case VC_EN: + case VC_NN: + CMPSS(tempReg, regs_.F(inst.src1), !condNegated ? CMP_UNORD : CMP_ORD); + break; + case VC_EI: + case VC_NI: + regs_.MapFPR(inst.src1); + if (!RipAccessible(&simdConstants.noSignMask) || !RipAccessible(&simdConstants.positiveInfinity)) { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants)); + } + if (cpu_info.bAVX) { + if (RipAccessible(&simdConstants.noSignMask)) { + VANDPS(128, tempReg, regs_.FX(inst.src1), M(&simdConstants.noSignMask)); // rip accessible + } else { + VANDPS(128, tempReg, regs_.FX(inst.src1), MDisp(SCRATCH1, offsetof(SimdConstants, noSignMask))); + } + } else { + MOVAPS(tempReg, regs_.F(inst.src1)); + if (RipAccessible(&simdConstants.noSignMask)) { + ANDPS(tempReg, M(&simdConstants.noSignMask)); // rip accessible + } else { + ANDPS(tempReg, MDisp(SCRATCH1, offsetof(SimdConstants, noSignMask))); + } + } + if (RipAccessible(&simdConstants.positiveInfinity)) { + CMPSS(tempReg, M(&simdConstants.positiveInfinity), !condNegated ? CMP_EQ : CMP_LT); // rip accessible + } else { + CMPSS(tempReg, MDisp(SCRATCH1, offsetof(SimdConstants, positiveInfinity)), !condNegated ? CMP_EQ : CMP_LT); + } + break; + case VC_ES: + case VC_NS: + // NAN - NAN is NAN, and Infinity - Infinity is also NAN. + if (cpu_info.bAVX) { + VSUBSS(tempReg, regs_.FX(inst.src1), regs_.F(inst.src1)); + } else { + MOVAPS(tempReg, regs_.F(inst.src1)); + SUBSS(tempReg, regs_.F(inst.src1)); + } + CMPSS(tempReg, regs_.F(inst.src1), !condNegated ? CMP_UNORD : CMP_ORD); + break; + case VC_TR: + OR(32, regs_.R(IRREG_VFPU_CC), Imm8(affectedBit)); + takeBitFromTempReg = true; + break; + case VC_FL: + AND(32, regs_.R(IRREG_VFPU_CC), Imm8(~affectedBit)); + takeBitFromTempReg = false; + break; + } + + if (takeBitFromTempReg) { + MOVD_xmm(R(SCRATCH1), tempReg); + AND(32, R(SCRATCH1), Imm8(affectedBit)); + AND(32, regs_.R(IRREG_VFPU_CC), Imm8(~affectedBit)); + OR(32, regs_.R(IRREG_VFPU_CC), R(SCRATCH1)); + } + break; + } + + case IROp::FCmpVfpuAggregate: + regs_.MapGPR(IRREG_VFPU_CC, MIPSMap::DIRTY); + // First, clear out the bits we're aggregating. + // The register refuses writes to bits outside 0x3F, and we're setting 0x30. + AND(32, regs_.R(IRREG_VFPU_CC), Imm8(0xF)); + + // Set the any bit. + TEST(32, regs_.R(IRREG_VFPU_CC), Imm32(inst.dest)); + SETcc(CC_NZ, R(SCRATCH1)); + SHL(32, R(SCRATCH1), Imm8(4)); + OR(32, regs_.R(IRREG_VFPU_CC), R(SCRATCH1)); + + // Next up, the "all" bit. A bit annoying... + MOV(32, R(SCRATCH1), regs_.R(IRREG_VFPU_CC)); + AND(32, R(SCRATCH1), Imm8(inst.dest)); + CMP(32, R(SCRATCH1), Imm8(inst.dest)); + SETcc(CC_E, R(SCRATCH1)); + SHL(32, R(SCRATCH1), Imm8(5)); + OR(32, regs_.R(IRREG_VFPU_CC), R(SCRATCH1)); + break; + default: INVALIDOP; break; @@ -168,10 +455,84 @@ void X64JitBackend::CompIR_FCompare(IRInst inst) { void X64JitBackend::CompIR_FCondAssign(IRInst inst) { CONDITIONAL_DISABLE; + FixupBranch skipNAN; + FixupBranch finishNAN; + FixupBranch negativeSigns; + FixupBranch finishNANSigns; + X64Reg tempReg = INVALID_REG; switch (inst.op) { case IROp::FMin: + tempReg = regs_.GetAndLockTempR(); + regs_.Map(inst); + UCOMISS(regs_.FX(inst.src1), regs_.F(inst.src1)); + skipNAN = J_CC(CC_NP, true); + + // Slow path: NAN case. Check if both are negative. + MOVD_xmm(R(tempReg), regs_.FX(inst.src1)); + MOVD_xmm(R(SCRATCH1), regs_.FX(inst.src2)); + TEST(32, R(SCRATCH1), R(tempReg)); + negativeSigns = J_CC(CC_S); + + // Okay, one or the other positive. + CMP(32, R(tempReg), R(SCRATCH1)); + CMOVcc(32, tempReg, R(SCRATCH1), CC_G); + MOVD_xmm(regs_.FX(inst.dest), R(tempReg)); + finishNAN = J(); + + // Okay, both negative. + SetJumpTarget(negativeSigns); + CMP(32, R(tempReg), R(SCRATCH1)); + CMOVcc(32, tempReg, R(SCRATCH1), CC_L); + MOVD_xmm(regs_.FX(inst.dest), R(tempReg)); + finishNANSigns = J(); + + SetJumpTarget(skipNAN); + if (cpu_info.bAVX) { + VMINSS(regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else { + if (inst.dest != inst.src1) + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + MINSS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + SetJumpTarget(finishNAN); + SetJumpTarget(finishNANSigns); + break; + case IROp::FMax: - CompIR_Generic(inst); + tempReg = regs_.GetAndLockTempR(); + regs_.Map(inst); + UCOMISS(regs_.FX(inst.src1), regs_.F(inst.src1)); + skipNAN = J_CC(CC_NP, true); + + // Slow path: NAN case. Check if both are negative. + MOVD_xmm(R(tempReg), regs_.FX(inst.src1)); + MOVD_xmm(R(SCRATCH1), regs_.FX(inst.src2)); + TEST(32, R(SCRATCH1), R(tempReg)); + negativeSigns = J_CC(CC_S); + + // Okay, one or the other positive. + CMP(32, R(tempReg), R(SCRATCH1)); + CMOVcc(32, tempReg, R(SCRATCH1), CC_L); + MOVD_xmm(regs_.FX(inst.dest), R(tempReg)); + finishNAN = J(); + + // Okay, both negative. + SetJumpTarget(negativeSigns); + CMP(32, R(tempReg), R(SCRATCH1)); + CMOVcc(32, tempReg, R(SCRATCH1), CC_G); + MOVD_xmm(regs_.FX(inst.dest), R(tempReg)); + finishNANSigns = J(); + + SetJumpTarget(skipNAN); + if (cpu_info.bAVX) { + VMAXSS(regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else { + if (inst.dest != inst.src1) + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + MAXSS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + SetJumpTarget(finishNAN); + SetJumpTarget(finishNANSigns); break; default: diff --git a/Core/MIPS/x86/X64IRCompSystem.cpp b/Core/MIPS/x86/X64IRCompSystem.cpp index 7e1061f494..0c2f7ef66e 100644 --- a/Core/MIPS/x86/X64IRCompSystem.cpp +++ b/Core/MIPS/x86/X64IRCompSystem.cpp @@ -55,9 +55,23 @@ void X64JitBackend::CompIR_Basic(IRInst inst) { break; case IROp::SetConstF: + regs_.Map(inst); + if (inst.constant == 0) { + XORPS(regs_.FX(inst.dest), regs_.F(inst.dest)); + } else { + MOV(32, R(SCRATCH1), Imm32(inst.constant)); + MOVD_xmm(regs_.FX(inst.dest), R(SCRATCH1)); + } + break; + case IROp::SetPC: + regs_.Map(inst); + MovToPC(regs_.RX(inst.src1)); + break; + case IROp::SetPCConst: - CompIR_Generic(inst); + MOV(32, R(SCRATCH1), Imm32(inst.constant)); + MovToPC(SCRATCH1); break; default: @@ -86,6 +100,29 @@ void X64JitBackend::CompIR_System(IRInst inst) { switch (inst.op) { case IROp::Syscall: + FlushAll(); + SaveStaticRegisters(); + +#ifdef USE_PROFILER + // When profiling, we can't skip CallSyscall, since it times syscalls. + ABI_CallFunctionC((const u8 *)&CallSyscall, inst.constant); +#else + // Skip the CallSyscall where possible. + { + MIPSOpcode op(inst.constant); + void *quickFunc = GetQuickSyscallFunc(op); + if (quickFunc) { + ABI_CallFunctionP((const u8 *)quickFunc, (void *)GetSyscallFuncPointer(op)); + } else { + ABI_CallFunctionC((const u8 *)&CallSyscall, inst.constant); + } + } +#endif + + LoadStaticRegisters(); + // This is always followed by an ExitToPC, where we check coreState. + break; + case IROp::CallReplacement: case IROp::Break: CompIR_Generic(inst); @@ -102,18 +139,54 @@ void X64JitBackend::CompIR_Transfer(IRInst inst) { switch (inst.op) { case IROp::SetCtrlVFPU: + regs_.SetGPRImm(IRREG_VFPU_CTRL_BASE + inst.dest, (int32_t)inst.constant); + break; + case IROp::SetCtrlVFPUReg: + regs_.Map(inst); + MOV(32, regs_.R(IRREG_VFPU_CTRL_BASE + inst.dest), regs_.R(inst.src1)); + break; + case IROp::SetCtrlVFPUFReg: + regs_.Map(inst); + MOVD_xmm(regs_.R(IRREG_VFPU_CTRL_BASE + inst.dest), regs_.FX(inst.src1)); + break; + case IROp::FpCondFromReg: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::NOINIT } }); + MOV(32, regs_.R(IRREG_FPCOND), regs_.R(inst.src1)); + break; + case IROp::FpCondToReg: + regs_.MapWithExtra(inst, { { 'G', IRREG_FPCOND, 1, MIPSMap::INIT } }); + MOV(32, regs_.R(inst.dest), regs_.R(IRREG_FPCOND)); + break; + case IROp::FpCtrlFromReg: case IROp::FpCtrlToReg: - case IROp::VfpuCtrlToReg: - case IROp::FMovFromGPR: - case IROp::FMovToGPR: CompIR_Generic(inst); break; + case IROp::VfpuCtrlToReg: + regs_.Map(inst); + MOV(32, regs_.R(inst.dest), regs_.R(IRREG_VFPU_CTRL_BASE + inst.src1)); + break; + + case IROp::FMovFromGPR: + if (regs_.IsGPRImm(inst.src1) && regs_.GetGPRImm(inst.src1) == 0) { + regs_.MapFPR(inst.dest, MIPSMap::NOINIT); + XORPS(regs_.FX(inst.dest), regs_.F(inst.dest)); + } else { + regs_.Map(inst); + MOVD_xmm(regs_.FX(inst.dest), regs_.R(inst.src1)); + } + break; + + case IROp::FMovToGPR: + regs_.Map(inst); + MOVD_xmm(regs_.R(inst.dest), regs_.FX(inst.src1)); + break; + default: INVALIDOP; break; diff --git a/Core/MIPS/x86/X64IRCompVec.cpp b/Core/MIPS/x86/X64IRCompVec.cpp index cc7af5025f..f19a169b83 100644 --- a/Core/MIPS/x86/X64IRCompVec.cpp +++ b/Core/MIPS/x86/X64IRCompVec.cpp @@ -19,6 +19,7 @@ #if PPSSPP_ARCH(X86) || PPSSPP_ARCH(AMD64) #include +#include "Common/CPUDetect.h" #include "Core/MemMap.h" #include "Core/MIPS/x86/X64IRJit.h" #include "Core/MIPS/x86/X64IRRegCache.h" @@ -38,18 +39,154 @@ namespace MIPSComp { using namespace Gen; using namespace X64IRJitConstants; +static struct SimdConstants { + alignas(16) const u32 noSignMask[4] = { 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF }; + alignas(16) const u32 signBitAll[4] = { 0x80000000, 0x80000000, 0x80000000, 0x80000000 }; +} simdConstants; + +alignas(16) static const float vec4InitValues[8][4] = { + { 0.0f, 0.0f, 0.0f, 0.0f }, + { 1.0f, 1.0f, 1.0f, 1.0f }, + { -1.0f, -1.0f, -1.0f, -1.0f }, + { 1.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 1.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 1.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f, 1.0f }, +}; + +static bool Overlap(IRReg r1, int l1, IRReg r2, int l2) { + return r1 < r2 + l2 && r1 + l1 > r2; +} + void X64JitBackend::CompIR_VecArith(IRInst inst) { CONDITIONAL_DISABLE; switch (inst.op) { case IROp::Vec4Add: + regs_.Map(inst); + if (inst.dest == inst.src1) { + ADDPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } else if (inst.dest == inst.src2) { + ADDPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + } else if (cpu_info.bAVX) { + VADDPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else { + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + ADDPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + break; + case IROp::Vec4Sub: + if (inst.dest == inst.src1) { + regs_.Map(inst); + SUBPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } else if (cpu_info.bAVX) { + regs_.Map(inst); + VSUBPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else if (inst.dest == inst.src2) { + X64Reg tempReg = regs_.MapWithFPRTemp(inst); + MOVAPS(tempReg, regs_.F(inst.src2)); + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + SUBPS(regs_.FX(inst.dest), R(tempReg)); + } else { + regs_.Map(inst); + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + SUBPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + break; + case IROp::Vec4Mul: + regs_.Map(inst); + if (inst.dest == inst.src1) { + MULPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } else if (inst.dest == inst.src2) { + MULPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + } else if (cpu_info.bAVX) { + VMULPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else { + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + MULPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + break; + case IROp::Vec4Div: + if (inst.dest == inst.src1) { + regs_.Map(inst); + DIVPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } else if (cpu_info.bAVX) { + regs_.Map(inst); + VDIVPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else if (inst.dest == inst.src2) { + X64Reg tempReg = regs_.MapWithFPRTemp(inst); + MOVAPS(tempReg, regs_.F(inst.src2)); + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + DIVPS(regs_.FX(inst.dest), R(tempReg)); + } else { + regs_.Map(inst); + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + DIVPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + break; + case IROp::Vec4Scale: + // TODO: Handle "aliasing" of sizes. + if (Overlap(inst.dest, 4, inst.src2, 1) || Overlap(inst.src1, 4, inst.src2, 1)) + DISABLE; + + regs_.Map(inst); + SHUFPS(regs_.FX(inst.src2), regs_.F(inst.src2), 0); + if (inst.dest == inst.src1) { + MULPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } else if (inst.dest == inst.src2) { + MULPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + } else if (cpu_info.bAVX) { + VMULPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2)); + } else { + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + MULPS(regs_.FX(inst.dest), regs_.F(inst.src2)); + } + break; + case IROp::Vec4Neg: + regs_.Map(inst); + if (cpu_info.bAVX) { + if (RipAccessible(&simdConstants.signBitAll)) { + VXORPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), M(&simdConstants.signBitAll)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.signBitAll)); + VXORPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), MatR(SCRATCH1)); + } + } else { + if (inst.dest != inst.src1) + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + if (RipAccessible(&simdConstants.signBitAll)) { + XORPS(regs_.FX(inst.dest), M(&simdConstants.signBitAll)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.signBitAll)); + XORPS(regs_.FX(inst.dest), MatR(SCRATCH1)); + } + } + break; + case IROp::Vec4Abs: - CompIR_Generic(inst); + regs_.Map(inst); + if (cpu_info.bAVX) { + if (RipAccessible(&simdConstants.noSignMask)) { + VANDPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), M(&simdConstants.noSignMask)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.noSignMask)); + VANDPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), MatR(SCRATCH1)); + } + } else { + if (inst.dest != inst.src1) + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + if (RipAccessible(&simdConstants.noSignMask)) { + ANDPS(regs_.FX(inst.dest), M(&simdConstants.noSignMask)); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&simdConstants.noSignMask)); + ANDPS(regs_.FX(inst.dest), MatR(SCRATCH1)); + } + } break; default: @@ -63,11 +200,41 @@ void X64JitBackend::CompIR_VecAssign(IRInst inst) { switch (inst.op) { case IROp::Vec4Init: + regs_.Map(inst); + if (inst.src1 == (int)Vec4Init::AllZERO) { + XORPS(regs_.FX(inst.dest), regs_.F(inst.dest)); + } else if (RipAccessible(&vec4InitValues[inst.src1])) { + MOVAPS(regs_.FX(inst.dest), M(&vec4InitValues[inst.src1])); // rip accessible + } else { + MOV(PTRBITS, R(SCRATCH1), ImmPtr(&vec4InitValues[inst.src1])); + MOVAPS(regs_.FX(inst.dest), MatR(SCRATCH1)); + } + break; + case IROp::Vec4Shuffle: - case IROp::Vec4Blend: CompIR_Generic(inst); break; + case IROp::Vec4Blend: + if (cpu_info.bAVX) { + regs_.Map(inst); + VBLENDPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2), (uint8_t)inst.constant); + } else if (cpu_info.bSSE4_1) { + regs_.Map(inst); + if (inst.dest == inst.src1) { + BLENDPS(regs_.FX(inst.dest), regs_.F(inst.src2), (uint8_t)inst.constant); + } else if (inst.dest == inst.src2) { + BLENDPS(regs_.FX(inst.dest), regs_.F(inst.src1), (uint8_t)~inst.constant); + } else { + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + BLENDPS(regs_.FX(inst.dest), regs_.F(inst.src2), (uint8_t)inst.constant); + } + } else { + // Could use some shuffles... + DISABLE; + } + break; + case IROp::Vec4Mov: regs_.Map(inst); MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); @@ -99,7 +266,23 @@ void X64JitBackend::CompIR_VecHoriz(IRInst inst) { switch (inst.op) { case IROp::Vec4Dot: - CompIR_Generic(inst); + // TODO: Handle "aliasing" of sizes. In theory it should be fine if not dirty... + if (Overlap(inst.dest, 1, inst.src1, 4) || Overlap(inst.dest, 1, inst.src2, 4)) + DISABLE; + + regs_.Map(inst); + if (cpu_info.bSSE4_1 && inst.dest == inst.src1) { + DPPS(regs_.FX(inst.dest), regs_.F(inst.src2), 0xF1); + } else if (cpu_info.bSSE4_1 && inst.dest == inst.src2) { + DPPS(regs_.FX(inst.dest), regs_.F(inst.src1), 0xF1); + } else if (cpu_info.bAVX) { + VDPPS(128, regs_.FX(inst.dest), regs_.FX(inst.src1), regs_.F(inst.src2), 0xF1); + } else if (cpu_info.bSSE4_1) { + MOVAPS(regs_.FX(inst.dest), regs_.F(inst.src1)); + DPPS(regs_.FX(inst.dest), regs_.F(inst.src2), 0xF1); + } else { + CompIR_Generic(inst); + } break; default: diff --git a/Core/MIPS/x86/X64IRJit.h b/Core/MIPS/x86/X64IRJit.h index 3b5189398e..f061603535 100644 --- a/Core/MIPS/x86/X64IRJit.h +++ b/Core/MIPS/x86/X64IRJit.h @@ -29,6 +29,19 @@ #include "Core/MIPS/JitCommon/JitCommon.h" #include "Core/MIPS/x86/X64IRRegCache.h" +#if PPSSPP_PLATFORM(WINDOWS) && (defined(_MSC_VER) || defined(__clang__) || defined(__INTEL_COMPILER)) +#define X64JIT_XMM_CALL __vectorcall +#define X64JIT_USE_XMM_CALL 1 +#elif PPSSPP_ARCH(AMD64) && !PPSSPP_PLATFORM(WINDOWS) +// SystemV ABI supports XMM registers. +#define X64JIT_XMM_CALL +#define X64JIT_USE_XMM_CALL 1 +#else +// GCC on x86 doesn't support vectorcall. +#define X64JIT_XMM_CALL +#define X64JIT_USE_XMM_CALL 0 +#endif + namespace MIPSComp { class X64JitBackend : public Gen::XCodeBlock, public IRNativeBackend { diff --git a/Core/MIPS/x86/X64IRRegCache.cpp b/Core/MIPS/x86/X64IRRegCache.cpp index e6f053a276..61872592bb 100644 --- a/Core/MIPS/x86/X64IRRegCache.cpp +++ b/Core/MIPS/x86/X64IRRegCache.cpp @@ -50,12 +50,11 @@ const int *X64IRRegCache::GetAllocationOrder(MIPSLoc type, MIPSMap flags, int &c base = RAX; static const int allocationOrder[] = { - // On x64, RCX and RDX are the first args. CallProtectedFunction() assumes they're not regcached. #if PPSSPP_ARCH(AMD64) #ifdef _WIN32 - RSI, RDI, R8, R9, R10, R11, R12, R13, + RSI, RDI, R8, R9, R10, R11, R12, R13, RDX, RCX, #else - RBP, R8, R9, R10, R11, R12, R13, + RBP, R8, R9, R10, R11, R12, R13, RDX, RCX, #endif // Intentionally last. R15, @@ -64,8 +63,20 @@ const int *X64IRRegCache::GetAllocationOrder(MIPSLoc type, MIPSMap flags, int &c #endif }; + if ((flags & X64Map::MASK) == X64Map::SHIFT) { + // It's a single option for shifts. + static const int shiftReg[] = { ECX }; + count = 1; + return shiftReg; + } + if ((flags & X64Map::MASK) == X64Map::HIGH_DATA) { + // It's a single option for shifts. + static const int shiftReg[] = { EDX }; + count = 1; + return shiftReg; + } #if PPSSPP_ARCH(X86) - if ((flags & X64Map::LOW_SUBREG) == X64Map::LOW_SUBREG) { + if ((flags & X64Map::MASK) == X64Map::LOW_SUBREG) { static const int lowSubRegAllocationOrder[] = { EDX, EBX, ECX, }; @@ -133,7 +144,19 @@ X64Reg X64IRRegCache::TryMapTempImm(IRReg r, X64Map flags) { _dbg_assert_(IsValidGPR(r)); auto canUseReg = [flags](X64Reg r) { - return (flags & X64Map::LOW_SUBREG) != X64Map::LOW_SUBREG || HasLowSubregister(r); + switch (flags & X64Map::MASK) { + case X64Map::NONE: + return true; + case X64Map::LOW_SUBREG: + return HasLowSubregister(r); + case X64Map::SHIFT: + return r == RCX; + case X64Map::HIGH_DATA: + return r == RCX; + default: + _assert_msg_(false, "Unexpected flags"); + } + return false; }; // If already mapped, no need for a temporary. @@ -164,10 +187,58 @@ X64Reg X64IRRegCache::GetAndLockTempR() { return reg; } +void X64IRRegCache::ReserveAndLockXGPR(Gen::X64Reg r) { + IRNativeReg nreg = GPRToNativeReg(r); + if (nr[nreg].mipsReg != -1) + FlushNativeReg(nreg); + nr[r].tempLockIRIndex = irIndex_; +} + X64Reg X64IRRegCache::MapWithFPRTemp(IRInst &inst) { return FromNativeReg(MapWithTemp(inst, MIPSLoc::FREG)); } +void X64IRRegCache::MapWithFlags(IRInst inst, X64Map destFlags, X64Map src1Flags, X64Map src2Flags) { + Mapping mapping[3]; + MappingFromInst(inst, mapping); + + mapping[0].flags = mapping[0].flags | destFlags; + mapping[1].flags = mapping[1].flags | src1Flags; + mapping[2].flags = mapping[2].flags | src2Flags; + + auto flushReg = [&](IRNativeReg nreg) { + for (int i = 0; i < 3; ++i) { + if (mapping[i].reg == nr[nreg].mipsReg && (mapping[i].flags & MIPSMap::NOINIT) == MIPSMap::NOINIT) { + DiscardNativeReg(nreg); + return; + } + } + + FlushNativeReg(nreg); + }; + + // If there are any special rules, we might need to spill. + for (int i = 0; i < 3; ++i) { + switch (mapping[i].flags & X64Map::MASK) { + case X64Map::SHIFT: + if (nr[RCX].mipsReg != mapping[i].reg) + flushReg(RCX); + break; + + case X64Map::HIGH_DATA: + if (nr[RDX].mipsReg != mapping[i].reg) + flushReg(RDX); + break; + + default: + break; + } + } + + ApplyMapping(mapping, 3); + CleanupMapping(mapping, 3); +} + X64Reg X64IRRegCache::MapGPR(IRReg mipsReg, MIPSMap mapFlags) { _dbg_assert_(IsValidGPR(mipsReg)); diff --git a/Core/MIPS/x86/X64IRRegCache.h b/Core/MIPS/x86/X64IRRegCache.h index e4d3bdb592..a4127d7c09 100644 --- a/Core/MIPS/x86/X64IRRegCache.h +++ b/Core/MIPS/x86/X64IRRegCache.h @@ -43,7 +43,13 @@ static constexpr auto pcOffset = offsetof(MIPSState, pc) - 128; enum class X64Map : uint8_t { NONE = 0, + // On 32-bit: EAX, EBX, ECX, EDX LOW_SUBREG = 0x10, + // EDX/RDX + HIGH_DATA = 0x20, + // ECX/RCX + SHIFT = 0x30, + MASK = 0xF0, }; static inline MIPSMap operator |(const MIPSMap &lhs, const X64Map &rhs) { return MIPSMap((uint8_t)lhs | (uint8_t)rhs); @@ -77,9 +83,12 @@ public: Gen::X64Reg MapWithFPRTemp(IRInst &inst); + void MapWithFlags(IRInst inst, X64IRJitConstants::X64Map destFlags, X64IRJitConstants::X64Map src1Flags = X64IRJitConstants::X64Map::NONE, X64IRJitConstants::X64Map src2Flags = X64IRJitConstants::X64Map::NONE); + void FlushBeforeCall(); Gen::X64Reg GetAndLockTempR(); + void ReserveAndLockXGPR(Gen::X64Reg r); Gen::OpArg R(IRReg preg); Gen::OpArg RPtr(IRReg preg); diff --git a/Core/RetroAchievements.cpp b/Core/RetroAchievements.cpp index 77f7008875..40de49d653 100644 --- a/Core/RetroAchievements.cpp +++ b/Core/RetroAchievements.cpp @@ -81,6 +81,7 @@ int g_loginResult; // rc_client implementation static rc_client_t *g_rcClient; +static const std::string g_RAImageID = "I_RETROACHIEVEMENTS_LOGO"; #define PSP_MEMORY_OFFSET 0x08000000 @@ -124,7 +125,7 @@ bool WarnUserIfChallengeModeActive(const char *message) { showMessage = ac->T("This feature is not available in Challenge Mode"); } - g_OSD.Show(OSDType::MESSAGE_WARNING, showMessage, 3.0f); + g_OSD.Show(OSDType::MESSAGE_WARNING, showMessage, "", g_RAImageID, 3.0f); return true; } @@ -335,7 +336,7 @@ static void event_handler_callback(const rc_client_event_t *event, rc_client_t * break; case RC_CLIENT_EVENT_SERVER_ERROR: ERROR_LOG(ACHIEVEMENTS, "Server error: %s: %s", event->server_error->api, event->server_error->error_message); - g_OSD.Show(OSDType::MESSAGE_ERROR, "Server error"); + g_OSD.Show(OSDType::MESSAGE_ERROR, "Server error", "", g_RAImageID); break; default: WARN_LOG(ACHIEVEMENTS, "Unhandled rc_client event %d, ignoring", event->type); @@ -352,7 +353,7 @@ static void login_token_callback(int result, const char *error_message, rc_clien case RC_NO_RESPONSE: { auto di = GetI18NCategory(I18NCat::DIALOG); - g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to connect to server, check your internet connection.")); + g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to connect to server, check your internet connection."), "", g_RAImageID); break; } case RC_API_FAILURE: @@ -363,7 +364,7 @@ static void login_token_callback(int result, const char *error_message, rc_clien { auto ac = GetI18NCategory(I18NCat::ACHIEVEMENTS); ERROR_LOG(ACHIEVEMENTS, "Callback: Failure logging in via token: %d, %s", result, error_message); - g_OSD.Show(OSDType::MESSAGE_WARNING, ac->T("Failed logging in to RetroAchievements")); + g_OSD.Show(OSDType::MESSAGE_WARNING, ac->T("Failed logging in to RetroAchievements"), "", g_RAImageID); OnAchievementsLoginStateChange(); break; } @@ -428,13 +429,13 @@ static void login_password_callback(int result, const char *error_message, rc_cl g_Config.sAchievementsUserName = user->username; NativeSaveSecret(RA_TOKEN_SECRET_NAME, std::string(user->token)); OnAchievementsLoginStateChange(); - g_OSD.Show(OSDType::MESSAGE_SUCCESS, di->T("Logged in!")); + g_OSD.Show(OSDType::MESSAGE_SUCCESS, di->T("Logged in!"), "", g_RAImageID); break; } case RC_NO_RESPONSE: { auto di = GetI18NCategory(I18NCat::DIALOG); - g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to connect to server, check your internet connection.")); + g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to connect to server, check your internet connection."), "", g_RAImageID); break; } case RC_INVALID_STATE: @@ -444,7 +445,7 @@ static void login_password_callback(int result, const char *error_message, rc_cl default: { ERROR_LOG(ACHIEVEMENTS, "Failure logging in via password: %d, %s", result, error_message); - g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to log in, check your username and password.")); + g_OSD.Show(OSDType::MESSAGE_WARNING, di->T("Failed to log in, check your username and password."), "", g_RAImageID); OnAchievementsLoginStateChange(); break; } @@ -509,6 +510,8 @@ void FrameUpdate() { if (!g_rcClient) return; rc_client_do_frame(g_rcClient); + + // TODO: If failed to log in, occasionally try again. } void Idle() { @@ -522,7 +525,7 @@ void DoState(PointerWrap &p) { // Reset the runtime. if (HasAchievementsOrLeaderboards()) { auto ac = GetI18NCategory(I18NCat::ACHIEVEMENTS); - g_OSD.Show(OSDType::MESSAGE_WARNING, ac->T("Save state loaded without achievement data"), 5.0f); + g_OSD.Show(OSDType::MESSAGE_WARNING, ac->T("Save state loaded without achievement data"), "", g_RAImageID, 5.0f, ""); } rc_client_reset(g_rcClient); return; @@ -581,7 +584,7 @@ void DoState(PointerWrap &p) { } else { if (IsActive()) { auto ac = GetI18NCategory(I18NCat::ACHIEVEMENTS); - g_OSD.Show(OSDType::MESSAGE_WARNING, ac->T("Save state loaded without achievement data"), 5.0f); + g_OSD.Show(OSDType::MESSAGE_WARNING, ac->T("Save state loaded without achievement data"), "", g_RAImageID, 5.0f); } rc_client_reset(g_rcClient); } @@ -663,7 +666,7 @@ void identify_and_load_callback(int result, const char *error_message, rc_client } case RC_NO_GAME_LOADED: // The current game does not support achievements. - g_OSD.Show(OSDType::MESSAGE_INFO, ac->T("RetroAchievements are not available for this game"), 3.0f); + g_OSD.Show(OSDType::MESSAGE_INFO, ac->T("RetroAchievements are not available for this game"), "", g_RAImageID, 3.0f); break; default: // Other various errors. diff --git a/Core/Screenshot.cpp b/Core/Screenshot.cpp index 492ffab35c..6bb52cab08 100644 --- a/Core/Screenshot.cpp +++ b/Core/Screenshot.cpp @@ -359,8 +359,8 @@ bool TakeGameScreenshot(const Path &filename, ScreenshotFormat fmt, ScreenshotTy return false; } - u8 *flipbuffer = nullptr; if (success) { + u8 *flipbuffer = nullptr; const u8 *buffer = ConvertBufferToScreenshot(buf, false, flipbuffer, w, h); success = buffer != nullptr; if (success) { @@ -371,12 +371,13 @@ bool TakeGameScreenshot(const Path &filename, ScreenshotFormat fmt, ScreenshotTy success = Save888RGBScreenshot(filename, fmt, buffer, w, h); } + delete[] flipbuffer; } - delete [] flipbuffer; if (!success) { ERROR_LOG(IO, "Failed to write screenshot."); } + return success; } diff --git a/GPU/Common/TextureCacheCommon.cpp b/GPU/Common/TextureCacheCommon.cpp index d7ba813831..72d3d400ff 100644 --- a/GPU/Common/TextureCacheCommon.cpp +++ b/GPU/Common/TextureCacheCommon.cpp @@ -1355,7 +1355,8 @@ void TextureCacheCommon::LoadClut(u32 clutAddr, u32 loadBytes) { // the framebuffer with the smallest offset. This is yet another framebuffer matching // loop with its own rules, eventually we'll probably want to do something // more systematic. - if (matchRange && !inMargin && offset < (int)clutRenderOffset_) { + bool okAge = !PSP_CoreParameter().compat.flags().LoadCLUTFromCurrentFrameOnly || framebuffer->last_frame_used == gpuStats.numFlips; + if (matchRange && !inMargin && offset < (int)clutRenderOffset_ && okAge) { WARN_LOG_N_TIMES(clutfb, 5, G3D, "Detected LoadCLUT(%d bytes) from framebuffer %08x (%s), byte offset %d, pixel offset %d", loadBytes, fb_address, GeBufferFormatToString(framebuffer->fb_format), offset, offset / fb_bpp); framebuffer->last_frame_clut = gpuStats.numFlips; diff --git a/GPU/Debugger/Record.cpp b/GPU/Debugger/Record.cpp index d1a1bbf2ca..b0cc4a5a62 100644 --- a/GPU/Debugger/Record.cpp +++ b/GPU/Debugger/Record.cpp @@ -49,7 +49,7 @@ namespace GPURecord { static bool active = false; -static bool nextFrame = false; +static std::atomic nextFrame = false; static int flipLastAction = -1; static int flipFinishAt = -1; static uint32_t lastEdramTrans = 0x400; @@ -601,18 +601,20 @@ bool IsActivePending() { return nextFrame || active; } -bool Activate() { +bool RecordNextFrame(const std::function callback) { if (!nextFrame) { - nextFrame = true; flipLastAction = gpuStats.numFlips; flipFinishAt = -1; + writeCallback = callback; + nextFrame = true; return true; } return false; } -void SetCallback(const std::function callback) { - writeCallback = callback; +void ClearCallback() { + // Not super thread safe.. + writeCallback = nullptr; } static void FinishRecording() { diff --git a/GPU/Debugger/Record.h b/GPU/Debugger/Record.h index 5c5d2f6dbc..454fc4926c 100644 --- a/GPU/Debugger/Record.h +++ b/GPU/Debugger/Record.h @@ -27,9 +27,8 @@ namespace GPURecord { bool IsActive(); bool IsActivePending(); -bool Activate(); -// Call only if Activate() returns true. -void SetCallback(const std::function callback); +bool RecordNextFrame(const std::function callback); +void ClearCallback(); void NotifyCommand(u32 pc); void NotifyMemcpy(u32 dest, u32 src, u32 sz); diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp index 52c738209d..db09b3a87f 100644 --- a/Qt/QtMain.cpp +++ b/Qt/QtMain.cpp @@ -252,6 +252,7 @@ bool System_GetPropertyBool(SystemProperty prop) { case SYSPROP_HAS_FOLDER_BROWSER: case SYSPROP_HAS_OPEN_DIRECTORY: case SYSPROP_HAS_TEXT_INPUT_DIALOG: + case SYSPROP_CAN_SHOW_FILE: return true; case SYSPROP_SUPPORTS_OPEN_FILE_IN_EDITOR: return true; // FileUtil.cpp: OpenFileInEditor @@ -407,6 +408,9 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string emit(qtcamera->onStopCamera()); } return true; + case SystemRequestType::SHOW_FILE_IN_FOLDER: + QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromUtf8(param1.c_str()))); + return true; default: return false; } @@ -424,10 +428,6 @@ void System_Vibrate(int length_ms) { length_ms = 25; } -void System_ShowFileInFolder(const char *path) { - QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromUtf8(path))); -} - void System_LaunchUrl(LaunchUrlType urlType, const char *url) { QDesktopServices::openUrl(QUrl(url)); diff --git a/SDL/CocoaBarItems.mm b/SDL/CocoaBarItems.mm index e1bc11a398..00f9cad1e8 100644 --- a/SDL/CocoaBarItems.mm +++ b/SDL/CocoaBarItems.mm @@ -24,12 +24,12 @@ #include "Common/Data/Text/I18n.h" #include "Common/StringUtils.h" -void TakeScreenshot(); - #ifdef __cplusplus extern "C" { #endif +extern bool g_TakeScreenshot; + #define MENU_ITEM(variableName, localizedTitleName, SEL, ConfigurationValueName, Tag) \ NSMenuItem *variableName = [[NSMenuItem alloc] initWithTitle:localizedTitleName action:SEL keyEquivalent:@""]; \ variableName.target = self; \ @@ -488,7 +488,7 @@ void OSXOpenURL(const char *url) { } -(void)takeScreenshot { - TakeScreenshot(); + g_TakeScreenshot = true; } -(void)resetSymbolTable { diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp index 3bc1bb9692..27695ec2da 100644 --- a/SDL/SDLMain.cpp +++ b/SDL/SDLMain.cpp @@ -325,6 +325,31 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string g_windowState.update = true; return true; } + case SystemRequestType::SHOW_FILE_IN_FOLDER: + { +#if PPSSPP_PLATFORM(WINDOWS) + SFGAOF flags; + PIDLIST_ABSOLUTE pidl = nullptr; + HRESULT hr = SHParseDisplayName(ConvertUTF8ToWString(ReplaceAll(path, "/", "\\")).c_str(), nullptr, &pidl, 0, &flags); + if (pidl) { + if (SUCCEEDED(hr)) + SHOpenFolderAndSelectItems(pidl, 0, NULL, 0); + CoTaskMemFree(pidl); + } +#elif PPSSPP_PLATFORM(MAC) + OSXShowInFinder(param1.c_str()); +#elif (PPSSPP_PLATFORM(LINUX) && !PPSSPP_PLATFORM(ANDROID)) + pid_t pid = fork(); + if (pid < 0) + return true; + + if (pid == 0) { + execlp("xdg-open", "xdg-open", param1.c_str(), nullptr); + exit(1); + } +#endif /* PPSSPP_PLATFORM(WINDOWS) */ + return true; + } default: return false; } @@ -333,30 +358,6 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string void System_AskForPermission(SystemPermission permission) {} PermissionStatus System_GetPermissionStatus(SystemPermission permission) { return PERMISSION_STATUS_GRANTED; } -void System_ShowFileInFolder(const char *path) { -#if PPSSPP_PLATFORM(WINDOWS) - SFGAOF flags; - PIDLIST_ABSOLUTE pidl = nullptr; - HRESULT hr = SHParseDisplayName(ConvertUTF8ToWString(ReplaceAll(path, "/", "\\")).c_str(), nullptr, &pidl, 0, &flags); - if (pidl) { - if (SUCCEEDED(hr)) - SHOpenFolderAndSelectItems(pidl, 0, NULL, 0); - CoTaskMemFree(pidl); - } -#elif PPSSPP_PLATFORM(MAC) - OSXShowInFinder(path); -#elif (PPSSPP_PLATFORM(LINUX) && !PPSSPP_PLATFORM(ANDROID)) - pid_t pid = fork(); - if (pid < 0) - return; - - if (pid == 0) { - execlp("xdg-open", "xdg-open", path, nullptr); - exit(1); - } -#endif /* PPSSPP_PLATFORM(WINDOWS) */ -} - void System_LaunchUrl(LaunchUrlType urlType, const char *url) { switch (urlType) { case LaunchUrlType::BROWSER_URL: @@ -546,6 +547,8 @@ float System_GetPropertyFloat(SystemProperty prop) { bool System_GetPropertyBool(SystemProperty prop) { switch (prop) { + case SYSPROP_CAN_SHOW_FILE: + return true; case SYSPROP_HAS_OPEN_DIRECTORY: #if PPSSPP_PLATFORM(WINDOWS) return true; @@ -570,7 +573,7 @@ bool System_GetPropertyBool(SystemProperty prop) { return true; // FileUtil.cpp: OpenFileInEditor #ifndef HTTPS_NOT_AVAILABLE case SYSPROP_SUPPORTS_HTTPS: - return true; + return !g_Config.bDisableHTTPS; #endif #if PPSSPP_PLATFORM(MAC) case SYSPROP_HAS_FOLDER_BROWSER: diff --git a/Tools/langtool/Cargo.lock b/Tools/langtool/Cargo.lock index 04b9fb45f4..29dbd163d0 100644 --- a/Tools/langtool/Cargo.lock +++ b/Tools/langtool/Cargo.lock @@ -115,9 +115,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] diff --git a/UI/ControlMappingScreen.cpp b/UI/ControlMappingScreen.cpp index 5841b6d56d..2ca18633f0 100644 --- a/UI/ControlMappingScreen.cpp +++ b/UI/ControlMappingScreen.cpp @@ -243,16 +243,24 @@ void ControlMappingScreen::CreateViews() { root_ = new LinearLayout(ORIENT_HORIZONTAL); LinearLayout *leftColumn = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(200, FILL_PARENT, Margins(10, 0, 0, 10))); - leftColumn->Add(new Choice(km->T("Clear All")))->OnClick.Handle(this, &ControlMappingScreen::OnClearMapping); - leftColumn->Add(new Choice(km->T("Default All")))->OnClick.Handle(this, &ControlMappingScreen::OnDefaultMapping); - + leftColumn->Add(new Choice(km->T("Clear All")))->OnClick.Add([](UI::EventParams &) { + KeyMap::ClearAllMappings(); + return UI::EVENT_DONE; + }); + leftColumn->Add(new Choice(km->T("Default All")))->OnClick.Add([](UI::EventParams &) { + KeyMap::RestoreDefault(); + return UI::EVENT_DONE; + }); std::string sysName = System_GetProperty(SYSPROP_NAME); // If there's a builtin controller, restore to default should suffice. No need to conf the controller on top. if (!KeyMap::HasBuiltinController(sysName) && KeyMap::GetSeenPads().size()) { leftColumn->Add(new Choice(km->T("Autoconfigure")))->OnClick.Handle(this, &ControlMappingScreen::OnAutoConfigure); } - leftColumn->Add(new Choice(km->T("Show PSP")))->OnClick.Handle(this, &ControlMappingScreen::OnVisualizeMapping); + leftColumn->Add(new Choice(km->T("Show PSP")))->OnClick.Add([=](UI::EventParams &) { + screenManager()->push(new VisualMappingScreen(gamePath_)); + return UI::EVENT_DONE; + }); leftColumn->Add(new CheckBox(&g_Config.bAllowMappingCombos, km->T("Allow combo mappings"))); leftColumn->Add(new Spacer(new LinearLayoutParams(1.0f))); @@ -287,16 +295,6 @@ void ControlMappingScreen::update() { SetVRAppMode(VRAppMode::VR_MENU_MODE); } -UI::EventReturn ControlMappingScreen::OnClearMapping(UI::EventParams ¶ms) { - KeyMap::ClearAllMappings(); - return UI::EVENT_DONE; -} - -UI::EventReturn ControlMappingScreen::OnDefaultMapping(UI::EventParams ¶ms) { - KeyMap::RestoreDefault(); - return UI::EVENT_DONE; -} - UI::EventReturn ControlMappingScreen::OnAutoConfigure(UI::EventParams ¶ms) { std::vector items; const auto seenPads = KeyMap::GetSeenPads(); @@ -311,12 +309,6 @@ UI::EventReturn ControlMappingScreen::OnAutoConfigure(UI::EventParams ¶ms) { return UI::EVENT_DONE; } -UI::EventReturn ControlMappingScreen::OnVisualizeMapping(UI::EventParams ¶ms) { - VisualMappingScreen *visualMapping = new VisualMappingScreen(gamePath_); - screenManager()->push(visualMapping); - return UI::EVENT_DONE; -} - void ControlMappingScreen::dialogFinished(const Screen *dialog, DialogResult result) { if (result == DR_OK && std::string(dialog->tag()) == "listpopup") { UI::ListPopupScreen *popup = (UI::ListPopupScreen *)dialog; @@ -512,7 +504,7 @@ AnalogSetupScreen::AnalogSetupScreen(const Path &gamePath) : UIDialogScreenWithG } void AnalogSetupScreen::update() { - mapper_.Update(); + mapper_.Update(time_now_d()); // We ignore the secondary stick for now and just use the two views // for raw and psp input. if (stickView_[0]) { diff --git a/UI/ControlMappingScreen.h b/UI/ControlMappingScreen.h index 1dab466ae3..cffdac5f6b 100644 --- a/UI/ControlMappingScreen.h +++ b/UI/ControlMappingScreen.h @@ -44,10 +44,7 @@ protected: void update() override; private: - UI::EventReturn OnDefaultMapping(UI::EventParams ¶ms); - UI::EventReturn OnClearMapping(UI::EventParams ¶ms); UI::EventReturn OnAutoConfigure(UI::EventParams ¶ms); - UI::EventReturn OnVisualizeMapping(UI::EventParams ¶ms); void dialogFinished(const Screen *dialog, DialogResult result) override; diff --git a/UI/DevScreens.cpp b/UI/DevScreens.cpp index 750ce9c1ee..ee9a39f8ab 100644 --- a/UI/DevScreens.cpp +++ b/UI/DevScreens.cpp @@ -63,6 +63,7 @@ #include "Core/MIPS/JitCommon/JitBlockCache.h" #include "Core/MIPS/JitCommon/JitCommon.h" #include "Core/MIPS/JitCommon/JitState.h" +#include "GPU/Debugger/Record.h" #include "GPU/GPUInterface.h" #include "GPU/GPUState.h" #include "UI/MiscScreens.h" @@ -139,11 +140,27 @@ void DevMenuScreen::CreatePopupContents(UI::ViewGroup *parent) { return UI::EVENT_DONE; }); - items->Add(new Choice(dev->T("Dump next frame to log")))->OnClick.Add([](UI::EventParams &e) { - gpu->DumpNextFrame(); + items->Add(new Choice(dev->T("Reset limited logging")))->OnClick.Handle(this, &DevMenuScreen::OnResetLimitedLogging); + + items->Add(new Choice(dev->T("Create frame dump")))->OnClick.Add([](UI::EventParams &e) { + GPURecord::RecordNextFrame([](const Path &dumpPath) { + NOTICE_LOG(SYSTEM, "Frame dump created at '%s'", dumpPath.c_str()); + if (System_GetPropertyBool(SYSPROP_CAN_SHOW_FILE)) { + System_ShowFileInFolder(dumpPath); + } else { + g_OSD.Show(OSDType::MESSAGE_SUCCESS, dumpPath.ToVisualString(), 7.0f); + } + }); return UI::EVENT_DONE; }); - items->Add(new Choice(dev->T("Reset limited logging")))->OnClick.Handle(this, &DevMenuScreen::OnResetLimitedLogging); + + // This one is not very useful these days, and only really on desktop. Hide it on other platforms. + if (System_GetPropertyInt(SYSPROP_DEVICE_TYPE) == DEVICE_TYPE_DESKTOP) { + items->Add(new Choice(dev->T("Dump next frame to log")))->OnClick.Add([](UI::EventParams &e) { + gpu->DumpNextFrame(); + return UI::EVENT_DONE; + }); + } scroll->Add(items); parent->Add(scroll); @@ -207,12 +224,12 @@ void LogScreen::UpdateLog() { TextView *v = vert_->Add(new TextView(ring->TextAt(i), FLAG_DYNAMIC_ASCII, false)); uint32_t color = 0xFFFFFF; switch (ring->LevelAt(i)) { - case LogTypes::LDEBUG: color = 0xE0E0E0; break; - case LogTypes::LWARNING: color = 0x50FFFF; break; - case LogTypes::LERROR: color = 0x5050FF; break; - case LogTypes::LNOTICE: color = 0x30FF30; break; - case LogTypes::LINFO: color = 0xFFFFFF; break; - case LogTypes::LVERBOSE: color = 0xC0C0C0; break; + case LogLevel::LDEBUG: color = 0xE0E0E0; break; + case LogLevel::LWARNING: color = 0x50FFFF; break; + case LogLevel::LERROR: color = 0x5050FF; break; + case LogLevel::LNOTICE: color = 0x30FF30; break; + case LogLevel::LINFO: color = 0xFFFFFF; break; + case LogLevel::LVERBOSE: color = 0xC0C0C0; break; } v->SetTextColor(0xFF000000 | color); } @@ -291,7 +308,7 @@ void LogConfigScreen::CreateViews() { GridLayout *grid = vert->Add(new GridLayoutList(gridsettings, new LayoutParams(FILL_PARENT, WRAP_CONTENT))); for (int i = 0; i < LogManager::GetNumChannels(); i++) { - LogTypes::LOG_TYPE type = (LogTypes::LOG_TYPE)i; + LogType type = (LogType)i; LogChannel *chan = logMan->GetLogChannel(type); LinearLayout *row = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(cellSize - 50, WRAP_CONTENT)); row->SetSpacing(0); @@ -304,7 +321,7 @@ void LogConfigScreen::CreateViews() { UI::EventReturn LogConfigScreen::OnToggleAll(UI::EventParams &e) { LogManager *logMan = LogManager::GetInstance(); for (int i = 0; i < LogManager::GetNumChannels(); i++) { - LogChannel *chan = logMan->GetLogChannel((LogTypes::LOG_TYPE)i); + LogChannel *chan = logMan->GetLogChannel((LogType)i); chan->enabled = !chan->enabled; } return UI::EVENT_DONE; @@ -313,7 +330,7 @@ UI::EventReturn LogConfigScreen::OnToggleAll(UI::EventParams &e) { UI::EventReturn LogConfigScreen::OnEnableAll(UI::EventParams &e) { LogManager *logMan = LogManager::GetInstance(); for (int i = 0; i < LogManager::GetNumChannels(); i++) { - LogChannel *chan = logMan->GetLogChannel((LogTypes::LOG_TYPE)i); + LogChannel *chan = logMan->GetLogChannel((LogType)i); chan->enabled = true; } return UI::EVENT_DONE; @@ -322,7 +339,7 @@ UI::EventReturn LogConfigScreen::OnEnableAll(UI::EventParams &e) { UI::EventReturn LogConfigScreen::OnDisableAll(UI::EventParams &e) { LogManager *logMan = LogManager::GetInstance(); for (int i = 0; i < LogManager::GetNumChannels(); i++) { - LogChannel *chan = logMan->GetLogChannel((LogTypes::LOG_TYPE)i); + LogChannel *chan = logMan->GetLogChannel((LogType)i); chan->enabled = false; } return UI::EVENT_DONE; @@ -360,10 +377,10 @@ void LogLevelScreen::OnCompleted(DialogResult result) { LogManager *logMan = LogManager::GetInstance(); for (int i = 0; i < LogManager::GetNumChannels(); ++i) { - LogTypes::LOG_TYPE type = (LogTypes::LOG_TYPE)i; + LogType type = (LogType)i; LogChannel *chan = logMan->GetLogChannel(type); if (chan->enabled) - chan->level = (LogTypes::LOG_LEVELS)(selected + 1); + chan->level = (LogLevel)(selected + 1); } } @@ -475,6 +492,7 @@ void SystemInfoScreen::CreateTabs() { auto di = GetI18NCategory(I18NCat::DIALOG); auto si = GetI18NCategory(I18NCat::SYSINFO); + auto sy = GetI18NCategory(I18NCat::SYSTEM); auto gr = GetI18NCategory(I18NCat::GRAPHICS); TabHolder *tabHolder = new TabHolder(ORIENT_VERTICAL, 225, new AnchorLayoutParams(10, 0, 10, 0, false)); @@ -858,6 +876,10 @@ void SystemInfoScreen::CreateTabs() { g_OSD.Show(OSDType::MESSAGE_SUCCESS, "Success"); return UI::EVENT_DONE; }); + internals->Add(new Choice(sy->T("RetroAchievements")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.Show(OSDType::MESSAGE_WARNING, "RetroAchievements warning", "", "I_RETROACHIEVEMENTS_LOGO"); + return UI::EVENT_DONE; + }); internals->Add(new ItemHeader(si->T("Progress tests"))); internals->Add(new Choice(si->T("30%")))->OnClick.Add([&](UI::EventParams &) { g_OSD.SetProgressBar("testprogress", "Test Progress", 1, 100, 30, 0.0f); @@ -1422,4 +1444,4 @@ void FrameDumpTestScreen::update() { } RecreateViews(); } -} \ No newline at end of file +} diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 4ecbb02402..231a695142 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -794,6 +794,16 @@ void EmuScreen::onVKey(int virtualKeyCode, bool down) { if (down) g_Config.iInternalScreenRotation = ROTATION_LOCKED_HORIZONTAL180; break; + case VIRTKEY_TOGGLE_WLAN: + if (down) { + auto n = GetI18NCategory(I18NCat::NETWORKING); + auto di = GetI18NCategory(I18NCat::DIALOG); + g_Config.bEnableWlan = !g_Config.bEnableWlan; + // Try to avoid adding more strings so we piece together a message from existing ones. + g_OSD.Show(OSDType::MESSAGE_INFO, StringFromFormat( + "%s: %s", n->T("Enable networking"), g_Config.bEnableWlan ? di->T("Enabled") : di->T("Disabled")), 2.0, "toggle_wlan"); + } + break; } } @@ -1117,7 +1127,9 @@ void EmuScreen::update() { if (invalid_) return; - controlMapper_.Update(); + double now = time_now_d(); + + controlMapper_.Update(now); if (pauseTrigger_) { pauseTrigger_ = false; @@ -1137,7 +1149,7 @@ void EmuScreen::update() { saveStatePreview_->SetFilename(fn); if (!fn.empty()) { saveStatePreview_->SetVisibility(UI::V_VISIBLE); - saveStatePreviewShownTime_ = time_now_d(); + saveStatePreviewShownTime_ = now; } else { saveStatePreview_->SetVisibility(UI::V_GONE); } @@ -1145,10 +1157,10 @@ void EmuScreen::update() { if (saveStatePreview_->GetVisibility() == UI::V_VISIBLE) { double endTime = saveStatePreviewShownTime_ + 2.0; - float alpha = clamp_value((endTime - time_now_d()) * 4.0, 0.0, 1.0); + float alpha = clamp_value((endTime - now) * 4.0, 0.0, 1.0); saveStatePreview_->SetColor(colorAlpha(0x00FFFFFF, alpha)); - if (time_now_d() - saveStatePreviewShownTime_ > 2) { + if (now - saveStatePreviewShownTime_ > 2) { saveStatePreview_->SetVisibility(UI::V_GONE); } } diff --git a/UI/GameScreen.cpp b/UI/GameScreen.cpp index 4564bb6481..c07ca1d5f8 100644 --- a/UI/GameScreen.cpp +++ b/UI/GameScreen.cpp @@ -334,7 +334,7 @@ void GameScreen::render() { } UI::EventReturn GameScreen::OnShowInFolder(UI::EventParams &e) { - System_ShowFileInFolder(gamePath_.c_str()); + System_ShowFileInFolder(gamePath_); return UI::EVENT_DONE; } diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 06f0047f07..6b72c516ad 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -977,7 +977,9 @@ void GameSettingsScreen::CreateSystemSettings(UI::ViewGroup *systemSettings) { if (System_GetPropertyBool(SYSPROP_HAS_OPEN_DIRECTORY)) { systemSettings->Add(new Choice(sy->T("Show Memory Stick folder")))->OnClick.Add([](UI::EventParams &p) { - System_ShowFileInFolder(File::ResolvePath(g_Config.memStickDirectory.ToString()).c_str()); + // TODO: Should build ResolvePath into System_ShowFileInFolder()? + std::string resolved = File::ResolvePath(g_Config.memStickDirectory.ToString()); + System_ShowFileInFolder(Path(resolved)); return UI::EVENT_DONE; }); } diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index 7675e761c2..226b942a33 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -189,18 +189,18 @@ public: void Log(const LogMessage &message) override { // Log with simplified headers as Android already provides timestamp etc. switch (message.level) { - case LogTypes::LVERBOSE: - case LogTypes::LDEBUG: - case LogTypes::LINFO: + case LogLevel::LVERBOSE: + case LogLevel::LDEBUG: + case LogLevel::LINFO: printf("INFO [%s] %s", message.log, message.msg.c_str()); break; - case LogTypes::LERROR: + case LogLevel::LERROR: printf("ERR [%s] %s", message.log, message.msg.c_str()); break; - case LogTypes::LWARNING: + case LogLevel::LWARNING: printf("WARN [%s] %s", message.log, message.msg.c_str()); break; - case LogTypes::LNOTICE: + case LogLevel::LNOTICE: default: printf("NOTE [%s] !!! %s", message.log, message.msg.c_str()); break; @@ -568,9 +568,9 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch boot_filename.clear(); // Parse command line - LogTypes::LOG_LEVELS logLevel = LogTypes::LINFO; + LogLevel logLevel = LogLevel::LINFO; bool forceLogLevel = false; - const auto setLogLevel = [&logLevel, &forceLogLevel](LogTypes::LOG_LEVELS level) { + const auto setLogLevel = [&logLevel, &forceLogLevel](LogLevel level) { logLevel = level; forceLogLevel = true; }; @@ -588,12 +588,12 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch case 'd': // Enable debug logging // Note that you must also change the max log level in Log.h. - setLogLevel(LogTypes::LDEBUG); + setLogLevel(LogLevel::LDEBUG); break; case 'v': // Enable verbose logging // Note that you must also change the max log level in Log.h. - setLogLevel(LogTypes::LVERBOSE); + setLogLevel(LogLevel::LVERBOSE); break; case 'j': g_Config.iCpuCore = (int)CPUCore::JIT; @@ -613,7 +613,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch break; case '-': if (!strncmp(argv[i], "--loglevel=", strlen("--loglevel=")) && strlen(argv[i]) > strlen("--loglevel=")) - setLogLevel(static_cast(std::atoi(argv[i] + strlen("--loglevel=")))); + setLogLevel(static_cast(std::atoi(argv[i] + strlen("--loglevel=")))); if (!strncmp(argv[i], "--log=", strlen("--log=")) && strlen(argv[i]) > strlen("--log=")) fileToLog = argv[i] + strlen("--log="); if (!strncmp(argv[i], "--state=", strlen("--state=")) && strlen(argv[i]) > strlen("--state=")) @@ -822,7 +822,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch restarting = false; } -void RenderOverlays(UIContext *dc, void *userdata); +void CallbackPostRender(UIContext *dc, void *userdata); bool CreateGlobalPipelines(); bool NativeInitGraphics(GraphicsContext *graphicsContext) { @@ -861,7 +861,7 @@ bool NativeInitGraphics(GraphicsContext *graphicsContext) { g_screenManager->setUIContext(uiContext); g_screenManager->setDrawContext(g_draw); - g_screenManager->setPostRenderCallback(&RenderOverlays, nullptr); + g_screenManager->setPostRenderCallback(&CallbackPostRender, nullptr); g_screenManager->deviceRestored(); #ifdef _WIN32 @@ -994,9 +994,7 @@ void NativeShutdownGraphics() { INFO_LOG(SYSTEM, "NativeShutdownGraphics done"); } -void TakeScreenshot() { - g_TakeScreenshot = false; - +static void TakeScreenshot() { Path path = GetSysDirectory(DIRECTORY_SCREENSHOT); if (!File::Exists(path)) { File::CreateDir(path); @@ -1028,9 +1026,10 @@ void TakeScreenshot() { } } -void RenderOverlays(UIContext *dc, void *userdata) { +void CallbackPostRender(UIContext *dc, void *userdata) { if (g_TakeScreenshot) { TakeScreenshot(); + g_TakeScreenshot = false; } } diff --git a/UI/OnScreenDisplay.cpp b/UI/OnScreenDisplay.cpp index 0302515a3c..2258ba6cc4 100644 --- a/UI/OnScreenDisplay.cpp +++ b/UI/OnScreenDisplay.cpp @@ -71,22 +71,27 @@ static void MeasureNotice(const UIContext &dc, NoticeLevel level, const std::str *height += 5.0f + height2; } - float iconSize = 0.0f; - - if (!iconName.empty()) { + float iconW = 0.0f; + float iconH = 0.0f; + if (!iconName.empty() && !startsWith(iconName, "I_")) { // Check for atlas image. Bit hacky, but we choose prefixes for icon IDs anyway in a way that this is safe. // Normal entry but with a cached icon. int iconWidth, iconHeight; if (g_iconCache.GetDimensions(iconName, &iconWidth, &iconHeight)) { *width += 5.0f + iconWidth; - iconSize = iconWidth + 5.0f; + iconW = iconWidth; + iconH = iconHeight; + } + } else { + ImageID iconID = iconName.empty() ? GetOSDIcon(level) : ImageID(iconName.c_str()); + if (iconID.isValid()) { + dc.Draw()->GetAtlas()->measureImage(iconID, &iconW, &iconH); } - } else if (!GetOSDIcon(level).isInvalid()) { - // Atlas icon. - iconSize = g_atlasIconSize + 5.0f; } - *width += iconSize + 12.0f; - *height = std::max(*height, iconSize + 5.0f); + iconW += 5.0f; + + *width += iconW + 12.0f; + *height = std::max(*height, iconH + 5.0f); } // Align only matters here for the ASCII-only flag. @@ -109,29 +114,38 @@ static void RenderNotice(UIContext &dc, Bounds bounds, float height1, NoticeLeve dc.DrawRectDropShadow(bounds, 12.0f, 0.7f * alpha); dc.FillRect(background, bounds); - ImageID iconID = GetOSDIcon(level); - - float iconSize = 0.0f; - if (!iconName.empty()) { + float iconW = 0.0f; + float iconH = 0.0f; + if (!iconName.empty() && !startsWith(iconName, "I_")) { dc.Flush(); // Normal entry but with a cached icon. Draw::Texture *texture = g_iconCache.BindIconTexture(&dc, iconName); if (texture) { - iconSize = texture->Width(); - dc.Draw()->DrawTexRect(Bounds(bounds.x + 2.5f, bounds.y + 2.5f, iconSize, iconSize), 0.0f, 0.0f, 1.0f, 1.0f, foreGround); + iconW = texture->Width(); + iconH = texture->Height(); + dc.Draw()->DrawTexRect(Bounds(bounds.x + 2.5f, bounds.y + 2.5f, iconW, iconH), 0.0f, 0.0f, 1.0f, 1.0f, foreGround); dc.Flush(); dc.RebindTexture(); } dc.Begin(); - } else if (iconID.isValid()) { - // Atlas icon. - dc.DrawImageVGradient(iconID, foreGround, foreGround, Bounds(bounds.x + 2.5f, bounds.y + 2.5f, g_atlasIconSize, g_atlasIconSize)); - iconSize = g_atlasIconSize; + } else { + ImageID iconID = iconName.empty() ? GetOSDIcon(level) : ImageID(iconName.c_str()); + if (iconID.isValid()) { + // Atlas icon. + dc.Draw()->GetAtlas()->measureImage(iconID, &iconW, &iconH); + Bounds iconBounds = Bounds(bounds.x + 2.5f, bounds.y + 2.5f, iconW, iconH); + if (!iconName.empty()) { + // If it's not a preset OSD icon, give it some background to blend in. The RA icon for example + // easily melts into the orange of warnings otherwise. + dc.FillRect(UI::Drawable(0x50000000), iconBounds.Expand(2.0f)); + } + dc.DrawImageVGradient(iconID, foreGround, foreGround, Bounds(bounds.x + 2.5f, bounds.y + 2.5f, iconW, iconH)); + } } // Make room - bounds.x += iconSize + 5.0f; - bounds.w -= iconSize + 5.0f; + bounds.x += iconW + 5.0f; + bounds.w -= iconW + 5.0f; dc.DrawTextShadowRect(text.c_str(), bounds.Inset(0.0f, 1.0f, 0.0f, 0.0f), foreGround, (align & FLAG_DYNAMIC_ASCII)); diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp index 7bca24ecfa..f9a0798d78 100644 --- a/UWP/PPSSPP_UWPMain.cpp +++ b/UWP/PPSSPP_UWPMain.cpp @@ -71,7 +71,7 @@ PPSSPP_UWPMain::PPSSPP_UWPMain(App ^app, const std::shared_ptrSetAllLogLevels(LogTypes::LDEBUG); + LogManager::GetInstance()->SetAllLogLevels(LogLevel::LDEBUG); if (g_Config.bEnableLogging) { LogManager::GetInstance()->ChangeFileLog(GetLogFile().c_str()); @@ -579,15 +579,14 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string } return true; } + case SystemRequestType::SHOW_FILE_IN_FOLDER: + OpenFolder(param1); + return true; default: return false; } } -void System_ShowFileInFolder(const char *path) { - OpenFolder(std::string(path)); -} - void System_LaunchUrl(LaunchUrlType urlType, const char *url) { auto uri = ref new Windows::Foundation::Uri(ToPlatformString(url)); diff --git a/UWP/UWP.vcxproj b/UWP/UWP.vcxproj index f41e3d5f66..f1c032dbe6 100644 --- a/UWP/UWP.vcxproj +++ b/UWP/UWP.vcxproj @@ -74,7 +74,7 @@ - True + False False Never False @@ -478,23 +478,23 @@ true - + true Content\debugger\static\css\%(Filename)%(Extension) - + true Content\debugger\static\css\%(Filename)%(Extension) - + true Content\debugger\static\js\%(Filename)%(Extension) - + true Content\debugger\static\js\%(Filename)%(Extension) - + true Content\debugger\static\media\%(Filename)%(Extension) @@ -875,7 +875,7 @@ - + true Content\debugger\static\js\%(Filename)%(Extension) diff --git a/UWP/UWP.vcxproj.filters b/UWP/UWP.vcxproj.filters index 53bb1b424a..69fd40a3c1 100644 --- a/UWP/UWP.vcxproj.filters +++ b/UWP/UWP.vcxproj.filters @@ -546,19 +546,19 @@ Content\debugger - + Content\debugger\static\css - + Content\debugger\static\css - + Content\debugger\static\js - + Content\debugger\static\js - + Content\debugger\static\media @@ -611,11 +611,9 @@ Content - + Content\debugger\static\js - - diff --git a/Windows/GEDebugger/GEDebugger.cpp b/Windows/GEDebugger/GEDebugger.cpp index c96643cc38..15869fb242 100644 --- a/Windows/GEDebugger/GEDebugger.cpp +++ b/Windows/GEDebugger/GEDebugger.cpp @@ -29,6 +29,7 @@ #include "Common/Data/Text/Parsers.h" #include "Common/StringUtils.h" #include "Common/System/System.h" +#include "Common/System/Request.h" #include "Core/Config.h" #include "Core/Screenshot.h" @@ -1211,11 +1212,10 @@ BOOL CGEDebugger::DlgProc(UINT message, WPARAM wParam, LPARAM lParam) { break; case IDC_GEDBG_RECORD: - GPURecord::SetCallback([](const Path &path) { - // Opens a Windows Explorer window with the file. - System_ShowFileInFolder(path.c_str()); + GPURecord::RecordNextFrame([](const Path &path) { + // Opens a Windows Explorer window with the file, when done. + System_ShowFileInFolder(path); }); - GPURecord::Activate(); break; case IDC_GEDBG_FLUSH: diff --git a/Windows/W32Util/Misc.cpp b/Windows/W32Util/Misc.cpp index f7f015c122..da061903c2 100644 --- a/Windows/W32Util/Misc.cpp +++ b/Windows/W32Util/Misc.cpp @@ -4,9 +4,12 @@ #include #include #include +#include #include "Misc.h" #include "Common/Data/Encoding/Utf8.h" +#include "Common/StringUtils.h" +#include "Common/File/FileUtil.h" bool KeyDownAsync(int vkey) { #if PPSSPP_PLATFORM(UWP) @@ -94,6 +97,21 @@ namespace W32Util *yres = rc.bottom - rc.top; } + void ShowFileInFolder(const std::string &path) { + // SHParseDisplayName can't handle relative paths, so normalize first. + std::string resolved = ReplaceAll(File::ResolvePath(path), "/", "\\"); + + SFGAOF flags{}; + PIDLIST_ABSOLUTE pidl = nullptr; + HRESULT hr = SHParseDisplayName(ConvertUTF8ToWString(resolved).c_str(), nullptr, &pidl, 0, &flags); + + if (pidl) { + if (SUCCEEDED(hr)) + SHOpenFolderAndSelectItems(pidl, 0, nullptr, 0); + CoTaskMemFree(pidl); + } + } + static const wchar_t *RemoveExecutableFromCommandLine(const wchar_t *cmdline) { if (!cmdline) { return L""; diff --git a/Windows/W32Util/Misc.h b/Windows/W32Util/Misc.h index 8fd41b0989..4e0dbf6d58 100644 --- a/Windows/W32Util/Misc.h +++ b/Windows/W32Util/Misc.h @@ -3,6 +3,7 @@ #include #include #include + #include "Common/CommonWindows.h" namespace W32Util @@ -16,6 +17,7 @@ namespace W32Util void GetSelfExecuteParams(std::wstring &workingDirectory, std::wstring &moduleFilename); void GetWindowRes(HWND hWnd, int *xres, int *yres); + void ShowFileInFolder(const std::string &path); struct ClipboardData { ClipboardData(const char *format, size_t sz); diff --git a/Windows/main.cpp b/Windows/main.cpp index 45007fa1f9..0e3937fcd8 100644 --- a/Windows/main.cpp +++ b/Windows/main.cpp @@ -26,10 +26,10 @@ #include "Common/GPU/Vulkan/VulkanLoader.h" #include "ppsspp_config.h" -#include -#include -#include #include +#include +#include +#include #include "Common/System/Display.h" #include "Common/System/NativeApp.h" @@ -122,21 +122,6 @@ static double g_lastKeepAwake = 0.0; // Should this be configurable? 2 hours currently. static const double ACTIVITY_IDLE_TIMEOUT = 2.0 * 3600.0; -void System_ShowFileInFolder(const char *path) { - // SHParseDisplayName can't handle relative paths, so normalize first. - std::string resolved = ReplaceAll(File::ResolvePath(path), "/", "\\"); - - SFGAOF flags{}; - PIDLIST_ABSOLUTE pidl = nullptr; - HRESULT hr = SHParseDisplayName(ConvertUTF8ToWString(resolved).c_str(), nullptr, &pidl, 0, &flags); - - if (pidl) { - if (SUCCEEDED(hr)) - SHOpenFolderAndSelectItems(pidl, 0, nullptr, 0); - CoTaskMemFree(pidl); - } -} - void System_LaunchUrl(LaunchUrlType urlType, const char *url) { ShellExecute(NULL, L"open", ConvertUTF8ToWString(url).c_str(), NULL, NULL, SW_SHOWNORMAL); } @@ -368,6 +353,7 @@ bool System_GetPropertyBool(SystemProperty prop) { case SYSPROP_HAS_OPEN_DIRECTORY: case SYSPROP_HAS_TEXT_INPUT_DIALOG: case SYSPROP_CAN_CREATE_SHORTCUT: + case SYSPROP_CAN_SHOW_FILE: return true; case SYSPROP_HAS_IMAGE_BROWSER: return true; @@ -388,7 +374,7 @@ bool System_GetPropertyBool(SystemProperty prop) { case SYSPROP_SUPPORTS_OPEN_FILE_IN_EDITOR: return true; // FileUtil.cpp: OpenFileInEditor case SYSPROP_SUPPORTS_HTTPS: - return true; + return !g_Config.bDisableHTTPS; default: return false; } @@ -608,6 +594,11 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string }).detach(); return true; } + + case SystemRequestType::SHOW_FILE_IN_FOLDER: + W32Util::ShowFileInFolder(param1); + return true; + case SystemRequestType::TOGGLE_FULLSCREEN_STATE: { bool flag = !MainWindow::IsFullscreen(); @@ -629,7 +620,6 @@ bool System_MakeRequest(SystemRequestType type, int requestId, const std::string return true; } case SystemRequestType::CREATE_GAME_SHORTCUT: - // This is not actually working, but ported it to the request framework anyway. return W32Util::CreateDesktopShortcut(param1, param2); default: return false; @@ -982,7 +972,7 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin LogManager::GetInstance()->GetConsoleListener()->Init(showLog, 150, 120, "PPSSPP Debug Console"); if (debugLogLevel) { - LogManager::GetInstance()->SetAllLogLevels(LogTypes::LDEBUG); + LogManager::GetInstance()->SetAllLogLevels(LogLevel::LDEBUG); } // This still seems to improve performance noticeably. diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp index 1cd0adc908..9906b6fa8f 100644 --- a/android/jni/app-android.cpp +++ b/android/jni/app-android.cpp @@ -202,10 +202,10 @@ int utimensat(int fd, const char *path, const struct timespec times[2]) { void AndroidLogger::Log(const LogMessage &message) { int mode; switch (message.level) { - case LogTypes::LWARNING: + case LogLevel::LWARNING: mode = ANDROID_LOG_WARN; break; - case LogTypes::LERROR: + case LogLevel::LERROR: mode = ANDROID_LOG_ERROR; break; default: @@ -391,10 +391,6 @@ void System_Vibrate(int length_ms) { PushCommand("vibrate", temp); } -void System_ShowFileInFolder(const char *path) { - // Unsupported -} - void System_LaunchUrl(LaunchUrlType urlType, const char *url) { switch (urlType) { case LaunchUrlType::BROWSER_URL: PushCommand("launchBrowser", url); break; @@ -537,7 +533,7 @@ bool System_GetPropertyBool(SystemProperty prop) { return deviceType != DEVICE_TYPE_VR; #ifndef HTTPS_NOT_AVAILABLE case SYSPROP_SUPPORTS_HTTPS: - return true; + return !g_Config.bDisableHTTPS; #endif default: return false; diff --git a/assets/compat.ini b/assets/compat.ini index 756b95380c..684dba9510 100644 --- a/assets/compat.ini +++ b/assets/compat.ini @@ -1593,3 +1593,14 @@ NPJG90068 = true # demo [Fontltn12Hack] #optimumFont do not return ltn12.pgf see #11055 NPJH00052 = true + +[LoadCLUTFromCurrentFrameOnly] +# Helps Syphon Filter: Logan's Shadow color issue, # where we accidentally load a CLUT from an outdated framebuffer. +# Perhaps this should be the default. +UCUS98606 = true +UCES00710 = true +NPUG80173 = true +NPUA80013 = true # Demo +UCUS98704 = true # Demo +NPEG90002 = true # Demo +SYPH04036 = true # Prototype? diff --git a/assets/lang/ar_AE.ini b/assets/lang/ar_AE.ini index 6342faa42c..de5c38b18e 100644 --- a/assets/lang/ar_AE.ini +++ b/assets/lang/ar_AE.ini @@ -16,6 +16,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -39,6 +41,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -55,6 +58,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -292,6 +296,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = ‎تفعيل سجل التصحيح Enter address = ‎أدخل العنوان FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -327,6 +333,8 @@ Audio Debug = ‎تفعيل تصحيح الصوت Control Debug = Control Debug Toggle Freeze = ‎تفعيل الإيقاف Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -374,6 +382,7 @@ Finish = ‎إنهاء GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = ‎تحميل Load completed = ‎التحميل إكتمل. diff --git a/assets/lang/az_AZ.ini b/assets/lang/az_AZ.ini index 4c084a73cb..20a4aa9d72 100644 --- a/assets/lang/az_AZ.ini +++ b/assets/lang/az_AZ.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Enable debug logging Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Bitir GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Load Load completed = Yükləmə Tamamlandı diff --git a/assets/lang/bg_BG.ini b/assets/lang/bg_BG.ini index c8c62ff830..7f24c24f0b 100644 --- a/assets/lang/bg_BG.ini +++ b/assets/lang/bg_BG.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Enable debug logging Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Край GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Зареди Load completed = Зареждането завършено. diff --git a/assets/lang/ca_ES.ini b/assets/lang/ca_ES.ini index b53fe4557f..814a815237 100644 --- a/assets/lang/ca_ES.ini +++ b/assets/lang/ca_ES.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternar velocitat del soroll @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Activa el registre Enter address = Inseriu adreça FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Amidar el rendiment GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Depuració d'àudio Control Debug = Control Debug Toggle Freeze = Commuta la imatge Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Finalitzar GE Frame Dumps = Volcats de fotograma GE Grid = Quadrícula Inactive = Inactiu +Installing... = Installing... InternalError = Un error intern ha ocorregut. Load = Carregar Load completed = Càrrega completada diff --git a/assets/lang/cz_CZ.ini b/assets/lang/cz_CZ.ini index 0d63680c66..6595746a5c 100644 --- a/assets/lang/cz_CZ.ini +++ b/assets/lang/cz_CZ.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Povolit záznam při ladění Enter address = Zadejte adresu FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Profilovač snímku GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Přepnout ladění zvuku Control Debug = Control Debug Toggle Freeze = Přepnout zamrznutí Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Potvrdit GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Načíst Load completed = Načítání dokončeno. diff --git a/assets/lang/da_DK.ini b/assets/lang/da_DK.ini index bf62f2c68c..6814838efb 100644 --- a/assets/lang/da_DK.ini +++ b/assets/lang/da_DK.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Aktiver fejlfindingslogning Enter address = Indtast adresse FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Skift freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Slut GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Hent Load completed = Hentet. diff --git a/assets/lang/de_DE.ini b/assets/lang/de_DE.ini index 9a1d18cb0a..4df2c930d6 100644 --- a/assets/lang/de_DE.ini +++ b/assets/lang/de_DE.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Lautstärke für wechselnde Geschwindigkeit/Turbo @@ -284,6 +288,8 @@ Enable driver bug workarounds = Aktiviere Driver-Fehler workarounds Enable Logging = Aktiviere Logging Enter address = Adresse eingeben FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame Profiler GPU Driver Test = GPU Treibertest @@ -319,6 +325,8 @@ Audio Debug = Ton-Debugging Control Debug = Control Debug Toggle Freeze = Bild einfrieren an/aus Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Fertig GE Frame Dumps = GE Frame Dumps Grid = Gitter Inactive = Inaktiv +Installing... = Installing... InternalError = An internal error has occurred. Load = Laden Load completed = Laden abgeschlossen diff --git a/assets/lang/dr_ID.ini b/assets/lang/dr_ID.ini index de101b63fb..7d8d60aa16 100644 --- a/assets/lang/dr_ID.ini +++ b/assets/lang/dr_ID.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Padenni Log Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Mangkami GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Load Load completed = Tibukka'mi. diff --git a/assets/lang/en_US.ini b/assets/lang/en_US.ini index df40b93a1e..22e17db73b 100644 --- a/assets/lang/en_US.ini +++ b/assets/lang/en_US.ini @@ -302,6 +302,7 @@ Block address = Block address By Address = By address Control Debug = Control Debug Copy savestates to memstick root = Copy save states to Memory Stick root +Create frame dump = Create frame dump Create/Open textures.ini file for current game = Create/Open textures.ini file for current game Current = Current Dev Tools = Development tools @@ -804,6 +805,7 @@ Texture Dumping = Texture dumping Texture Replacement = Texture replacement Toggle Fullscreen = Toggle fullscreen Toggle mode = Toggle mode +Toggle WLAN = Toggle WLAN Triangle = Triangle Fast-forward = Fast-forward Up = Dpad Up diff --git a/assets/lang/es_ES.ini b/assets/lang/es_ES.ini index 63c189fed8..29d78dea79 100644 --- a/assets/lang/es_ES.ini +++ b/assets/lang/es_ES.ini @@ -8,6 +8,8 @@ Achievement unlocked = Logro desbloqueado Achievements = Logros Achievements are disabled = Los logros están desactivados Achievements enabled = Los logros están activados +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Alrededor mio Can't log in to RetroAchievements right now = No se pudo iniciar sesión a RetroAchievements en estos momentos Challenge indicator = Indicador de desafio @@ -31,6 +33,7 @@ Locked achievements = Logros bloqueados Log bad memory accesses = Registrar malos accesos a la memoría Mastered %1 = Completaste %1 Notifications = Notificaciones +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Registrate en www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements no está disponible para este juego RetroAchievements website = Página web de RetroAchievements @@ -47,6 +50,7 @@ This game has no achievements = Este juego no tiene logros Top players = Top jugadores Unlocked achievements = Logros desbloqueados Unofficial achievements = Logros no oficiales +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternar velocidad de sonido @@ -284,7 +288,9 @@ Enable driver bug workarounds = Activar arreglos alternativos para fallos de dri Enable Logging = Activar registro Enter address = Insertar dirección FPU = FPU +Fragment = Fragment Frame Profiler = Medir rendimiento +Frame timing = Frame timing Framedump tests = Tests de volcado de cuadros GPU Driver Test = Test de controlador GPU GPU log profiler = log de perfiles GPU @@ -319,6 +325,8 @@ Audio Debug = Depuración de audio Control Debug = Control Debug Toggle Freeze = Parar/Reanudar imagen Touchscreen Test = Test de pantalla táctil +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Terminar GE Frame Dumps = Volcados de fotogramas GE Grid = Cuadrícula Inactive = Inactivo +Installing... = Installing... InternalError = Ha ocurrido un error interno. Load = Cargar Load completed = Carga completada. diff --git a/assets/lang/es_LA.ini b/assets/lang/es_LA.ini index 50bfce9bee..b8c1025894 100644 --- a/assets/lang/es_LA.ini +++ b/assets/lang/es_LA.ini @@ -8,6 +8,8 @@ Achievement unlocked = Logro Desbloqueado Achievements = Logros Achievements are disabled = Los logros están desactivados Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = No se pudo iniciar sesión a RetroAchievements Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Logros bloqueados Log bad memory accesses = Registrar malos accesos a la memoría Mastered %1 = Completaste %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Registrate en www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements no está disponible para este juego RetroAchievements website = Página web de RetroAchievements @@ -47,6 +50,7 @@ This game has no achievements = Este juego no tiene logros Top players = Top players Unlocked achievements = Logros desbloqueados Unofficial achievements = Logros no oficiales +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternar velocidad de volumen @@ -284,6 +288,8 @@ Enable driver bug workarounds = Activar arreglos alternativos para fallos de dri Enable Logging = Activar registro Enter address = Insertar dirección FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Pruebas de volcado de frames Frame Profiler = Perfilado de frame GPU Driver Test = Probar controlador GPU @@ -319,6 +325,8 @@ Audio Debug = Depuración de audio Control Debug = Control Debug Toggle Freeze = Parar/Reanudar imagen Touchscreen Test = Probar pantalla táctil +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Terminar GE Frame Dumps = Volcados de cuadros GE Grid = Cuadrícula Inactive = Inactivo +Installing... = Installing... InternalError = Ha ocurrido una falla interna. Load = Abrir Load completed = Datos cargados. diff --git a/assets/lang/fa_IR.ini b/assets/lang/fa_IR.ini index ab2a3693d0..7f65a62b91 100644 --- a/assets/lang/fa_IR.ini +++ b/assets/lang/fa_IR.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = حجم سرعت متناوب @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = ‎روشن کردن لاگ باگ ها Enter address = وارد کردن ادرس FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = تست کردن جی پی یو سخت افزار @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = ‎پایان GE Frame Dumps = GE Frame Dumps Grid = چهارچوب Inactive = Inactive +Installing... = Installing... InternalError = خطای داخلی رخ داده است. Load = ‎بارگیری Load completed = ‎.بارگیری نکمیل شد diff --git a/assets/lang/fi_FI.ini b/assets/lang/fi_FI.ini index f3485145d7..e8c1f7fb25 100644 --- a/assets/lang/fi_FI.ini +++ b/assets/lang/fi_FI.ini @@ -8,6 +8,8 @@ Achievement unlocked = Saavutus avattu Achievements = Saavutukset Achievements are disabled = Saavutukset ovat pois käytöstä Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = RetroAchievements:iin ei voida kirjautua juuri nyt Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Lukitut saavutukset Log bad memory accesses = Kirjaa virheelliset muistipääsyt Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Rekisteröidy osoitteessa www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements eivät ole käytössä tälle pelille RetroAchievements website = RetroAchievements verkkosivu @@ -47,6 +50,7 @@ This game has no achievements = Tällä pelillä ei ole saavutuksia Top players = Top players Unlocked achievements = Avatut saavutukset Unofficial achievements = Epäviralliset saavutukset +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Vaihtoehtoisen nopeuden äänenvoimakkuus @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Ota virheenkorjauksen kirjaaminen käyttöön Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Valmis GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Load Load completed = Lataus onnistui. diff --git a/assets/lang/fr_FR.ini b/assets/lang/fr_FR.ini index 7ead375b00..05ea2d3411 100644 --- a/assets/lang/fr_FR.ini +++ b/assets/lang/fr_FR.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Volume en vitesse alternative @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Activer le journal de débogage Enter address = Entrer une adresse FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Profileur d'image GPU Driver Test = Test du pilote du GPU @@ -319,6 +325,8 @@ Audio Debug = Débogage audio Control Debug = Control Debug Toggle Freeze = Geler/Dégeler l'image Touchscreen Test = Test de l'écran tactile +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Terminer GE Frame Dumps = GE Frame Dumps Grid = Grille Inactive = Inactif +Installing... = Installing... InternalError = Une erreur interne est survenue. Load = Charger Load completed = Chargement terminé. diff --git a/assets/lang/gl_ES.ini b/assets/lang/gl_ES.ini index 5db384b6e3..a64538f424 100644 --- a/assets/lang/gl_ES.ini +++ b/assets/lang/gl_ES.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Activar rexistro Enter address = Insertar dirección FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Depuración de audio Control Debug = Control Debug Toggle Freeze = Parar/Reanudar imaxe Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Terminar GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Cargar Load completed = Carga completada. diff --git a/assets/lang/gr_EL.ini b/assets/lang/gr_EL.ini index f51c31ecd8..6e53e3a1b9 100644 --- a/assets/lang/gr_EL.ini +++ b/assets/lang/gr_EL.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Ενεργοποίηση καταγραφής αποσφαλμάτωσης Enter address = Διεύθυνση Enter FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Profiler πλαισίου GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Debug ήχου Control Debug = Control Debug Toggle Freeze = Πάγωμα Εναλαγής Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = ΤΕΛΟΣ GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = ΑΝΕΝΕΡΓΟ +Installing... = Installing... InternalError = An internal error has occurred. Load = ΦΟΡΤΩΣΗ Load completed = ΦΟΡΤΩΣΗ ΟΛΟΚΛΗΡΩΘΗΚΕ diff --git a/assets/lang/he_IL.ini b/assets/lang/he_IL.ini index 1a42307847..a6cca02f1f 100644 --- a/assets/lang/he_IL.ini +++ b/assets/lang/he_IL.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = אפשר דיווח באגים Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = םייס GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Load Load completed = .המלשוה הניעט diff --git a/assets/lang/he_IL_invert.ini b/assets/lang/he_IL_invert.ini index dbd838e27e..33c7c09add 100644 --- a/assets/lang/he_IL_invert.ini +++ b/assets/lang/he_IL_invert.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = םיגאב חוויד רשפא Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = םייס GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Load Load completed = .המלשוה הניעט diff --git a/assets/lang/hr_HR.ini b/assets/lang/hr_HR.ini index 116b2683ae..e1cfa52718 100644 --- a/assets/lang/hr_HR.ini +++ b/assets/lang/hr_HR.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Naizmjenična brzina zvuka @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Uključi debug logging Enter address = Upiši adresu FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = Testiranje GPU drivera @@ -319,6 +325,8 @@ Audio Debug = Audio debuganje Control Debug = Control Debug Toggle Freeze = Uključi zamrzavanje Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Dovrši GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Neaktivno +Installing... = Installing... InternalError = An internal error has occurred. Load = Učitaj Load completed = Učitavanje dovršeno. diff --git a/assets/lang/hu_HU.ini b/assets/lang/hu_HU.ini index bbd6af1477..6e3d3e797b 100644 --- a/assets/lang/hu_HU.ini +++ b/assets/lang/hu_HU.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternatív sebesség hangereje @@ -284,6 +288,8 @@ Enable Logging = Naplózás engedélyezése Enable driver bug workarounds = Enable driver bug workarounds Enter address = Cím megadása FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Képkocka profilozó GPU Driver Test = GPU driver teszt @@ -319,6 +325,8 @@ Audio Debug = Audio hibaelhárítás Control Debug = Control Debug Toggle Freeze = Fagyasztás ki/bekapcsolása Touchscreen Test = Érintőképernyő teszt +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Kész GE Frame Dumps = GE Frame Dumps Grid = Rács Inactive = Inaktív +Installing... = Installing... InternalError = An internal error has occurred. Load = Betöltés Load completed = Betöltve. diff --git a/assets/lang/id_ID.ini b/assets/lang/id_ID.ini index 7b7770ff09..898429cbe3 100644 --- a/assets/lang/id_ID.ini +++ b/assets/lang/id_ID.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Kecepatan volume alternatif @@ -284,6 +288,8 @@ Enable driver bug workarounds = Aktifkan solusi masalah driver Enable Logging = Hidupkan pencatat awakutu Enter address = Masukkan alamat FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Tes pembuangan laju bingkai Frame Profiler = Profil laju bingkai GPU Driver Test = Tes driver GPU @@ -319,6 +325,8 @@ Audio Debug = Awakutu audio Control Debug = Control Debug Toggle Freeze = Alihkan pembekuan Touchscreen Test = Tes layar sentuh +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Selesai GE Frame Dumps = Buang laju bingkai GE Grid = Kisi-kisi Inactive = Tidak aktif +Installing... = Installing... InternalError = Kesalahan internal telah terjadi. Load = Muat Load completed = Selesai memuat. diff --git a/assets/lang/it_IT.ini b/assets/lang/it_IT.ini index 027f5302be..858da91675 100644 --- a/assets/lang/it_IT.ini +++ b/assets/lang/it_IT.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Volume velocizzato alternativo @@ -284,6 +288,8 @@ Enable driver bug workarounds = Abilita espediente per superare i bug dei driver Enable Logging = Attiva Log del Debug Enter address = Inserire indirizzo FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Test del framedump Frame Profiler = Profilo Frame GPU Driver Test = Test dei driver GPU @@ -319,6 +325,8 @@ Audio Debug = Audio debug Control Debug = Controllo debug Toggle Freeze = Attiva/Disattiva congelamento Touchscreen Test = Test del touchscreen +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Fine GE Frame Dumps = GE Frame Dumps Grid = Griglia Inactive = Inattiva +Installing... = Installing... InternalError = È avvenuto un errore interno. Load = Carica Load completed = Caricamento completato. diff --git a/assets/lang/ja_JP.ini b/assets/lang/ja_JP.ini index a1ca8ad871..e82b21288b 100644 --- a/assets/lang/ja_JP.ini +++ b/assets/lang/ja_JP.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = カスタム速度時のボリューム @@ -284,6 +288,8 @@ Enable driver bug workarounds = ドライバーバグの回避の有効化 Enable Logging = デバッグログを有効にする Enter address = アドレスを入力する FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = フレームダンプのテスト Frame Profiler = フレームプロファイラ GPU Driver Test = GPUドライバをテスト @@ -319,6 +325,8 @@ Audio Debug = オーディオのデバッグを切り替える Control Debug = Control Debug Toggle Freeze = フリーズを切り替える Touchscreen Test = タッチスクリーンのテスト +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = 終了 GE Frame Dumps = GE Frame Dumps Grid = グリッドのサイズ Inactive = 非アクティブ +Installing... = Installing... InternalError = 内部エラーが発生しました。 Load = ロード... Load completed = ロードが完了しました。 diff --git a/assets/lang/jv_ID.ini b/assets/lang/jv_ID.ini index 508d95d5fb..924fc9706f 100644 --- a/assets/lang/jv_ID.ini +++ b/assets/lang/jv_ID.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Ngatifke ngangkut barang Enter address = Ketik alamat FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Pigura Profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Debug Suoro Control Debug = Control Debug Toggle Freeze = Pilian Beku Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Rampung GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Mbukak Load completed = Mbukak rampung. diff --git a/assets/lang/lo_LA.ini b/assets/lang/lo_LA.ini index 80d8766617..26ecc83dbf 100644 --- a/assets/lang/lo_LA.ini +++ b/assets/lang/lo_LA.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = ເປີດໃຊ້ງານ logging Enter address = ໃສ່ຄ່າທີ່ຢູ່ FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = ລາຍລະອຽດຂອງເຟຣມ GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = ແກ້ໄຂຈຸດບົກພ່ອງຂອງສຽງ Control Debug = Control Debug Toggle Freeze = ປຸ່ມແຊ່ແຂງ Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = ສິ້ນສຸດ GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = ໂຫຼດ Load completed = ໂຫຼດຂໍ້ມູນສຳເລັດ diff --git a/assets/lang/lt-LT.ini b/assets/lang/lt-LT.ini index 7c08003f99..5c9903cf61 100644 --- a/assets/lang/lt-LT.ini +++ b/assets/lang/lt-LT.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Įjungti testinio režimo statuso rašymą į failus Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Baigti GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Krauti Load completed = Krovimas baigtas. diff --git a/assets/lang/ms_MY.ini b/assets/lang/ms_MY.ini index 76e3207d01..c50bf87bfb 100644 --- a/assets/lang/ms_MY.ini +++ b/assets/lang/ms_MY.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Upayakan log pepijat Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = Ujian driver GPU @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Tamat GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Muatkan Load completed = Memuat selesai. diff --git a/assets/lang/nl_NL.ini b/assets/lang/nl_NL.ini index 8e7fb99c71..8f99663604 100644 --- a/assets/lang/nl_NL.ini +++ b/assets/lang/nl_NL.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Foutlogboek inschakelen Enter address = Adres invoeren FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frameanalyse GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Foutopsporing voor audio Control Debug = Control Debug Toggle Freeze = Bevriezen in-/uitschakelen Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Voltooien GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactief +Installing... = Installing... InternalError = An internal error has occurred. Load = Laden Load completed = Het laden is voltooid. diff --git a/assets/lang/no_NO.ini b/assets/lang/no_NO.ini index a7b0eefeaa..44edd1ab94 100644 --- a/assets/lang/no_NO.ini +++ b/assets/lang/no_NO.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Debugloggning Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Ferdig GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Load Load completed = Ferdig lastet. diff --git a/assets/lang/pl_PL.ini b/assets/lang/pl_PL.ini index fb61dded5c..91c2cf0997 100644 --- a/assets/lang/pl_PL.ini +++ b/assets/lang/pl_PL.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Osiągnięcia Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Zablokowane osiągnięcia Log bad memory accesses = Rejestruj złe dostępy do pamięci Mastered %1 = Wymaksowane %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Zarejestruj się na www.retroachievements.org RetroAchievements are not available for this game = Usługa RetroAchievements nie jest dostępna dla tej gry RetroAchievements website = Strona internetowa RetroAchievements @@ -47,6 +50,7 @@ This game has no achievements = Ta gra nie ma osiągnięć Top players = Top players Unlocked achievements = Odblokowane osiągnięcia Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternatywna prędkość emulacji @@ -284,6 +288,8 @@ Enable driver bug workarounds = Uruchom obejścia błędów sterownika Enable Logging = Włącz dziennik zdarzeń debugera Enter address = Wprowadź adres FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Test zrzutu klatki Frame Profiler = Profiler klatki GPU Driver Test = Test sterownika GPU @@ -319,6 +325,8 @@ Audio Debug = Debugowanie audio Control Debug = Control Debug Toggle Freeze = Wł./Wył. zamrożenie Touchscreen Test = Test ekranu dotykowego +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Zakończ GE Frame Dumps = Zrzuty klatek GE Grid = Rozmiar siatki Inactive = Nieaktywny +Installing... = Installing... InternalError = Występił wewnętrzny błąd aplikacji Load = Wczytaj Load completed = Ładowanie zakończone. diff --git a/assets/lang/pt_BR.ini b/assets/lang/pt_BR.ini index 8882bbfef0..7085eebe0d 100644 --- a/assets/lang/pt_BR.ini +++ b/assets/lang/pt_BR.ini @@ -32,6 +32,8 @@ Achievement progress = Progresso das Conquistas Achievements = Conquistas Achievements enabled = Conquistas ativadas Achievements are disabled = As conquistas estão desativadas +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Can't log in to RetroAchievements right now = Não consegue logar no RetroAchievements agora Challenge indicator = Indicador do desafio Challenge Mode = Modo Desafio @@ -55,6 +57,7 @@ Log bad memory accesses = Registrar acessos ruins da memória Mastered %1 = Conquistou o %1 Around me = Ao redor de mim Notifications = Notificações +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Registrar no www.retroachievements.org RetroAchievements are not available for this game = Os RetroAchievements não estão disponíveis pra este jogo RetroAchievements website = Site dos RetroAchievements @@ -71,6 +74,8 @@ This game has no achievements = Este jogo não tem conquistas Top players = Os melhores jogadores Unlocked achievements = Conquistas destrancadas Unofficial = Não oficial +Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Velocidade alternativa do volume @@ -308,6 +313,8 @@ Enable driver bug workarounds = Ativar soluções alternativas pros bugs dos dri Enable Logging = Ativar o registro do debug Enter address = Inserir endereço FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Testes dos dumps dos frames Frame Profiler = Analista dos frames GPU Driver Test = Teste do driver da GPU @@ -343,6 +350,8 @@ Audio Debug = Debug do áudio Control Debug = Debug do Controle Toggle Freeze = Alternar congelamento Touchscreen Test = Teste do Touchscreen +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -390,6 +399,7 @@ Finish = Concluir GE Frame Dumps = Dumps do Frame do GE Grid = Grade Inactive = Inativo +Installing... = Installing... InternalError = Ocorreu um erro interno. Load = Carregar Load completed = Carregamento completado. @@ -434,6 +444,7 @@ Supported = Suportado There is no data = Não há dados. Toggle All = Alternar todos Toggle List = Alternar lista +Top Center = Top center Unsupported = Não suportado Top Left = A esquerda do topo Top Right = A direita do topo diff --git a/assets/lang/pt_PT.ini b/assets/lang/pt_PT.ini index 738459a36b..fef8847a5d 100644 --- a/assets/lang/pt_PT.ini +++ b/assets/lang/pt_PT.ini @@ -32,6 +32,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -55,6 +57,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -71,6 +74,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Velocidade alternativa do volume @@ -308,6 +312,8 @@ Enable driver bug workarounds = Ativar soluções alternativas para erros dos Dr Enable Logging = Ativar log do depurador Enter address = Inserir endereço FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Testes dos dumps dos quadros Frame Profiler = Analista dos quadros GPU Driver Test = Teste do driver da GPU @@ -343,6 +349,8 @@ Audio Debug = Depuração do áudio Control Debug = Control Debug Toggle Freeze = Alternar congelamento Touchscreen Test = Teste do Touchscreen +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -390,6 +398,7 @@ Finish = Concluir GE Frame Dumps = Dumps do Frame do GE Grid = Grade Inactive = Inativo +Installing... = Installing... InternalError = Ocorreu um erro interno. Load = Carregar Load completed = Carregamento completado. diff --git a/assets/lang/ro_RO.ini b/assets/lang/ro_RO.ini index ff87d93a56..c7c1f46459 100644 --- a/assets/lang/ro_RO.ini +++ b/assets/lang/ro_RO.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -285,6 +289,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Enable debug logging Enter address = Enter address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -320,6 +326,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -367,6 +375,7 @@ Finish = Stop GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = Încarcă Load completed = Încărcare Completă diff --git a/assets/lang/ru_RU.ini b/assets/lang/ru_RU.ini index 326e75b3fb..2cc96572d9 100644 --- a/assets/lang/ru_RU.ini +++ b/assets/lang/ru_RU.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Громкость при другой скорости @@ -284,6 +288,8 @@ Enable driver bug workarounds = Включить обход ошибок дра Enable Logging = Включить отладочное логирование Enter address = Ввести адрес FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Тест дампов кадров Frame Profiler = Профайлер кадров GPU Driver Test = Проверка драйвера ГП @@ -319,6 +325,8 @@ Audio Debug = отладку аудио Control Debug = отладку управления Toggle Freeze = Запустить/остановить Touchscreen Test = Тест сенсорного экрана +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Сохранить GE Frame Dumps = Дампы кадров GE Grid = Сетка Inactive = Неактивно +Installing... = Installing... InternalError = Произошла внутренняя ошибка. Load = Загрузить Load completed = Загрузка завершена diff --git a/assets/lang/sv_SE.ini b/assets/lang/sv_SE.ini index a474bd6487..db7d379321 100644 --- a/assets/lang/sv_SE.ini +++ b/assets/lang/sv_SE.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement avklarat! Achievements = Achievements Achievements are disabled = Achievements är avstängda Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Låsta achievements Log bad memory accesses = Logga felaktiga minnesåtkomster Mastered %1 = Klarade av %1! Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Registrera på www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements finns inte tillgängliga för detta spel RetroAchievements website = RetroAchievements webbsida @@ -47,6 +50,7 @@ This game has no achievements = Detta spel har inga achievements Top players = Top players Unlocked achievements = Upplåsta achievements Unofficial achievements = Inofficiella achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Volym vid alternativ hastighet @@ -284,6 +288,8 @@ Enable driver bug workarounds = Tillåt workarounds för drivrutins-buggar Enable Logging = Debugloggning Enter address = Address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump-tester Frame Profiler = Frame-profiler GPU Driver Test = GPU drivrutins-test @@ -319,6 +325,8 @@ Audio Debug = Audio debug Control Debug = Control Debug Toggle Freeze = Toggla freeze Touchscreen Test = Touchskärm-test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -367,6 +375,7 @@ Finish = Färdig GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inaktiv +Installing... = Installing... InternalError = Ett internt fel har upptäckts. Load = Ladda Load completed = Laddat. diff --git a/assets/lang/tg_PH.ini b/assets/lang/tg_PH.ini index 79607da054..770b3c900a 100644 --- a/assets/lang/tg_PH.ini +++ b/assets/lang/tg_PH.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Kahaliling bilis ng tunog @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Paganahin ang Debug Logging Enter address = Ilagay ang address FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Frame profiler GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Audio Debug Control Debug = Control Debug Toggle Freeze = Toggle freeze Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Tapusin GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Inactive +Installing... = Installing... InternalError = An internal error has occurred. Load = I-Load Load completed = Kumpletong na-i load. diff --git a/assets/lang/th_TH.ini b/assets/lang/th_TH.ini index 2dd1504bf5..e0f84b9424 100644 --- a/assets/lang/th_TH.ini +++ b/assets/lang/th_TH.ini @@ -8,6 +8,8 @@ Achievement unlocked = ตอนเป้าหมายความสำเ Achievements = เป้าหมายความสำเร็จ Achievements enabled = เปิดใช้งาน เป้าหมายความสำเร็จ Achievements are disabled = ปิดใช้งาน เป้าหมายความสำเร็จ +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = ไม่สามารถล็อกอินเข้าไปยัง RetroAchievements ได้ในขณะนี้ Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = เป้าหมายความสำเร็จท Log bad memory accesses = เก็บค่าการเข้าถึงหน่วยความจำที่ไม่ดี Mastered %1 = เชี่ยวชาญ %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = สมัครได้ที่ www.retroachievements.org RetroAchievements are not available for this game = ไม่สามารถใช้งาน RetroAchievements กับเกมนี้ได้ RetroAchievements website = เว็บไซต์ RetroAchievements @@ -47,6 +50,7 @@ This game has no achievements = เกมนี้ไม่มีเป้าห Top players = Top players Unlocked achievements = เป้าหมายความสำเร็จที่ถูกปลดล็อคแล้ว Unofficial achievements = เป้าหมายความสำเร็จอย่างไม่เป็นทางการ +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = ระดับเสียงในโหมดเร่งความเร็ว @@ -284,6 +288,8 @@ Enable Logging = เปิดใช้งานการเก็บค่าแ Enable driver bug workarounds = เปิดใช้งานการแก้ขัดปัญหาไดรเวอร์บั๊ก Enter address = ใส่ค่าที่อยู่ FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = ทดสอบไฟล์เฟรมดั๊มพ์ Frame Profiler = รายละเอียดของเฟรม GPU Driver Test = ทดสอบไดรเวอร์ GPU @@ -319,6 +325,8 @@ Audio Debug = แก้ไขจุดบกพร่องของเสีย Control Debug = แก้ไขจุดบกพร่องการควบคุม Toggle Freeze = ปุ่มแช่แข็ง Touchscreen Test = ทดสอบหน้าจอสัมผัส +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = สิ้นสุด GE Frame Dumps = ไฟล์กราฟิกเอนจิ้นเฟรมดั๊มพ์ Grid = กริด Inactive = ปิดการทำงาน +Installing... = Installing... InternalError = เกิดข้อผิดพลาดภายใน Load = โหลด Load completed = โหลดข้อมูลสำเร็จ diff --git a/assets/lang/tr_TR.ini b/assets/lang/tr_TR.ini index 192fd02065..464f5c28d3 100644 --- a/assets/lang/tr_TR.ini +++ b/assets/lang/tr_TR.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternatif hız hacmi @@ -286,6 +290,8 @@ Enable driver bug workarounds = Sürücü hatası geçici çözümlerini etkinle Enable Logging = Hata ayıklama günlüğünü etkinleştirin Enter address = Adres Gir FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump testleri Frame Profiler = Frame profiler GPU Driver Test = GPU sürücü testi @@ -321,6 +327,8 @@ Audio Debug = Ses hata ayıklamasını Control Debug = Control Debug Toggle Freeze = Donmayı Aç/Kapa Touchscreen Test = Dokunmatik ekran testi +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -368,6 +376,7 @@ Finish = Bitir GE Frame Dumps = GE Kare Dökümleri Grid = Izgara Inactive = Ektin değil +Installing... = Installing... InternalError = Dahili bir hata oluştu. Load = Yükle Load completed = Yükleme tamamlandı. diff --git a/assets/lang/uk_UA.ini b/assets/lang/uk_UA.ini index 368c98336c..f96736a2ab 100644 --- a/assets/lang/uk_UA.ini +++ b/assets/lang/uk_UA.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Гучність при альтернативній швидкості @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Ввімкнути логування Enter address = Введіть адресу FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Профілі кадрів GPU Driver Test = Перевірка драйверу GPU @@ -319,6 +325,8 @@ Audio Debug = Налагодження аудіо Control Debug = Control Debug Toggle Freeze = Запустити/Зупинити Touchscreen Test = Тест сенсорного екрану +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Зберегти GE Frame Dumps = GE Frame Dumps Grid = Сітка Inactive = Неактивно +Installing... = Installing... InternalError = An internal error has occurred. Load = Завантажити Load completed = Завантаження завершене diff --git a/assets/lang/vi_VN.ini b/assets/lang/vi_VN.ini index 8a304d934d..9ad647a37c 100644 --- a/assets/lang/vi_VN.ini +++ b/assets/lang/vi_VN.ini @@ -8,6 +8,8 @@ Achievement unlocked = Achievement unlocked Achievements = Achievements Achievements are disabled = Achievements are disabled Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = Can't log in to RetroAchievements right now Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = Locked achievements Log bad memory accesses = Log bad memory accesses Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = Register on www.retroachievements.org RetroAchievements are not available for this game = RetroAchievements are not available for this game RetroAchievements website = RetroAchievements website @@ -47,6 +50,7 @@ This game has no achievements = This game has no achievements Top players = Top players Unlocked achievements = Unlocked achievements Unofficial achievements = Unofficial achievements +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = Alternate speed volume @@ -284,6 +288,8 @@ Enable driver bug workarounds = Enable driver bug workarounds Enable Logging = Cho phép ghi nhật ký debug Enter address = Nhập địa chỉ FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = Framedump tests Frame Profiler = Khung hồ sơ GPU Driver Test = GPU driver test @@ -319,6 +325,8 @@ Audio Debug = Chế độ gỡ lỗi âm thanh Control Debug = Control Debug Toggle Freeze = Chuyển qua chế độ đóng băng Touchscreen Test = Touchscreen test +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = Hoàn thành GE Frame Dumps = GE Frame Dumps Grid = Grid Inactive = Không hoạt động +Installing... = Installing... InternalError = An internal error has occurred. Load = Load Load completed = Đã load xong. diff --git a/assets/lang/zh_CN.ini b/assets/lang/zh_CN.ini index 80055f0fc1..c1da957422 100644 --- a/assets/lang/zh_CN.ini +++ b/assets/lang/zh_CN.ini @@ -8,6 +8,8 @@ Achievement unlocked = 成就达成! Achievements = 成就 Achievements are disabled = 未启用成就功能 Achievements enabled = Achievements enabled +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = Around me Can't log in to RetroAchievements right now = 暂时无法登录到RetroAchievements Challenge indicator = Challenge indicator @@ -31,6 +33,7 @@ Locked achievements = 可解锁的成就 Log bad memory accesses = 记录损坏的内存访问 Mastered %1 = Mastered %1 Notifications = Notifications +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = 在www.retroachievements.org注册 RetroAchievements are not available for this game = RetroAchievements暂不适用于当前游戏 RetroAchievements website = RetroAchievements网站 @@ -47,6 +50,7 @@ This game has no achievements = 此游戏没有成就列表 Top players = Top players Unlocked achievements = 解锁的成就 Unofficial achievements = 自定义成就 +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = 备选速度时的音量 @@ -284,6 +288,8 @@ Enable driver bug workarounds = 启用GPU驱动错误解决方法 Enable Logging = 启用调试日志 Enter address = 输入地址 FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = 帧转储测试 Frame Profiler = 帧分析器 GPU Driver Test = GPU驱动程序测试 @@ -319,6 +325,8 @@ Audio Debug = 切换音频调试 Control Debug = 切换操纵调试 Toggle Freeze = 切换冻结 Touchscreen Test = 触屏测试 +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = 完成 GE Frame Dumps = GE帧转储 Grid = 网格尺寸 Inactive = 未激活 +Installing... = Installing... InternalError = 发生内部错误. Load = 载入 Load completed = 已载入。 diff --git a/assets/lang/zh_TW.ini b/assets/lang/zh_TW.ini index 40adffdb5b..a11c65512c 100644 --- a/assets/lang/zh_TW.ini +++ b/assets/lang/zh_TW.ini @@ -8,6 +8,8 @@ Achievement unlocked = 成就已解鎖 Achievements = 成就 Achievements are disabled = 成就已停用 Achievements enabled = 成就已啟用 +Achievements with active challenges = Achievements with active challenges +Almost completed achievements = Almost completed achievements Around me = 我的位置 Can't log in to RetroAchievements right now = 目前無法登入至 RetroAchievements Challenge indicator = 挑戰指示器 @@ -31,6 +33,7 @@ Locked achievements = 已鎖定的成就 Log bad memory accesses = 記憶體存取記錄錯誤 Mastered %1 = 已達成 %1 Notifications = 通知 +Recently unlocked achievements = Recently unlocked achievements Register on www.retroachievements.org = 在 www.retroachievements.org 上註冊 RetroAchievements are not available for this game = RetroAchievements 無法在這個遊戲中使用 RetroAchievements website = RetroAchievements 網站 @@ -47,6 +50,7 @@ This game has no achievements = 這個遊戲沒有成就 Top players = 頂級玩家 Unlocked achievements = 已解鎖的成就 Unofficial achievements = 非官方成就 +Unsupported achievements = Unsupported achievements [Audio] Alternate speed volume = 替代速度音量 @@ -284,6 +288,8 @@ Enable driver bug workarounds = 啟用驅動程式錯誤因應措施 Enable Logging = 啟用偵錯記錄 Enter address = 輸入位址 FPU = FPU +Fragment = Fragment +Frame timing = Frame timing Framedump tests = 影格傾印測試 Frame Profiler = 影格分析工具 GPU Driver Test = GPU 驅動程式測試 @@ -319,6 +325,8 @@ Audio Debug = 音訊偵錯 Control Debug = 控制偵錯 Toggle Freeze = 切換凍結開關 Touchscreen Test = 觸控式螢幕測試 +Ubershaders = Ubershaders +Vertex = Vertex VFPU = VFPU [Dialog] @@ -366,6 +374,7 @@ Finish = 完成 GE Frame Dumps = GE 影格傾印 Grid = 格狀 Inactive = 未啟用 +Installing... = Installing... InternalError = 發生內部錯誤 Load = 載入 Load completed = 載入完成 diff --git a/ext/vulkan/vk_enum_string_helper.h b/ext/vulkan/vk_enum_string_helper.h deleted file mode 100644 index ff6ab7ecae..0000000000 --- a/ext/vulkan/vk_enum_string_helper.h +++ /dev/null @@ -1,10830 +0,0 @@ -// *** THIS FILE IS GENERATED - DO NOT EDIT *** -// See helper_file_generator.py for modifications - - -/*************************************************************************** - * - * Copyright (c) 2015-2023 The Khronos Group Inc. - * Copyright (c) 2015-2023 Valve Corporation - * Copyright (c) 2015-2023 LunarG, Inc. - * Copyright (c) 2015-2023 Google 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. - * - * Author: Mark Lobodzinski - * Author: Courtney Goeltzenleuchter - * Author: Tobin Ehlis - * Author: Chris Forbes - * Author: John Zulauf - * Author: Tony Barbour - * - ****************************************************************************/ - - -#pragma once -#ifdef _MSC_VER -#pragma warning( disable : 4065 ) -#endif - -#include -#include - - -static inline const char* string_VkResult(VkResult input_value) -{ - switch (input_value) - { - case VK_ERROR_COMPRESSION_EXHAUSTED_EXT: - return "VK_ERROR_COMPRESSION_EXHAUSTED_EXT"; - case VK_ERROR_DEVICE_LOST: - return "VK_ERROR_DEVICE_LOST"; - case VK_ERROR_EXTENSION_NOT_PRESENT: - return "VK_ERROR_EXTENSION_NOT_PRESENT"; - case VK_ERROR_FEATURE_NOT_PRESENT: - return "VK_ERROR_FEATURE_NOT_PRESENT"; - case VK_ERROR_FORMAT_NOT_SUPPORTED: - return "VK_ERROR_FORMAT_NOT_SUPPORTED"; - case VK_ERROR_FRAGMENTATION: - return "VK_ERROR_FRAGMENTATION"; - case VK_ERROR_FRAGMENTED_POOL: - return "VK_ERROR_FRAGMENTED_POOL"; - case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: - return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"; - case VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR: - return "VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR"; - case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: - return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"; - case VK_ERROR_INCOMPATIBLE_DRIVER: - return "VK_ERROR_INCOMPATIBLE_DRIVER"; - case VK_ERROR_INITIALIZATION_FAILED: - return "VK_ERROR_INITIALIZATION_FAILED"; - case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT: - return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"; - case VK_ERROR_INVALID_EXTERNAL_HANDLE: - return "VK_ERROR_INVALID_EXTERNAL_HANDLE"; - case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS: - return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"; - case VK_ERROR_INVALID_SHADER_NV: - return "VK_ERROR_INVALID_SHADER_NV"; - case VK_ERROR_LAYER_NOT_PRESENT: - return "VK_ERROR_LAYER_NOT_PRESENT"; - case VK_ERROR_MEMORY_MAP_FAILED: - return "VK_ERROR_MEMORY_MAP_FAILED"; - case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: - return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"; - case VK_ERROR_NOT_PERMITTED_KHR: - return "VK_ERROR_NOT_PERMITTED_KHR"; - case VK_ERROR_OUT_OF_DATE_KHR: - return "VK_ERROR_OUT_OF_DATE_KHR"; - case VK_ERROR_OUT_OF_DEVICE_MEMORY: - return "VK_ERROR_OUT_OF_DEVICE_MEMORY"; - case VK_ERROR_OUT_OF_HOST_MEMORY: - return "VK_ERROR_OUT_OF_HOST_MEMORY"; - case VK_ERROR_OUT_OF_POOL_MEMORY: - return "VK_ERROR_OUT_OF_POOL_MEMORY"; - case VK_ERROR_SURFACE_LOST_KHR: - return "VK_ERROR_SURFACE_LOST_KHR"; - case VK_ERROR_TOO_MANY_OBJECTS: - return "VK_ERROR_TOO_MANY_OBJECTS"; - case VK_ERROR_UNKNOWN: - return "VK_ERROR_UNKNOWN"; - case VK_ERROR_VALIDATION_FAILED_EXT: - return "VK_ERROR_VALIDATION_FAILED_EXT"; - case VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR: - return "VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR"; - case VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR: - return "VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR"; - case VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR: - return "VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR"; - case VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR: - return "VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR"; - case VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR: - return "VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR"; - case VK_EVENT_RESET: - return "VK_EVENT_RESET"; - case VK_EVENT_SET: - return "VK_EVENT_SET"; - case VK_INCOMPLETE: - return "VK_INCOMPLETE"; - case VK_NOT_READY: - return "VK_NOT_READY"; - case VK_OPERATION_DEFERRED_KHR: - return "VK_OPERATION_DEFERRED_KHR"; - case VK_OPERATION_NOT_DEFERRED_KHR: - return "VK_OPERATION_NOT_DEFERRED_KHR"; - case VK_PIPELINE_COMPILE_REQUIRED: - return "VK_PIPELINE_COMPILE_REQUIRED"; - case VK_SUBOPTIMAL_KHR: - return "VK_SUBOPTIMAL_KHR"; - case VK_SUCCESS: - return "VK_SUCCESS"; - case VK_THREAD_DONE_KHR: - return "VK_THREAD_DONE_KHR"; - case VK_THREAD_IDLE_KHR: - return "VK_THREAD_IDLE_KHR"; - case VK_TIMEOUT: - return "VK_TIMEOUT"; - default: - return "Unhandled VkResult"; - } -} - -static inline const char* string_VkStructureType(VkStructureType input_value) -{ - switch (input_value) - { - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT"; - case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR: - return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR"; - case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR: - return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"; - case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR: - return "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"; - case VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC: - return "VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC"; - case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID: - return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"; - case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID: - return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"; - case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID: - return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"; - case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: - return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"; - case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_APPLICATION_INFO: - return "VK_STRUCTURE_TYPE_APPLICATION_INFO"; - case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2: - return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"; - case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: - return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"; - case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2: - return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"; - case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: - return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"; - case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: - return "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD"; - case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV: - return "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"; - case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: - return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"; - case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO: - return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"; - case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: - return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"; - case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO: - return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"; - case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: - return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"; - case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: - return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"; - case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO: - return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"; - case VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR: - return "VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR"; - case VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2: - return "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2"; - case VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: - return "VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; - case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA: - return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA"; - case VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_BUFFER_COPY_2: - return "VK_STRUCTURE_TYPE_BUFFER_COPY_2"; - case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO: - return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"; - case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO: - return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"; - case VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2: - return "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2"; - case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: - return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"; - case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2: - return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2"; - case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2: - return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"; - case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: - return "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"; - case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO: - return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"; - case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT: - return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"; - case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV: - return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV"; - case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV: - return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"; - case VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO: - return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO"; - case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO: - return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"; - case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT: - return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"; - case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR: - return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"; - case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR: - return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"; - case VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2: - return "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2"; - case VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2: - return "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2"; - case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM: - return "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"; - case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET: - return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"; - case VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2: - return "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2"; - case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2: - return "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2"; - case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR: - return "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"; - case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT: - return "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT"; - case VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT: - return "VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT"; - case VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT: - return "VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT"; - case VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX: - return "VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"; - case VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX: - return "VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"; - case VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX: - return "VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"; - case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR: - return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"; - case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: - return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"; - case VK_STRUCTURE_TYPE_DEPENDENCY_INFO: - return "VK_STRUCTURE_TYPE_DEPENDENCY_INFO"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"; - case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT: - return "VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT"; - case VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS: - return "VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS"; - case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT: - return "VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT"; - case VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT: - return "VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS: - return "VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS"; - case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: - return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"; - case VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT: - return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT"; - case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2: - return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"; - case VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG: - return "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG"; - case VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG: - return "VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG"; - case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT: - return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"; - case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"; - case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD: - return "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"; - case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"; - case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"; - case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"; - case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT: - return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"; - case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"; - case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"; - case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: - return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT"; - case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: - return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"; - case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO: - return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"; - case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: - return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"; - case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV: - return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"; - case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV: - return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT: - return "VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT"; - case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES: - return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"; - case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES: - return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"; - case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID: - return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"; - case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: - return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"; - case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: - return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"; - case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES: - return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"; - case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR: - return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"; - case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2: - return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"; - case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3: - return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3"; - case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: - return "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"; - case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: - return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"; - case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO: - return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"; - case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO: - return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"; - case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV: - return "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"; - case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV: - return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"; - case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV: - return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"; - case VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV: - return "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"; - case VK_STRUCTURE_TYPE_GEOMETRY_NV: - return "VK_STRUCTURE_TYPE_GEOMETRY_NV"; - case VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV: - return "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"; - case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_HDR_METADATA_EXT: - return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"; - case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_IMAGE_BLIT_2: - return "VK_STRUCTURE_TYPE_IMAGE_BLIT_2"; - case VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_IMAGE_COPY_2: - return "VK_STRUCTURE_TYPE_IMAGE_COPY_2"; - case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: - return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"; - case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2: - return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"; - case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: - return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"; - case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2: - return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2"; - case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2: - return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"; - case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: - return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"; - case VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2: - return "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2"; - case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2: - return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"; - case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM"; - case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: - return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"; - case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR: - return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"; - case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA: - return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA"; - case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR: - return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"; - case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: - return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"; - case VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT: - return "VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT"; - case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR: - return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"; - case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV: - return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"; - case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL: - return "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"; - case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK: - return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"; - case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK: - return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"; - case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE: - return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"; - case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: - return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"; - case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: - return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"; - case VK_STRUCTURE_TYPE_MEMORY_BARRIER: - return "VK_STRUCTURE_TYPE_MEMORY_BARRIER"; - case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2: - return "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2"; - case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: - return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"; - case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: - return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"; - case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: - return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"; - case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR: - return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"; - case VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV: - return "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"; - case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: - return "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"; - case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2: - return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"; - case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA: - return "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"; - case VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT: - return "VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT"; - case VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT: - return "VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT"; - case VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT: - return "VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT"; - case VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT: - return "VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT"; - case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: - return "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX"; - case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV: - return "VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV"; - case VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV: - return "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV"; - case VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV: - return "VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV"; - case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL: - return "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"; - case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR: - return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"; - case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR: - return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"; - case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL: - return "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"; - case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL: - return "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"; - case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR: - return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"; - case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL: - return "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES: - return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES"; - case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: - return "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"; - case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR: - return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"; - case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR: - return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"; - case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR: - return "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"; - case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: - return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP: - return "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"; - case VK_STRUCTURE_TYPE_PRESENT_ID_KHR: - return "VK_STRUCTURE_TYPE_PRESENT_ID_KHR"; - case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR: - return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"; - case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: - return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"; - case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE: - return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"; - case VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO: - return "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO"; - case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: - return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"; - case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO: - return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"; - case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL: - return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"; - case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: - return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"; - case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: - return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"; - case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2: - return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"; - case VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT: - return "VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT"; - case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO: - return "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO"; - case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: - return "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT"; - case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: - return "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"; - case VK_STRUCTURE_TYPE_RENDERING_INFO: - return "VK_STRUCTURE_TYPE_RENDERING_INFO"; - case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: - return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"; - case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO: - return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"; - case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: - return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"; - case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: - return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"; - case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT: - return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT"; - case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: - return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"; - case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: - return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"; - case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT: - return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"; - case VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM: - return "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"; - case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2: - return "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2"; - case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: - return "VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"; - case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO: - return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"; - case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO: - return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"; - case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: - return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"; - case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: - return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"; - case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: - return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"; - case VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX: - return "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"; - case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR: - return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"; - case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR: - return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"; - case VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA: - return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"; - case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO: - return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"; - case VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO: - return "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO"; - case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO: - return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"; - case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: - return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"; - case VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT: - return "VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT"; - case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"; - case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2: - return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"; - case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2: - return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"; - case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP: - return "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"; - case VK_STRUCTURE_TYPE_SUBMIT_INFO: - return "VK_STRUCTURE_TYPE_SUBMIT_INFO"; - case VK_STRUCTURE_TYPE_SUBMIT_INFO_2: - return "VK_STRUCTURE_TYPE_SUBMIT_INFO_2"; - case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO: - return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"; - case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2: - return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"; - case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2: - return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"; - case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: - return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"; - case VK_STRUCTURE_TYPE_SUBPASS_END_INFO: - return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO"; - case VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM: - return "VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM"; - case VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT: - return "VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT"; - case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI: - return "VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI"; - case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT: - return "VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT: - return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR: - return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"; - case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: - return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV: - return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV"; - case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR: - return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"; - case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT: - return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT: - return "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT: - return "VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT: - return "VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT"; - case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA: - return "VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA"; - case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: - return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"; - case VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM: - return "VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM"; - case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: - return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"; - case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"; - case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: - return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"; - case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: - return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"; - case VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT: - return "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"; - case VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT: - return "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"; - case VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - case VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN: - return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"; - case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: - return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"; - case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: - return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"; - case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET: - return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"; - case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: - return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"; - case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: - return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"; - case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK: - return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK"; - case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"; - case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR: - return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"; - default: - return "Unhandled VkStructureType"; - } -} - -static inline const char* string_VkPipelineCacheHeaderVersion(VkPipelineCacheHeaderVersion input_value) -{ - switch (input_value) - { - case VK_PIPELINE_CACHE_HEADER_VERSION_ONE: - return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"; - default: - return "Unhandled VkPipelineCacheHeaderVersion"; - } -} - -static inline const char* string_VkAccessFlagBits(VkAccessFlagBits input_value) -{ - switch (input_value) - { - case VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR: - return "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"; - case VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR: - return "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"; - case VK_ACCESS_COLOR_ATTACHMENT_READ_BIT: - return "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"; - case VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT: - return "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"; - case VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV: - return "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"; - case VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV: - return "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"; - case VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT: - return "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"; - case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT: - return "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"; - case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT: - return "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"; - case VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR: - return "VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"; - case VK_ACCESS_HOST_READ_BIT: - return "VK_ACCESS_HOST_READ_BIT"; - case VK_ACCESS_HOST_WRITE_BIT: - return "VK_ACCESS_HOST_WRITE_BIT"; - case VK_ACCESS_INDEX_READ_BIT: - return "VK_ACCESS_INDEX_READ_BIT"; - case VK_ACCESS_INDIRECT_COMMAND_READ_BIT: - return "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"; - case VK_ACCESS_INPUT_ATTACHMENT_READ_BIT: - return "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"; - case VK_ACCESS_MEMORY_READ_BIT: - return "VK_ACCESS_MEMORY_READ_BIT"; - case VK_ACCESS_MEMORY_WRITE_BIT: - return "VK_ACCESS_MEMORY_WRITE_BIT"; - case VK_ACCESS_NONE: - return "VK_ACCESS_NONE"; - case VK_ACCESS_SHADER_READ_BIT: - return "VK_ACCESS_SHADER_READ_BIT"; - case VK_ACCESS_SHADER_WRITE_BIT: - return "VK_ACCESS_SHADER_WRITE_BIT"; - case VK_ACCESS_TRANSFER_READ_BIT: - return "VK_ACCESS_TRANSFER_READ_BIT"; - case VK_ACCESS_TRANSFER_WRITE_BIT: - return "VK_ACCESS_TRANSFER_WRITE_BIT"; - case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT: - return "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"; - case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT: - return "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"; - case VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT: - return "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"; - case VK_ACCESS_UNIFORM_READ_BIT: - return "VK_ACCESS_UNIFORM_READ_BIT"; - case VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT: - return "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"; - default: - return "Unhandled VkAccessFlagBits"; - } -} - -static inline std::string string_VkAccessFlags(VkAccessFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkAccessFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkAccessFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkImageLayout(VkImageLayout input_value) -{ - switch (input_value) - { - case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: - return "VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT"; - case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: - return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"; - case VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR: - return "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"; - case VK_IMAGE_LAYOUT_GENERAL: - return "VK_IMAGE_LAYOUT_GENERAL"; - case VK_IMAGE_LAYOUT_PREINITIALIZED: - return "VK_IMAGE_LAYOUT_PREINITIALIZED"; - case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: - return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"; - case VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: - return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"; - case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: - return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"; - case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: - return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"; - case VK_IMAGE_LAYOUT_UNDEFINED: - return "VK_IMAGE_LAYOUT_UNDEFINED"; - case VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR: - return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR"; - case VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR: - return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR"; - case VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR: - return "VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR: - return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR: - return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR: - return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkImageLayout"; - } -} - -static inline const char* string_VkImageAspectFlagBits(VkImageAspectFlagBits input_value) -{ - switch (input_value) - { - case VK_IMAGE_ASPECT_COLOR_BIT: - return "VK_IMAGE_ASPECT_COLOR_BIT"; - case VK_IMAGE_ASPECT_DEPTH_BIT: - return "VK_IMAGE_ASPECT_DEPTH_BIT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"; - case VK_IMAGE_ASPECT_METADATA_BIT: - return "VK_IMAGE_ASPECT_METADATA_BIT"; - case VK_IMAGE_ASPECT_NONE: - return "VK_IMAGE_ASPECT_NONE"; - case VK_IMAGE_ASPECT_PLANE_0_BIT: - return "VK_IMAGE_ASPECT_PLANE_0_BIT"; - case VK_IMAGE_ASPECT_PLANE_1_BIT: - return "VK_IMAGE_ASPECT_PLANE_1_BIT"; - case VK_IMAGE_ASPECT_PLANE_2_BIT: - return "VK_IMAGE_ASPECT_PLANE_2_BIT"; - case VK_IMAGE_ASPECT_STENCIL_BIT: - return "VK_IMAGE_ASPECT_STENCIL_BIT"; - default: - return "Unhandled VkImageAspectFlagBits"; - } -} - -static inline std::string string_VkImageAspectFlags(VkImageAspectFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageAspectFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageAspectFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkObjectType(VkObjectType input_value) -{ - switch (input_value) - { - case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR: - return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"; - case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV: - return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"; - case VK_OBJECT_TYPE_BUFFER: - return "VK_OBJECT_TYPE_BUFFER"; - case VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA: - return "VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA"; - case VK_OBJECT_TYPE_BUFFER_VIEW: - return "VK_OBJECT_TYPE_BUFFER_VIEW"; - case VK_OBJECT_TYPE_COMMAND_BUFFER: - return "VK_OBJECT_TYPE_COMMAND_BUFFER"; - case VK_OBJECT_TYPE_COMMAND_POOL: - return "VK_OBJECT_TYPE_COMMAND_POOL"; - case VK_OBJECT_TYPE_CU_FUNCTION_NVX: - return "VK_OBJECT_TYPE_CU_FUNCTION_NVX"; - case VK_OBJECT_TYPE_CU_MODULE_NVX: - return "VK_OBJECT_TYPE_CU_MODULE_NVX"; - case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT: - return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"; - case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT: - return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"; - case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR: - return "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"; - case VK_OBJECT_TYPE_DESCRIPTOR_POOL: - return "VK_OBJECT_TYPE_DESCRIPTOR_POOL"; - case VK_OBJECT_TYPE_DESCRIPTOR_SET: - return "VK_OBJECT_TYPE_DESCRIPTOR_SET"; - case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT: - return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"; - case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE: - return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"; - case VK_OBJECT_TYPE_DEVICE: - return "VK_OBJECT_TYPE_DEVICE"; - case VK_OBJECT_TYPE_DEVICE_MEMORY: - return "VK_OBJECT_TYPE_DEVICE_MEMORY"; - case VK_OBJECT_TYPE_DISPLAY_KHR: - return "VK_OBJECT_TYPE_DISPLAY_KHR"; - case VK_OBJECT_TYPE_DISPLAY_MODE_KHR: - return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"; - case VK_OBJECT_TYPE_EVENT: - return "VK_OBJECT_TYPE_EVENT"; - case VK_OBJECT_TYPE_FENCE: - return "VK_OBJECT_TYPE_FENCE"; - case VK_OBJECT_TYPE_FRAMEBUFFER: - return "VK_OBJECT_TYPE_FRAMEBUFFER"; - case VK_OBJECT_TYPE_IMAGE: - return "VK_OBJECT_TYPE_IMAGE"; - case VK_OBJECT_TYPE_IMAGE_VIEW: - return "VK_OBJECT_TYPE_IMAGE_VIEW"; - case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV: - return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"; - case VK_OBJECT_TYPE_INSTANCE: - return "VK_OBJECT_TYPE_INSTANCE"; - case VK_OBJECT_TYPE_MICROMAP_EXT: - return "VK_OBJECT_TYPE_MICROMAP_EXT"; - case VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV: - return "VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV"; - case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL: - return "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"; - case VK_OBJECT_TYPE_PHYSICAL_DEVICE: - return "VK_OBJECT_TYPE_PHYSICAL_DEVICE"; - case VK_OBJECT_TYPE_PIPELINE: - return "VK_OBJECT_TYPE_PIPELINE"; - case VK_OBJECT_TYPE_PIPELINE_CACHE: - return "VK_OBJECT_TYPE_PIPELINE_CACHE"; - case VK_OBJECT_TYPE_PIPELINE_LAYOUT: - return "VK_OBJECT_TYPE_PIPELINE_LAYOUT"; - case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT: - return "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT"; - case VK_OBJECT_TYPE_QUERY_POOL: - return "VK_OBJECT_TYPE_QUERY_POOL"; - case VK_OBJECT_TYPE_QUEUE: - return "VK_OBJECT_TYPE_QUEUE"; - case VK_OBJECT_TYPE_RENDER_PASS: - return "VK_OBJECT_TYPE_RENDER_PASS"; - case VK_OBJECT_TYPE_SAMPLER: - return "VK_OBJECT_TYPE_SAMPLER"; - case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION: - return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"; - case VK_OBJECT_TYPE_SEMAPHORE: - return "VK_OBJECT_TYPE_SEMAPHORE"; - case VK_OBJECT_TYPE_SHADER_MODULE: - return "VK_OBJECT_TYPE_SHADER_MODULE"; - case VK_OBJECT_TYPE_SURFACE_KHR: - return "VK_OBJECT_TYPE_SURFACE_KHR"; - case VK_OBJECT_TYPE_SWAPCHAIN_KHR: - return "VK_OBJECT_TYPE_SWAPCHAIN_KHR"; - case VK_OBJECT_TYPE_UNKNOWN: - return "VK_OBJECT_TYPE_UNKNOWN"; - case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT: - return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"; - case VK_OBJECT_TYPE_VIDEO_SESSION_KHR: - return "VK_OBJECT_TYPE_VIDEO_SESSION_KHR"; - case VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR: - return "VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR"; - default: - return "Unhandled VkObjectType"; - } -} - -static inline const char* string_VkVendorId(VkVendorId input_value) -{ - switch (input_value) - { - case VK_VENDOR_ID_CODEPLAY: - return "VK_VENDOR_ID_CODEPLAY"; - case VK_VENDOR_ID_KAZAN: - return "VK_VENDOR_ID_KAZAN"; - case VK_VENDOR_ID_MESA: - return "VK_VENDOR_ID_MESA"; - case VK_VENDOR_ID_POCL: - return "VK_VENDOR_ID_POCL"; - case VK_VENDOR_ID_VIV: - return "VK_VENDOR_ID_VIV"; - case VK_VENDOR_ID_VSI: - return "VK_VENDOR_ID_VSI"; - default: - return "Unhandled VkVendorId"; - } -} - -static inline const char* string_VkSystemAllocationScope(VkSystemAllocationScope input_value) -{ - switch (input_value) - { - case VK_SYSTEM_ALLOCATION_SCOPE_CACHE: - return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"; - case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND: - return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"; - case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE: - return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"; - case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE: - return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"; - case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT: - return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"; - default: - return "Unhandled VkSystemAllocationScope"; - } -} - -static inline const char* string_VkInternalAllocationType(VkInternalAllocationType input_value) -{ - switch (input_value) - { - case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE: - return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"; - default: - return "Unhandled VkInternalAllocationType"; - } -} - -static inline const char* string_VkFormat(VkFormat input_value) -{ - switch (input_value) - { - case VK_FORMAT_A1R5G5B5_UNORM_PACK16: - return "VK_FORMAT_A1R5G5B5_UNORM_PACK16"; - case VK_FORMAT_A2B10G10R10_SINT_PACK32: - return "VK_FORMAT_A2B10G10R10_SINT_PACK32"; - case VK_FORMAT_A2B10G10R10_SNORM_PACK32: - return "VK_FORMAT_A2B10G10R10_SNORM_PACK32"; - case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: - return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"; - case VK_FORMAT_A2B10G10R10_UINT_PACK32: - return "VK_FORMAT_A2B10G10R10_UINT_PACK32"; - case VK_FORMAT_A2B10G10R10_UNORM_PACK32: - return "VK_FORMAT_A2B10G10R10_UNORM_PACK32"; - case VK_FORMAT_A2B10G10R10_USCALED_PACK32: - return "VK_FORMAT_A2B10G10R10_USCALED_PACK32"; - case VK_FORMAT_A2R10G10B10_SINT_PACK32: - return "VK_FORMAT_A2R10G10B10_SINT_PACK32"; - case VK_FORMAT_A2R10G10B10_SNORM_PACK32: - return "VK_FORMAT_A2R10G10B10_SNORM_PACK32"; - case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: - return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"; - case VK_FORMAT_A2R10G10B10_UINT_PACK32: - return "VK_FORMAT_A2R10G10B10_UINT_PACK32"; - case VK_FORMAT_A2R10G10B10_UNORM_PACK32: - return "VK_FORMAT_A2R10G10B10_UNORM_PACK32"; - case VK_FORMAT_A2R10G10B10_USCALED_PACK32: - return "VK_FORMAT_A2R10G10B10_USCALED_PACK32"; - case VK_FORMAT_A4B4G4R4_UNORM_PACK16: - return "VK_FORMAT_A4B4G4R4_UNORM_PACK16"; - case VK_FORMAT_A4R4G4B4_UNORM_PACK16: - return "VK_FORMAT_A4R4G4B4_UNORM_PACK16"; - case VK_FORMAT_A8B8G8R8_SINT_PACK32: - return "VK_FORMAT_A8B8G8R8_SINT_PACK32"; - case VK_FORMAT_A8B8G8R8_SNORM_PACK32: - return "VK_FORMAT_A8B8G8R8_SNORM_PACK32"; - case VK_FORMAT_A8B8G8R8_SRGB_PACK32: - return "VK_FORMAT_A8B8G8R8_SRGB_PACK32"; - case VK_FORMAT_A8B8G8R8_SSCALED_PACK32: - return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"; - case VK_FORMAT_A8B8G8R8_UINT_PACK32: - return "VK_FORMAT_A8B8G8R8_UINT_PACK32"; - case VK_FORMAT_A8B8G8R8_UNORM_PACK32: - return "VK_FORMAT_A8B8G8R8_UNORM_PACK32"; - case VK_FORMAT_A8B8G8R8_USCALED_PACK32: - return "VK_FORMAT_A8B8G8R8_USCALED_PACK32"; - case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"; - case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"; - case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"; - case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"; - case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: - return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"; - case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: - return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"; - case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: - return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"; - case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: - return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"; - case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: - return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"; - case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: - return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"; - case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: - return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"; - case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: - return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"; - case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: - return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"; - case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: - return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"; - case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: - return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"; - case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: - return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"; - case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: - return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"; - case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: - return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"; - case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: - return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"; - case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: - return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK"; - case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: - return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK"; - case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: - return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK"; - case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK: - return "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK"; - case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: - return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK"; - case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: - return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK"; - case VK_FORMAT_B10G11R11_UFLOAT_PACK32: - return "VK_FORMAT_B10G11R11_UFLOAT_PACK32"; - case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16: - return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"; - case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16: - return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"; - case VK_FORMAT_B16G16R16G16_422_UNORM: - return "VK_FORMAT_B16G16R16G16_422_UNORM"; - case VK_FORMAT_B4G4R4A4_UNORM_PACK16: - return "VK_FORMAT_B4G4R4A4_UNORM_PACK16"; - case VK_FORMAT_B5G5R5A1_UNORM_PACK16: - return "VK_FORMAT_B5G5R5A1_UNORM_PACK16"; - case VK_FORMAT_B5G6R5_UNORM_PACK16: - return "VK_FORMAT_B5G6R5_UNORM_PACK16"; - case VK_FORMAT_B8G8R8A8_SINT: - return "VK_FORMAT_B8G8R8A8_SINT"; - case VK_FORMAT_B8G8R8A8_SNORM: - return "VK_FORMAT_B8G8R8A8_SNORM"; - case VK_FORMAT_B8G8R8A8_SRGB: - return "VK_FORMAT_B8G8R8A8_SRGB"; - case VK_FORMAT_B8G8R8A8_SSCALED: - return "VK_FORMAT_B8G8R8A8_SSCALED"; - case VK_FORMAT_B8G8R8A8_UINT: - return "VK_FORMAT_B8G8R8A8_UINT"; - case VK_FORMAT_B8G8R8A8_UNORM: - return "VK_FORMAT_B8G8R8A8_UNORM"; - case VK_FORMAT_B8G8R8A8_USCALED: - return "VK_FORMAT_B8G8R8A8_USCALED"; - case VK_FORMAT_B8G8R8G8_422_UNORM: - return "VK_FORMAT_B8G8R8G8_422_UNORM"; - case VK_FORMAT_B8G8R8_SINT: - return "VK_FORMAT_B8G8R8_SINT"; - case VK_FORMAT_B8G8R8_SNORM: - return "VK_FORMAT_B8G8R8_SNORM"; - case VK_FORMAT_B8G8R8_SRGB: - return "VK_FORMAT_B8G8R8_SRGB"; - case VK_FORMAT_B8G8R8_SSCALED: - return "VK_FORMAT_B8G8R8_SSCALED"; - case VK_FORMAT_B8G8R8_UINT: - return "VK_FORMAT_B8G8R8_UINT"; - case VK_FORMAT_B8G8R8_UNORM: - return "VK_FORMAT_B8G8R8_UNORM"; - case VK_FORMAT_B8G8R8_USCALED: - return "VK_FORMAT_B8G8R8_USCALED"; - case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: - return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK"; - case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: - return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK"; - case VK_FORMAT_BC1_RGB_SRGB_BLOCK: - return "VK_FORMAT_BC1_RGB_SRGB_BLOCK"; - case VK_FORMAT_BC1_RGB_UNORM_BLOCK: - return "VK_FORMAT_BC1_RGB_UNORM_BLOCK"; - case VK_FORMAT_BC2_SRGB_BLOCK: - return "VK_FORMAT_BC2_SRGB_BLOCK"; - case VK_FORMAT_BC2_UNORM_BLOCK: - return "VK_FORMAT_BC2_UNORM_BLOCK"; - case VK_FORMAT_BC3_SRGB_BLOCK: - return "VK_FORMAT_BC3_SRGB_BLOCK"; - case VK_FORMAT_BC3_UNORM_BLOCK: - return "VK_FORMAT_BC3_UNORM_BLOCK"; - case VK_FORMAT_BC4_SNORM_BLOCK: - return "VK_FORMAT_BC4_SNORM_BLOCK"; - case VK_FORMAT_BC4_UNORM_BLOCK: - return "VK_FORMAT_BC4_UNORM_BLOCK"; - case VK_FORMAT_BC5_SNORM_BLOCK: - return "VK_FORMAT_BC5_SNORM_BLOCK"; - case VK_FORMAT_BC5_UNORM_BLOCK: - return "VK_FORMAT_BC5_UNORM_BLOCK"; - case VK_FORMAT_BC6H_SFLOAT_BLOCK: - return "VK_FORMAT_BC6H_SFLOAT_BLOCK"; - case VK_FORMAT_BC6H_UFLOAT_BLOCK: - return "VK_FORMAT_BC6H_UFLOAT_BLOCK"; - case VK_FORMAT_BC7_SRGB_BLOCK: - return "VK_FORMAT_BC7_SRGB_BLOCK"; - case VK_FORMAT_BC7_UNORM_BLOCK: - return "VK_FORMAT_BC7_UNORM_BLOCK"; - case VK_FORMAT_D16_UNORM: - return "VK_FORMAT_D16_UNORM"; - case VK_FORMAT_D16_UNORM_S8_UINT: - return "VK_FORMAT_D16_UNORM_S8_UINT"; - case VK_FORMAT_D24_UNORM_S8_UINT: - return "VK_FORMAT_D24_UNORM_S8_UINT"; - case VK_FORMAT_D32_SFLOAT: - return "VK_FORMAT_D32_SFLOAT"; - case VK_FORMAT_D32_SFLOAT_S8_UINT: - return "VK_FORMAT_D32_SFLOAT_S8_UINT"; - case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: - return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"; - case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: - return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK"; - case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: - return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK"; - case VK_FORMAT_EAC_R11_SNORM_BLOCK: - return "VK_FORMAT_EAC_R11_SNORM_BLOCK"; - case VK_FORMAT_EAC_R11_UNORM_BLOCK: - return "VK_FORMAT_EAC_R11_UNORM_BLOCK"; - case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: - return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"; - case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: - return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"; - case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: - return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"; - case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: - return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"; - case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: - return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"; - case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: - return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"; - case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16: - return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"; - case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16: - return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"; - case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16: - return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"; - case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16: - return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16"; - case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16: - return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"; - case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16: - return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"; - case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16: - return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"; - case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16: - return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"; - case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16: - return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"; - case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16: - return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"; - case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16: - return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16"; - case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16: - return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"; - case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16: - return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"; - case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16: - return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"; - case VK_FORMAT_G16B16G16R16_422_UNORM: - return "VK_FORMAT_G16B16G16R16_422_UNORM"; - case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM: - return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"; - case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM: - return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"; - case VK_FORMAT_G16_B16R16_2PLANE_444_UNORM: - return "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM"; - case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM: - return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"; - case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM: - return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"; - case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM: - return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"; - case VK_FORMAT_G8B8G8R8_422_UNORM: - return "VK_FORMAT_G8B8G8R8_422_UNORM"; - case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: - return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"; - case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM: - return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"; - case VK_FORMAT_G8_B8R8_2PLANE_444_UNORM: - return "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM"; - case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM: - return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"; - case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM: - return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"; - case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM: - return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"; - case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG: - return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"; - case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG: - return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"; - case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG: - return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"; - case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG: - return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"; - case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG: - return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"; - case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG: - return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"; - case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG: - return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"; - case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG: - return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"; - case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16: - return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"; - case VK_FORMAT_R10X6G10X6_UNORM_2PACK16: - return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16"; - case VK_FORMAT_R10X6_UNORM_PACK16: - return "VK_FORMAT_R10X6_UNORM_PACK16"; - case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16: - return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"; - case VK_FORMAT_R12X4G12X4_UNORM_2PACK16: - return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16"; - case VK_FORMAT_R12X4_UNORM_PACK16: - return "VK_FORMAT_R12X4_UNORM_PACK16"; - case VK_FORMAT_R16G16B16A16_SFLOAT: - return "VK_FORMAT_R16G16B16A16_SFLOAT"; - case VK_FORMAT_R16G16B16A16_SINT: - return "VK_FORMAT_R16G16B16A16_SINT"; - case VK_FORMAT_R16G16B16A16_SNORM: - return "VK_FORMAT_R16G16B16A16_SNORM"; - case VK_FORMAT_R16G16B16A16_SSCALED: - return "VK_FORMAT_R16G16B16A16_SSCALED"; - case VK_FORMAT_R16G16B16A16_UINT: - return "VK_FORMAT_R16G16B16A16_UINT"; - case VK_FORMAT_R16G16B16A16_UNORM: - return "VK_FORMAT_R16G16B16A16_UNORM"; - case VK_FORMAT_R16G16B16A16_USCALED: - return "VK_FORMAT_R16G16B16A16_USCALED"; - case VK_FORMAT_R16G16B16_SFLOAT: - return "VK_FORMAT_R16G16B16_SFLOAT"; - case VK_FORMAT_R16G16B16_SINT: - return "VK_FORMAT_R16G16B16_SINT"; - case VK_FORMAT_R16G16B16_SNORM: - return "VK_FORMAT_R16G16B16_SNORM"; - case VK_FORMAT_R16G16B16_SSCALED: - return "VK_FORMAT_R16G16B16_SSCALED"; - case VK_FORMAT_R16G16B16_UINT: - return "VK_FORMAT_R16G16B16_UINT"; - case VK_FORMAT_R16G16B16_UNORM: - return "VK_FORMAT_R16G16B16_UNORM"; - case VK_FORMAT_R16G16B16_USCALED: - return "VK_FORMAT_R16G16B16_USCALED"; - case VK_FORMAT_R16G16_S10_5_NV: - return "VK_FORMAT_R16G16_S10_5_NV"; - case VK_FORMAT_R16G16_SFLOAT: - return "VK_FORMAT_R16G16_SFLOAT"; - case VK_FORMAT_R16G16_SINT: - return "VK_FORMAT_R16G16_SINT"; - case VK_FORMAT_R16G16_SNORM: - return "VK_FORMAT_R16G16_SNORM"; - case VK_FORMAT_R16G16_SSCALED: - return "VK_FORMAT_R16G16_SSCALED"; - case VK_FORMAT_R16G16_UINT: - return "VK_FORMAT_R16G16_UINT"; - case VK_FORMAT_R16G16_UNORM: - return "VK_FORMAT_R16G16_UNORM"; - case VK_FORMAT_R16G16_USCALED: - return "VK_FORMAT_R16G16_USCALED"; - case VK_FORMAT_R16_SFLOAT: - return "VK_FORMAT_R16_SFLOAT"; - case VK_FORMAT_R16_SINT: - return "VK_FORMAT_R16_SINT"; - case VK_FORMAT_R16_SNORM: - return "VK_FORMAT_R16_SNORM"; - case VK_FORMAT_R16_SSCALED: - return "VK_FORMAT_R16_SSCALED"; - case VK_FORMAT_R16_UINT: - return "VK_FORMAT_R16_UINT"; - case VK_FORMAT_R16_UNORM: - return "VK_FORMAT_R16_UNORM"; - case VK_FORMAT_R16_USCALED: - return "VK_FORMAT_R16_USCALED"; - case VK_FORMAT_R32G32B32A32_SFLOAT: - return "VK_FORMAT_R32G32B32A32_SFLOAT"; - case VK_FORMAT_R32G32B32A32_SINT: - return "VK_FORMAT_R32G32B32A32_SINT"; - case VK_FORMAT_R32G32B32A32_UINT: - return "VK_FORMAT_R32G32B32A32_UINT"; - case VK_FORMAT_R32G32B32_SFLOAT: - return "VK_FORMAT_R32G32B32_SFLOAT"; - case VK_FORMAT_R32G32B32_SINT: - return "VK_FORMAT_R32G32B32_SINT"; - case VK_FORMAT_R32G32B32_UINT: - return "VK_FORMAT_R32G32B32_UINT"; - case VK_FORMAT_R32G32_SFLOAT: - return "VK_FORMAT_R32G32_SFLOAT"; - case VK_FORMAT_R32G32_SINT: - return "VK_FORMAT_R32G32_SINT"; - case VK_FORMAT_R32G32_UINT: - return "VK_FORMAT_R32G32_UINT"; - case VK_FORMAT_R32_SFLOAT: - return "VK_FORMAT_R32_SFLOAT"; - case VK_FORMAT_R32_SINT: - return "VK_FORMAT_R32_SINT"; - case VK_FORMAT_R32_UINT: - return "VK_FORMAT_R32_UINT"; - case VK_FORMAT_R4G4B4A4_UNORM_PACK16: - return "VK_FORMAT_R4G4B4A4_UNORM_PACK16"; - case VK_FORMAT_R4G4_UNORM_PACK8: - return "VK_FORMAT_R4G4_UNORM_PACK8"; - case VK_FORMAT_R5G5B5A1_UNORM_PACK16: - return "VK_FORMAT_R5G5B5A1_UNORM_PACK16"; - case VK_FORMAT_R5G6B5_UNORM_PACK16: - return "VK_FORMAT_R5G6B5_UNORM_PACK16"; - case VK_FORMAT_R64G64B64A64_SFLOAT: - return "VK_FORMAT_R64G64B64A64_SFLOAT"; - case VK_FORMAT_R64G64B64A64_SINT: - return "VK_FORMAT_R64G64B64A64_SINT"; - case VK_FORMAT_R64G64B64A64_UINT: - return "VK_FORMAT_R64G64B64A64_UINT"; - case VK_FORMAT_R64G64B64_SFLOAT: - return "VK_FORMAT_R64G64B64_SFLOAT"; - case VK_FORMAT_R64G64B64_SINT: - return "VK_FORMAT_R64G64B64_SINT"; - case VK_FORMAT_R64G64B64_UINT: - return "VK_FORMAT_R64G64B64_UINT"; - case VK_FORMAT_R64G64_SFLOAT: - return "VK_FORMAT_R64G64_SFLOAT"; - case VK_FORMAT_R64G64_SINT: - return "VK_FORMAT_R64G64_SINT"; - case VK_FORMAT_R64G64_UINT: - return "VK_FORMAT_R64G64_UINT"; - case VK_FORMAT_R64_SFLOAT: - return "VK_FORMAT_R64_SFLOAT"; - case VK_FORMAT_R64_SINT: - return "VK_FORMAT_R64_SINT"; - case VK_FORMAT_R64_UINT: - return "VK_FORMAT_R64_UINT"; - case VK_FORMAT_R8G8B8A8_SINT: - return "VK_FORMAT_R8G8B8A8_SINT"; - case VK_FORMAT_R8G8B8A8_SNORM: - return "VK_FORMAT_R8G8B8A8_SNORM"; - case VK_FORMAT_R8G8B8A8_SRGB: - return "VK_FORMAT_R8G8B8A8_SRGB"; - case VK_FORMAT_R8G8B8A8_SSCALED: - return "VK_FORMAT_R8G8B8A8_SSCALED"; - case VK_FORMAT_R8G8B8A8_UINT: - return "VK_FORMAT_R8G8B8A8_UINT"; - case VK_FORMAT_R8G8B8A8_UNORM: - return "VK_FORMAT_R8G8B8A8_UNORM"; - case VK_FORMAT_R8G8B8A8_USCALED: - return "VK_FORMAT_R8G8B8A8_USCALED"; - case VK_FORMAT_R8G8B8_SINT: - return "VK_FORMAT_R8G8B8_SINT"; - case VK_FORMAT_R8G8B8_SNORM: - return "VK_FORMAT_R8G8B8_SNORM"; - case VK_FORMAT_R8G8B8_SRGB: - return "VK_FORMAT_R8G8B8_SRGB"; - case VK_FORMAT_R8G8B8_SSCALED: - return "VK_FORMAT_R8G8B8_SSCALED"; - case VK_FORMAT_R8G8B8_UINT: - return "VK_FORMAT_R8G8B8_UINT"; - case VK_FORMAT_R8G8B8_UNORM: - return "VK_FORMAT_R8G8B8_UNORM"; - case VK_FORMAT_R8G8B8_USCALED: - return "VK_FORMAT_R8G8B8_USCALED"; - case VK_FORMAT_R8G8_SINT: - return "VK_FORMAT_R8G8_SINT"; - case VK_FORMAT_R8G8_SNORM: - return "VK_FORMAT_R8G8_SNORM"; - case VK_FORMAT_R8G8_SRGB: - return "VK_FORMAT_R8G8_SRGB"; - case VK_FORMAT_R8G8_SSCALED: - return "VK_FORMAT_R8G8_SSCALED"; - case VK_FORMAT_R8G8_UINT: - return "VK_FORMAT_R8G8_UINT"; - case VK_FORMAT_R8G8_UNORM: - return "VK_FORMAT_R8G8_UNORM"; - case VK_FORMAT_R8G8_USCALED: - return "VK_FORMAT_R8G8_USCALED"; - case VK_FORMAT_R8_SINT: - return "VK_FORMAT_R8_SINT"; - case VK_FORMAT_R8_SNORM: - return "VK_FORMAT_R8_SNORM"; - case VK_FORMAT_R8_SRGB: - return "VK_FORMAT_R8_SRGB"; - case VK_FORMAT_R8_SSCALED: - return "VK_FORMAT_R8_SSCALED"; - case VK_FORMAT_R8_UINT: - return "VK_FORMAT_R8_UINT"; - case VK_FORMAT_R8_UNORM: - return "VK_FORMAT_R8_UNORM"; - case VK_FORMAT_R8_USCALED: - return "VK_FORMAT_R8_USCALED"; - case VK_FORMAT_S8_UINT: - return "VK_FORMAT_S8_UINT"; - case VK_FORMAT_UNDEFINED: - return "VK_FORMAT_UNDEFINED"; - case VK_FORMAT_X8_D24_UNORM_PACK32: - return "VK_FORMAT_X8_D24_UNORM_PACK32"; - default: - return "Unhandled VkFormat"; - } -} - -static inline const char* string_VkFormatFeatureFlagBits(VkFormatFeatureFlagBits input_value) -{ - switch (input_value) - { - case VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR: - return "VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"; - case VK_FORMAT_FEATURE_BLIT_DST_BIT: - return "VK_FORMAT_FEATURE_BLIT_DST_BIT"; - case VK_FORMAT_FEATURE_BLIT_SRC_BIT: - return "VK_FORMAT_FEATURE_BLIT_SRC_BIT"; - case VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT: - return "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"; - case VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT: - return "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"; - case VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT: - return "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"; - case VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT: - return "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"; - case VK_FORMAT_FEATURE_DISJOINT_BIT: - return "VK_FORMAT_FEATURE_DISJOINT_BIT"; - case VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT: - return "VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"; - case VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT: - return "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"; - case VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT: - return "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"; - case VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT: - return "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"; - case VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT: - return "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"; - case VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT: - return "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"; - case VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT: - return "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"; - case VK_FORMAT_FEATURE_TRANSFER_DST_BIT: - return "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"; - case VK_FORMAT_FEATURE_TRANSFER_SRC_BIT: - return "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"; - case VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT: - return "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"; - case VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT: - return "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"; - case VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR: - return "VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR"; - case VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR: - return "VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR: - return "VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR: - return "VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkFormatFeatureFlagBits"; - } -} - -static inline std::string string_VkFormatFeatureFlags(VkFormatFeatureFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFormatFeatureFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFormatFeatureFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkImageCreateFlagBits(VkImageCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT: - return "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"; - case VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT: - return "VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT"; - case VK_IMAGE_CREATE_ALIAS_BIT: - return "VK_IMAGE_CREATE_ALIAS_BIT"; - case VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT: - return "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"; - case VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV: - return "VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"; - case VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT: - return "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"; - case VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT: - return "VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"; - case VK_IMAGE_CREATE_DISJOINT_BIT: - return "VK_IMAGE_CREATE_DISJOINT_BIT"; - case VK_IMAGE_CREATE_EXTENDED_USAGE_BIT: - return "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"; - case VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM: - return "VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM"; - case VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT: - return "VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT"; - case VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT: - return "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"; - case VK_IMAGE_CREATE_PROTECTED_BIT: - return "VK_IMAGE_CREATE_PROTECTED_BIT"; - case VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT: - return "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"; - case VK_IMAGE_CREATE_SPARSE_ALIASED_BIT: - return "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"; - case VK_IMAGE_CREATE_SPARSE_BINDING_BIT: - return "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"; - case VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT: - return "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"; - case VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT: - return "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"; - case VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT: - return "VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"; - default: - return "Unhandled VkImageCreateFlagBits"; - } -} - -static inline std::string string_VkImageCreateFlags(VkImageCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSampleCountFlagBits(VkSampleCountFlagBits input_value) -{ - switch (input_value) - { - case VK_SAMPLE_COUNT_16_BIT: - return "VK_SAMPLE_COUNT_16_BIT"; - case VK_SAMPLE_COUNT_1_BIT: - return "VK_SAMPLE_COUNT_1_BIT"; - case VK_SAMPLE_COUNT_2_BIT: - return "VK_SAMPLE_COUNT_2_BIT"; - case VK_SAMPLE_COUNT_32_BIT: - return "VK_SAMPLE_COUNT_32_BIT"; - case VK_SAMPLE_COUNT_4_BIT: - return "VK_SAMPLE_COUNT_4_BIT"; - case VK_SAMPLE_COUNT_64_BIT: - return "VK_SAMPLE_COUNT_64_BIT"; - case VK_SAMPLE_COUNT_8_BIT: - return "VK_SAMPLE_COUNT_8_BIT"; - default: - return "Unhandled VkSampleCountFlagBits"; - } -} - -static inline std::string string_VkSampleCountFlags(VkSampleCountFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSampleCountFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSampleCountFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkImageTiling(VkImageTiling input_value) -{ - switch (input_value) - { - case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT: - return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"; - case VK_IMAGE_TILING_LINEAR: - return "VK_IMAGE_TILING_LINEAR"; - case VK_IMAGE_TILING_OPTIMAL: - return "VK_IMAGE_TILING_OPTIMAL"; - default: - return "Unhandled VkImageTiling"; - } -} - -static inline const char* string_VkImageType(VkImageType input_value) -{ - switch (input_value) - { - case VK_IMAGE_TYPE_1D: - return "VK_IMAGE_TYPE_1D"; - case VK_IMAGE_TYPE_2D: - return "VK_IMAGE_TYPE_2D"; - case VK_IMAGE_TYPE_3D: - return "VK_IMAGE_TYPE_3D"; - default: - return "Unhandled VkImageType"; - } -} - -static inline const char* string_VkImageUsageFlagBits(VkImageUsageFlagBits input_value) -{ - switch (input_value) - { - case VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT: - return "VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"; - case VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"; - case VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"; - case VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT: - return "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"; - case VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"; - case VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI: - return "VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI"; - case VK_IMAGE_USAGE_SAMPLED_BIT: - return "VK_IMAGE_USAGE_SAMPLED_BIT"; - case VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM: - return "VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM"; - case VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM: - return "VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM"; - case VK_IMAGE_USAGE_STORAGE_BIT: - return "VK_IMAGE_USAGE_STORAGE_BIT"; - case VK_IMAGE_USAGE_TRANSFER_DST_BIT: - return "VK_IMAGE_USAGE_TRANSFER_DST_BIT"; - case VK_IMAGE_USAGE_TRANSFER_SRC_BIT: - return "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"; - case VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"; - case VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR: - return "VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR"; - case VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR: - return "VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR"; - case VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR: - return "VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR: - return "VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR: - return "VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR: - return "VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkImageUsageFlagBits"; - } -} - -static inline std::string string_VkImageUsageFlags(VkImageUsageFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageUsageFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageUsageFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkInstanceCreateFlagBits(VkInstanceCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR: - return "VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR"; - default: - return "Unhandled VkInstanceCreateFlagBits"; - } -} - -static inline std::string string_VkInstanceCreateFlags(VkInstanceCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkInstanceCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkInstanceCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkMemoryHeapFlagBits(VkMemoryHeapFlagBits input_value) -{ - switch (input_value) - { - case VK_MEMORY_HEAP_DEVICE_LOCAL_BIT: - return "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"; - case VK_MEMORY_HEAP_MULTI_INSTANCE_BIT: - return "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"; - default: - return "Unhandled VkMemoryHeapFlagBits"; - } -} - -static inline std::string string_VkMemoryHeapFlags(VkMemoryHeapFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkMemoryHeapFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkMemoryHeapFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkMemoryPropertyFlagBits(VkMemoryPropertyFlagBits input_value) -{ - switch (input_value) - { - case VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD: - return "VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"; - case VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT: - return "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"; - case VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD: - return "VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"; - case VK_MEMORY_PROPERTY_HOST_CACHED_BIT: - return "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"; - case VK_MEMORY_PROPERTY_HOST_COHERENT_BIT: - return "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"; - case VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT: - return "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"; - case VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT: - return "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"; - case VK_MEMORY_PROPERTY_PROTECTED_BIT: - return "VK_MEMORY_PROPERTY_PROTECTED_BIT"; - case VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV: - return "VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV"; - default: - return "Unhandled VkMemoryPropertyFlagBits"; - } -} - -static inline std::string string_VkMemoryPropertyFlags(VkMemoryPropertyFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkMemoryPropertyFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkMemoryPropertyFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPhysicalDeviceType(VkPhysicalDeviceType input_value) -{ - switch (input_value) - { - case VK_PHYSICAL_DEVICE_TYPE_CPU: - return "VK_PHYSICAL_DEVICE_TYPE_CPU"; - case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: - return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"; - case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: - return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"; - case VK_PHYSICAL_DEVICE_TYPE_OTHER: - return "VK_PHYSICAL_DEVICE_TYPE_OTHER"; - case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: - return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"; - default: - return "Unhandled VkPhysicalDeviceType"; - } -} - -static inline const char* string_VkQueueFlagBits(VkQueueFlagBits input_value) -{ - switch (input_value) - { - case VK_QUEUE_COMPUTE_BIT: - return "VK_QUEUE_COMPUTE_BIT"; - case VK_QUEUE_GRAPHICS_BIT: - return "VK_QUEUE_GRAPHICS_BIT"; - case VK_QUEUE_OPTICAL_FLOW_BIT_NV: - return "VK_QUEUE_OPTICAL_FLOW_BIT_NV"; - case VK_QUEUE_PROTECTED_BIT: - return "VK_QUEUE_PROTECTED_BIT"; - case VK_QUEUE_SPARSE_BINDING_BIT: - return "VK_QUEUE_SPARSE_BINDING_BIT"; - case VK_QUEUE_TRANSFER_BIT: - return "VK_QUEUE_TRANSFER_BIT"; - case VK_QUEUE_VIDEO_DECODE_BIT_KHR: - return "VK_QUEUE_VIDEO_DECODE_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_QUEUE_VIDEO_ENCODE_BIT_KHR: - return "VK_QUEUE_VIDEO_ENCODE_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkQueueFlagBits"; - } -} - -static inline std::string string_VkQueueFlags(VkQueueFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkQueueFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkQueueFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkDeviceQueueCreateFlagBits(VkDeviceQueueCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT: - return "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"; - default: - return "Unhandled VkDeviceQueueCreateFlagBits"; - } -} - -static inline std::string string_VkDeviceQueueCreateFlags(VkDeviceQueueCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDeviceQueueCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDeviceQueueCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPipelineStageFlagBits(VkPipelineStageFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR: - return "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"; - case VK_PIPELINE_STAGE_ALL_COMMANDS_BIT: - return "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"; - case VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT: - return "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"; - case VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT: - return "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"; - case VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT: - return "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"; - case VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV: - return "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"; - case VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT: - return "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"; - case VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT: - return "VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"; - case VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT: - return "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"; - case VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT: - return "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"; - case VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT: - return "VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"; - case VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT: - return "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"; - case VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT: - return "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"; - case VK_PIPELINE_STAGE_HOST_BIT: - return "VK_PIPELINE_STAGE_HOST_BIT"; - case VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT: - return "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"; - case VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT: - return "VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT"; - case VK_PIPELINE_STAGE_NONE: - return "VK_PIPELINE_STAGE_NONE"; - case VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR: - return "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"; - case VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT: - return "VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT"; - case VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT: - return "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"; - case VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT: - return "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"; - case VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT: - return "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"; - case VK_PIPELINE_STAGE_TRANSFER_BIT: - return "VK_PIPELINE_STAGE_TRANSFER_BIT"; - case VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT: - return "VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"; - case VK_PIPELINE_STAGE_VERTEX_INPUT_BIT: - return "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"; - case VK_PIPELINE_STAGE_VERTEX_SHADER_BIT: - return "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"; - default: - return "Unhandled VkPipelineStageFlagBits"; - } -} - -static inline std::string string_VkPipelineStageFlags(VkPipelineStageFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineStageFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineStageFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSparseMemoryBindFlagBits(VkSparseMemoryBindFlagBits input_value) -{ - switch (input_value) - { - case VK_SPARSE_MEMORY_BIND_METADATA_BIT: - return "VK_SPARSE_MEMORY_BIND_METADATA_BIT"; - default: - return "Unhandled VkSparseMemoryBindFlagBits"; - } -} - -static inline std::string string_VkSparseMemoryBindFlags(VkSparseMemoryBindFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSparseMemoryBindFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSparseMemoryBindFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSparseImageFormatFlagBits(VkSparseImageFormatFlagBits input_value) -{ - switch (input_value) - { - case VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT: - return "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"; - case VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT: - return "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"; - case VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT: - return "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"; - default: - return "Unhandled VkSparseImageFormatFlagBits"; - } -} - -static inline std::string string_VkSparseImageFormatFlags(VkSparseImageFormatFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSparseImageFormatFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSparseImageFormatFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkFenceCreateFlagBits(VkFenceCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_FENCE_CREATE_SIGNALED_BIT: - return "VK_FENCE_CREATE_SIGNALED_BIT"; - default: - return "Unhandled VkFenceCreateFlagBits"; - } -} - -static inline std::string string_VkFenceCreateFlags(VkFenceCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFenceCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFenceCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkEventCreateFlagBits(VkEventCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_EVENT_CREATE_DEVICE_ONLY_BIT: - return "VK_EVENT_CREATE_DEVICE_ONLY_BIT"; - default: - return "Unhandled VkEventCreateFlagBits"; - } -} - -static inline std::string string_VkEventCreateFlags(VkEventCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkEventCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkEventCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkQueryPipelineStatisticFlagBits(VkQueryPipelineStatisticFlagBits input_value) -{ - switch (input_value) - { - case VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI: - return "VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI"; - case VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT: - return "VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT"; - case VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT: - return "VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT"; - case VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"; - case VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT: - return "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"; - default: - return "Unhandled VkQueryPipelineStatisticFlagBits"; - } -} - -static inline std::string string_VkQueryPipelineStatisticFlags(VkQueryPipelineStatisticFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkQueryPipelineStatisticFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkQueryPipelineStatisticFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkQueryType(VkQueryType input_value) -{ - switch (input_value) - { - case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR: - return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"; - case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV: - return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"; - case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR: - return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR"; - case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR: - return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"; - case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR: - return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR"; - case VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT: - return "VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT"; - case VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT: - return "VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT"; - case VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT: - return "VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT"; - case VK_QUERY_TYPE_OCCLUSION: - return "VK_QUERY_TYPE_OCCLUSION"; - case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: - return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL"; - case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: - return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"; - case VK_QUERY_TYPE_PIPELINE_STATISTICS: - return "VK_QUERY_TYPE_PIPELINE_STATISTICS"; - case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT: - return "VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT"; - case VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR: - return "VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR"; - case VK_QUERY_TYPE_TIMESTAMP: - return "VK_QUERY_TYPE_TIMESTAMP"; - case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: - return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR: - return "VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkQueryType"; - } -} - -static inline const char* string_VkQueryResultFlagBits(VkQueryResultFlagBits input_value) -{ - switch (input_value) - { - case VK_QUERY_RESULT_64_BIT: - return "VK_QUERY_RESULT_64_BIT"; - case VK_QUERY_RESULT_PARTIAL_BIT: - return "VK_QUERY_RESULT_PARTIAL_BIT"; - case VK_QUERY_RESULT_WAIT_BIT: - return "VK_QUERY_RESULT_WAIT_BIT"; - case VK_QUERY_RESULT_WITH_AVAILABILITY_BIT: - return "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"; - case VK_QUERY_RESULT_WITH_STATUS_BIT_KHR: - return "VK_QUERY_RESULT_WITH_STATUS_BIT_KHR"; - default: - return "Unhandled VkQueryResultFlagBits"; - } -} - -static inline std::string string_VkQueryResultFlags(VkQueryResultFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkQueryResultFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkQueryResultFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkBufferCreateFlagBits(VkBufferCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT: - return "VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"; - case VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT: - return "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"; - case VK_BUFFER_CREATE_PROTECTED_BIT: - return "VK_BUFFER_CREATE_PROTECTED_BIT"; - case VK_BUFFER_CREATE_SPARSE_ALIASED_BIT: - return "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"; - case VK_BUFFER_CREATE_SPARSE_BINDING_BIT: - return "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"; - case VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT: - return "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"; - default: - return "Unhandled VkBufferCreateFlagBits"; - } -} - -static inline std::string string_VkBufferCreateFlags(VkBufferCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkBufferCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkBufferCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkBufferUsageFlagBits(VkBufferUsageFlagBits input_value) -{ - switch (input_value) - { - case VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR: - return "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"; - case VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR: - return "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"; - case VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT: - return "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"; - case VK_BUFFER_USAGE_INDEX_BUFFER_BIT: - return "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"; - case VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT: - return "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"; - case VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT: - return "VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"; - case VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT: - return "VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT"; - case VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT: - return "VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"; - case VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT: - return "VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"; - case VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT: - return "VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"; - case VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR: - return "VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"; - case VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT: - return "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"; - case VK_BUFFER_USAGE_STORAGE_BUFFER_BIT: - return "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"; - case VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT: - return "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"; - case VK_BUFFER_USAGE_TRANSFER_DST_BIT: - return "VK_BUFFER_USAGE_TRANSFER_DST_BIT"; - case VK_BUFFER_USAGE_TRANSFER_SRC_BIT: - return "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"; - case VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT: - return "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"; - case VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT: - return "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"; - case VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT: - return "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"; - case VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT: - return "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"; - case VK_BUFFER_USAGE_VERTEX_BUFFER_BIT: - return "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"; - case VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR: - return "VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR"; - case VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR: - return "VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR: - return "VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR: - return "VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkBufferUsageFlagBits"; - } -} - -static inline std::string string_VkBufferUsageFlags(VkBufferUsageFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkBufferUsageFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkBufferUsageFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSharingMode(VkSharingMode input_value) -{ - switch (input_value) - { - case VK_SHARING_MODE_CONCURRENT: - return "VK_SHARING_MODE_CONCURRENT"; - case VK_SHARING_MODE_EXCLUSIVE: - return "VK_SHARING_MODE_EXCLUSIVE"; - default: - return "Unhandled VkSharingMode"; - } -} - -static inline const char* string_VkComponentSwizzle(VkComponentSwizzle input_value) -{ - switch (input_value) - { - case VK_COMPONENT_SWIZZLE_A: - return "VK_COMPONENT_SWIZZLE_A"; - case VK_COMPONENT_SWIZZLE_B: - return "VK_COMPONENT_SWIZZLE_B"; - case VK_COMPONENT_SWIZZLE_G: - return "VK_COMPONENT_SWIZZLE_G"; - case VK_COMPONENT_SWIZZLE_IDENTITY: - return "VK_COMPONENT_SWIZZLE_IDENTITY"; - case VK_COMPONENT_SWIZZLE_ONE: - return "VK_COMPONENT_SWIZZLE_ONE"; - case VK_COMPONENT_SWIZZLE_R: - return "VK_COMPONENT_SWIZZLE_R"; - case VK_COMPONENT_SWIZZLE_ZERO: - return "VK_COMPONENT_SWIZZLE_ZERO"; - default: - return "Unhandled VkComponentSwizzle"; - } -} - -static inline const char* string_VkImageViewCreateFlagBits(VkImageViewCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT: - return "VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"; - case VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT: - return "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"; - case VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT: - return "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"; - default: - return "Unhandled VkImageViewCreateFlagBits"; - } -} - -static inline std::string string_VkImageViewCreateFlags(VkImageViewCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageViewCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageViewCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkImageViewType(VkImageViewType input_value) -{ - switch (input_value) - { - case VK_IMAGE_VIEW_TYPE_1D: - return "VK_IMAGE_VIEW_TYPE_1D"; - case VK_IMAGE_VIEW_TYPE_1D_ARRAY: - return "VK_IMAGE_VIEW_TYPE_1D_ARRAY"; - case VK_IMAGE_VIEW_TYPE_2D: - return "VK_IMAGE_VIEW_TYPE_2D"; - case VK_IMAGE_VIEW_TYPE_2D_ARRAY: - return "VK_IMAGE_VIEW_TYPE_2D_ARRAY"; - case VK_IMAGE_VIEW_TYPE_3D: - return "VK_IMAGE_VIEW_TYPE_3D"; - case VK_IMAGE_VIEW_TYPE_CUBE: - return "VK_IMAGE_VIEW_TYPE_CUBE"; - case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: - return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"; - default: - return "Unhandled VkImageViewType"; - } -} - -static inline const char* string_VkPipelineCacheCreateFlagBits(VkPipelineCacheCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT: - return "VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT"; - default: - return "Unhandled VkPipelineCacheCreateFlagBits"; - } -} - -static inline std::string string_VkPipelineCacheCreateFlags(VkPipelineCacheCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineCacheCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineCacheCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkBlendFactor(VkBlendFactor input_value) -{ - switch (input_value) - { - case VK_BLEND_FACTOR_CONSTANT_ALPHA: - return "VK_BLEND_FACTOR_CONSTANT_ALPHA"; - case VK_BLEND_FACTOR_CONSTANT_COLOR: - return "VK_BLEND_FACTOR_CONSTANT_COLOR"; - case VK_BLEND_FACTOR_DST_ALPHA: - return "VK_BLEND_FACTOR_DST_ALPHA"; - case VK_BLEND_FACTOR_DST_COLOR: - return "VK_BLEND_FACTOR_DST_COLOR"; - case VK_BLEND_FACTOR_ONE: - return "VK_BLEND_FACTOR_ONE"; - case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"; - case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"; - case VK_BLEND_FACTOR_SRC1_ALPHA: - return "VK_BLEND_FACTOR_SRC1_ALPHA"; - case VK_BLEND_FACTOR_SRC1_COLOR: - return "VK_BLEND_FACTOR_SRC1_COLOR"; - case VK_BLEND_FACTOR_SRC_ALPHA: - return "VK_BLEND_FACTOR_SRC_ALPHA"; - case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE: - return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"; - case VK_BLEND_FACTOR_SRC_COLOR: - return "VK_BLEND_FACTOR_SRC_COLOR"; - case VK_BLEND_FACTOR_ZERO: - return "VK_BLEND_FACTOR_ZERO"; - default: - return "Unhandled VkBlendFactor"; - } -} - -static inline const char* string_VkBlendOp(VkBlendOp input_value) -{ - switch (input_value) - { - case VK_BLEND_OP_ADD: - return "VK_BLEND_OP_ADD"; - case VK_BLEND_OP_BLUE_EXT: - return "VK_BLEND_OP_BLUE_EXT"; - case VK_BLEND_OP_COLORBURN_EXT: - return "VK_BLEND_OP_COLORBURN_EXT"; - case VK_BLEND_OP_COLORDODGE_EXT: - return "VK_BLEND_OP_COLORDODGE_EXT"; - case VK_BLEND_OP_CONTRAST_EXT: - return "VK_BLEND_OP_CONTRAST_EXT"; - case VK_BLEND_OP_DARKEN_EXT: - return "VK_BLEND_OP_DARKEN_EXT"; - case VK_BLEND_OP_DIFFERENCE_EXT: - return "VK_BLEND_OP_DIFFERENCE_EXT"; - case VK_BLEND_OP_DST_ATOP_EXT: - return "VK_BLEND_OP_DST_ATOP_EXT"; - case VK_BLEND_OP_DST_EXT: - return "VK_BLEND_OP_DST_EXT"; - case VK_BLEND_OP_DST_IN_EXT: - return "VK_BLEND_OP_DST_IN_EXT"; - case VK_BLEND_OP_DST_OUT_EXT: - return "VK_BLEND_OP_DST_OUT_EXT"; - case VK_BLEND_OP_DST_OVER_EXT: - return "VK_BLEND_OP_DST_OVER_EXT"; - case VK_BLEND_OP_EXCLUSION_EXT: - return "VK_BLEND_OP_EXCLUSION_EXT"; - case VK_BLEND_OP_GREEN_EXT: - return "VK_BLEND_OP_GREEN_EXT"; - case VK_BLEND_OP_HARDLIGHT_EXT: - return "VK_BLEND_OP_HARDLIGHT_EXT"; - case VK_BLEND_OP_HARDMIX_EXT: - return "VK_BLEND_OP_HARDMIX_EXT"; - case VK_BLEND_OP_HSL_COLOR_EXT: - return "VK_BLEND_OP_HSL_COLOR_EXT"; - case VK_BLEND_OP_HSL_HUE_EXT: - return "VK_BLEND_OP_HSL_HUE_EXT"; - case VK_BLEND_OP_HSL_LUMINOSITY_EXT: - return "VK_BLEND_OP_HSL_LUMINOSITY_EXT"; - case VK_BLEND_OP_HSL_SATURATION_EXT: - return "VK_BLEND_OP_HSL_SATURATION_EXT"; - case VK_BLEND_OP_INVERT_EXT: - return "VK_BLEND_OP_INVERT_EXT"; - case VK_BLEND_OP_INVERT_OVG_EXT: - return "VK_BLEND_OP_INVERT_OVG_EXT"; - case VK_BLEND_OP_INVERT_RGB_EXT: - return "VK_BLEND_OP_INVERT_RGB_EXT"; - case VK_BLEND_OP_LIGHTEN_EXT: - return "VK_BLEND_OP_LIGHTEN_EXT"; - case VK_BLEND_OP_LINEARBURN_EXT: - return "VK_BLEND_OP_LINEARBURN_EXT"; - case VK_BLEND_OP_LINEARDODGE_EXT: - return "VK_BLEND_OP_LINEARDODGE_EXT"; - case VK_BLEND_OP_LINEARLIGHT_EXT: - return "VK_BLEND_OP_LINEARLIGHT_EXT"; - case VK_BLEND_OP_MAX: - return "VK_BLEND_OP_MAX"; - case VK_BLEND_OP_MIN: - return "VK_BLEND_OP_MIN"; - case VK_BLEND_OP_MINUS_CLAMPED_EXT: - return "VK_BLEND_OP_MINUS_CLAMPED_EXT"; - case VK_BLEND_OP_MINUS_EXT: - return "VK_BLEND_OP_MINUS_EXT"; - case VK_BLEND_OP_MULTIPLY_EXT: - return "VK_BLEND_OP_MULTIPLY_EXT"; - case VK_BLEND_OP_OVERLAY_EXT: - return "VK_BLEND_OP_OVERLAY_EXT"; - case VK_BLEND_OP_PINLIGHT_EXT: - return "VK_BLEND_OP_PINLIGHT_EXT"; - case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT: - return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"; - case VK_BLEND_OP_PLUS_CLAMPED_EXT: - return "VK_BLEND_OP_PLUS_CLAMPED_EXT"; - case VK_BLEND_OP_PLUS_DARKER_EXT: - return "VK_BLEND_OP_PLUS_DARKER_EXT"; - case VK_BLEND_OP_PLUS_EXT: - return "VK_BLEND_OP_PLUS_EXT"; - case VK_BLEND_OP_RED_EXT: - return "VK_BLEND_OP_RED_EXT"; - case VK_BLEND_OP_REVERSE_SUBTRACT: - return "VK_BLEND_OP_REVERSE_SUBTRACT"; - case VK_BLEND_OP_SCREEN_EXT: - return "VK_BLEND_OP_SCREEN_EXT"; - case VK_BLEND_OP_SOFTLIGHT_EXT: - return "VK_BLEND_OP_SOFTLIGHT_EXT"; - case VK_BLEND_OP_SRC_ATOP_EXT: - return "VK_BLEND_OP_SRC_ATOP_EXT"; - case VK_BLEND_OP_SRC_EXT: - return "VK_BLEND_OP_SRC_EXT"; - case VK_BLEND_OP_SRC_IN_EXT: - return "VK_BLEND_OP_SRC_IN_EXT"; - case VK_BLEND_OP_SRC_OUT_EXT: - return "VK_BLEND_OP_SRC_OUT_EXT"; - case VK_BLEND_OP_SRC_OVER_EXT: - return "VK_BLEND_OP_SRC_OVER_EXT"; - case VK_BLEND_OP_SUBTRACT: - return "VK_BLEND_OP_SUBTRACT"; - case VK_BLEND_OP_VIVIDLIGHT_EXT: - return "VK_BLEND_OP_VIVIDLIGHT_EXT"; - case VK_BLEND_OP_XOR_EXT: - return "VK_BLEND_OP_XOR_EXT"; - case VK_BLEND_OP_ZERO_EXT: - return "VK_BLEND_OP_ZERO_EXT"; - default: - return "Unhandled VkBlendOp"; - } -} - -static inline const char* string_VkColorComponentFlagBits(VkColorComponentFlagBits input_value) -{ - switch (input_value) - { - case VK_COLOR_COMPONENT_A_BIT: - return "VK_COLOR_COMPONENT_A_BIT"; - case VK_COLOR_COMPONENT_B_BIT: - return "VK_COLOR_COMPONENT_B_BIT"; - case VK_COLOR_COMPONENT_G_BIT: - return "VK_COLOR_COMPONENT_G_BIT"; - case VK_COLOR_COMPONENT_R_BIT: - return "VK_COLOR_COMPONENT_R_BIT"; - default: - return "Unhandled VkColorComponentFlagBits"; - } -} - -static inline std::string string_VkColorComponentFlags(VkColorComponentFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkColorComponentFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkColorComponentFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkCompareOp(VkCompareOp input_value) -{ - switch (input_value) - { - case VK_COMPARE_OP_ALWAYS: - return "VK_COMPARE_OP_ALWAYS"; - case VK_COMPARE_OP_EQUAL: - return "VK_COMPARE_OP_EQUAL"; - case VK_COMPARE_OP_GREATER: - return "VK_COMPARE_OP_GREATER"; - case VK_COMPARE_OP_GREATER_OR_EQUAL: - return "VK_COMPARE_OP_GREATER_OR_EQUAL"; - case VK_COMPARE_OP_LESS: - return "VK_COMPARE_OP_LESS"; - case VK_COMPARE_OP_LESS_OR_EQUAL: - return "VK_COMPARE_OP_LESS_OR_EQUAL"; - case VK_COMPARE_OP_NEVER: - return "VK_COMPARE_OP_NEVER"; - case VK_COMPARE_OP_NOT_EQUAL: - return "VK_COMPARE_OP_NOT_EQUAL"; - default: - return "Unhandled VkCompareOp"; - } -} - -static inline const char* string_VkPipelineCreateFlagBits(VkPipelineCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT: - return "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"; - case VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR: - return "VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"; - case VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR: - return "VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"; - case VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT: - return "VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"; - case VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV: - return "VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"; - case VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT: - return "VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT"; - case VK_PIPELINE_CREATE_DERIVATIVE_BIT: - return "VK_PIPELINE_CREATE_DERIVATIVE_BIT"; - case VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT: - return "VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT"; - case VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT: - return "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"; - case VK_PIPELINE_CREATE_DISPATCH_BASE_BIT: - return "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"; - case VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT: - return "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT"; - case VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT: - return "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"; - case VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV: - return "VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"; - case VK_PIPELINE_CREATE_LIBRARY_BIT_KHR: - return "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"; - case VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT: - return "VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT"; - case VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT: - return "VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT"; - case VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT: - return "VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT"; - case VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV: - return "VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV"; - case VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR: - return "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"; - case VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR: - return "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"; - case VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR: - return "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"; - case VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR: - return "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"; - case VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT: - return "VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT"; - case VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR: - return "VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"; - case VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR: - return "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"; - case VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR: - return "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"; - case VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT: - return "VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"; - case VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT: - return "VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"; - case VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT: - return "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"; - default: - return "Unhandled VkPipelineCreateFlagBits"; - } -} - -static inline std::string string_VkPipelineCreateFlags(VkPipelineCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPipelineShaderStageCreateFlagBits(VkPipelineShaderStageCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT: - return "VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT"; - case VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT: - return "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT"; - default: - return "Unhandled VkPipelineShaderStageCreateFlagBits"; - } -} - -static inline std::string string_VkPipelineShaderStageCreateFlags(VkPipelineShaderStageCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineShaderStageCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineShaderStageCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkShaderStageFlagBits(VkShaderStageFlagBits input_value) -{ - switch (input_value) - { - case VK_SHADER_STAGE_ALL: - return "VK_SHADER_STAGE_ALL"; - case VK_SHADER_STAGE_ALL_GRAPHICS: - return "VK_SHADER_STAGE_ALL_GRAPHICS"; - case VK_SHADER_STAGE_ANY_HIT_BIT_KHR: - return "VK_SHADER_STAGE_ANY_HIT_BIT_KHR"; - case VK_SHADER_STAGE_CALLABLE_BIT_KHR: - return "VK_SHADER_STAGE_CALLABLE_BIT_KHR"; - case VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR: - return "VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"; - case VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI: - return "VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI"; - case VK_SHADER_STAGE_COMPUTE_BIT: - return "VK_SHADER_STAGE_COMPUTE_BIT"; - case VK_SHADER_STAGE_FRAGMENT_BIT: - return "VK_SHADER_STAGE_FRAGMENT_BIT"; - case VK_SHADER_STAGE_GEOMETRY_BIT: - return "VK_SHADER_STAGE_GEOMETRY_BIT"; - case VK_SHADER_STAGE_INTERSECTION_BIT_KHR: - return "VK_SHADER_STAGE_INTERSECTION_BIT_KHR"; - case VK_SHADER_STAGE_MESH_BIT_EXT: - return "VK_SHADER_STAGE_MESH_BIT_EXT"; - case VK_SHADER_STAGE_MISS_BIT_KHR: - return "VK_SHADER_STAGE_MISS_BIT_KHR"; - case VK_SHADER_STAGE_RAYGEN_BIT_KHR: - return "VK_SHADER_STAGE_RAYGEN_BIT_KHR"; - case VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI: - return "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"; - case VK_SHADER_STAGE_TASK_BIT_EXT: - return "VK_SHADER_STAGE_TASK_BIT_EXT"; - case VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT: - return "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"; - case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT: - return "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"; - case VK_SHADER_STAGE_VERTEX_BIT: - return "VK_SHADER_STAGE_VERTEX_BIT"; - default: - return "Unhandled VkShaderStageFlagBits"; - } -} - -static inline std::string string_VkShaderStageFlags(VkShaderStageFlags input_value) -{ - if (input_value == VK_SHADER_STAGE_ALL) { return "VK_SHADER_STAGE_ALL"; } - if (input_value == VK_SHADER_STAGE_ALL_GRAPHICS) { return "VK_SHADER_STAGE_ALL_GRAPHICS"; } - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkShaderStageFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkShaderStageFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkCullModeFlagBits(VkCullModeFlagBits input_value) -{ - switch (input_value) - { - case VK_CULL_MODE_BACK_BIT: - return "VK_CULL_MODE_BACK_BIT"; - case VK_CULL_MODE_FRONT_AND_BACK: - return "VK_CULL_MODE_FRONT_AND_BACK"; - case VK_CULL_MODE_FRONT_BIT: - return "VK_CULL_MODE_FRONT_BIT"; - case VK_CULL_MODE_NONE: - return "VK_CULL_MODE_NONE"; - default: - return "Unhandled VkCullModeFlagBits"; - } -} - -static inline std::string string_VkCullModeFlags(VkCullModeFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkCullModeFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkCullModeFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkDynamicState(VkDynamicState input_value) -{ - switch (input_value) - { - case VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT: - return "VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT"; - case VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT: - return "VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT"; - case VK_DYNAMIC_STATE_BLEND_CONSTANTS: - return "VK_DYNAMIC_STATE_BLEND_CONSTANTS"; - case VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT: - return "VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT"; - case VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT: - return "VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT"; - case VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT: - return "VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT"; - case VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT: - return "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT"; - case VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT: - return "VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT"; - case VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT: - return "VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT"; - case VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV: - return "VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV"; - case VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV: - return "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV"; - case VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV: - return "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV"; - case VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV: - return "VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV"; - case VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV: - return "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV"; - case VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV: - return "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV"; - case VK_DYNAMIC_STATE_CULL_MODE: - return "VK_DYNAMIC_STATE_CULL_MODE"; - case VK_DYNAMIC_STATE_DEPTH_BIAS: - return "VK_DYNAMIC_STATE_DEPTH_BIAS"; - case VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE: - return "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE"; - case VK_DYNAMIC_STATE_DEPTH_BOUNDS: - return "VK_DYNAMIC_STATE_DEPTH_BOUNDS"; - case VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE: - return "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE"; - case VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT: - return "VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT"; - case VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT: - return "VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT"; - case VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT: - return "VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT"; - case VK_DYNAMIC_STATE_DEPTH_COMPARE_OP: - return "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP"; - case VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE: - return "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE"; - case VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE: - return "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE"; - case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT: - return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"; - case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV: - return "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"; - case VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT: - return "VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT"; - case VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR: - return "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR"; - case VK_DYNAMIC_STATE_FRONT_FACE: - return "VK_DYNAMIC_STATE_FRONT_FACE"; - case VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT: - return "VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT"; - case VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT: - return "VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT"; - case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT: - return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT"; - case VK_DYNAMIC_STATE_LINE_WIDTH: - return "VK_DYNAMIC_STATE_LINE_WIDTH"; - case VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT: - return "VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT"; - case VK_DYNAMIC_STATE_LOGIC_OP_EXT: - return "VK_DYNAMIC_STATE_LOGIC_OP_EXT"; - case VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT: - return "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT"; - case VK_DYNAMIC_STATE_POLYGON_MODE_EXT: - return "VK_DYNAMIC_STATE_POLYGON_MODE_EXT"; - case VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE: - return "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE"; - case VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY: - return "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY"; - case VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT: - return "VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT"; - case VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT: - return "VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT"; - case VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT: - return "VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT"; - case VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE: - return "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE"; - case VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR: - return "VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR"; - case VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV: - return "VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV"; - case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT: - return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT"; - case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT: - return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"; - case VK_DYNAMIC_STATE_SAMPLE_MASK_EXT: - return "VK_DYNAMIC_STATE_SAMPLE_MASK_EXT"; - case VK_DYNAMIC_STATE_SCISSOR: - return "VK_DYNAMIC_STATE_SCISSOR"; - case VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT: - return "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT"; - case VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV: - return "VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV"; - case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK: - return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"; - case VK_DYNAMIC_STATE_STENCIL_OP: - return "VK_DYNAMIC_STATE_STENCIL_OP"; - case VK_DYNAMIC_STATE_STENCIL_REFERENCE: - return "VK_DYNAMIC_STATE_STENCIL_REFERENCE"; - case VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE: - return "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE"; - case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK: - return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"; - case VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT: - return "VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT"; - case VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE: - return "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE"; - case VK_DYNAMIC_STATE_VERTEX_INPUT_EXT: - return "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT"; - case VK_DYNAMIC_STATE_VIEWPORT: - return "VK_DYNAMIC_STATE_VIEWPORT"; - case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"; - case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"; - case VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV"; - case VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT: - return "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT"; - case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV"; - case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"; - default: - return "Unhandled VkDynamicState"; - } -} - -static inline const char* string_VkFrontFace(VkFrontFace input_value) -{ - switch (input_value) - { - case VK_FRONT_FACE_CLOCKWISE: - return "VK_FRONT_FACE_CLOCKWISE"; - case VK_FRONT_FACE_COUNTER_CLOCKWISE: - return "VK_FRONT_FACE_COUNTER_CLOCKWISE"; - default: - return "Unhandled VkFrontFace"; - } -} - -static inline const char* string_VkVertexInputRate(VkVertexInputRate input_value) -{ - switch (input_value) - { - case VK_VERTEX_INPUT_RATE_INSTANCE: - return "VK_VERTEX_INPUT_RATE_INSTANCE"; - case VK_VERTEX_INPUT_RATE_VERTEX: - return "VK_VERTEX_INPUT_RATE_VERTEX"; - default: - return "Unhandled VkVertexInputRate"; - } -} - -static inline const char* string_VkPrimitiveTopology(VkPrimitiveTopology input_value) -{ - switch (input_value) - { - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: - return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"; - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: - return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"; - case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: - return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"; - case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: - return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"; - default: - return "Unhandled VkPrimitiveTopology"; - } -} - -static inline const char* string_VkPolygonMode(VkPolygonMode input_value) -{ - switch (input_value) - { - case VK_POLYGON_MODE_FILL: - return "VK_POLYGON_MODE_FILL"; - case VK_POLYGON_MODE_FILL_RECTANGLE_NV: - return "VK_POLYGON_MODE_FILL_RECTANGLE_NV"; - case VK_POLYGON_MODE_LINE: - return "VK_POLYGON_MODE_LINE"; - case VK_POLYGON_MODE_POINT: - return "VK_POLYGON_MODE_POINT"; - default: - return "Unhandled VkPolygonMode"; - } -} - -static inline const char* string_VkPipelineDepthStencilStateCreateFlagBits(VkPipelineDepthStencilStateCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT: - return "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"; - case VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT: - return "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"; - default: - return "Unhandled VkPipelineDepthStencilStateCreateFlagBits"; - } -} - -static inline std::string string_VkPipelineDepthStencilStateCreateFlags(VkPipelineDepthStencilStateCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineDepthStencilStateCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineDepthStencilStateCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkStencilOp(VkStencilOp input_value) -{ - switch (input_value) - { - case VK_STENCIL_OP_DECREMENT_AND_CLAMP: - return "VK_STENCIL_OP_DECREMENT_AND_CLAMP"; - case VK_STENCIL_OP_DECREMENT_AND_WRAP: - return "VK_STENCIL_OP_DECREMENT_AND_WRAP"; - case VK_STENCIL_OP_INCREMENT_AND_CLAMP: - return "VK_STENCIL_OP_INCREMENT_AND_CLAMP"; - case VK_STENCIL_OP_INCREMENT_AND_WRAP: - return "VK_STENCIL_OP_INCREMENT_AND_WRAP"; - case VK_STENCIL_OP_INVERT: - return "VK_STENCIL_OP_INVERT"; - case VK_STENCIL_OP_KEEP: - return "VK_STENCIL_OP_KEEP"; - case VK_STENCIL_OP_REPLACE: - return "VK_STENCIL_OP_REPLACE"; - case VK_STENCIL_OP_ZERO: - return "VK_STENCIL_OP_ZERO"; - default: - return "Unhandled VkStencilOp"; - } -} - -static inline const char* string_VkPipelineColorBlendStateCreateFlagBits(VkPipelineColorBlendStateCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT: - return "VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT"; - default: - return "Unhandled VkPipelineColorBlendStateCreateFlagBits"; - } -} - -static inline std::string string_VkPipelineColorBlendStateCreateFlags(VkPipelineColorBlendStateCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineColorBlendStateCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineColorBlendStateCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkLogicOp(VkLogicOp input_value) -{ - switch (input_value) - { - case VK_LOGIC_OP_AND: - return "VK_LOGIC_OP_AND"; - case VK_LOGIC_OP_AND_INVERTED: - return "VK_LOGIC_OP_AND_INVERTED"; - case VK_LOGIC_OP_AND_REVERSE: - return "VK_LOGIC_OP_AND_REVERSE"; - case VK_LOGIC_OP_CLEAR: - return "VK_LOGIC_OP_CLEAR"; - case VK_LOGIC_OP_COPY: - return "VK_LOGIC_OP_COPY"; - case VK_LOGIC_OP_COPY_INVERTED: - return "VK_LOGIC_OP_COPY_INVERTED"; - case VK_LOGIC_OP_EQUIVALENT: - return "VK_LOGIC_OP_EQUIVALENT"; - case VK_LOGIC_OP_INVERT: - return "VK_LOGIC_OP_INVERT"; - case VK_LOGIC_OP_NAND: - return "VK_LOGIC_OP_NAND"; - case VK_LOGIC_OP_NOR: - return "VK_LOGIC_OP_NOR"; - case VK_LOGIC_OP_NO_OP: - return "VK_LOGIC_OP_NO_OP"; - case VK_LOGIC_OP_OR: - return "VK_LOGIC_OP_OR"; - case VK_LOGIC_OP_OR_INVERTED: - return "VK_LOGIC_OP_OR_INVERTED"; - case VK_LOGIC_OP_OR_REVERSE: - return "VK_LOGIC_OP_OR_REVERSE"; - case VK_LOGIC_OP_SET: - return "VK_LOGIC_OP_SET"; - case VK_LOGIC_OP_XOR: - return "VK_LOGIC_OP_XOR"; - default: - return "Unhandled VkLogicOp"; - } -} - -static inline const char* string_VkPipelineLayoutCreateFlagBits(VkPipelineLayoutCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT: - return "VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"; - default: - return "Unhandled VkPipelineLayoutCreateFlagBits"; - } -} - -static inline std::string string_VkPipelineLayoutCreateFlags(VkPipelineLayoutCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineLayoutCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineLayoutCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkBorderColor(VkBorderColor input_value) -{ - switch (input_value) - { - case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT: - return "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT"; - case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK: - return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"; - case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE: - return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"; - case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: - return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"; - case VK_BORDER_COLOR_INT_CUSTOM_EXT: - return "VK_BORDER_COLOR_INT_CUSTOM_EXT"; - case VK_BORDER_COLOR_INT_OPAQUE_BLACK: - return "VK_BORDER_COLOR_INT_OPAQUE_BLACK"; - case VK_BORDER_COLOR_INT_OPAQUE_WHITE: - return "VK_BORDER_COLOR_INT_OPAQUE_WHITE"; - case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK: - return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"; - default: - return "Unhandled VkBorderColor"; - } -} - -static inline const char* string_VkFilter(VkFilter input_value) -{ - switch (input_value) - { - case VK_FILTER_CUBIC_EXT: - return "VK_FILTER_CUBIC_EXT"; - case VK_FILTER_LINEAR: - return "VK_FILTER_LINEAR"; - case VK_FILTER_NEAREST: - return "VK_FILTER_NEAREST"; - default: - return "Unhandled VkFilter"; - } -} - -static inline const char* string_VkSamplerAddressMode(VkSamplerAddressMode input_value) -{ - switch (input_value) - { - case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER: - return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"; - case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE: - return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"; - case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT: - return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"; - case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE: - return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"; - case VK_SAMPLER_ADDRESS_MODE_REPEAT: - return "VK_SAMPLER_ADDRESS_MODE_REPEAT"; - default: - return "Unhandled VkSamplerAddressMode"; - } -} - -static inline const char* string_VkSamplerCreateFlagBits(VkSamplerCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT: - return "VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"; - case VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM: - return "VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM"; - case VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT: - return "VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT"; - case VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT: - return "VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"; - case VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT: - return "VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"; - default: - return "Unhandled VkSamplerCreateFlagBits"; - } -} - -static inline std::string string_VkSamplerCreateFlags(VkSamplerCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSamplerCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSamplerCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSamplerMipmapMode(VkSamplerMipmapMode input_value) -{ - switch (input_value) - { - case VK_SAMPLER_MIPMAP_MODE_LINEAR: - return "VK_SAMPLER_MIPMAP_MODE_LINEAR"; - case VK_SAMPLER_MIPMAP_MODE_NEAREST: - return "VK_SAMPLER_MIPMAP_MODE_NEAREST"; - default: - return "Unhandled VkSamplerMipmapMode"; - } -} - -static inline const char* string_VkDescriptorPoolCreateFlagBits(VkDescriptorPoolCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT: - return "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"; - case VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT: - return "VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT"; - case VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT: - return "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"; - default: - return "Unhandled VkDescriptorPoolCreateFlagBits"; - } -} - -static inline std::string string_VkDescriptorPoolCreateFlags(VkDescriptorPoolCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDescriptorPoolCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDescriptorPoolCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkDescriptorType(VkDescriptorType input_value) -{ - switch (input_value) - { - case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: - return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"; - case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV: - return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"; - case VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM: - return "VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM"; - case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: - return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"; - case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK: - return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK"; - case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: - return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"; - case VK_DESCRIPTOR_TYPE_MUTABLE_EXT: - return "VK_DESCRIPTOR_TYPE_MUTABLE_EXT"; - case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: - return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"; - case VK_DESCRIPTOR_TYPE_SAMPLER: - return "VK_DESCRIPTOR_TYPE_SAMPLER"; - case VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM: - return "VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM"; - case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: - return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"; - case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: - return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"; - case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: - return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"; - case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: - return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"; - case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: - return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"; - case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: - return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"; - case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: - return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"; - default: - return "Unhandled VkDescriptorType"; - } -} - -static inline const char* string_VkDescriptorSetLayoutCreateFlagBits(VkDescriptorSetLayoutCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT: - return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT"; - case VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT: - return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT"; - case VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT: - return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT"; - case VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR: - return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"; - case VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT: - return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"; - default: - return "Unhandled VkDescriptorSetLayoutCreateFlagBits"; - } -} - -static inline std::string string_VkDescriptorSetLayoutCreateFlags(VkDescriptorSetLayoutCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDescriptorSetLayoutCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDescriptorSetLayoutCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkAttachmentDescriptionFlagBits(VkAttachmentDescriptionFlagBits input_value) -{ - switch (input_value) - { - case VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT: - return "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"; - default: - return "Unhandled VkAttachmentDescriptionFlagBits"; - } -} - -static inline std::string string_VkAttachmentDescriptionFlags(VkAttachmentDescriptionFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkAttachmentDescriptionFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkAttachmentDescriptionFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkAttachmentLoadOp(VkAttachmentLoadOp input_value) -{ - switch (input_value) - { - case VK_ATTACHMENT_LOAD_OP_CLEAR: - return "VK_ATTACHMENT_LOAD_OP_CLEAR"; - case VK_ATTACHMENT_LOAD_OP_DONT_CARE: - return "VK_ATTACHMENT_LOAD_OP_DONT_CARE"; - case VK_ATTACHMENT_LOAD_OP_LOAD: - return "VK_ATTACHMENT_LOAD_OP_LOAD"; - case VK_ATTACHMENT_LOAD_OP_NONE_EXT: - return "VK_ATTACHMENT_LOAD_OP_NONE_EXT"; - default: - return "Unhandled VkAttachmentLoadOp"; - } -} - -static inline const char* string_VkAttachmentStoreOp(VkAttachmentStoreOp input_value) -{ - switch (input_value) - { - case VK_ATTACHMENT_STORE_OP_DONT_CARE: - return "VK_ATTACHMENT_STORE_OP_DONT_CARE"; - case VK_ATTACHMENT_STORE_OP_NONE: - return "VK_ATTACHMENT_STORE_OP_NONE"; - case VK_ATTACHMENT_STORE_OP_STORE: - return "VK_ATTACHMENT_STORE_OP_STORE"; - default: - return "Unhandled VkAttachmentStoreOp"; - } -} - -static inline const char* string_VkDependencyFlagBits(VkDependencyFlagBits input_value) -{ - switch (input_value) - { - case VK_DEPENDENCY_BY_REGION_BIT: - return "VK_DEPENDENCY_BY_REGION_BIT"; - case VK_DEPENDENCY_DEVICE_GROUP_BIT: - return "VK_DEPENDENCY_DEVICE_GROUP_BIT"; - case VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT: - return "VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT"; - case VK_DEPENDENCY_VIEW_LOCAL_BIT: - return "VK_DEPENDENCY_VIEW_LOCAL_BIT"; - default: - return "Unhandled VkDependencyFlagBits"; - } -} - -static inline std::string string_VkDependencyFlags(VkDependencyFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDependencyFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDependencyFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkFramebufferCreateFlagBits(VkFramebufferCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT: - return "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"; - default: - return "Unhandled VkFramebufferCreateFlagBits"; - } -} - -static inline std::string string_VkFramebufferCreateFlags(VkFramebufferCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFramebufferCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFramebufferCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPipelineBindPoint(VkPipelineBindPoint input_value) -{ - switch (input_value) - { - case VK_PIPELINE_BIND_POINT_COMPUTE: - return "VK_PIPELINE_BIND_POINT_COMPUTE"; - case VK_PIPELINE_BIND_POINT_GRAPHICS: - return "VK_PIPELINE_BIND_POINT_GRAPHICS"; - case VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR: - return "VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR"; - case VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI: - return "VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI"; - default: - return "Unhandled VkPipelineBindPoint"; - } -} - -static inline const char* string_VkRenderPassCreateFlagBits(VkRenderPassCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM: - return "VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"; - default: - return "Unhandled VkRenderPassCreateFlagBits"; - } -} - -static inline std::string string_VkRenderPassCreateFlags(VkRenderPassCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkRenderPassCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkRenderPassCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSubpassDescriptionFlagBits(VkSubpassDescriptionFlagBits input_value) -{ - switch (input_value) - { - case VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT: - return "VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT"; - case VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM: - return "VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"; - case VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX: - return "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"; - case VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX: - return "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"; - case VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT: - return "VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT"; - case VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT: - return "VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"; - case VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT: - return "VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"; - case VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM: - return "VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"; - default: - return "Unhandled VkSubpassDescriptionFlagBits"; - } -} - -static inline std::string string_VkSubpassDescriptionFlags(VkSubpassDescriptionFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSubpassDescriptionFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSubpassDescriptionFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkCommandPoolCreateFlagBits(VkCommandPoolCreateFlagBits input_value) -{ - switch (input_value) - { - case VK_COMMAND_POOL_CREATE_PROTECTED_BIT: - return "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"; - case VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT: - return "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"; - case VK_COMMAND_POOL_CREATE_TRANSIENT_BIT: - return "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"; - default: - return "Unhandled VkCommandPoolCreateFlagBits"; - } -} - -static inline std::string string_VkCommandPoolCreateFlags(VkCommandPoolCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkCommandPoolCreateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkCommandPoolCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkCommandPoolResetFlagBits(VkCommandPoolResetFlagBits input_value) -{ - switch (input_value) - { - case VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT: - return "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"; - default: - return "Unhandled VkCommandPoolResetFlagBits"; - } -} - -static inline std::string string_VkCommandPoolResetFlags(VkCommandPoolResetFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkCommandPoolResetFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkCommandPoolResetFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkCommandBufferLevel(VkCommandBufferLevel input_value) -{ - switch (input_value) - { - case VK_COMMAND_BUFFER_LEVEL_PRIMARY: - return "VK_COMMAND_BUFFER_LEVEL_PRIMARY"; - case VK_COMMAND_BUFFER_LEVEL_SECONDARY: - return "VK_COMMAND_BUFFER_LEVEL_SECONDARY"; - default: - return "Unhandled VkCommandBufferLevel"; - } -} - -static inline const char* string_VkCommandBufferUsageFlagBits(VkCommandBufferUsageFlagBits input_value) -{ - switch (input_value) - { - case VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT: - return "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"; - case VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT: - return "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"; - case VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT: - return "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"; - default: - return "Unhandled VkCommandBufferUsageFlagBits"; - } -} - -static inline std::string string_VkCommandBufferUsageFlags(VkCommandBufferUsageFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkCommandBufferUsageFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkCommandBufferUsageFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkQueryControlFlagBits(VkQueryControlFlagBits input_value) -{ - switch (input_value) - { - case VK_QUERY_CONTROL_PRECISE_BIT: - return "VK_QUERY_CONTROL_PRECISE_BIT"; - default: - return "Unhandled VkQueryControlFlagBits"; - } -} - -static inline std::string string_VkQueryControlFlags(VkQueryControlFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkQueryControlFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkQueryControlFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkCommandBufferResetFlagBits(VkCommandBufferResetFlagBits input_value) -{ - switch (input_value) - { - case VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT: - return "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"; - default: - return "Unhandled VkCommandBufferResetFlagBits"; - } -} - -static inline std::string string_VkCommandBufferResetFlags(VkCommandBufferResetFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkCommandBufferResetFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkCommandBufferResetFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkIndexType(VkIndexType input_value) -{ - switch (input_value) - { - case VK_INDEX_TYPE_NONE_KHR: - return "VK_INDEX_TYPE_NONE_KHR"; - case VK_INDEX_TYPE_UINT16: - return "VK_INDEX_TYPE_UINT16"; - case VK_INDEX_TYPE_UINT32: - return "VK_INDEX_TYPE_UINT32"; - case VK_INDEX_TYPE_UINT8_EXT: - return "VK_INDEX_TYPE_UINT8_EXT"; - default: - return "Unhandled VkIndexType"; - } -} - -static inline const char* string_VkStencilFaceFlagBits(VkStencilFaceFlagBits input_value) -{ - switch (input_value) - { - case VK_STENCIL_FACE_BACK_BIT: - return "VK_STENCIL_FACE_BACK_BIT"; - case VK_STENCIL_FACE_FRONT_AND_BACK: - return "VK_STENCIL_FACE_FRONT_AND_BACK"; - case VK_STENCIL_FACE_FRONT_BIT: - return "VK_STENCIL_FACE_FRONT_BIT"; - default: - return "Unhandled VkStencilFaceFlagBits"; - } -} - -static inline std::string string_VkStencilFaceFlags(VkStencilFaceFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkStencilFaceFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkStencilFaceFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSubpassContents(VkSubpassContents input_value) -{ - switch (input_value) - { - case VK_SUBPASS_CONTENTS_INLINE: - return "VK_SUBPASS_CONTENTS_INLINE"; - case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS: - return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"; - default: - return "Unhandled VkSubpassContents"; - } -} - -static inline const char* string_VkSubgroupFeatureFlagBits(VkSubgroupFeatureFlagBits input_value) -{ - switch (input_value) - { - case VK_SUBGROUP_FEATURE_ARITHMETIC_BIT: - return "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"; - case VK_SUBGROUP_FEATURE_BALLOT_BIT: - return "VK_SUBGROUP_FEATURE_BALLOT_BIT"; - case VK_SUBGROUP_FEATURE_BASIC_BIT: - return "VK_SUBGROUP_FEATURE_BASIC_BIT"; - case VK_SUBGROUP_FEATURE_CLUSTERED_BIT: - return "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"; - case VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV: - return "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"; - case VK_SUBGROUP_FEATURE_QUAD_BIT: - return "VK_SUBGROUP_FEATURE_QUAD_BIT"; - case VK_SUBGROUP_FEATURE_SHUFFLE_BIT: - return "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"; - case VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT: - return "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"; - case VK_SUBGROUP_FEATURE_VOTE_BIT: - return "VK_SUBGROUP_FEATURE_VOTE_BIT"; - default: - return "Unhandled VkSubgroupFeatureFlagBits"; - } -} - -static inline std::string string_VkSubgroupFeatureFlags(VkSubgroupFeatureFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSubgroupFeatureFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSubgroupFeatureFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPeerMemoryFeatureFlagBits(VkPeerMemoryFeatureFlagBits input_value) -{ - switch (input_value) - { - case VK_PEER_MEMORY_FEATURE_COPY_DST_BIT: - return "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"; - case VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT: - return "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"; - case VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT: - return "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"; - case VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT: - return "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"; - default: - return "Unhandled VkPeerMemoryFeatureFlagBits"; - } -} - -static inline std::string string_VkPeerMemoryFeatureFlags(VkPeerMemoryFeatureFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPeerMemoryFeatureFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPeerMemoryFeatureFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkMemoryAllocateFlagBits(VkMemoryAllocateFlagBits input_value) -{ - switch (input_value) - { - case VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT: - return "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"; - case VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT: - return "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"; - case VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT: - return "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"; - default: - return "Unhandled VkMemoryAllocateFlagBits"; - } -} - -static inline std::string string_VkMemoryAllocateFlags(VkMemoryAllocateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkMemoryAllocateFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkMemoryAllocateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPointClippingBehavior(VkPointClippingBehavior input_value) -{ - switch (input_value) - { - case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES: - return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"; - case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY: - return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"; - default: - return "Unhandled VkPointClippingBehavior"; - } -} - -static inline const char* string_VkTessellationDomainOrigin(VkTessellationDomainOrigin input_value) -{ - switch (input_value) - { - case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT: - return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"; - case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT: - return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"; - default: - return "Unhandled VkTessellationDomainOrigin"; - } -} - -static inline const char* string_VkSamplerYcbcrModelConversion(VkSamplerYcbcrModelConversion input_value) -{ - switch (input_value) - { - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"; - default: - return "Unhandled VkSamplerYcbcrModelConversion"; - } -} - -static inline const char* string_VkSamplerYcbcrRange(VkSamplerYcbcrRange input_value) -{ - switch (input_value) - { - case VK_SAMPLER_YCBCR_RANGE_ITU_FULL: - return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"; - case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW: - return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"; - default: - return "Unhandled VkSamplerYcbcrRange"; - } -} - -static inline const char* string_VkChromaLocation(VkChromaLocation input_value) -{ - switch (input_value) - { - case VK_CHROMA_LOCATION_COSITED_EVEN: - return "VK_CHROMA_LOCATION_COSITED_EVEN"; - case VK_CHROMA_LOCATION_MIDPOINT: - return "VK_CHROMA_LOCATION_MIDPOINT"; - default: - return "Unhandled VkChromaLocation"; - } -} - -static inline const char* string_VkDescriptorUpdateTemplateType(VkDescriptorUpdateTemplateType input_value) -{ - switch (input_value) - { - case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET: - return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"; - case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR: - return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"; - default: - return "Unhandled VkDescriptorUpdateTemplateType"; - } -} - -static inline const char* string_VkExternalMemoryHandleTypeFlagBits(VkExternalMemoryHandleTypeFlagBits input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"; - default: - return "Unhandled VkExternalMemoryHandleTypeFlagBits"; - } -} - -static inline std::string string_VkExternalMemoryHandleTypeFlags(VkExternalMemoryHandleTypeFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalMemoryHandleTypeFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalMemoryHandleTypeFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalMemoryFeatureFlagBits(VkExternalMemoryFeatureFlagBits input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT: - return "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"; - case VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT: - return "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"; - case VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT: - return "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"; - default: - return "Unhandled VkExternalMemoryFeatureFlagBits"; - } -} - -static inline std::string string_VkExternalMemoryFeatureFlags(VkExternalMemoryFeatureFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalMemoryFeatureFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalMemoryFeatureFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalFenceHandleTypeFlagBits(VkExternalFenceHandleTypeFlagBits input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"; - case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"; - case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"; - case VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"; - default: - return "Unhandled VkExternalFenceHandleTypeFlagBits"; - } -} - -static inline std::string string_VkExternalFenceHandleTypeFlags(VkExternalFenceHandleTypeFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalFenceHandleTypeFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalFenceHandleTypeFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalFenceFeatureFlagBits(VkExternalFenceFeatureFlagBits input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT: - return "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"; - case VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT: - return "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"; - default: - return "Unhandled VkExternalFenceFeatureFlagBits"; - } -} - -static inline std::string string_VkExternalFenceFeatureFlags(VkExternalFenceFeatureFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalFenceFeatureFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalFenceFeatureFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkFenceImportFlagBits(VkFenceImportFlagBits input_value) -{ - switch (input_value) - { - case VK_FENCE_IMPORT_TEMPORARY_BIT: - return "VK_FENCE_IMPORT_TEMPORARY_BIT"; - default: - return "Unhandled VkFenceImportFlagBits"; - } -} - -static inline std::string string_VkFenceImportFlags(VkFenceImportFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFenceImportFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFenceImportFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSemaphoreImportFlagBits(VkSemaphoreImportFlagBits input_value) -{ - switch (input_value) - { - case VK_SEMAPHORE_IMPORT_TEMPORARY_BIT: - return "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"; - default: - return "Unhandled VkSemaphoreImportFlagBits"; - } -} - -static inline std::string string_VkSemaphoreImportFlags(VkSemaphoreImportFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSemaphoreImportFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSemaphoreImportFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalSemaphoreHandleTypeFlagBits(VkExternalSemaphoreHandleTypeFlagBits input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"; - default: - return "Unhandled VkExternalSemaphoreHandleTypeFlagBits"; - } -} - -static inline std::string string_VkExternalSemaphoreHandleTypeFlags(VkExternalSemaphoreHandleTypeFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalSemaphoreHandleTypeFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalSemaphoreHandleTypeFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalSemaphoreFeatureFlagBits(VkExternalSemaphoreFeatureFlagBits input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT: - return "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"; - case VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT: - return "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"; - default: - return "Unhandled VkExternalSemaphoreFeatureFlagBits"; - } -} - -static inline std::string string_VkExternalSemaphoreFeatureFlags(VkExternalSemaphoreFeatureFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalSemaphoreFeatureFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalSemaphoreFeatureFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkDriverId(VkDriverId input_value) -{ - switch (input_value) - { - case VK_DRIVER_ID_AMD_OPEN_SOURCE: - return "VK_DRIVER_ID_AMD_OPEN_SOURCE"; - case VK_DRIVER_ID_AMD_PROPRIETARY: - return "VK_DRIVER_ID_AMD_PROPRIETARY"; - case VK_DRIVER_ID_ARM_PROPRIETARY: - return "VK_DRIVER_ID_ARM_PROPRIETARY"; - case VK_DRIVER_ID_BROADCOM_PROPRIETARY: - return "VK_DRIVER_ID_BROADCOM_PROPRIETARY"; - case VK_DRIVER_ID_COREAVI_PROPRIETARY: - return "VK_DRIVER_ID_COREAVI_PROPRIETARY"; - case VK_DRIVER_ID_GGP_PROPRIETARY: - return "VK_DRIVER_ID_GGP_PROPRIETARY"; - case VK_DRIVER_ID_GOOGLE_SWIFTSHADER: - return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER"; - case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA: - return "VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA"; - case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: - return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY"; - case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: - return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA"; - case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS: - return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"; - case VK_DRIVER_ID_JUICE_PROPRIETARY: - return "VK_DRIVER_ID_JUICE_PROPRIETARY"; - case VK_DRIVER_ID_MESA_DOZEN: - return "VK_DRIVER_ID_MESA_DOZEN"; - case VK_DRIVER_ID_MESA_LLVMPIPE: - return "VK_DRIVER_ID_MESA_LLVMPIPE"; - case VK_DRIVER_ID_MESA_NVK: - return "VK_DRIVER_ID_MESA_NVK"; - case VK_DRIVER_ID_MESA_PANVK: - return "VK_DRIVER_ID_MESA_PANVK"; - case VK_DRIVER_ID_MESA_RADV: - return "VK_DRIVER_ID_MESA_RADV"; - case VK_DRIVER_ID_MESA_TURNIP: - return "VK_DRIVER_ID_MESA_TURNIP"; - case VK_DRIVER_ID_MESA_V3DV: - return "VK_DRIVER_ID_MESA_V3DV"; - case VK_DRIVER_ID_MESA_VENUS: - return "VK_DRIVER_ID_MESA_VENUS"; - case VK_DRIVER_ID_MOLTENVK: - return "VK_DRIVER_ID_MOLTENVK"; - case VK_DRIVER_ID_NVIDIA_PROPRIETARY: - return "VK_DRIVER_ID_NVIDIA_PROPRIETARY"; - case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: - return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY"; - case VK_DRIVER_ID_SAMSUNG_PROPRIETARY: - return "VK_DRIVER_ID_SAMSUNG_PROPRIETARY"; - case VK_DRIVER_ID_VERISILICON_PROPRIETARY: - return "VK_DRIVER_ID_VERISILICON_PROPRIETARY"; - default: - return "Unhandled VkDriverId"; - } -} - -static inline const char* string_VkShaderFloatControlsIndependence(VkShaderFloatControlsIndependence input_value) -{ - switch (input_value) - { - case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY: - return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"; - case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL: - return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"; - case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE: - return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"; - default: - return "Unhandled VkShaderFloatControlsIndependence"; - } -} - -static inline const char* string_VkResolveModeFlagBits(VkResolveModeFlagBits input_value) -{ - switch (input_value) - { - case VK_RESOLVE_MODE_AVERAGE_BIT: - return "VK_RESOLVE_MODE_AVERAGE_BIT"; - case VK_RESOLVE_MODE_MAX_BIT: - return "VK_RESOLVE_MODE_MAX_BIT"; - case VK_RESOLVE_MODE_MIN_BIT: - return "VK_RESOLVE_MODE_MIN_BIT"; - case VK_RESOLVE_MODE_NONE: - return "VK_RESOLVE_MODE_NONE"; - case VK_RESOLVE_MODE_SAMPLE_ZERO_BIT: - return "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"; - default: - return "Unhandled VkResolveModeFlagBits"; - } -} - -static inline std::string string_VkResolveModeFlags(VkResolveModeFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkResolveModeFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkResolveModeFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkDescriptorBindingFlagBits(VkDescriptorBindingFlagBits input_value) -{ - switch (input_value) - { - case VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT: - return "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"; - case VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT: - return "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"; - case VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT: - return "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"; - case VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT: - return "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"; - default: - return "Unhandled VkDescriptorBindingFlagBits"; - } -} - -static inline std::string string_VkDescriptorBindingFlags(VkDescriptorBindingFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDescriptorBindingFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDescriptorBindingFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkSamplerReductionMode(VkSamplerReductionMode input_value) -{ - switch (input_value) - { - case VK_SAMPLER_REDUCTION_MODE_MAX: - return "VK_SAMPLER_REDUCTION_MODE_MAX"; - case VK_SAMPLER_REDUCTION_MODE_MIN: - return "VK_SAMPLER_REDUCTION_MODE_MIN"; - case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE: - return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"; - default: - return "Unhandled VkSamplerReductionMode"; - } -} - -static inline const char* string_VkSemaphoreType(VkSemaphoreType input_value) -{ - switch (input_value) - { - case VK_SEMAPHORE_TYPE_BINARY: - return "VK_SEMAPHORE_TYPE_BINARY"; - case VK_SEMAPHORE_TYPE_TIMELINE: - return "VK_SEMAPHORE_TYPE_TIMELINE"; - default: - return "Unhandled VkSemaphoreType"; - } -} - -static inline const char* string_VkSemaphoreWaitFlagBits(VkSemaphoreWaitFlagBits input_value) -{ - switch (input_value) - { - case VK_SEMAPHORE_WAIT_ANY_BIT: - return "VK_SEMAPHORE_WAIT_ANY_BIT"; - default: - return "Unhandled VkSemaphoreWaitFlagBits"; - } -} - -static inline std::string string_VkSemaphoreWaitFlags(VkSemaphoreWaitFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSemaphoreWaitFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSemaphoreWaitFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPipelineCreationFeedbackFlagBits(VkPipelineCreationFeedbackFlagBits input_value) -{ - switch (input_value) - { - case VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT: - return "VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT"; - case VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT: - return "VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT"; - case VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT: - return "VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT"; - default: - return "Unhandled VkPipelineCreationFeedbackFlagBits"; - } -} - -static inline std::string string_VkPipelineCreationFeedbackFlags(VkPipelineCreationFeedbackFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineCreationFeedbackFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineCreationFeedbackFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkToolPurposeFlagBits(VkToolPurposeFlagBits input_value) -{ - switch (input_value) - { - case VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT: - return "VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"; - case VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT: - return "VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"; - case VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT: - return "VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"; - case VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT: - return "VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"; - case VK_TOOL_PURPOSE_PROFILING_BIT: - return "VK_TOOL_PURPOSE_PROFILING_BIT"; - case VK_TOOL_PURPOSE_TRACING_BIT: - return "VK_TOOL_PURPOSE_TRACING_BIT"; - case VK_TOOL_PURPOSE_VALIDATION_BIT: - return "VK_TOOL_PURPOSE_VALIDATION_BIT"; - default: - return "Unhandled VkToolPurposeFlagBits"; - } -} - -static inline std::string string_VkToolPurposeFlags(VkToolPurposeFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkToolPurposeFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkToolPurposeFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkPipelineStageFlagBits2(uint64_t input_value) -{ - switch (input_value) - { - case VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR: - return "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"; - case VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR: - return "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR"; - case VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT: - return "VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT"; - case VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT: - return "VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT"; - case VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT: - return "VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT"; - case VK_PIPELINE_STAGE_2_BLIT_BIT: - return "VK_PIPELINE_STAGE_2_BLIT_BIT"; - case VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT: - return "VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT"; - case VK_PIPELINE_STAGE_2_CLEAR_BIT: - return "VK_PIPELINE_STAGE_2_CLEAR_BIT"; - case VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI: - return "VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"; - case VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT: - return "VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"; - case VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV: - return "VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"; - case VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT: - return "VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT"; - case VK_PIPELINE_STAGE_2_COPY_BIT: - return "VK_PIPELINE_STAGE_2_COPY_BIT"; - case VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT: - return "VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT"; - case VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT: - return "VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT"; - case VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT: - return "VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT"; - case VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_HOST_BIT: - return "VK_PIPELINE_STAGE_2_HOST_BIT"; - case VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT: - return "VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT"; - case VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI: - return "VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI"; - case VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT: - return "VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"; - case VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT: - return "VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT"; - case VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT: - return "VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT"; - case VK_PIPELINE_STAGE_2_NONE: - return "VK_PIPELINE_STAGE_2_NONE"; - case VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV: - return "VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV"; - case VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT: - return "VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT"; - case VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR: - return "VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR"; - case VK_PIPELINE_STAGE_2_RESOLVE_BIT: - return "VK_PIPELINE_STAGE_2_RESOLVE_BIT"; - case VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI: - return "VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI"; - case VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT: - return "VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT"; - case VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT: - return "VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT"; - case VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT: - return "VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"; - case VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT: - return "VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"; - case VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT: - return "VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT"; - case VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR: - return "VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR: - return "VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkPipelineStageFlagBits2"; - } -} - -static inline std::string string_VkPipelineStageFlags2(VkPipelineStageFlags2 input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineStageFlagBits2(static_cast(1ULL << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineStageFlagBits2(static_cast(0))); - return ret; -} - -static inline const char* string_VkAccessFlagBits2(uint64_t input_value) -{ - switch (input_value) - { - case VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR: - return "VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR"; - case VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR: - return "VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"; - case VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT: - return "VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT"; - case VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT: - return "VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"; - case VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV: - return "VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV"; - case VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV: - return "VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV"; - case VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT: - return "VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT"; - case VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT: - return "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT"; - case VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT: - return "VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT"; - case VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT: - return "VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"; - case VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR: - return "VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"; - case VK_ACCESS_2_HOST_READ_BIT: - return "VK_ACCESS_2_HOST_READ_BIT"; - case VK_ACCESS_2_HOST_WRITE_BIT: - return "VK_ACCESS_2_HOST_WRITE_BIT"; - case VK_ACCESS_2_INDEX_READ_BIT: - return "VK_ACCESS_2_INDEX_READ_BIT"; - case VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT: - return "VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT"; - case VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT: - return "VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT"; - case VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI: - return "VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI"; - case VK_ACCESS_2_MEMORY_READ_BIT: - return "VK_ACCESS_2_MEMORY_READ_BIT"; - case VK_ACCESS_2_MEMORY_WRITE_BIT: - return "VK_ACCESS_2_MEMORY_WRITE_BIT"; - case VK_ACCESS_2_MICROMAP_READ_BIT_EXT: - return "VK_ACCESS_2_MICROMAP_READ_BIT_EXT"; - case VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT: - return "VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT"; - case VK_ACCESS_2_NONE: - return "VK_ACCESS_2_NONE"; - case VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV: - return "VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV"; - case VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV: - return "VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV"; - case VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR: - return "VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR"; - case VK_ACCESS_2_SHADER_READ_BIT: - return "VK_ACCESS_2_SHADER_READ_BIT"; - case VK_ACCESS_2_SHADER_SAMPLED_READ_BIT: - return "VK_ACCESS_2_SHADER_SAMPLED_READ_BIT"; - case VK_ACCESS_2_SHADER_STORAGE_READ_BIT: - return "VK_ACCESS_2_SHADER_STORAGE_READ_BIT"; - case VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT: - return "VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT"; - case VK_ACCESS_2_SHADER_WRITE_BIT: - return "VK_ACCESS_2_SHADER_WRITE_BIT"; - case VK_ACCESS_2_TRANSFER_READ_BIT: - return "VK_ACCESS_2_TRANSFER_READ_BIT"; - case VK_ACCESS_2_TRANSFER_WRITE_BIT: - return "VK_ACCESS_2_TRANSFER_WRITE_BIT"; - case VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT: - return "VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"; - case VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT: - return "VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"; - case VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT: - return "VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"; - case VK_ACCESS_2_UNIFORM_READ_BIT: - return "VK_ACCESS_2_UNIFORM_READ_BIT"; - case VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT: - return "VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT"; - case VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR: - return "VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR"; - case VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR: - return "VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR: - return "VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR: - return "VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkAccessFlagBits2"; - } -} - -static inline std::string string_VkAccessFlags2(VkAccessFlags2 input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkAccessFlagBits2(static_cast(1ULL << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkAccessFlagBits2(static_cast(0))); - return ret; -} - -static inline const char* string_VkSubmitFlagBits(VkSubmitFlagBits input_value) -{ - switch (input_value) - { - case VK_SUBMIT_PROTECTED_BIT: - return "VK_SUBMIT_PROTECTED_BIT"; - default: - return "Unhandled VkSubmitFlagBits"; - } -} - -static inline std::string string_VkSubmitFlags(VkSubmitFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSubmitFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSubmitFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkRenderingFlagBits(VkRenderingFlagBits input_value) -{ - switch (input_value) - { - case VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT: - return "VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT"; - case VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT: - return "VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT"; - case VK_RENDERING_RESUMING_BIT: - return "VK_RENDERING_RESUMING_BIT"; - case VK_RENDERING_SUSPENDING_BIT: - return "VK_RENDERING_SUSPENDING_BIT"; - default: - return "Unhandled VkRenderingFlagBits"; - } -} - -static inline std::string string_VkRenderingFlags(VkRenderingFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkRenderingFlagBits(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkRenderingFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkFormatFeatureFlagBits2(uint64_t input_value) -{ - switch (input_value) - { - case VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR: - return "VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"; - case VK_FORMAT_FEATURE_2_BLIT_DST_BIT: - return "VK_FORMAT_FEATURE_2_BLIT_DST_BIT"; - case VK_FORMAT_FEATURE_2_BLIT_SRC_BIT: - return "VK_FORMAT_FEATURE_2_BLIT_SRC_BIT"; - case VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM"; - case VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM"; - case VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT: - return "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT"; - case VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT: - return "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT"; - case VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT: - return "VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT"; - case VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT: - return "VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT"; - case VK_FORMAT_FEATURE_2_DISJOINT_BIT: - return "VK_FORMAT_FEATURE_2_DISJOINT_BIT"; - case VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT: - return "VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT"; - case VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV: - return "VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV"; - case VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT: - return "VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT"; - case VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV: - return "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV"; - case VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV: - return "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV"; - case VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV: - return "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT"; - case VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT: - return "VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT"; - case VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT: - return "VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT"; - case VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT: - return "VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT"; - case VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT: - return "VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT"; - case VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR"; - case VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM"; - case VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM"; - default: - return "Unhandled VkFormatFeatureFlagBits2"; - } -} - -static inline std::string string_VkFormatFeatureFlags2(VkFormatFeatureFlags2 input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFormatFeatureFlagBits2(static_cast(1ULL << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFormatFeatureFlagBits2(static_cast(0))); - return ret; -} - -static inline const char* string_VkSurfaceTransformFlagBitsKHR(VkSurfaceTransformFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR: - return "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"; - case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR: - return "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"; - case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR: - return "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"; - case VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR: - return "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"; - case VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR: - return "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"; - case VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR: - return "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"; - case VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR: - return "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"; - case VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR: - return "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"; - case VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR: - return "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"; - default: - return "Unhandled VkSurfaceTransformFlagBitsKHR"; - } -} - -static inline std::string string_VkSurfaceTransformFlagsKHR(VkSurfaceTransformFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSurfaceTransformFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSurfaceTransformFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkPresentModeKHR(VkPresentModeKHR input_value) -{ - switch (input_value) - { - case VK_PRESENT_MODE_FIFO_KHR: - return "VK_PRESENT_MODE_FIFO_KHR"; - case VK_PRESENT_MODE_FIFO_RELAXED_KHR: - return "VK_PRESENT_MODE_FIFO_RELAXED_KHR"; - case VK_PRESENT_MODE_IMMEDIATE_KHR: - return "VK_PRESENT_MODE_IMMEDIATE_KHR"; - case VK_PRESENT_MODE_MAILBOX_KHR: - return "VK_PRESENT_MODE_MAILBOX_KHR"; - case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR: - return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"; - case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR: - return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"; - default: - return "Unhandled VkPresentModeKHR"; - } -} - -static inline const char* string_VkColorSpaceKHR(VkColorSpaceKHR input_value) -{ - switch (input_value) - { - case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT: - return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"; - case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT: - return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"; - case VK_COLOR_SPACE_BT2020_LINEAR_EXT: - return "VK_COLOR_SPACE_BT2020_LINEAR_EXT"; - case VK_COLOR_SPACE_BT709_LINEAR_EXT: - return "VK_COLOR_SPACE_BT709_LINEAR_EXT"; - case VK_COLOR_SPACE_BT709_NONLINEAR_EXT: - return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"; - case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT: - return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"; - case VK_COLOR_SPACE_DISPLAY_NATIVE_AMD: - return "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD"; - case VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT: - return "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"; - case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT: - return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"; - case VK_COLOR_SPACE_DOLBYVISION_EXT: - return "VK_COLOR_SPACE_DOLBYVISION_EXT"; - case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT: - return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"; - case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT: - return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"; - case VK_COLOR_SPACE_HDR10_HLG_EXT: - return "VK_COLOR_SPACE_HDR10_HLG_EXT"; - case VK_COLOR_SPACE_HDR10_ST2084_EXT: - return "VK_COLOR_SPACE_HDR10_ST2084_EXT"; - case VK_COLOR_SPACE_PASS_THROUGH_EXT: - return "VK_COLOR_SPACE_PASS_THROUGH_EXT"; - case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR: - return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"; - default: - return "Unhandled VkColorSpaceKHR"; - } -} - -static inline const char* string_VkCompositeAlphaFlagBitsKHR(VkCompositeAlphaFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR: - return "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"; - case VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR: - return "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"; - case VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR: - return "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"; - case VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR: - return "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"; - default: - return "Unhandled VkCompositeAlphaFlagBitsKHR"; - } -} - -static inline std::string string_VkCompositeAlphaFlagsKHR(VkCompositeAlphaFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkCompositeAlphaFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkCompositeAlphaFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkSwapchainCreateFlagBitsKHR(VkSwapchainCreateFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT: - return "VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT"; - case VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR: - return "VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"; - case VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR: - return "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"; - case VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR: - return "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"; - default: - return "Unhandled VkSwapchainCreateFlagBitsKHR"; - } -} - -static inline std::string string_VkSwapchainCreateFlagsKHR(VkSwapchainCreateFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSwapchainCreateFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSwapchainCreateFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkDeviceGroupPresentModeFlagBitsKHR(VkDeviceGroupPresentModeFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR: - return "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"; - case VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR: - return "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"; - case VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR: - return "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"; - case VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR: - return "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"; - default: - return "Unhandled VkDeviceGroupPresentModeFlagBitsKHR"; - } -} - -static inline std::string string_VkDeviceGroupPresentModeFlagsKHR(VkDeviceGroupPresentModeFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDeviceGroupPresentModeFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDeviceGroupPresentModeFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkDisplayPlaneAlphaFlagBitsKHR(VkDisplayPlaneAlphaFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR: - return "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"; - case VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR: - return "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"; - case VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR: - return "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"; - case VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR: - return "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"; - default: - return "Unhandled VkDisplayPlaneAlphaFlagBitsKHR"; - } -} - -static inline std::string string_VkDisplayPlaneAlphaFlagsKHR(VkDisplayPlaneAlphaFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDisplayPlaneAlphaFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDisplayPlaneAlphaFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoCodecOperationFlagBitsKHR(VkVideoCodecOperationFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR: - return "VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR"; - case VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR: - return "VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT: - return "VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT: - return "VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT"; -#endif // VK_ENABLE_BETA_EXTENSIONS - case VK_VIDEO_CODEC_OPERATION_NONE_KHR: - return "VK_VIDEO_CODEC_OPERATION_NONE_KHR"; - default: - return "Unhandled VkVideoCodecOperationFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoCodecOperationFlagsKHR(VkVideoCodecOperationFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoCodecOperationFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoCodecOperationFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoChromaSubsamplingFlagBitsKHR(VkVideoChromaSubsamplingFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR: - return "VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR"; - case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR: - return "VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR"; - case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR: - return "VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR"; - case VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR: - return "VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR"; - case VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR: - return "VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR"; - default: - return "Unhandled VkVideoChromaSubsamplingFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoChromaSubsamplingFlagsKHR(VkVideoChromaSubsamplingFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoChromaSubsamplingFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoChromaSubsamplingFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoComponentBitDepthFlagBitsKHR(VkVideoComponentBitDepthFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR: - return "VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR"; - case VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR: - return "VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR"; - case VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR: - return "VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR"; - case VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR: - return "VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR"; - default: - return "Unhandled VkVideoComponentBitDepthFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoComponentBitDepthFlagsKHR(VkVideoComponentBitDepthFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoComponentBitDepthFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoComponentBitDepthFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoCapabilityFlagBitsKHR(VkVideoCapabilityFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR: - return "VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR"; - case VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR: - return "VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR"; - default: - return "Unhandled VkVideoCapabilityFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoCapabilityFlagsKHR(VkVideoCapabilityFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoCapabilityFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoCapabilityFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoSessionCreateFlagBitsKHR(VkVideoSessionCreateFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR: - return "VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR"; - default: - return "Unhandled VkVideoSessionCreateFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoSessionCreateFlagsKHR(VkVideoSessionCreateFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoSessionCreateFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoSessionCreateFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoCodingControlFlagBitsKHR(VkVideoCodingControlFlagBitsKHR input_value) -{ - switch (input_value) - { -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR: - return "VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR: - return "VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - case VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR: - return "VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR"; - default: - return "Unhandled VkVideoCodingControlFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoCodingControlFlagsKHR(VkVideoCodingControlFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoCodingControlFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoCodingControlFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkQueryResultStatusKHR(VkQueryResultStatusKHR input_value) -{ - switch (input_value) - { - case VK_QUERY_RESULT_STATUS_COMPLETE_KHR: - return "VK_QUERY_RESULT_STATUS_COMPLETE_KHR"; - case VK_QUERY_RESULT_STATUS_ERROR_KHR: - return "VK_QUERY_RESULT_STATUS_ERROR_KHR"; - case VK_QUERY_RESULT_STATUS_NOT_READY_KHR: - return "VK_QUERY_RESULT_STATUS_NOT_READY_KHR"; - default: - return "Unhandled VkQueryResultStatusKHR"; - } -} - -static inline const char* string_VkVideoDecodeCapabilityFlagBitsKHR(VkVideoDecodeCapabilityFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR: - return "VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR"; - case VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR: - return "VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR"; - default: - return "Unhandled VkVideoDecodeCapabilityFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoDecodeCapabilityFlagsKHR(VkVideoDecodeCapabilityFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoDecodeCapabilityFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoDecodeCapabilityFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoDecodeUsageFlagBitsKHR(VkVideoDecodeUsageFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_DECODE_USAGE_DEFAULT_KHR: - return "VK_VIDEO_DECODE_USAGE_DEFAULT_KHR"; - case VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR: - return "VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR"; - case VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR: - return "VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR"; - case VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR: - return "VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR"; - default: - return "Unhandled VkVideoDecodeUsageFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoDecodeUsageFlagsKHR(VkVideoDecodeUsageFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoDecodeUsageFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoDecodeUsageFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkVideoDecodeH264PictureLayoutFlagBitsKHR(VkVideoDecodeH264PictureLayoutFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR: - return "VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR"; - case VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR: - return "VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR"; - case VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR: - return "VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR"; - default: - return "Unhandled VkVideoDecodeH264PictureLayoutFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoDecodeH264PictureLayoutFlagsKHR(VkVideoDecodeH264PictureLayoutFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoDecodeH264PictureLayoutFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoDecodeH264PictureLayoutFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkRenderingFlagBitsKHR(VkRenderingFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT: - return "VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT"; - case VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT: - return "VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT"; - case VK_RENDERING_RESUMING_BIT: - return "VK_RENDERING_RESUMING_BIT"; - case VK_RENDERING_SUSPENDING_BIT: - return "VK_RENDERING_SUSPENDING_BIT"; - default: - return "Unhandled VkRenderingFlagBitsKHR"; - } -} - -static inline std::string string_VkRenderingFlagsKHR(VkRenderingFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkRenderingFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkRenderingFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkPeerMemoryFeatureFlagBitsKHR(VkPeerMemoryFeatureFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_PEER_MEMORY_FEATURE_COPY_DST_BIT: - return "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"; - case VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT: - return "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"; - case VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT: - return "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"; - case VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT: - return "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"; - default: - return "Unhandled VkPeerMemoryFeatureFlagBitsKHR"; - } -} - -static inline std::string string_VkPeerMemoryFeatureFlagsKHR(VkPeerMemoryFeatureFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPeerMemoryFeatureFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPeerMemoryFeatureFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkMemoryAllocateFlagBitsKHR(VkMemoryAllocateFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT: - return "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"; - case VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT: - return "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"; - case VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT: - return "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"; - default: - return "Unhandled VkMemoryAllocateFlagBitsKHR"; - } -} - -static inline std::string string_VkMemoryAllocateFlagsKHR(VkMemoryAllocateFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkMemoryAllocateFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkMemoryAllocateFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalMemoryHandleTypeFlagBitsKHR(VkExternalMemoryHandleTypeFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"; - default: - return "Unhandled VkExternalMemoryHandleTypeFlagBitsKHR"; - } -} - -static inline std::string string_VkExternalMemoryHandleTypeFlagsKHR(VkExternalMemoryHandleTypeFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalMemoryHandleTypeFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalMemoryHandleTypeFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalMemoryFeatureFlagBitsKHR(VkExternalMemoryFeatureFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT: - return "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"; - case VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT: - return "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"; - case VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT: - return "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"; - default: - return "Unhandled VkExternalMemoryFeatureFlagBitsKHR"; - } -} - -static inline std::string string_VkExternalMemoryFeatureFlagsKHR(VkExternalMemoryFeatureFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalMemoryFeatureFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalMemoryFeatureFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalSemaphoreHandleTypeFlagBitsKHR(VkExternalSemaphoreHandleTypeFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"; - case VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA: - return "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"; - default: - return "Unhandled VkExternalSemaphoreHandleTypeFlagBitsKHR"; - } -} - -static inline std::string string_VkExternalSemaphoreHandleTypeFlagsKHR(VkExternalSemaphoreHandleTypeFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalSemaphoreHandleTypeFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalSemaphoreHandleTypeFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalSemaphoreFeatureFlagBitsKHR(VkExternalSemaphoreFeatureFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT: - return "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"; - case VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT: - return "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"; - default: - return "Unhandled VkExternalSemaphoreFeatureFlagBitsKHR"; - } -} - -static inline std::string string_VkExternalSemaphoreFeatureFlagsKHR(VkExternalSemaphoreFeatureFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalSemaphoreFeatureFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalSemaphoreFeatureFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkSemaphoreImportFlagBitsKHR(VkSemaphoreImportFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_SEMAPHORE_IMPORT_TEMPORARY_BIT: - return "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"; - default: - return "Unhandled VkSemaphoreImportFlagBitsKHR"; - } -} - -static inline std::string string_VkSemaphoreImportFlagsKHR(VkSemaphoreImportFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSemaphoreImportFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSemaphoreImportFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkDescriptorUpdateTemplateTypeKHR(VkDescriptorUpdateTemplateTypeKHR input_value) -{ - switch (input_value) - { - case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET: - return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"; - case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR: - return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"; - default: - return "Unhandled VkDescriptorUpdateTemplateTypeKHR"; - } -} - -static inline const char* string_VkExternalFenceHandleTypeFlagBitsKHR(VkExternalFenceHandleTypeFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"; - case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"; - case VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"; - case VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT: - return "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"; - default: - return "Unhandled VkExternalFenceHandleTypeFlagBitsKHR"; - } -} - -static inline std::string string_VkExternalFenceHandleTypeFlagsKHR(VkExternalFenceHandleTypeFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalFenceHandleTypeFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalFenceHandleTypeFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalFenceFeatureFlagBitsKHR(VkExternalFenceFeatureFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT: - return "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"; - case VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT: - return "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"; - default: - return "Unhandled VkExternalFenceFeatureFlagBitsKHR"; - } -} - -static inline std::string string_VkExternalFenceFeatureFlagsKHR(VkExternalFenceFeatureFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalFenceFeatureFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalFenceFeatureFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkFenceImportFlagBitsKHR(VkFenceImportFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_FENCE_IMPORT_TEMPORARY_BIT: - return "VK_FENCE_IMPORT_TEMPORARY_BIT"; - default: - return "Unhandled VkFenceImportFlagBitsKHR"; - } -} - -static inline std::string string_VkFenceImportFlagsKHR(VkFenceImportFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFenceImportFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFenceImportFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkPerformanceCounterUnitKHR(VkPerformanceCounterUnitKHR input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"; - case VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR: - return "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR"; - default: - return "Unhandled VkPerformanceCounterUnitKHR"; - } -} - -static inline const char* string_VkPerformanceCounterScopeKHR(VkPerformanceCounterScopeKHR input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR: - return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"; - case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR: - return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"; - case VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR: - return "VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"; - default: - return "Unhandled VkPerformanceCounterScopeKHR"; - } -} - -static inline const char* string_VkPerformanceCounterStorageKHR(VkPerformanceCounterStorageKHR input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR: - return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR"; - case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR: - return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"; - case VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR: - return "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR"; - case VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR: - return "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR"; - case VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR: - return "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR"; - case VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR: - return "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR"; - default: - return "Unhandled VkPerformanceCounterStorageKHR"; - } -} - -static inline const char* string_VkPerformanceCounterDescriptionFlagBitsKHR(VkPerformanceCounterDescriptionFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR: - return "VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"; - case VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR: - return "VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"; - default: - return "Unhandled VkPerformanceCounterDescriptionFlagBitsKHR"; - } -} - -static inline std::string string_VkPerformanceCounterDescriptionFlagsKHR(VkPerformanceCounterDescriptionFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPerformanceCounterDescriptionFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPerformanceCounterDescriptionFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkPointClippingBehaviorKHR(VkPointClippingBehaviorKHR input_value) -{ - switch (input_value) - { - case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES: - return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"; - case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY: - return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"; - default: - return "Unhandled VkPointClippingBehaviorKHR"; - } -} - -static inline const char* string_VkTessellationDomainOriginKHR(VkTessellationDomainOriginKHR input_value) -{ - switch (input_value) - { - case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT: - return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"; - case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT: - return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"; - default: - return "Unhandled VkTessellationDomainOriginKHR"; - } -} - -static inline const char* string_VkSamplerYcbcrModelConversionKHR(VkSamplerYcbcrModelConversionKHR input_value) -{ - switch (input_value) - { - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"; - case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY: - return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"; - default: - return "Unhandled VkSamplerYcbcrModelConversionKHR"; - } -} - -static inline const char* string_VkSamplerYcbcrRangeKHR(VkSamplerYcbcrRangeKHR input_value) -{ - switch (input_value) - { - case VK_SAMPLER_YCBCR_RANGE_ITU_FULL: - return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"; - case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW: - return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"; - default: - return "Unhandled VkSamplerYcbcrRangeKHR"; - } -} - -static inline const char* string_VkChromaLocationKHR(VkChromaLocationKHR input_value) -{ - switch (input_value) - { - case VK_CHROMA_LOCATION_COSITED_EVEN: - return "VK_CHROMA_LOCATION_COSITED_EVEN"; - case VK_CHROMA_LOCATION_MIDPOINT: - return "VK_CHROMA_LOCATION_MIDPOINT"; - default: - return "Unhandled VkChromaLocationKHR"; - } -} - -static inline const char* string_VkQueueGlobalPriorityKHR(VkQueueGlobalPriorityKHR input_value) -{ - switch (input_value) - { - case VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR"; - case VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR"; - case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR"; - case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR"; - default: - return "Unhandled VkQueueGlobalPriorityKHR"; - } -} - -static inline const char* string_VkDriverIdKHR(VkDriverIdKHR input_value) -{ - switch (input_value) - { - case VK_DRIVER_ID_AMD_OPEN_SOURCE: - return "VK_DRIVER_ID_AMD_OPEN_SOURCE"; - case VK_DRIVER_ID_AMD_PROPRIETARY: - return "VK_DRIVER_ID_AMD_PROPRIETARY"; - case VK_DRIVER_ID_ARM_PROPRIETARY: - return "VK_DRIVER_ID_ARM_PROPRIETARY"; - case VK_DRIVER_ID_BROADCOM_PROPRIETARY: - return "VK_DRIVER_ID_BROADCOM_PROPRIETARY"; - case VK_DRIVER_ID_COREAVI_PROPRIETARY: - return "VK_DRIVER_ID_COREAVI_PROPRIETARY"; - case VK_DRIVER_ID_GGP_PROPRIETARY: - return "VK_DRIVER_ID_GGP_PROPRIETARY"; - case VK_DRIVER_ID_GOOGLE_SWIFTSHADER: - return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER"; - case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA: - return "VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA"; - case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: - return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY"; - case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA: - return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA"; - case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS: - return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"; - case VK_DRIVER_ID_JUICE_PROPRIETARY: - return "VK_DRIVER_ID_JUICE_PROPRIETARY"; - case VK_DRIVER_ID_MESA_DOZEN: - return "VK_DRIVER_ID_MESA_DOZEN"; - case VK_DRIVER_ID_MESA_LLVMPIPE: - return "VK_DRIVER_ID_MESA_LLVMPIPE"; - case VK_DRIVER_ID_MESA_NVK: - return "VK_DRIVER_ID_MESA_NVK"; - case VK_DRIVER_ID_MESA_PANVK: - return "VK_DRIVER_ID_MESA_PANVK"; - case VK_DRIVER_ID_MESA_RADV: - return "VK_DRIVER_ID_MESA_RADV"; - case VK_DRIVER_ID_MESA_TURNIP: - return "VK_DRIVER_ID_MESA_TURNIP"; - case VK_DRIVER_ID_MESA_V3DV: - return "VK_DRIVER_ID_MESA_V3DV"; - case VK_DRIVER_ID_MESA_VENUS: - return "VK_DRIVER_ID_MESA_VENUS"; - case VK_DRIVER_ID_MOLTENVK: - return "VK_DRIVER_ID_MOLTENVK"; - case VK_DRIVER_ID_NVIDIA_PROPRIETARY: - return "VK_DRIVER_ID_NVIDIA_PROPRIETARY"; - case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: - return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY"; - case VK_DRIVER_ID_SAMSUNG_PROPRIETARY: - return "VK_DRIVER_ID_SAMSUNG_PROPRIETARY"; - case VK_DRIVER_ID_VERISILICON_PROPRIETARY: - return "VK_DRIVER_ID_VERISILICON_PROPRIETARY"; - default: - return "Unhandled VkDriverIdKHR"; - } -} - -static inline const char* string_VkShaderFloatControlsIndependenceKHR(VkShaderFloatControlsIndependenceKHR input_value) -{ - switch (input_value) - { - case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY: - return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"; - case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL: - return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"; - case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE: - return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"; - default: - return "Unhandled VkShaderFloatControlsIndependenceKHR"; - } -} - -static inline const char* string_VkResolveModeFlagBitsKHR(VkResolveModeFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_RESOLVE_MODE_AVERAGE_BIT: - return "VK_RESOLVE_MODE_AVERAGE_BIT"; - case VK_RESOLVE_MODE_MAX_BIT: - return "VK_RESOLVE_MODE_MAX_BIT"; - case VK_RESOLVE_MODE_MIN_BIT: - return "VK_RESOLVE_MODE_MIN_BIT"; - case VK_RESOLVE_MODE_NONE: - return "VK_RESOLVE_MODE_NONE"; - case VK_RESOLVE_MODE_SAMPLE_ZERO_BIT: - return "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"; - default: - return "Unhandled VkResolveModeFlagBitsKHR"; - } -} - -static inline std::string string_VkResolveModeFlagsKHR(VkResolveModeFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkResolveModeFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkResolveModeFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkSemaphoreTypeKHR(VkSemaphoreTypeKHR input_value) -{ - switch (input_value) - { - case VK_SEMAPHORE_TYPE_BINARY: - return "VK_SEMAPHORE_TYPE_BINARY"; - case VK_SEMAPHORE_TYPE_TIMELINE: - return "VK_SEMAPHORE_TYPE_TIMELINE"; - default: - return "Unhandled VkSemaphoreTypeKHR"; - } -} - -static inline const char* string_VkSemaphoreWaitFlagBitsKHR(VkSemaphoreWaitFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_SEMAPHORE_WAIT_ANY_BIT: - return "VK_SEMAPHORE_WAIT_ANY_BIT"; - default: - return "Unhandled VkSemaphoreWaitFlagBitsKHR"; - } -} - -static inline std::string string_VkSemaphoreWaitFlagsKHR(VkSemaphoreWaitFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSemaphoreWaitFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSemaphoreWaitFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkFragmentShadingRateCombinerOpKHR(VkFragmentShadingRateCombinerOpKHR input_value) -{ - switch (input_value) - { - case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR: - return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR"; - case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR: - return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR"; - case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR: - return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR"; - case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR: - return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR"; - case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR: - return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR"; - default: - return "Unhandled VkFragmentShadingRateCombinerOpKHR"; - } -} - -static inline const char* string_VkPipelineExecutableStatisticFormatKHR(VkPipelineExecutableStatisticFormatKHR input_value) -{ - switch (input_value) - { - case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR: - return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"; - case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR: - return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"; - case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR: - return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"; - case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR: - return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"; - default: - return "Unhandled VkPipelineExecutableStatisticFormatKHR"; - } -} - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeCapabilityFlagBitsKHR(VkVideoEncodeCapabilityFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR: - return "VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR"; - default: - return "Unhandled VkVideoEncodeCapabilityFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoEncodeCapabilityFlagsKHR(VkVideoEncodeCapabilityFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeCapabilityFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeCapabilityFlagBitsKHR(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeRateControlModeFlagBitsKHR(VkVideoEncodeRateControlModeFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR: - return "VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR"; - case VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR: - return "VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR"; - case VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR: - return "VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR"; - default: - return "Unhandled VkVideoEncodeRateControlModeFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoEncodeRateControlModeFlagsKHR(VkVideoEncodeRateControlModeFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeRateControlModeFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeRateControlModeFlagBitsKHR(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeUsageFlagBitsKHR(VkVideoEncodeUsageFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR: - return "VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR"; - case VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR: - return "VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR"; - case VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR: - return "VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR"; - case VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR: - return "VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR"; - case VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR: - return "VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR"; - default: - return "Unhandled VkVideoEncodeUsageFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoEncodeUsageFlagsKHR(VkVideoEncodeUsageFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeUsageFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeUsageFlagBitsKHR(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeContentFlagBitsKHR(VkVideoEncodeContentFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR: - return "VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR"; - case VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR: - return "VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR"; - case VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR: - return "VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR"; - case VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR: - return "VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR"; - default: - return "Unhandled VkVideoEncodeContentFlagBitsKHR"; - } -} - -static inline std::string string_VkVideoEncodeContentFlagsKHR(VkVideoEncodeContentFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeContentFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeContentFlagBitsKHR(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeTuningModeKHR(VkVideoEncodeTuningModeKHR input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR: - return "VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR"; - case VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR: - return "VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR"; - case VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR: - return "VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR"; - case VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR: - return "VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR"; - case VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR: - return "VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR"; - default: - return "Unhandled VkVideoEncodeTuningModeKHR"; - } -} -#endif // VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkPipelineStageFlagBits2KHR(uint64_t input_value) -{ - switch (input_value) - { - case VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR: - return "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"; - case VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR: - return "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR"; - case VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT: - return "VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT"; - case VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT: - return "VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT"; - case VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT: - return "VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT"; - case VK_PIPELINE_STAGE_2_BLIT_BIT: - return "VK_PIPELINE_STAGE_2_BLIT_BIT"; - case VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT: - return "VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT"; - case VK_PIPELINE_STAGE_2_CLEAR_BIT: - return "VK_PIPELINE_STAGE_2_CLEAR_BIT"; - case VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI: - return "VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI"; - case VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT: - return "VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"; - case VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV: - return "VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"; - case VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT: - return "VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT"; - case VK_PIPELINE_STAGE_2_COPY_BIT: - return "VK_PIPELINE_STAGE_2_COPY_BIT"; - case VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT: - return "VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT"; - case VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT: - return "VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT"; - case VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT: - return "VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT"; - case VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_HOST_BIT: - return "VK_PIPELINE_STAGE_2_HOST_BIT"; - case VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT: - return "VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT"; - case VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI: - return "VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI"; - case VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT: - return "VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"; - case VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT: - return "VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT"; - case VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT: - return "VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT"; - case VK_PIPELINE_STAGE_2_NONE: - return "VK_PIPELINE_STAGE_2_NONE"; - case VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV: - return "VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV"; - case VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT: - return "VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT"; - case VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR: - return "VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR"; - case VK_PIPELINE_STAGE_2_RESOLVE_BIT: - return "VK_PIPELINE_STAGE_2_RESOLVE_BIT"; - case VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI: - return "VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI"; - case VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT: - return "VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT"; - case VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT: - return "VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT"; - case VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT: - return "VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT"; - case VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT: - return "VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"; - case VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT: - return "VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT"; - case VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT: - return "VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT"; - case VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR: - return "VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR: - return "VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkPipelineStageFlagBits2KHR"; - } -} - -static inline std::string string_VkPipelineStageFlags2KHR(VkPipelineStageFlags2KHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineStageFlagBits2KHR(static_cast(1ULL << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineStageFlagBits2KHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkAccessFlagBits2KHR(uint64_t input_value) -{ - switch (input_value) - { - case VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR: - return "VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR"; - case VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR: - return "VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"; - case VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT: - return "VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT"; - case VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT: - return "VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"; - case VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV: - return "VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV"; - case VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV: - return "VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV"; - case VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT: - return "VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT"; - case VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT: - return "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT"; - case VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT: - return "VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT"; - case VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT: - return "VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"; - case VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR: - return "VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"; - case VK_ACCESS_2_HOST_READ_BIT: - return "VK_ACCESS_2_HOST_READ_BIT"; - case VK_ACCESS_2_HOST_WRITE_BIT: - return "VK_ACCESS_2_HOST_WRITE_BIT"; - case VK_ACCESS_2_INDEX_READ_BIT: - return "VK_ACCESS_2_INDEX_READ_BIT"; - case VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT: - return "VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT"; - case VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT: - return "VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT"; - case VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI: - return "VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI"; - case VK_ACCESS_2_MEMORY_READ_BIT: - return "VK_ACCESS_2_MEMORY_READ_BIT"; - case VK_ACCESS_2_MEMORY_WRITE_BIT: - return "VK_ACCESS_2_MEMORY_WRITE_BIT"; - case VK_ACCESS_2_MICROMAP_READ_BIT_EXT: - return "VK_ACCESS_2_MICROMAP_READ_BIT_EXT"; - case VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT: - return "VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT"; - case VK_ACCESS_2_NONE: - return "VK_ACCESS_2_NONE"; - case VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV: - return "VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV"; - case VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV: - return "VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV"; - case VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR: - return "VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR"; - case VK_ACCESS_2_SHADER_READ_BIT: - return "VK_ACCESS_2_SHADER_READ_BIT"; - case VK_ACCESS_2_SHADER_SAMPLED_READ_BIT: - return "VK_ACCESS_2_SHADER_SAMPLED_READ_BIT"; - case VK_ACCESS_2_SHADER_STORAGE_READ_BIT: - return "VK_ACCESS_2_SHADER_STORAGE_READ_BIT"; - case VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT: - return "VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT"; - case VK_ACCESS_2_SHADER_WRITE_BIT: - return "VK_ACCESS_2_SHADER_WRITE_BIT"; - case VK_ACCESS_2_TRANSFER_READ_BIT: - return "VK_ACCESS_2_TRANSFER_READ_BIT"; - case VK_ACCESS_2_TRANSFER_WRITE_BIT: - return "VK_ACCESS_2_TRANSFER_WRITE_BIT"; - case VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT: - return "VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"; - case VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT: - return "VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"; - case VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT: - return "VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"; - case VK_ACCESS_2_UNIFORM_READ_BIT: - return "VK_ACCESS_2_UNIFORM_READ_BIT"; - case VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT: - return "VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT"; - case VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR: - return "VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR"; - case VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR: - return "VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR: - return "VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR: - return "VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - default: - return "Unhandled VkAccessFlagBits2KHR"; - } -} - -static inline std::string string_VkAccessFlags2KHR(VkAccessFlags2KHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkAccessFlagBits2KHR(static_cast(1ULL << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkAccessFlagBits2KHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkSubmitFlagBitsKHR(VkSubmitFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_SUBMIT_PROTECTED_BIT: - return "VK_SUBMIT_PROTECTED_BIT"; - default: - return "Unhandled VkSubmitFlagBitsKHR"; - } -} - -static inline std::string string_VkSubmitFlagsKHR(VkSubmitFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSubmitFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSubmitFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkFormatFeatureFlagBits2KHR(uint64_t input_value) -{ - switch (input_value) - { - case VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR: - return "VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"; - case VK_FORMAT_FEATURE_2_BLIT_DST_BIT: - return "VK_FORMAT_FEATURE_2_BLIT_DST_BIT"; - case VK_FORMAT_FEATURE_2_BLIT_SRC_BIT: - return "VK_FORMAT_FEATURE_2_BLIT_SRC_BIT"; - case VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM"; - case VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM"; - case VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT: - return "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT"; - case VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT: - return "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT"; - case VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT: - return "VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT"; - case VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT: - return "VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT"; - case VK_FORMAT_FEATURE_2_DISJOINT_BIT: - return "VK_FORMAT_FEATURE_2_DISJOINT_BIT"; - case VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT: - return "VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT"; - case VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR: - return "VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"; - case VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV: - return "VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV"; - case VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT: - return "VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT"; - case VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV: - return "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV"; - case VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV: - return "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV"; - case VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV: - return "VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"; - case VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT: - return "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT"; - case VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT: - return "VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT"; - case VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT: - return "VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT"; - case VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT: - return "VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT"; - case VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT: - return "VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT"; - case VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT: - return "VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT"; - case VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR"; - case VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS -#ifdef VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR: - return "VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR"; -#endif // VK_ENABLE_BETA_EXTENSIONS - case VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM"; - case VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM: - return "VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM"; - default: - return "Unhandled VkFormatFeatureFlagBits2KHR"; - } -} - -static inline std::string string_VkFormatFeatureFlags2KHR(VkFormatFeatureFlags2KHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFormatFeatureFlagBits2KHR(static_cast(1ULL << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFormatFeatureFlagBits2KHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkDebugReportFlagBitsEXT(VkDebugReportFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_DEBUG_REPORT_DEBUG_BIT_EXT: - return "VK_DEBUG_REPORT_DEBUG_BIT_EXT"; - case VK_DEBUG_REPORT_ERROR_BIT_EXT: - return "VK_DEBUG_REPORT_ERROR_BIT_EXT"; - case VK_DEBUG_REPORT_INFORMATION_BIT_EXT: - return "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"; - case VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT: - return "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"; - case VK_DEBUG_REPORT_WARNING_BIT_EXT: - return "VK_DEBUG_REPORT_WARNING_BIT_EXT"; - default: - return "Unhandled VkDebugReportFlagBitsEXT"; - } -} - -static inline std::string string_VkDebugReportFlagsEXT(VkDebugReportFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDebugReportFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDebugReportFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkDebugReportObjectTypeEXT(VkDebugReportObjectTypeEXT input_value) -{ - switch (input_value) - { - case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"; - case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT: - return "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"; - default: - return "Unhandled VkDebugReportObjectTypeEXT"; - } -} - -static inline const char* string_VkRasterizationOrderAMD(VkRasterizationOrderAMD input_value) -{ - switch (input_value) - { - case VK_RASTERIZATION_ORDER_RELAXED_AMD: - return "VK_RASTERIZATION_ORDER_RELAXED_AMD"; - case VK_RASTERIZATION_ORDER_STRICT_AMD: - return "VK_RASTERIZATION_ORDER_STRICT_AMD"; - default: - return "Unhandled VkRasterizationOrderAMD"; - } -} - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH264CapabilityFlagBitsEXT(VkVideoEncodeH264CapabilityFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH264CapabilityFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH264CapabilityFlagsEXT(VkVideoEncodeH264CapabilityFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH264CapabilityFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH264CapabilityFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH264InputModeFlagBitsEXT(VkVideoEncodeH264InputModeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH264InputModeFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH264InputModeFlagsEXT(VkVideoEncodeH264InputModeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH264InputModeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH264InputModeFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH264OutputModeFlagBitsEXT(VkVideoEncodeH264OutputModeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT"; - case VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT: - return "VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH264OutputModeFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH264OutputModeFlagsEXT(VkVideoEncodeH264OutputModeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH264OutputModeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH264OutputModeFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH264RateControlStructureEXT(VkVideoEncodeH264RateControlStructureEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT: - return "VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT"; - case VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT: - return "VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT"; - case VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT: - return "VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT"; - default: - return "Unhandled VkVideoEncodeH264RateControlStructureEXT"; - } -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH265CapabilityFlagBitsEXT(VkVideoEncodeH265CapabilityFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH265CapabilityFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH265CapabilityFlagsEXT(VkVideoEncodeH265CapabilityFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH265CapabilityFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH265CapabilityFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH265InputModeFlagBitsEXT(VkVideoEncodeH265InputModeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH265InputModeFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH265InputModeFlagsEXT(VkVideoEncodeH265InputModeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH265InputModeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH265InputModeFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH265OutputModeFlagBitsEXT(VkVideoEncodeH265OutputModeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH265OutputModeFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH265OutputModeFlagsEXT(VkVideoEncodeH265OutputModeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH265OutputModeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH265OutputModeFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH265CtbSizeFlagBitsEXT(VkVideoEncodeH265CtbSizeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH265CtbSizeFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH265CtbSizeFlagsEXT(VkVideoEncodeH265CtbSizeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH265CtbSizeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH265CtbSizeFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH265TransformBlockSizeFlagBitsEXT(VkVideoEncodeH265TransformBlockSizeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT"; - case VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT: - return "VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT"; - default: - return "Unhandled VkVideoEncodeH265TransformBlockSizeFlagBitsEXT"; - } -} - -static inline std::string string_VkVideoEncodeH265TransformBlockSizeFlagsEXT(VkVideoEncodeH265TransformBlockSizeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkVideoEncodeH265TransformBlockSizeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkVideoEncodeH265TransformBlockSizeFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_ENABLE_BETA_EXTENSIONS - - -#ifdef VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkVideoEncodeH265RateControlStructureEXT(VkVideoEncodeH265RateControlStructureEXT input_value) -{ - switch (input_value) - { - case VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT: - return "VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT"; - case VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT: - return "VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT"; - case VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT: - return "VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT"; - default: - return "Unhandled VkVideoEncodeH265RateControlStructureEXT"; - } -} -#endif // VK_ENABLE_BETA_EXTENSIONS - -static inline const char* string_VkShaderInfoTypeAMD(VkShaderInfoTypeAMD input_value) -{ - switch (input_value) - { - case VK_SHADER_INFO_TYPE_BINARY_AMD: - return "VK_SHADER_INFO_TYPE_BINARY_AMD"; - case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD: - return "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"; - case VK_SHADER_INFO_TYPE_STATISTICS_AMD: - return "VK_SHADER_INFO_TYPE_STATISTICS_AMD"; - default: - return "Unhandled VkShaderInfoTypeAMD"; - } -} - -static inline const char* string_VkExternalMemoryHandleTypeFlagBitsNV(VkExternalMemoryHandleTypeFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"; - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV: - return "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"; - default: - return "Unhandled VkExternalMemoryHandleTypeFlagBitsNV"; - } -} - -static inline std::string string_VkExternalMemoryHandleTypeFlagsNV(VkExternalMemoryHandleTypeFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalMemoryHandleTypeFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalMemoryHandleTypeFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkExternalMemoryFeatureFlagBitsNV(VkExternalMemoryFeatureFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV: - return "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"; - case VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV: - return "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"; - case VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV: - return "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"; - default: - return "Unhandled VkExternalMemoryFeatureFlagBitsNV"; - } -} - -static inline std::string string_VkExternalMemoryFeatureFlagsNV(VkExternalMemoryFeatureFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExternalMemoryFeatureFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExternalMemoryFeatureFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkValidationCheckEXT(VkValidationCheckEXT input_value) -{ - switch (input_value) - { - case VK_VALIDATION_CHECK_ALL_EXT: - return "VK_VALIDATION_CHECK_ALL_EXT"; - case VK_VALIDATION_CHECK_SHADERS_EXT: - return "VK_VALIDATION_CHECK_SHADERS_EXT"; - default: - return "Unhandled VkValidationCheckEXT"; - } -} - -static inline const char* string_VkPipelineRobustnessBufferBehaviorEXT(VkPipelineRobustnessBufferBehaviorEXT input_value) -{ - switch (input_value) - { - case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT: - return "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT"; - case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT: - return "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT"; - case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT: - return "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT"; - case VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT: - return "VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT"; - default: - return "Unhandled VkPipelineRobustnessBufferBehaviorEXT"; - } -} - -static inline const char* string_VkPipelineRobustnessImageBehaviorEXT(VkPipelineRobustnessImageBehaviorEXT input_value) -{ - switch (input_value) - { - case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT: - return "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT"; - case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT: - return "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT"; - case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT: - return "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT"; - case VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT: - return "VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT"; - default: - return "Unhandled VkPipelineRobustnessImageBehaviorEXT"; - } -} - -static inline const char* string_VkConditionalRenderingFlagBitsEXT(VkConditionalRenderingFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT: - return "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"; - default: - return "Unhandled VkConditionalRenderingFlagBitsEXT"; - } -} - -static inline std::string string_VkConditionalRenderingFlagsEXT(VkConditionalRenderingFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkConditionalRenderingFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkConditionalRenderingFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkSurfaceCounterFlagBitsEXT(VkSurfaceCounterFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_SURFACE_COUNTER_VBLANK_BIT_EXT: - return "VK_SURFACE_COUNTER_VBLANK_BIT_EXT"; - default: - return "Unhandled VkSurfaceCounterFlagBitsEXT"; - } -} - -static inline std::string string_VkSurfaceCounterFlagsEXT(VkSurfaceCounterFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSurfaceCounterFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSurfaceCounterFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkDisplayPowerStateEXT(VkDisplayPowerStateEXT input_value) -{ - switch (input_value) - { - case VK_DISPLAY_POWER_STATE_OFF_EXT: - return "VK_DISPLAY_POWER_STATE_OFF_EXT"; - case VK_DISPLAY_POWER_STATE_ON_EXT: - return "VK_DISPLAY_POWER_STATE_ON_EXT"; - case VK_DISPLAY_POWER_STATE_SUSPEND_EXT: - return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"; - default: - return "Unhandled VkDisplayPowerStateEXT"; - } -} - -static inline const char* string_VkDeviceEventTypeEXT(VkDeviceEventTypeEXT input_value) -{ - switch (input_value) - { - case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT: - return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"; - default: - return "Unhandled VkDeviceEventTypeEXT"; - } -} - -static inline const char* string_VkDisplayEventTypeEXT(VkDisplayEventTypeEXT input_value) -{ - switch (input_value) - { - case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT: - return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"; - default: - return "Unhandled VkDisplayEventTypeEXT"; - } -} - -static inline const char* string_VkViewportCoordinateSwizzleNV(VkViewportCoordinateSwizzleNV input_value) -{ - switch (input_value) - { - case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"; - case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"; - case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"; - case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"; - case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"; - case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"; - case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"; - case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV: - return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"; - default: - return "Unhandled VkViewportCoordinateSwizzleNV"; - } -} - -static inline const char* string_VkDiscardRectangleModeEXT(VkDiscardRectangleModeEXT input_value) -{ - switch (input_value) - { - case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT: - return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"; - case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT: - return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"; - default: - return "Unhandled VkDiscardRectangleModeEXT"; - } -} - -static inline const char* string_VkConservativeRasterizationModeEXT(VkConservativeRasterizationModeEXT input_value) -{ - switch (input_value) - { - case VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT: - return "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"; - case VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT: - return "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"; - case VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT: - return "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"; - default: - return "Unhandled VkConservativeRasterizationModeEXT"; - } -} - -static inline const char* string_VkDebugUtilsMessageSeverityFlagBitsEXT(VkDebugUtilsMessageSeverityFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"; - case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"; - case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"; - case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"; - default: - return "Unhandled VkDebugUtilsMessageSeverityFlagBitsEXT"; - } -} - -static inline std::string string_VkDebugUtilsMessageSeverityFlagsEXT(VkDebugUtilsMessageSeverityFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDebugUtilsMessageSeverityFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDebugUtilsMessageSeverityFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkDebugUtilsMessageTypeFlagBitsEXT(VkDebugUtilsMessageTypeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT"; - case VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"; - case VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"; - case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT: - return "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"; - default: - return "Unhandled VkDebugUtilsMessageTypeFlagBitsEXT"; - } -} - -static inline std::string string_VkDebugUtilsMessageTypeFlagsEXT(VkDebugUtilsMessageTypeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDebugUtilsMessageTypeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDebugUtilsMessageTypeFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkSamplerReductionModeEXT(VkSamplerReductionModeEXT input_value) -{ - switch (input_value) - { - case VK_SAMPLER_REDUCTION_MODE_MAX: - return "VK_SAMPLER_REDUCTION_MODE_MAX"; - case VK_SAMPLER_REDUCTION_MODE_MIN: - return "VK_SAMPLER_REDUCTION_MODE_MIN"; - case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE: - return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"; - default: - return "Unhandled VkSamplerReductionModeEXT"; - } -} - -static inline const char* string_VkBlendOverlapEXT(VkBlendOverlapEXT input_value) -{ - switch (input_value) - { - case VK_BLEND_OVERLAP_CONJOINT_EXT: - return "VK_BLEND_OVERLAP_CONJOINT_EXT"; - case VK_BLEND_OVERLAP_DISJOINT_EXT: - return "VK_BLEND_OVERLAP_DISJOINT_EXT"; - case VK_BLEND_OVERLAP_UNCORRELATED_EXT: - return "VK_BLEND_OVERLAP_UNCORRELATED_EXT"; - default: - return "Unhandled VkBlendOverlapEXT"; - } -} - -static inline const char* string_VkCoverageModulationModeNV(VkCoverageModulationModeNV input_value) -{ - switch (input_value) - { - case VK_COVERAGE_MODULATION_MODE_ALPHA_NV: - return "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"; - case VK_COVERAGE_MODULATION_MODE_NONE_NV: - return "VK_COVERAGE_MODULATION_MODE_NONE_NV"; - case VK_COVERAGE_MODULATION_MODE_RGBA_NV: - return "VK_COVERAGE_MODULATION_MODE_RGBA_NV"; - case VK_COVERAGE_MODULATION_MODE_RGB_NV: - return "VK_COVERAGE_MODULATION_MODE_RGB_NV"; - default: - return "Unhandled VkCoverageModulationModeNV"; - } -} - -static inline const char* string_VkValidationCacheHeaderVersionEXT(VkValidationCacheHeaderVersionEXT input_value) -{ - switch (input_value) - { - case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT: - return "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"; - default: - return "Unhandled VkValidationCacheHeaderVersionEXT"; - } -} - -static inline const char* string_VkDescriptorBindingFlagBitsEXT(VkDescriptorBindingFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT: - return "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"; - case VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT: - return "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"; - case VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT: - return "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"; - case VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT: - return "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"; - default: - return "Unhandled VkDescriptorBindingFlagBitsEXT"; - } -} - -static inline std::string string_VkDescriptorBindingFlagsEXT(VkDescriptorBindingFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDescriptorBindingFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDescriptorBindingFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkShadingRatePaletteEntryNV(VkShadingRatePaletteEntryNV input_value) -{ - switch (input_value) - { - case VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV"; - case VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV: - return "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"; - default: - return "Unhandled VkShadingRatePaletteEntryNV"; - } -} - -static inline const char* string_VkCoarseSampleOrderTypeNV(VkCoarseSampleOrderTypeNV input_value) -{ - switch (input_value) - { - case VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV: - return "VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV"; - case VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV: - return "VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV"; - case VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV: - return "VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"; - case VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV: - return "VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV"; - default: - return "Unhandled VkCoarseSampleOrderTypeNV"; - } -} - -static inline const char* string_VkRayTracingShaderGroupTypeKHR(VkRayTracingShaderGroupTypeKHR input_value) -{ - switch (input_value) - { - case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR: - return "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"; - case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR: - return "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"; - case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR: - return "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"; - default: - return "Unhandled VkRayTracingShaderGroupTypeKHR"; - } -} - -static inline const char* string_VkRayTracingShaderGroupTypeNV(VkRayTracingShaderGroupTypeNV input_value) -{ - switch (input_value) - { - case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR: - return "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"; - case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR: - return "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"; - case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR: - return "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"; - default: - return "Unhandled VkRayTracingShaderGroupTypeNV"; - } -} - -static inline const char* string_VkGeometryTypeKHR(VkGeometryTypeKHR input_value) -{ - switch (input_value) - { - case VK_GEOMETRY_TYPE_AABBS_KHR: - return "VK_GEOMETRY_TYPE_AABBS_KHR"; - case VK_GEOMETRY_TYPE_INSTANCES_KHR: - return "VK_GEOMETRY_TYPE_INSTANCES_KHR"; - case VK_GEOMETRY_TYPE_TRIANGLES_KHR: - return "VK_GEOMETRY_TYPE_TRIANGLES_KHR"; - default: - return "Unhandled VkGeometryTypeKHR"; - } -} - -static inline const char* string_VkGeometryTypeNV(VkGeometryTypeNV input_value) -{ - switch (input_value) - { - case VK_GEOMETRY_TYPE_AABBS_KHR: - return "VK_GEOMETRY_TYPE_AABBS_KHR"; - case VK_GEOMETRY_TYPE_INSTANCES_KHR: - return "VK_GEOMETRY_TYPE_INSTANCES_KHR"; - case VK_GEOMETRY_TYPE_TRIANGLES_KHR: - return "VK_GEOMETRY_TYPE_TRIANGLES_KHR"; - default: - return "Unhandled VkGeometryTypeNV"; - } -} - -static inline const char* string_VkAccelerationStructureTypeKHR(VkAccelerationStructureTypeKHR input_value) -{ - switch (input_value) - { - case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR: - return "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"; - case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR: - return "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR"; - case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR: - return "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"; - default: - return "Unhandled VkAccelerationStructureTypeKHR"; - } -} - -static inline const char* string_VkAccelerationStructureTypeNV(VkAccelerationStructureTypeNV input_value) -{ - switch (input_value) - { - case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR: - return "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"; - case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR: - return "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR"; - case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR: - return "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"; - default: - return "Unhandled VkAccelerationStructureTypeNV"; - } -} - -static inline const char* string_VkGeometryFlagBitsKHR(VkGeometryFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR: - return "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"; - case VK_GEOMETRY_OPAQUE_BIT_KHR: - return "VK_GEOMETRY_OPAQUE_BIT_KHR"; - default: - return "Unhandled VkGeometryFlagBitsKHR"; - } -} - -static inline std::string string_VkGeometryFlagsKHR(VkGeometryFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkGeometryFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkGeometryFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkGeometryFlagBitsNV(VkGeometryFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR: - return "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"; - case VK_GEOMETRY_OPAQUE_BIT_KHR: - return "VK_GEOMETRY_OPAQUE_BIT_KHR"; - default: - return "Unhandled VkGeometryFlagBitsNV"; - } -} - -static inline std::string string_VkGeometryFlagsNV(VkGeometryFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkGeometryFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkGeometryFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkGeometryInstanceFlagBitsKHR(VkGeometryInstanceFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT: - return "VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT"; - case VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"; - case VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT: - return "VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT"; - case VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"; - case VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"; - case VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"; - default: - return "Unhandled VkGeometryInstanceFlagBitsKHR"; - } -} - -static inline std::string string_VkGeometryInstanceFlagsKHR(VkGeometryInstanceFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkGeometryInstanceFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkGeometryInstanceFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkGeometryInstanceFlagBitsNV(VkGeometryInstanceFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT: - return "VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT"; - case VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"; - case VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT: - return "VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT"; - case VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"; - case VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"; - case VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR: - return "VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"; - default: - return "Unhandled VkGeometryInstanceFlagBitsNV"; - } -} - -static inline std::string string_VkGeometryInstanceFlagsNV(VkGeometryInstanceFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkGeometryInstanceFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkGeometryInstanceFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkBuildAccelerationStructureFlagBitsKHR(VkBuildAccelerationStructureFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV: - return "VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"; - case VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"; - default: - return "Unhandled VkBuildAccelerationStructureFlagBitsKHR"; - } -} - -static inline std::string string_VkBuildAccelerationStructureFlagsKHR(VkBuildAccelerationStructureFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkBuildAccelerationStructureFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkBuildAccelerationStructureFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkBuildAccelerationStructureFlagBitsNV(VkBuildAccelerationStructureFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT"; - case VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV: - return "VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"; - case VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"; - default: - return "Unhandled VkBuildAccelerationStructureFlagBitsNV"; - } -} - -static inline std::string string_VkBuildAccelerationStructureFlagsNV(VkBuildAccelerationStructureFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkBuildAccelerationStructureFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkBuildAccelerationStructureFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkCopyAccelerationStructureModeKHR(VkCopyAccelerationStructureModeKHR input_value) -{ - switch (input_value) - { - case VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"; - case VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"; - case VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR"; - case VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"; - default: - return "Unhandled VkCopyAccelerationStructureModeKHR"; - } -} - -static inline const char* string_VkCopyAccelerationStructureModeNV(VkCopyAccelerationStructureModeNV input_value) -{ - switch (input_value) - { - case VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"; - case VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"; - case VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR"; - case VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR: - return "VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"; - default: - return "Unhandled VkCopyAccelerationStructureModeNV"; - } -} - -static inline const char* string_VkAccelerationStructureMemoryRequirementsTypeNV(VkAccelerationStructureMemoryRequirementsTypeNV input_value) -{ - switch (input_value) - { - case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV: - return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"; - case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV: - return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"; - case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV: - return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"; - default: - return "Unhandled VkAccelerationStructureMemoryRequirementsTypeNV"; - } -} - -static inline const char* string_VkQueueGlobalPriorityEXT(VkQueueGlobalPriorityEXT input_value) -{ - switch (input_value) - { - case VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR"; - case VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR"; - case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR"; - case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR: - return "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR"; - default: - return "Unhandled VkQueueGlobalPriorityEXT"; - } -} - -static inline const char* string_VkTimeDomainEXT(VkTimeDomainEXT input_value) -{ - switch (input_value) - { - case VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT: - return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT"; - case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT: - return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT"; - case VK_TIME_DOMAIN_DEVICE_EXT: - return "VK_TIME_DOMAIN_DEVICE_EXT"; - case VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT: - return "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT"; - default: - return "Unhandled VkTimeDomainEXT"; - } -} - -static inline const char* string_VkMemoryOverallocationBehaviorAMD(VkMemoryOverallocationBehaviorAMD input_value) -{ - switch (input_value) - { - case VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD: - return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD"; - case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD: - return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD"; - case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD: - return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD"; - default: - return "Unhandled VkMemoryOverallocationBehaviorAMD"; - } -} - -static inline const char* string_VkPipelineCreationFeedbackFlagBitsEXT(VkPipelineCreationFeedbackFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT: - return "VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT"; - case VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT: - return "VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT"; - case VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT: - return "VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT"; - default: - return "Unhandled VkPipelineCreationFeedbackFlagBitsEXT"; - } -} - -static inline std::string string_VkPipelineCreationFeedbackFlagsEXT(VkPipelineCreationFeedbackFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineCreationFeedbackFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPipelineCreationFeedbackFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkPerformanceConfigurationTypeINTEL(VkPerformanceConfigurationTypeINTEL input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL: - return "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"; - default: - return "Unhandled VkPerformanceConfigurationTypeINTEL"; - } -} - -static inline const char* string_VkQueryPoolSamplingModeINTEL(VkQueryPoolSamplingModeINTEL input_value) -{ - switch (input_value) - { - case VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL: - return "VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"; - default: - return "Unhandled VkQueryPoolSamplingModeINTEL"; - } -} - -static inline const char* string_VkPerformanceOverrideTypeINTEL(VkPerformanceOverrideTypeINTEL input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL: - return "VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL"; - case VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL: - return "VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL"; - default: - return "Unhandled VkPerformanceOverrideTypeINTEL"; - } -} - -static inline const char* string_VkPerformanceParameterTypeINTEL(VkPerformanceParameterTypeINTEL input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL: - return "VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL"; - case VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL: - return "VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL"; - default: - return "Unhandled VkPerformanceParameterTypeINTEL"; - } -} - -static inline const char* string_VkPerformanceValueTypeINTEL(VkPerformanceValueTypeINTEL input_value) -{ - switch (input_value) - { - case VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL: - return "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"; - case VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL: - return "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"; - case VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL: - return "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL"; - case VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL: - return "VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL"; - case VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL: - return "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL"; - default: - return "Unhandled VkPerformanceValueTypeINTEL"; - } -} - -static inline const char* string_VkToolPurposeFlagBitsEXT(VkToolPurposeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT: - return "VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"; - case VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT: - return "VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"; - case VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT: - return "VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"; - case VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT: - return "VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"; - case VK_TOOL_PURPOSE_PROFILING_BIT: - return "VK_TOOL_PURPOSE_PROFILING_BIT"; - case VK_TOOL_PURPOSE_TRACING_BIT: - return "VK_TOOL_PURPOSE_TRACING_BIT"; - case VK_TOOL_PURPOSE_VALIDATION_BIT: - return "VK_TOOL_PURPOSE_VALIDATION_BIT"; - default: - return "Unhandled VkToolPurposeFlagBitsEXT"; - } -} - -static inline std::string string_VkToolPurposeFlagsEXT(VkToolPurposeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkToolPurposeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkToolPurposeFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkValidationFeatureEnableEXT(VkValidationFeatureEnableEXT input_value) -{ - switch (input_value) - { - case VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT: - return "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"; - case VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT: - return "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"; - case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT: - return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"; - case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT: - return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"; - case VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT: - return "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT"; - default: - return "Unhandled VkValidationFeatureEnableEXT"; - } -} - -static inline const char* string_VkValidationFeatureDisableEXT(VkValidationFeatureDisableEXT input_value) -{ - switch (input_value) - { - case VK_VALIDATION_FEATURE_DISABLE_ALL_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT"; - case VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT"; - case VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"; - case VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT"; - case VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT"; - case VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT"; - case VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"; - case VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT: - return "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"; - default: - return "Unhandled VkValidationFeatureDisableEXT"; - } -} - -static inline const char* string_VkComponentTypeNV(VkComponentTypeNV input_value) -{ - switch (input_value) - { - case VK_COMPONENT_TYPE_FLOAT16_NV: - return "VK_COMPONENT_TYPE_FLOAT16_NV"; - case VK_COMPONENT_TYPE_FLOAT32_NV: - return "VK_COMPONENT_TYPE_FLOAT32_NV"; - case VK_COMPONENT_TYPE_FLOAT64_NV: - return "VK_COMPONENT_TYPE_FLOAT64_NV"; - case VK_COMPONENT_TYPE_SINT16_NV: - return "VK_COMPONENT_TYPE_SINT16_NV"; - case VK_COMPONENT_TYPE_SINT32_NV: - return "VK_COMPONENT_TYPE_SINT32_NV"; - case VK_COMPONENT_TYPE_SINT64_NV: - return "VK_COMPONENT_TYPE_SINT64_NV"; - case VK_COMPONENT_TYPE_SINT8_NV: - return "VK_COMPONENT_TYPE_SINT8_NV"; - case VK_COMPONENT_TYPE_UINT16_NV: - return "VK_COMPONENT_TYPE_UINT16_NV"; - case VK_COMPONENT_TYPE_UINT32_NV: - return "VK_COMPONENT_TYPE_UINT32_NV"; - case VK_COMPONENT_TYPE_UINT64_NV: - return "VK_COMPONENT_TYPE_UINT64_NV"; - case VK_COMPONENT_TYPE_UINT8_NV: - return "VK_COMPONENT_TYPE_UINT8_NV"; - default: - return "Unhandled VkComponentTypeNV"; - } -} - -static inline const char* string_VkScopeNV(VkScopeNV input_value) -{ - switch (input_value) - { - case VK_SCOPE_DEVICE_NV: - return "VK_SCOPE_DEVICE_NV"; - case VK_SCOPE_QUEUE_FAMILY_NV: - return "VK_SCOPE_QUEUE_FAMILY_NV"; - case VK_SCOPE_SUBGROUP_NV: - return "VK_SCOPE_SUBGROUP_NV"; - case VK_SCOPE_WORKGROUP_NV: - return "VK_SCOPE_WORKGROUP_NV"; - default: - return "Unhandled VkScopeNV"; - } -} - -static inline const char* string_VkCoverageReductionModeNV(VkCoverageReductionModeNV input_value) -{ - switch (input_value) - { - case VK_COVERAGE_REDUCTION_MODE_MERGE_NV: - return "VK_COVERAGE_REDUCTION_MODE_MERGE_NV"; - case VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV: - return "VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV"; - default: - return "Unhandled VkCoverageReductionModeNV"; - } -} - -static inline const char* string_VkProvokingVertexModeEXT(VkProvokingVertexModeEXT input_value) -{ - switch (input_value) - { - case VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT: - return "VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT"; - case VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT: - return "VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT"; - default: - return "Unhandled VkProvokingVertexModeEXT"; - } -} - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - -static inline const char* string_VkFullScreenExclusiveEXT(VkFullScreenExclusiveEXT input_value) -{ - switch (input_value) - { - case VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT: - return "VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT"; - case VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT: - return "VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT"; - case VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT: - return "VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT"; - case VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT: - return "VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT"; - default: - return "Unhandled VkFullScreenExclusiveEXT"; - } -} -#endif // VK_USE_PLATFORM_WIN32_KHR - -static inline const char* string_VkLineRasterizationModeEXT(VkLineRasterizationModeEXT input_value) -{ - switch (input_value) - { - case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT: - return "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT"; - case VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT: - return "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT"; - case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT: - return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT"; - case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT: - return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT"; - default: - return "Unhandled VkLineRasterizationModeEXT"; - } -} - -static inline const char* string_VkPresentScalingFlagBitsEXT(VkPresentScalingFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT: - return "VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT"; - case VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT: - return "VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT"; - case VK_PRESENT_SCALING_STRETCH_BIT_EXT: - return "VK_PRESENT_SCALING_STRETCH_BIT_EXT"; - default: - return "Unhandled VkPresentScalingFlagBitsEXT"; - } -} - -static inline std::string string_VkPresentScalingFlagsEXT(VkPresentScalingFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPresentScalingFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPresentScalingFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkPresentGravityFlagBitsEXT(VkPresentGravityFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_PRESENT_GRAVITY_CENTERED_BIT_EXT: - return "VK_PRESENT_GRAVITY_CENTERED_BIT_EXT"; - case VK_PRESENT_GRAVITY_MAX_BIT_EXT: - return "VK_PRESENT_GRAVITY_MAX_BIT_EXT"; - case VK_PRESENT_GRAVITY_MIN_BIT_EXT: - return "VK_PRESENT_GRAVITY_MIN_BIT_EXT"; - default: - return "Unhandled VkPresentGravityFlagBitsEXT"; - } -} - -static inline std::string string_VkPresentGravityFlagsEXT(VkPresentGravityFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPresentGravityFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkPresentGravityFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkIndirectStateFlagBitsNV(VkIndirectStateFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV: - return "VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"; - default: - return "Unhandled VkIndirectStateFlagBitsNV"; - } -} - -static inline std::string string_VkIndirectStateFlagsNV(VkIndirectStateFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkIndirectStateFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkIndirectStateFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkIndirectCommandsTokenTypeNV(VkIndirectCommandsTokenTypeNV input_value) -{ - switch (input_value) - { - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"; - case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV: - return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"; - default: - return "Unhandled VkIndirectCommandsTokenTypeNV"; - } -} - -static inline const char* string_VkIndirectCommandsLayoutUsageFlagBitsNV(VkIndirectCommandsLayoutUsageFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV: - return "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"; - case VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV: - return "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"; - case VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV: - return "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"; - default: - return "Unhandled VkIndirectCommandsLayoutUsageFlagBitsNV"; - } -} - -static inline std::string string_VkIndirectCommandsLayoutUsageFlagsNV(VkIndirectCommandsLayoutUsageFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkIndirectCommandsLayoutUsageFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkIndirectCommandsLayoutUsageFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkDeviceMemoryReportEventTypeEXT(VkDeviceMemoryReportEventTypeEXT input_value) -{ - switch (input_value) - { - case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT: - return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT"; - case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT: - return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT"; - case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT: - return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT"; - case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT: - return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT"; - case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT: - return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT"; - default: - return "Unhandled VkDeviceMemoryReportEventTypeEXT"; - } -} - -static inline const char* string_VkDeviceDiagnosticsConfigFlagBitsNV(VkDeviceDiagnosticsConfigFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV: - return "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"; - case VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV: - return "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"; - case VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV: - return "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"; - case VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV: - return "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV"; - default: - return "Unhandled VkDeviceDiagnosticsConfigFlagBitsNV"; - } -} - -static inline std::string string_VkDeviceDiagnosticsConfigFlagsNV(VkDeviceDiagnosticsConfigFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDeviceDiagnosticsConfigFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDeviceDiagnosticsConfigFlagBitsNV(static_cast(0))); - return ret; -} - - -#ifdef VK_USE_PLATFORM_METAL_EXT - -static inline const char* string_VkExportMetalObjectTypeFlagBitsEXT(VkExportMetalObjectTypeFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT: - return "VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT"; - case VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT: - return "VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT"; - case VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT: - return "VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT"; - case VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT: - return "VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT"; - case VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT: - return "VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT"; - case VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT: - return "VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT"; - default: - return "Unhandled VkExportMetalObjectTypeFlagBitsEXT"; - } -} - -static inline std::string string_VkExportMetalObjectTypeFlagsEXT(VkExportMetalObjectTypeFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkExportMetalObjectTypeFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkExportMetalObjectTypeFlagBitsEXT(static_cast(0))); - return ret; -} -#endif // VK_USE_PLATFORM_METAL_EXT - -static inline const char* string_VkGraphicsPipelineLibraryFlagBitsEXT(VkGraphicsPipelineLibraryFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT: - return "VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT"; - case VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT: - return "VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT"; - case VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT: - return "VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT"; - case VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT: - return "VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT"; - default: - return "Unhandled VkGraphicsPipelineLibraryFlagBitsEXT"; - } -} - -static inline std::string string_VkGraphicsPipelineLibraryFlagsEXT(VkGraphicsPipelineLibraryFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkGraphicsPipelineLibraryFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkGraphicsPipelineLibraryFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkFragmentShadingRateTypeNV(VkFragmentShadingRateTypeNV input_value) -{ - switch (input_value) - { - case VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV: - return "VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV"; - case VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV: - return "VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV"; - default: - return "Unhandled VkFragmentShadingRateTypeNV"; - } -} - -static inline const char* string_VkFragmentShadingRateNV(VkFragmentShadingRateNV input_value) -{ - switch (input_value) - { - case VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV: - return "VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV"; - case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV: - return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV"; - case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV: - return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV"; - case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV: - return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV"; - case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV: - return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV"; - case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV: - return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV"; - case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV: - return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV"; - case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV: - return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV"; - case VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV: - return "VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV"; - case VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV: - return "VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV"; - case VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV: - return "VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV"; - case VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV: - return "VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV"; - default: - return "Unhandled VkFragmentShadingRateNV"; - } -} - -static inline const char* string_VkAccelerationStructureMotionInstanceTypeNV(VkAccelerationStructureMotionInstanceTypeNV input_value) -{ - switch (input_value) - { - case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV: - return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV"; - case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV: - return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV"; - case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV: - return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV"; - default: - return "Unhandled VkAccelerationStructureMotionInstanceTypeNV"; - } -} - -static inline const char* string_VkImageCompressionFlagBitsEXT(VkImageCompressionFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_IMAGE_COMPRESSION_DEFAULT_EXT: - return "VK_IMAGE_COMPRESSION_DEFAULT_EXT"; - case VK_IMAGE_COMPRESSION_DISABLED_EXT: - return "VK_IMAGE_COMPRESSION_DISABLED_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT"; - default: - return "Unhandled VkImageCompressionFlagBitsEXT"; - } -} - -static inline std::string string_VkImageCompressionFlagsEXT(VkImageCompressionFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageCompressionFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageCompressionFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkImageCompressionFixedRateFlagBitsEXT(VkImageCompressionFixedRateFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT"; - case VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT: - return "VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT"; - default: - return "Unhandled VkImageCompressionFixedRateFlagBitsEXT"; - } -} - -static inline std::string string_VkImageCompressionFixedRateFlagsEXT(VkImageCompressionFixedRateFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageCompressionFixedRateFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageCompressionFixedRateFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkDeviceFaultAddressTypeEXT(VkDeviceFaultAddressTypeEXT input_value) -{ - switch (input_value) - { - case VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT: - return "VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT"; - case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT: - return "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT"; - case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT: - return "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT"; - case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT: - return "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT"; - case VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT: - return "VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT"; - case VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT: - return "VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT"; - case VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT: - return "VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT"; - default: - return "Unhandled VkDeviceFaultAddressTypeEXT"; - } -} - -static inline const char* string_VkDeviceFaultVendorBinaryHeaderVersionEXT(VkDeviceFaultVendorBinaryHeaderVersionEXT input_value) -{ - switch (input_value) - { - case VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT: - return "VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT"; - default: - return "Unhandled VkDeviceFaultVendorBinaryHeaderVersionEXT"; - } -} - -static inline const char* string_VkDeviceAddressBindingFlagBitsEXT(VkDeviceAddressBindingFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT: - return "VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT"; - default: - return "Unhandled VkDeviceAddressBindingFlagBitsEXT"; - } -} - -static inline std::string string_VkDeviceAddressBindingFlagsEXT(VkDeviceAddressBindingFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDeviceAddressBindingFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDeviceAddressBindingFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkDeviceAddressBindingTypeEXT(VkDeviceAddressBindingTypeEXT input_value) -{ - switch (input_value) - { - case VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT: - return "VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT"; - case VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT: - return "VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT"; - default: - return "Unhandled VkDeviceAddressBindingTypeEXT"; - } -} - - -#ifdef VK_USE_PLATFORM_FUCHSIA - -static inline const char* string_VkImageConstraintsInfoFlagBitsFUCHSIA(VkImageConstraintsInfoFlagBitsFUCHSIA input_value) -{ - switch (input_value) - { - case VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA: - return "VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA"; - case VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA: - return "VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA"; - case VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA: - return "VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA"; - case VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA: - return "VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA"; - case VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA: - return "VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA"; - default: - return "Unhandled VkImageConstraintsInfoFlagBitsFUCHSIA"; - } -} - -static inline std::string string_VkImageConstraintsInfoFlagsFUCHSIA(VkImageConstraintsInfoFlagsFUCHSIA input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageConstraintsInfoFlagBitsFUCHSIA(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageConstraintsInfoFlagBitsFUCHSIA(static_cast(0))); - return ret; -} -#endif // VK_USE_PLATFORM_FUCHSIA - -static inline const char* string_VkMicromapTypeEXT(VkMicromapTypeEXT input_value) -{ - switch (input_value) - { - case VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT: - return "VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT"; - default: - return "Unhandled VkMicromapTypeEXT"; - } -} - -static inline const char* string_VkBuildMicromapFlagBitsEXT(VkBuildMicromapFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT: - return "VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT"; - case VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT: - return "VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT"; - case VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT: - return "VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT"; - default: - return "Unhandled VkBuildMicromapFlagBitsEXT"; - } -} - -static inline std::string string_VkBuildMicromapFlagsEXT(VkBuildMicromapFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkBuildMicromapFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkBuildMicromapFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkBuildMicromapModeEXT(VkBuildMicromapModeEXT input_value) -{ - switch (input_value) - { - case VK_BUILD_MICROMAP_MODE_BUILD_EXT: - return "VK_BUILD_MICROMAP_MODE_BUILD_EXT"; - default: - return "Unhandled VkBuildMicromapModeEXT"; - } -} - -static inline const char* string_VkMicromapCreateFlagBitsEXT(VkMicromapCreateFlagBitsEXT input_value) -{ - switch (input_value) - { - case VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT: - return "VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"; - default: - return "Unhandled VkMicromapCreateFlagBitsEXT"; - } -} - -static inline std::string string_VkMicromapCreateFlagsEXT(VkMicromapCreateFlagsEXT input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkMicromapCreateFlagBitsEXT(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkMicromapCreateFlagBitsEXT(static_cast(0))); - return ret; -} - -static inline const char* string_VkCopyMicromapModeEXT(VkCopyMicromapModeEXT input_value) -{ - switch (input_value) - { - case VK_COPY_MICROMAP_MODE_CLONE_EXT: - return "VK_COPY_MICROMAP_MODE_CLONE_EXT"; - case VK_COPY_MICROMAP_MODE_COMPACT_EXT: - return "VK_COPY_MICROMAP_MODE_COMPACT_EXT"; - case VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT: - return "VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT"; - case VK_COPY_MICROMAP_MODE_SERIALIZE_EXT: - return "VK_COPY_MICROMAP_MODE_SERIALIZE_EXT"; - default: - return "Unhandled VkCopyMicromapModeEXT"; - } -} - -static inline const char* string_VkOpacityMicromapFormatEXT(VkOpacityMicromapFormatEXT input_value) -{ - switch (input_value) - { - case VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT: - return "VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT"; - case VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT: - return "VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT"; - default: - return "Unhandled VkOpacityMicromapFormatEXT"; - } -} - -static inline const char* string_VkOpacityMicromapSpecialIndexEXT(VkOpacityMicromapSpecialIndexEXT input_value) -{ - switch (input_value) - { - case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT: - return "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT"; - case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT: - return "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT"; - case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT: - return "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT"; - case VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT: - return "VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT"; - default: - return "Unhandled VkOpacityMicromapSpecialIndexEXT"; - } -} - -static inline const char* string_VkAccelerationStructureCompatibilityKHR(VkAccelerationStructureCompatibilityKHR input_value) -{ - switch (input_value) - { - case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR: - return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR"; - case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR: - return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR"; - default: - return "Unhandled VkAccelerationStructureCompatibilityKHR"; - } -} - -static inline const char* string_VkAccelerationStructureBuildTypeKHR(VkAccelerationStructureBuildTypeKHR input_value) -{ - switch (input_value) - { - case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR: - return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR"; - case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR: - return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR"; - case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR: - return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR"; - default: - return "Unhandled VkAccelerationStructureBuildTypeKHR"; - } -} - -static inline const char* string_VkMemoryDecompressionMethodFlagBitsNV(uint64_t input_value) -{ - switch (input_value) - { - case VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV: - return "VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV"; - default: - return "Unhandled VkMemoryDecompressionMethodFlagBitsNV"; - } -} - -static inline std::string string_VkMemoryDecompressionMethodFlagsNV(VkMemoryDecompressionMethodFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkMemoryDecompressionMethodFlagBitsNV(static_cast(1ULL << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkMemoryDecompressionMethodFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkSubpassMergeStatusEXT(VkSubpassMergeStatusEXT input_value) -{ - switch (input_value) - { - case VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT: - return "VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT"; - case VK_SUBPASS_MERGE_STATUS_MERGED_EXT: - return "VK_SUBPASS_MERGE_STATUS_MERGED_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT"; - case VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT: - return "VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT"; - default: - return "Unhandled VkSubpassMergeStatusEXT"; - } -} - -static inline const char* string_VkDirectDriverLoadingModeLUNARG(VkDirectDriverLoadingModeLUNARG input_value) -{ - switch (input_value) - { - case VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG: - return "VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG"; - case VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG: - return "VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG"; - default: - return "Unhandled VkDirectDriverLoadingModeLUNARG"; - } -} - -static inline const char* string_VkOpticalFlowGridSizeFlagBitsNV(VkOpticalFlowGridSizeFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV: - return "VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV"; - case VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV: - return "VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV"; - case VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV: - return "VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV"; - case VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV: - return "VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV"; - case VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV: - return "VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV"; - default: - return "Unhandled VkOpticalFlowGridSizeFlagBitsNV"; - } -} - -static inline std::string string_VkOpticalFlowGridSizeFlagsNV(VkOpticalFlowGridSizeFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkOpticalFlowGridSizeFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkOpticalFlowGridSizeFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkOpticalFlowUsageFlagBitsNV(VkOpticalFlowUsageFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_OPTICAL_FLOW_USAGE_COST_BIT_NV: - return "VK_OPTICAL_FLOW_USAGE_COST_BIT_NV"; - case VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV: - return "VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV"; - case VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV: - return "VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV"; - case VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV: - return "VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV"; - case VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV: - return "VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV"; - case VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV: - return "VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV"; - default: - return "Unhandled VkOpticalFlowUsageFlagBitsNV"; - } -} - -static inline std::string string_VkOpticalFlowUsageFlagsNV(VkOpticalFlowUsageFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkOpticalFlowUsageFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkOpticalFlowUsageFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkOpticalFlowPerformanceLevelNV(VkOpticalFlowPerformanceLevelNV input_value) -{ - switch (input_value) - { - case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV: - return "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV"; - case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV: - return "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV"; - case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV: - return "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV"; - case VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV: - return "VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV"; - default: - return "Unhandled VkOpticalFlowPerformanceLevelNV"; - } -} - -static inline const char* string_VkOpticalFlowSessionBindingPointNV(VkOpticalFlowSessionBindingPointNV input_value) -{ - switch (input_value) - { - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV"; - case VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV: - return "VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV"; - default: - return "Unhandled VkOpticalFlowSessionBindingPointNV"; - } -} - -static inline const char* string_VkOpticalFlowSessionCreateFlagBitsNV(VkOpticalFlowSessionCreateFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV: - return "VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV"; - case VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV: - return "VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV"; - case VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV: - return "VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV"; - case VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV: - return "VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV"; - case VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV: - return "VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV"; - default: - return "Unhandled VkOpticalFlowSessionCreateFlagBitsNV"; - } -} - -static inline std::string string_VkOpticalFlowSessionCreateFlagsNV(VkOpticalFlowSessionCreateFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkOpticalFlowSessionCreateFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkOpticalFlowSessionCreateFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkOpticalFlowExecuteFlagBitsNV(VkOpticalFlowExecuteFlagBitsNV input_value) -{ - switch (input_value) - { - case VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV: - return "VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV"; - default: - return "Unhandled VkOpticalFlowExecuteFlagBitsNV"; - } -} - -static inline std::string string_VkOpticalFlowExecuteFlagsNV(VkOpticalFlowExecuteFlagsNV input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkOpticalFlowExecuteFlagBitsNV(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkOpticalFlowExecuteFlagBitsNV(static_cast(0))); - return ret; -} - -static inline const char* string_VkRayTracingInvocationReorderModeNV(VkRayTracingInvocationReorderModeNV input_value) -{ - switch (input_value) - { - case VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV: - return "VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV"; - case VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV: - return "VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV"; - default: - return "Unhandled VkRayTracingInvocationReorderModeNV"; - } -} - -static inline const char* string_VkBuildAccelerationStructureModeKHR(VkBuildAccelerationStructureModeKHR input_value) -{ - switch (input_value) - { - case VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR"; - case VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR: - return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR"; - default: - return "Unhandled VkBuildAccelerationStructureModeKHR"; - } -} - -static inline const char* string_VkAccelerationStructureCreateFlagBitsKHR(VkAccelerationStructureCreateFlagBitsKHR input_value) -{ - switch (input_value) - { - case VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT: - return "VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"; - case VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR: - return "VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"; - case VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV: - return "VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"; - default: - return "Unhandled VkAccelerationStructureCreateFlagBitsKHR"; - } -} - -static inline std::string string_VkAccelerationStructureCreateFlagsKHR(VkAccelerationStructureCreateFlagsKHR input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkAccelerationStructureCreateFlagBitsKHR(static_cast(1U << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkAccelerationStructureCreateFlagBitsKHR(static_cast(0))); - return ret; -} - -static inline const char* string_VkShaderGroupShaderKHR(VkShaderGroupShaderKHR input_value) -{ - switch (input_value) - { - case VK_SHADER_GROUP_SHADER_ANY_HIT_KHR: - return "VK_SHADER_GROUP_SHADER_ANY_HIT_KHR"; - case VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR: - return "VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR"; - case VK_SHADER_GROUP_SHADER_GENERAL_KHR: - return "VK_SHADER_GROUP_SHADER_GENERAL_KHR"; - case VK_SHADER_GROUP_SHADER_INTERSECTION_KHR: - return "VK_SHADER_GROUP_SHADER_INTERSECTION_KHR"; - default: - return "Unhandled VkShaderGroupShaderKHR"; - } -} - -static inline const char * GetPhysDevFeatureString(uint32_t index) { - const char * IndexToPhysDevFeatureString[] = { - "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", - }; - - return IndexToPhysDevFeatureString[index]; -} - -static inline bool IsDuplicatePnext(VkStructureType input_value) -{ - switch (input_value) - { - case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: - case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: - case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO: - case VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT: - case VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT: - case VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT: - case VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT: - case VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT: - case VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT: - case VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT: - return true; - default: - return false; - } -} diff --git a/ext/vulkan/vk_icd.h b/ext/vulkan/vk_icd.h index 1133fa3670..59204a3419 100644 --- a/ext/vulkan/vk_icd.h +++ b/ext/vulkan/vk_icd.h @@ -1,23 +1,9 @@ -// -// File: vk_icd.h -// /* - * Copyright (c) 2015-2023 LunarG, Inc. - * Copyright (c) 2015-2023 The Khronos Group Inc. - * Copyright (c) 2015-2023 Valve Corporation - * - * 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. + * Copyright 2015-2023 The Khronos Group Inc. + * Copyright 2015-2023 Valve Corporation + * Copyright 2015-2023 LunarG, Inc. * + * SPDX-License-Identifier: Apache-2.0 */ #pragma once @@ -78,7 +64,7 @@ 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); + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance instance, 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); diff --git a/ext/vulkan/vk_layer.h b/ext/vulkan/vk_layer.h index 6bd1c9a03f..19d88fce4b 100644 --- a/ext/vulkan/vk_layer.h +++ b/ext/vulkan/vk_layer.h @@ -1,23 +1,9 @@ -// -// File: vk_layer.h -// /* - * Copyright (c) 2015-2023 LunarG, Inc. - * Copyright (c) 2015-2023 The Khronos Group Inc. - * Copyright (c) 2015-2023 Valve Corporation - * - * 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. + * Copyright 2015-2023 The Khronos Group Inc. + * Copyright 2015-2023 Valve Corporation + * Copyright 2015-2023 LunarG, Inc. * + * SPDX-License-Identifier: Apache-2.0 */ #pragma once @@ -28,14 +14,6 @@ #include "vulkan_core.h" -#if defined(__GNUC__) && __GNUC__ >= 4 -#define VK_LAYER_EXPORT __attribute__((visibility("default"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) -#define VK_LAYER_EXPORT __attribute__((visibility("default"))) -#else -#define VK_LAYER_EXPORT -#endif - #define MAX_NUM_UNKNOWN_EXTS 250 // Loader-Layer version negotiation API. Versions add the following features: diff --git a/ext/vulkan/vk_platform.h b/ext/vulkan/vk_platform.h index 3ff8c5d146..ed67a6004a 100644 --- a/ext/vulkan/vk_platform.h +++ b/ext/vulkan/vk_platform.h @@ -2,7 +2,7 @@ // File: vk_platform.h // /* -** Copyright 2014-2022 The Khronos Group Inc. +** Copyright 2014-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ diff --git a/ext/vulkan/vk_video/vulkan_video_codec_h264std.h b/ext/vulkan/vk_video/vulkan_video_codec_h264std.h index d3ebec6a14..a23789c68a 100644 --- a/ext/vulkan/vk_video/vulkan_video_codec_h264std.h +++ b/ext/vulkan/vk_video/vulkan_video_codec_h264std.h @@ -2,7 +2,7 @@ #define VULKAN_VIDEO_CODEC_H264STD_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,8 +19,9 @@ extern "C" { +// vulkan_video_codec_h264std is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codec_h264std 1 -#include +#include "vulkan_video_codecs_common.h" #define STD_VIDEO_H264_CPB_CNT_LIST_SIZE 32 #define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS 6 #define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS 16 diff --git a/ext/vulkan/vk_video/vulkan_video_codec_h264std_decode.h b/ext/vulkan/vk_video/vulkan_video_codec_h264std_decode.h index b1e79429d8..dd24112e2c 100644 --- a/ext/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +++ b/ext/vulkan/vk_video/vulkan_video_codec_h264std_decode.h @@ -2,7 +2,7 @@ #define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,13 +19,15 @@ extern "C" { +// vulkan_video_codec_h264std_decode is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codec_h264std_decode 1 +#include "vulkan_video_codec_h264std.h" #define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -#define STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE 2 #define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 #define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_decode" +#define STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE 2 typedef enum StdVideoDecodeH264FieldOrderCount { STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0, diff --git a/ext/vulkan/vk_video/vulkan_video_codec_h264std_encode.h b/ext/vulkan/vk_video/vulkan_video_codec_h264std_encode.h index 7bd96aa7bc..2e0d706f6c 100644 --- a/ext/vulkan/vk_video/vulkan_video_codec_h264std_encode.h +++ b/ext/vulkan/vk_video/vulkan_video_codec_h264std_encode.h @@ -2,7 +2,7 @@ #define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,11 +19,13 @@ extern "C" { +// vulkan_video_codec_h264std_encode is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codec_h264std_encode 1 +#include "vulkan_video_codec_h264std.h" // Vulkan 0.9 provisional Vulkan video H.264 encode std specification version number -#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8) +#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_10 VK_MAKE_VIDEO_STD_VERSION(0, 9, 10) -#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8 +#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_10 #define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode" typedef struct StdVideoEncodeH264WeightTableFlags { uint32_t luma_weight_l0_flag; @@ -49,25 +51,28 @@ typedef struct StdVideoEncodeH264WeightTable { typedef struct StdVideoEncodeH264SliceHeaderFlags { uint32_t direct_spatial_mv_pred_flag : 1; uint32_t num_ref_idx_active_override_flag : 1; - uint32_t no_output_of_prior_pics_flag : 1; - uint32_t adaptive_ref_pic_marking_mode_flag : 1; - uint32_t no_prior_references_available_flag : 1; + uint32_t reserved : 30; } StdVideoEncodeH264SliceHeaderFlags; typedef struct StdVideoEncodeH264PictureInfoFlags { - uint32_t idr_flag : 1; - uint32_t is_reference_flag : 1; - uint32_t used_for_long_term_reference : 1; + uint32_t IdrPicFlag : 1; + uint32_t is_reference : 1; + uint32_t no_output_of_prior_pics_flag : 1; + uint32_t long_term_reference_flag : 1; + uint32_t adaptive_ref_pic_marking_mode_flag : 1; + uint32_t reserved : 27; } StdVideoEncodeH264PictureInfoFlags; typedef struct StdVideoEncodeH264ReferenceInfoFlags { uint32_t used_for_long_term_reference : 1; + uint32_t reserved : 31; } StdVideoEncodeH264ReferenceInfoFlags; -typedef struct StdVideoEncodeH264RefMgmtFlags { - uint32_t ref_pic_list_modification_l0_flag : 1; - uint32_t ref_pic_list_modification_l1_flag : 1; -} StdVideoEncodeH264RefMgmtFlags; +typedef struct StdVideoEncodeH264ReferenceListsInfoFlags { + uint32_t ref_pic_list_modification_flag_l0 : 1; + uint32_t ref_pic_list_modification_flag_l1 : 1; + uint32_t reserved : 30; +} StdVideoEncodeH264ReferenceListsInfoFlags; typedef struct StdVideoEncodeH264RefListModEntry { StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc; @@ -83,44 +88,53 @@ typedef struct StdVideoEncodeH264RefPicMarkingEntry { uint16_t max_long_term_frame_idx_plus1; } StdVideoEncodeH264RefPicMarkingEntry; -typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations { - StdVideoEncodeH264RefMgmtFlags flags; +typedef struct StdVideoEncodeH264ReferenceListsInfo { + StdVideoEncodeH264ReferenceListsInfoFlags flags; + uint8_t num_ref_idx_l0_active_minus1; + uint8_t num_ref_idx_l1_active_minus1; + uint8_t RefPicList0[STD_VIDEO_H264_MAX_NUM_LIST_REF]; + uint8_t RefPicList1[STD_VIDEO_H264_MAX_NUM_LIST_REF]; uint8_t refList0ModOpCount; - const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations; uint8_t refList1ModOpCount; - const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations; uint8_t refPicMarkingOpCount; + uint8_t reserved1[7]; + const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations; + const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations; const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations; -} StdVideoEncodeH264RefMemMgmtCtrlOperations; +} StdVideoEncodeH264ReferenceListsInfo; typedef struct StdVideoEncodeH264PictureInfo { - StdVideoEncodeH264PictureInfoFlags flags; - uint8_t seq_parameter_set_id; - uint8_t pic_parameter_set_id; - StdVideoH264PictureType pictureType; - uint32_t frame_num; - int32_t PicOrderCnt; + StdVideoEncodeH264PictureInfoFlags flags; + uint8_t seq_parameter_set_id; + uint8_t pic_parameter_set_id; + uint16_t idr_pic_id; + StdVideoH264PictureType primary_pic_type; + uint32_t frame_num; + int32_t PicOrderCnt; + uint8_t temporal_id; + uint8_t reserved1[3]; + const StdVideoEncodeH264ReferenceListsInfo* pRefLists; } StdVideoEncodeH264PictureInfo; typedef struct StdVideoEncodeH264ReferenceInfo { StdVideoEncodeH264ReferenceInfoFlags flags; + StdVideoH264PictureType primary_pic_type; uint32_t FrameNum; int32_t PicOrderCnt; uint16_t long_term_pic_num; uint16_t long_term_frame_idx; + uint8_t temporal_id; } StdVideoEncodeH264ReferenceInfo; typedef struct StdVideoEncodeH264SliceHeader { StdVideoEncodeH264SliceHeaderFlags flags; uint32_t first_mb_in_slice; StdVideoH264SliceType slice_type; - uint16_t idr_pic_id; - uint8_t num_ref_idx_l0_active_minus1; - uint8_t num_ref_idx_l1_active_minus1; - StdVideoH264CabacInitIdc cabac_init_idc; - StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc; int8_t slice_alpha_c0_offset_div2; int8_t slice_beta_offset_div2; + uint16_t reserved1; + StdVideoH264CabacInitIdc cabac_init_idc; + StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc; const StdVideoEncodeH264WeightTable* pWeightTable; } StdVideoEncodeH264SliceHeader; diff --git a/ext/vulkan/vk_video/vulkan_video_codec_h265std.h b/ext/vulkan/vk_video/vulkan_video_codec_h265std.h index 862f8817f6..793bdbcff9 100644 --- a/ext/vulkan/vk_video/vulkan_video_codec_h265std.h +++ b/ext/vulkan/vk_video/vulkan_video_codec_h265std.h @@ -2,7 +2,7 @@ #define VULKAN_VIDEO_CODEC_H265STD_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,9 +19,11 @@ extern "C" { +// vulkan_video_codec_h265std is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codec_h265std 1 -#define STD_VIDEO_H265_SUBLAYERS_LIST_SIZE 7 +#include "vulkan_video_codecs_common.h" #define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32 +#define STD_VIDEO_H265_SUBLAYERS_LIST_SIZE 7 #define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS 6 #define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS 16 #define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS 6 @@ -30,16 +32,16 @@ extern "C" { #define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS 64 #define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS 2 #define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64 -#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3 -#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128 -#define STD_VIDEO_H265_MAX_DPB_SIZE 16 -#define STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS 32 #define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6 #define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19 #define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21 +#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3 +#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128 #define STD_VIDEO_H265_MAX_NUM_LIST_REF 15 #define STD_VIDEO_H265_MAX_CHROMA_PLANES 2 #define STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS 64 +#define STD_VIDEO_H265_MAX_DPB_SIZE 16 +#define STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS 32 #define STD_VIDEO_H265_MAX_LONG_TERM_PICS 16 #define STD_VIDEO_H265_MAX_DELTA_POC 48 diff --git a/ext/vulkan/vk_video/vulkan_video_codec_h265std_decode.h b/ext/vulkan/vk_video/vulkan_video_codec_h265std_decode.h index d8660d12e9..75cf4d0946 100644 --- a/ext/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +++ b/ext/vulkan/vk_video/vulkan_video_codec_h265std_decode.h @@ -2,7 +2,7 @@ #define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,13 +19,15 @@ extern "C" { +// vulkan_video_codec_h265std_decode is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codec_h265std_decode 1 +#include "vulkan_video_codec_h265std.h" #define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) -#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8 #define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 #define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_decode" +#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8 typedef struct StdVideoDecodeH265PictureInfoFlags { uint32_t IrapPicFlag : 1; uint32_t IdrPicFlag : 1; diff --git a/ext/vulkan/vk_video/vulkan_video_codec_h265std_encode.h b/ext/vulkan/vk_video/vulkan_video_codec_h265std_encode.h index 5a419b14be..25740398a4 100644 --- a/ext/vulkan/vk_video/vulkan_video_codec_h265std_encode.h +++ b/ext/vulkan/vk_video/vulkan_video_codec_h265std_encode.h @@ -2,7 +2,7 @@ #define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,11 +19,13 @@ extern "C" { +// vulkan_video_codec_h265std_encode is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codec_h265std_encode 1 +#include "vulkan_video_codec_h265std.h" // Vulkan 0.9 provisional Vulkan video H.265 encode std specification version number -#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9) +#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_11 VK_MAKE_VIDEO_STD_VERSION(0, 9, 11) -#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9 +#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_11 #define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_encode" typedef struct StdVideoEncodeH265WeightTableFlags { uint16_t luma_weight_l0_flag; @@ -48,11 +50,7 @@ typedef struct StdVideoEncodeH265WeightTable { typedef struct StdVideoEncodeH265SliceSegmentHeaderFlags { uint32_t first_slice_segment_in_pic_flag : 1; - uint32_t no_output_of_prior_pics_flag : 1; uint32_t dependent_slice_segment_flag : 1; - uint32_t pic_output_flag : 1; - uint32_t short_term_ref_pic_set_sps_flag : 1; - uint32_t slice_temporal_mvp_enable_flag : 1; uint32_t slice_sao_luma_flag : 1; uint32_t slice_sao_chroma_flag : 1; uint32_t num_ref_idx_active_override_flag : 1; @@ -63,8 +61,55 @@ typedef struct StdVideoEncodeH265SliceSegmentHeaderFlags { uint32_t slice_deblocking_filter_disabled_flag : 1; uint32_t collocated_from_l0_flag : 1; uint32_t slice_loop_filter_across_slices_enabled_flag : 1; + uint32_t reserved : 20; } StdVideoEncodeH265SliceSegmentHeaderFlags; +typedef struct StdVideoEncodeH265SliceSegmentHeader { + StdVideoEncodeH265SliceSegmentHeaderFlags flags; + StdVideoH265SliceType slice_type; + uint32_t slice_segment_address; + uint8_t collocated_ref_idx; + uint8_t MaxNumMergeCand; + int8_t slice_cb_qp_offset; + int8_t slice_cr_qp_offset; + int8_t slice_beta_offset_div2; + int8_t slice_tc_offset_div2; + int8_t slice_act_y_qp_offset; + int8_t slice_act_cb_qp_offset; + int8_t slice_act_cr_qp_offset; + uint8_t reserved1[3]; + const StdVideoEncodeH265WeightTable* pWeightTable; +} StdVideoEncodeH265SliceSegmentHeader; + +typedef struct StdVideoEncodeH265ReferenceListsInfoFlags { + uint32_t ref_pic_list_modification_flag_l0 : 1; + uint32_t ref_pic_list_modification_flag_l1 : 1; + uint32_t reserved : 30; +} StdVideoEncodeH265ReferenceListsInfoFlags; + +typedef struct StdVideoEncodeH265ReferenceListsInfo { + StdVideoEncodeH265ReferenceListsInfoFlags flags; + uint8_t num_ref_idx_l0_active_minus1; + uint8_t num_ref_idx_l1_active_minus1; + uint8_t RefPicList0[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + uint8_t RefPicList1[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + uint8_t list_entry_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + uint8_t list_entry_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF]; +} StdVideoEncodeH265ReferenceListsInfo; + +typedef struct StdVideoEncodeH265PictureInfoFlags { + uint32_t is_reference : 1; + uint32_t IrapPicFlag : 1; + uint32_t used_for_long_term_reference : 1; + uint32_t discardable_flag : 1; + uint32_t cross_layer_bla_flag : 1; + uint32_t pic_output_flag : 1; + uint32_t no_output_of_prior_pics_flag : 1; + uint32_t short_term_ref_pic_set_sps_flag : 1; + uint32_t slice_temporal_mvp_enabled_flag : 1; + uint32_t reserved : 23; +} StdVideoEncodeH265PictureInfoFlags; + typedef struct StdVideoEncodeH265SliceSegmentLongTermRefPics { uint8_t num_long_term_sps; uint8_t num_long_term_pics; @@ -75,65 +120,30 @@ typedef struct StdVideoEncodeH265SliceSegmentLongTermRefPics { uint8_t delta_poc_msb_cycle_lt[STD_VIDEO_H265_MAX_DELTA_POC]; } StdVideoEncodeH265SliceSegmentLongTermRefPics; -typedef struct StdVideoEncodeH265SliceSegmentHeader { - StdVideoEncodeH265SliceSegmentHeaderFlags flags; - StdVideoH265SliceType slice_type; - uint32_t slice_segment_address; +typedef struct StdVideoEncodeH265PictureInfo { + StdVideoEncodeH265PictureInfoFlags flags; + StdVideoH265PictureType pic_type; + uint8_t sps_video_parameter_set_id; + uint8_t pps_seq_parameter_set_id; + uint8_t pps_pic_parameter_set_id; uint8_t short_term_ref_pic_set_idx; - uint8_t collocated_ref_idx; - uint8_t num_ref_idx_l0_active_minus1; - uint8_t num_ref_idx_l1_active_minus1; - uint8_t MaxNumMergeCand; - int8_t slice_cb_qp_offset; - int8_t slice_cr_qp_offset; - int8_t slice_beta_offset_div2; - int8_t slice_tc_offset_div2; - int8_t slice_act_y_qp_offset; - int8_t slice_act_cb_qp_offset; - int8_t slice_act_cr_qp_offset; + int32_t PicOrderCntVal; + uint8_t TemporalId; + uint8_t reserved1[7]; + const StdVideoEncodeH265ReferenceListsInfo* pRefLists; const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet; const StdVideoEncodeH265SliceSegmentLongTermRefPics* pLongTermRefPics; - const StdVideoEncodeH265WeightTable* pWeightTable; -} StdVideoEncodeH265SliceSegmentHeader; - -typedef struct StdVideoEncodeH265ReferenceModificationFlags { - uint32_t ref_pic_list_modification_flag_l0 : 1; - uint32_t ref_pic_list_modification_flag_l1 : 1; -} StdVideoEncodeH265ReferenceModificationFlags; - -typedef struct StdVideoEncodeH265ReferenceModifications { - StdVideoEncodeH265ReferenceModificationFlags flags; - uint8_t referenceList0ModificationsCount; - const uint8_t* pReferenceList0Modifications; - uint8_t referenceList1ModificationsCount; - const uint8_t* pReferenceList1Modifications; -} StdVideoEncodeH265ReferenceModifications; - -typedef struct StdVideoEncodeH265PictureInfoFlags { - uint32_t is_reference_flag : 1; - uint32_t IrapPicFlag : 1; - uint32_t long_term_flag : 1; - uint32_t discardable_flag : 1; - uint32_t cross_layer_bla_flag : 1; -} StdVideoEncodeH265PictureInfoFlags; - -typedef struct StdVideoEncodeH265PictureInfo { - StdVideoEncodeH265PictureInfoFlags flags; - StdVideoH265PictureType PictureType; - uint8_t sps_video_parameter_set_id; - uint8_t pps_seq_parameter_set_id; - uint8_t pps_pic_parameter_set_id; - int32_t PicOrderCntVal; - uint8_t TemporalId; } StdVideoEncodeH265PictureInfo; typedef struct StdVideoEncodeH265ReferenceInfoFlags { uint32_t used_for_long_term_reference : 1; uint32_t unused_for_reference : 1; + uint32_t reserved : 30; } StdVideoEncodeH265ReferenceInfoFlags; typedef struct StdVideoEncodeH265ReferenceInfo { StdVideoEncodeH265ReferenceInfoFlags flags; + StdVideoH265PictureType pic_type; int32_t PicOrderCntVal; uint8_t TemporalId; } StdVideoEncodeH265ReferenceInfo; diff --git a/ext/vulkan/vk_video/vulkan_video_codecs_common.h b/ext/vulkan/vk_video/vulkan_video_codecs_common.h index 1e498265e1..6568975ee3 100644 --- a/ext/vulkan/vk_video/vulkan_video_codecs_common.h +++ b/ext/vulkan/vk_video/vulkan_video_codecs_common.h @@ -2,7 +2,7 @@ #define VULKAN_VIDEO_CODECS_COMMON_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,7 +19,12 @@ extern "C" { +// vulkan_video_codecs_common is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codecs_common 1 +#if !defined(VK_NO_STDINT_H) + #include +#endif + #define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \ ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) diff --git a/ext/vulkan/vulkan.h b/ext/vulkan/vulkan.h index 3510ac912b..426cff58d7 100644 --- a/ext/vulkan/vulkan.h +++ b/ext/vulkan/vulkan.h @@ -2,7 +2,7 @@ #define VULKAN_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -84,6 +84,14 @@ #include "vulkan_screen.h" #endif + +#ifdef VK_USE_PLATFORM_SCI +#include +#include +#include "vulkan_sci.h" +#endif + + #ifdef VK_ENABLE_BETA_EXTENSIONS #include "vulkan_beta.h" #endif diff --git a/ext/vulkan/vulkan_android.h b/ext/vulkan/vulkan_android.h index 11f5397966..d86f43f2d2 100644 --- a/ext/vulkan/vulkan_android.h +++ b/ext/vulkan/vulkan_android.h @@ -2,7 +2,7 @@ #define VULKAN_ANDROID_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_KHR_android_surface is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_android_surface 1 struct ANativeWindow; #define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 @@ -42,6 +43,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( #endif +// VK_ANDROID_external_memory_android_hardware_buffer is a preprocessor guard. Do not pass it to API calls. #define VK_ANDROID_external_memory_android_hardware_buffer 1 struct AHardwareBuffer; #define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5 diff --git a/ext/vulkan/vulkan_beta.h b/ext/vulkan/vulkan_beta.h index cfeda0eb36..f00ed3ff1f 100644 --- a/ext/vulkan/vulkan_beta.h +++ b/ext/vulkan/vulkan_beta.h @@ -2,7 +2,7 @@ #define VULKAN_BETA_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_KHR_portability_subset is a preprocessor guard. Do not pass it to API calls. #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" @@ -50,8 +51,9 @@ typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { +// VK_KHR_video_encode_queue is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_video_encode_queue 1 -#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 7 +#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 9 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" typedef enum VkVideoEncodeTuningModeKHR { @@ -71,13 +73,22 @@ typedef enum VkVideoEncodeCapabilityFlagBitsKHR { typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; 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_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004, VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoEncodeRateControlModeFlagBitsKHR; typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; +typedef enum VkVideoEncodeFeedbackFlagBitsKHR { + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeFeedbackFlagBitsKHR; +typedef VkFlags VkVideoEncodeFeedbackFlagsKHR; + typedef enum VkVideoEncodeUsageFlagBitsKHR { VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0, VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, @@ -101,10 +112,9 @@ typedef struct VkVideoEncodeInfoKHR { VkStructureType sType; const void* pNext; VkVideoEncodeFlagsKHR flags; - uint32_t qualityLevel; - VkBuffer dstBitstreamBuffer; - VkDeviceSize dstBitstreamBufferOffset; - VkDeviceSize dstBitstreamBufferMaxRange; + VkBuffer dstBuffer; + VkDeviceSize dstBufferOffset; + VkDeviceSize dstBufferRange; VkVideoPictureResourceInfoKHR srcPictureResource; const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; uint32_t referenceSlotCount; @@ -117,11 +127,19 @@ typedef struct VkVideoEncodeCapabilitiesKHR { void* pNext; VkVideoEncodeCapabilityFlagsKHR flags; VkVideoEncodeRateControlModeFlagsKHR rateControlModes; - uint8_t rateControlLayerCount; - uint8_t qualityLevelCount; - VkExtent2D inputImageDataFillAlignment; + uint32_t maxRateControlLayers; + uint64_t maxBitrate; + uint32_t maxQualityLevels; + VkExtent2D encodeInputPictureGranularity; + VkVideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags; } VkVideoEncodeCapabilitiesKHR; +typedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeFeedbackFlagsKHR encodeFeedbackFlags; +} VkQueryPoolVideoEncodeFeedbackCreateInfoKHR; + typedef struct VkVideoEncodeUsageInfoKHR { VkStructureType sType; const void* pNext; @@ -133,12 +151,10 @@ typedef struct VkVideoEncodeUsageInfoKHR { typedef struct VkVideoEncodeRateControlLayerInfoKHR { VkStructureType sType; const void* pNext; - uint32_t averageBitrate; - uint32_t maxBitrate; + uint64_t averageBitrate; + uint64_t maxBitrate; uint32_t frameRateNumerator; uint32_t frameRateDenominator; - uint32_t virtualBufferSizeInMs; - uint32_t initialVirtualBufferSizeInMs; } VkVideoEncodeRateControlLayerInfoKHR; typedef struct VkVideoEncodeRateControlInfoKHR { @@ -146,93 +162,165 @@ typedef struct VkVideoEncodeRateControlInfoKHR { const void* pNext; VkVideoEncodeRateControlFlagsKHR flags; VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; - uint8_t layerCount; - const VkVideoEncodeRateControlLayerInfoKHR* pLayerConfigs; + uint32_t layerCount; + const VkVideoEncodeRateControlLayerInfoKHR* pLayers; + uint32_t virtualBufferSizeInMs; + uint32_t initialVirtualBufferSizeInMs; } VkVideoEncodeRateControlInfoKHR; +typedef struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR { + VkStructureType sType; + const void* pNext; + const VkVideoProfileInfoKHR* pVideoProfile; + uint32_t qualityLevel; +} VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR; + +typedef struct VkVideoEncodeQualityLevelPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode; + uint32_t preferredRateControlLayerCount; +} VkVideoEncodeQualityLevelPropertiesKHR; + +typedef struct VkVideoEncodeQualityLevelInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t qualityLevel; +} VkVideoEncodeQualityLevelInfoKHR; + +typedef struct VkVideoEncodeSessionParametersGetInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoSessionParametersKHR videoSessionParameters; +} VkVideoEncodeSessionParametersGetInfoKHR; + +typedef struct VkVideoEncodeSessionParametersFeedbackInfoKHR { + VkStructureType sType; + void* pNext; + VkBool32 hasOverrides; +} VkVideoEncodeSessionParametersFeedbackInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetEncodedVideoSessionParametersKHR)(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData); typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); #ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, + VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetEncodedVideoSessionParametersKHR( + VkDevice device, + const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, + VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, + size_t* pDataSize, + void* pData); + VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); #endif +// VK_EXT_video_encode_h264 is a preprocessor guard. Do not pass it to API calls. #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 9 +#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 11 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" -typedef enum VkVideoEncodeH264RateControlStructureEXT { - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1, - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2, - VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH264RateControlStructureEXT; - typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { - VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008, - VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010, - VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, - VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040, - VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080, - VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000, - VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000, - VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000, - VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000, - VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000, - VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000, - VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000, - VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000, - VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000, + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT = 0x00000100, 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 VkVideoEncodeH264StdFlagBitsEXT { + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_EXT = 0x00000200, + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_EXT = 0x00000400, + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_EXT = 0x00000800, + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_EXT = 0x00001000, + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_EXT = 0x00002000, + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT = 0x00004000, + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00008000, + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00010000, + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00020000, + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264StdFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264StdFlagsEXT; -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 VkVideoEncodeH264RateControlFlagBitsEXT { + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264RateControlFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264RateControlFlagsEXT; typedef struct VkVideoEncodeH264CapabilitiesEXT { VkStructureType sType; void* pNext; VkVideoEncodeH264CapabilityFlagsEXT flags; - VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; - VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; - uint8_t maxPPictureL0ReferenceCount; - uint8_t maxBPictureL0ReferenceCount; - uint8_t maxL1ReferenceCount; - VkBool32 motionVectorsOverPicBoundariesFlag; - uint32_t maxBytesPerPicDenom; - uint32_t maxBitsPerMbDenom; - uint32_t log2MaxMvLengthHorizontal; - uint32_t log2MaxMvLengthVertical; + StdVideoH264LevelIdc maxLevelIdc; + uint32_t maxSliceCount; + uint32_t maxPPictureL0ReferenceCount; + uint32_t maxBPictureL0ReferenceCount; + uint32_t maxL1ReferenceCount; + uint32_t maxTemporalLayerCount; + VkBool32 expectDyadicTemporalLayerPattern; + int32_t minQp; + int32_t maxQp; + VkBool32 prefersGopRemainingFrames; + VkBool32 requiresGopRemainingFrames; + VkVideoEncodeH264StdFlagsEXT stdSyntaxFlags; } VkVideoEncodeH264CapabilitiesEXT; +typedef struct VkVideoEncodeH264QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH264QpEXT; + +typedef struct VkVideoEncodeH264QualityLevelPropertiesEXT { + VkStructureType sType; + void* pNext; + VkVideoEncodeH264RateControlFlagsEXT preferredRateControlFlags; + uint32_t preferredGopFrameCount; + uint32_t preferredIdrPeriod; + uint32_t preferredConsecutiveBFrameCount; + uint32_t preferredTemporalLayerCount; + VkVideoEncodeH264QpEXT preferredConstantQp; + uint32_t preferredMaxL0ReferenceCount; + uint32_t preferredMaxL1ReferenceCount; + VkBool32 preferredStdEntropyCodingModeFlag; +} VkVideoEncodeH264QualityLevelPropertiesEXT; + +typedef struct VkVideoEncodeH264SessionCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 useMaxLevelIdc; + StdVideoH264LevelIdc maxLevelIdc; +} VkVideoEncodeH264SessionCreateInfoEXT; + typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { VkStructureType sType; const void* pNext; @@ -250,49 +338,44 @@ typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; } VkVideoEncodeH264SessionParametersCreateInfoEXT; +typedef struct VkVideoEncodeH264SessionParametersGetInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 writeStdSPS; + VkBool32 writeStdPPS; + uint32_t stdSPSId; + uint32_t stdPPSId; +} VkVideoEncodeH264SessionParametersGetInfoEXT; + +typedef struct VkVideoEncodeH264SessionParametersFeedbackInfoEXT { + VkStructureType sType; + void* pNext; + VkBool32 hasStdSPSOverrides; + VkBool32 hasStdPPSOverrides; +} VkVideoEncodeH264SessionParametersFeedbackInfoEXT; + +typedef struct VkVideoEncodeH264NaluSliceInfoEXT { + VkStructureType sType; + const void* pNext; + int32_t constantQp; + const StdVideoEncodeH264SliceHeader* pStdSliceHeader; +} VkVideoEncodeH264NaluSliceInfoEXT; + +typedef struct VkVideoEncodeH264PictureInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t naluSliceEntryCount; + const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries; + const StdVideoEncodeH264PictureInfo* pStdPictureInfo; + VkBool32 generatePrefixNalu; +} VkVideoEncodeH264PictureInfoEXT; + typedef struct VkVideoEncodeH264DpbSlotInfoEXT { VkStructureType sType; const void* pNext; - int8_t slotIndex; const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; } VkVideoEncodeH264DpbSlotInfoEXT; -typedef struct VkVideoEncodeH264ReferenceListsInfoEXT { - VkStructureType sType; - const void* pNext; - uint8_t referenceList0EntryCount; - const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList0Entries; - uint8_t referenceList1EntryCount; - const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList1Entries; - const StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations; -} VkVideoEncodeH264ReferenceListsInfoEXT; - -typedef struct VkVideoEncodeH264NaluSliceInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t mbCount; - const VkVideoEncodeH264ReferenceListsInfoEXT* pReferenceFinalLists; - const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; -} VkVideoEncodeH264NaluSliceInfoEXT; - -typedef struct VkVideoEncodeH264VclFrameInfoEXT { - VkStructureType sType; - const void* pNext; - const VkVideoEncodeH264ReferenceListsInfoEXT* pReferenceFinalLists; - uint32_t naluSliceEntryCount; - const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries; - const StdVideoEncodeH264PictureInfo* pCurrentPictureInfo; -} VkVideoEncodeH264VclFrameInfoEXT; - -typedef struct VkVideoEncodeH264EmitPictureParametersInfoEXT { - VkStructureType sType; - const void* pNext; - uint8_t spsId; - VkBool32 emitSpsEnable; - uint32_t ppsIdEntryCount; - const uint8_t* ppsIdEntries; -} VkVideoEncodeH264EmitPictureParametersInfoEXT; - typedef struct VkVideoEncodeH264ProfileInfoEXT { VkStructureType sType; const void* pNext; @@ -300,21 +383,15 @@ typedef struct VkVideoEncodeH264ProfileInfoEXT { } VkVideoEncodeH264ProfileInfoEXT; typedef struct VkVideoEncodeH264RateControlInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t gopFrameCount; - uint32_t idrPeriod; - uint32_t consecutiveBFrameCount; - VkVideoEncodeH264RateControlStructureEXT rateControlStructure; - uint8_t temporalLayerCount; + VkStructureType sType; + const void* pNext; + VkVideoEncodeH264RateControlFlagsEXT flags; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + uint32_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; @@ -324,9 +401,6 @@ typedef struct VkVideoEncodeH264FrameSizeEXT { typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { VkStructureType sType; const void* pNext; - uint8_t temporalLayerId; - VkBool32 useInitialRcQp; - VkVideoEncodeH264QpEXT initialRcQp; VkBool32 useMinQp; VkVideoEncodeH264QpEXT minQp; VkBool32 useMaxQp; @@ -335,67 +409,62 @@ typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { VkVideoEncodeH264FrameSizeEXT maxFrameSize; } VkVideoEncodeH264RateControlLayerInfoEXT; +typedef struct VkVideoEncodeH264GopRemainingFrameInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 useGopRemainingFrames; + uint32_t gopRemainingI; + uint32_t gopRemainingP; + uint32_t gopRemainingB; +} VkVideoEncodeH264GopRemainingFrameInfoEXT; + +// VK_EXT_video_encode_h265 is a preprocessor guard. Do not pass it to API calls. #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 9 +#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 11 #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" -typedef enum VkVideoEncodeH265RateControlStructureEXT { - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1, - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2, - VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkVideoEncodeH265RateControlStructureEXT; - typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT { - VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002, - VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004, - VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008, - VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010, - VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, - VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040, - VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080, - VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100, - VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200, - VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400, - VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800, - VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000, - VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000, - VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000, - VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000, - VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000, - VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000, - VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000, - VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000, - VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000, - VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000, - VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000, - VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000, - VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000, - VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000, + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_EXT = 0x00000200, VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkVideoEncodeH265CapabilityFlagBitsEXT; typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; -typedef enum VkVideoEncodeH265InputModeFlagBitsEXT { - VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, - VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_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_SEGMENT_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 enum VkVideoEncodeH265StdFlagBitsEXT { + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_EXT = 0x00000200, + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_EXT = 0x00000400, + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_EXT = 0x00000800, + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_EXT = 0x00001000, + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_EXT = 0x00002000, + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT = 0x00004000, + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_EXT = 0x00008000, + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_EXT = 0x00010000, + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_EXT = 0x00020000, + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_EXT = 0x00040000, + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265StdFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265StdFlagsEXT; typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001, @@ -413,31 +482,63 @@ typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT { VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkVideoEncodeH265TransformBlockSizeFlagBitsEXT; typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; + +typedef enum VkVideoEncodeH265RateControlFlagBitsEXT { + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265RateControlFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265RateControlFlagsEXT; typedef struct VkVideoEncodeH265CapabilitiesEXT { VkStructureType sType; void* pNext; VkVideoEncodeH265CapabilityFlagsEXT flags; - VkVideoEncodeH265InputModeFlagsEXT inputModeFlags; - VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags; + StdVideoH265LevelIdc maxLevelIdc; + uint32_t maxSliceSegmentCount; + VkExtent2D maxTiles; VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes; - uint8_t maxPPictureL0ReferenceCount; - uint8_t maxBPictureL0ReferenceCount; - uint8_t maxL1ReferenceCount; - uint8_t maxSubLayersCount; - uint8_t minLog2MinLumaCodingBlockSizeMinus3; - uint8_t maxLog2MinLumaCodingBlockSizeMinus3; - uint8_t minLog2MinLumaTransformBlockSizeMinus2; - uint8_t maxLog2MinLumaTransformBlockSizeMinus2; - uint8_t minMaxTransformHierarchyDepthInter; - uint8_t maxMaxTransformHierarchyDepthInter; - uint8_t minMaxTransformHierarchyDepthIntra; - uint8_t maxMaxTransformHierarchyDepthIntra; - uint8_t maxDiffCuQpDeltaDepth; - uint8_t minMaxNumMergeCand; - uint8_t maxMaxNumMergeCand; + uint32_t maxPPictureL0ReferenceCount; + uint32_t maxBPictureL0ReferenceCount; + uint32_t maxL1ReferenceCount; + uint32_t maxSubLayerCount; + VkBool32 expectDyadicTemporalSubLayerPattern; + int32_t minQp; + int32_t maxQp; + VkBool32 prefersGopRemainingFrames; + VkBool32 requiresGopRemainingFrames; + VkVideoEncodeH265StdFlagsEXT stdSyntaxFlags; } VkVideoEncodeH265CapabilitiesEXT; +typedef struct VkVideoEncodeH265SessionCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 useMaxLevelIdc; + StdVideoH265LevelIdc maxLevelIdc; +} VkVideoEncodeH265SessionCreateInfoEXT; + +typedef struct VkVideoEncodeH265QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH265QpEXT; + +typedef struct VkVideoEncodeH265QualityLevelPropertiesEXT { + VkStructureType sType; + void* pNext; + VkVideoEncodeH265RateControlFlagsEXT preferredRateControlFlags; + uint32_t preferredGopFrameCount; + uint32_t preferredIdrPeriod; + uint32_t preferredConsecutiveBFrameCount; + uint32_t preferredSubLayerCount; + VkVideoEncodeH265QpEXT preferredConstantQp; + uint32_t preferredMaxL0ReferenceCount; + uint32_t preferredMaxL1ReferenceCount; +} VkVideoEncodeH265QualityLevelPropertiesEXT; + typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { VkStructureType sType; const void* pNext; @@ -458,51 +559,46 @@ typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; } VkVideoEncodeH265SessionParametersCreateInfoEXT; +typedef struct VkVideoEncodeH265SessionParametersGetInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 writeStdVPS; + VkBool32 writeStdSPS; + VkBool32 writeStdPPS; + uint32_t stdVPSId; + uint32_t stdSPSId; + uint32_t stdPPSId; +} VkVideoEncodeH265SessionParametersGetInfoEXT; + +typedef struct VkVideoEncodeH265SessionParametersFeedbackInfoEXT { + VkStructureType sType; + void* pNext; + VkBool32 hasStdVPSOverrides; + VkBool32 hasStdSPSOverrides; + VkBool32 hasStdPPSOverrides; +} VkVideoEncodeH265SessionParametersFeedbackInfoEXT; + +typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT { + VkStructureType sType; + const void* pNext; + int32_t constantQp; + const StdVideoEncodeH265SliceSegmentHeader* pStdSliceSegmentHeader; +} VkVideoEncodeH265NaluSliceSegmentInfoEXT; + +typedef struct VkVideoEncodeH265PictureInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t naluSliceSegmentEntryCount; + const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries; + const StdVideoEncodeH265PictureInfo* pStdPictureInfo; +} VkVideoEncodeH265PictureInfoEXT; + typedef struct VkVideoEncodeH265DpbSlotInfoEXT { VkStructureType sType; const void* pNext; - int8_t slotIndex; const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; } VkVideoEncodeH265DpbSlotInfoEXT; -typedef struct VkVideoEncodeH265ReferenceListsInfoEXT { - VkStructureType sType; - const void* pNext; - uint8_t referenceList0EntryCount; - const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries; - uint8_t referenceList1EntryCount; - const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries; - const StdVideoEncodeH265ReferenceModifications* pReferenceModifications; -} VkVideoEncodeH265ReferenceListsInfoEXT; - -typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t ctbCount; - const VkVideoEncodeH265ReferenceListsInfoEXT* pReferenceFinalLists; - const StdVideoEncodeH265SliceSegmentHeader* pSliceSegmentHeaderStd; -} VkVideoEncodeH265NaluSliceSegmentInfoEXT; - -typedef struct VkVideoEncodeH265VclFrameInfoEXT { - VkStructureType sType; - const void* pNext; - const VkVideoEncodeH265ReferenceListsInfoEXT* pReferenceFinalLists; - uint32_t naluSliceSegmentEntryCount; - const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries; - const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo; -} VkVideoEncodeH265VclFrameInfoEXT; - -typedef struct VkVideoEncodeH265EmitPictureParametersInfoEXT { - VkStructureType sType; - const void* pNext; - uint8_t vpsId; - uint8_t spsId; - VkBool32 emitVpsEnable; - VkBool32 emitSpsEnable; - uint32_t ppsIdEntryCount; - const uint8_t* ppsIdEntries; -} VkVideoEncodeH265EmitPictureParametersInfoEXT; - typedef struct VkVideoEncodeH265ProfileInfoEXT { VkStructureType sType; const void* pNext; @@ -510,21 +606,15 @@ typedef struct VkVideoEncodeH265ProfileInfoEXT { } VkVideoEncodeH265ProfileInfoEXT; typedef struct VkVideoEncodeH265RateControlInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t gopFrameCount; - uint32_t idrPeriod; - uint32_t consecutiveBFrameCount; - VkVideoEncodeH265RateControlStructureEXT rateControlStructure; - uint8_t subLayerCount; + VkStructureType sType; + const void* pNext; + VkVideoEncodeH265RateControlFlagsEXT flags; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + uint32_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; @@ -534,9 +624,6 @@ typedef struct VkVideoEncodeH265FrameSizeEXT { typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { VkStructureType sType; const void* pNext; - uint8_t temporalId; - VkBool32 useInitialRcQp; - VkVideoEncodeH265QpEXT initialRcQp; VkBool32 useMinQp; VkVideoEncodeH265QpEXT minQp; VkBool32 useMaxQp; @@ -545,6 +632,174 @@ typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { VkVideoEncodeH265FrameSizeEXT maxFrameSize; } VkVideoEncodeH265RateControlLayerInfoEXT; +typedef struct VkVideoEncodeH265GopRemainingFrameInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 useGopRemainingFrames; + uint32_t gopRemainingI; + uint32_t gopRemainingP; + uint32_t gopRemainingB; +} VkVideoEncodeH265GopRemainingFrameInfoEXT; + + + +// VK_AMDX_shader_enqueue is a preprocessor guard. Do not pass it to API calls. +#define VK_AMDX_shader_enqueue 1 +#define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 1 +#define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue" +#define VK_SHADER_INDEX_UNUSED_AMDX (~0U) +typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX { + VkStructureType sType; + void* pNext; + VkBool32 shaderEnqueue; +} VkPhysicalDeviceShaderEnqueueFeaturesAMDX; + +typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX { + VkStructureType sType; + void* pNext; + uint32_t maxExecutionGraphDepth; + uint32_t maxExecutionGraphShaderOutputNodes; + uint32_t maxExecutionGraphShaderPayloadSize; + uint32_t maxExecutionGraphShaderPayloadCount; + uint32_t executionGraphDispatchAddressAlignment; +} VkPhysicalDeviceShaderEnqueuePropertiesAMDX; + +typedef struct VkExecutionGraphPipelineScratchSizeAMDX { + VkStructureType sType; + void* pNext; + VkDeviceSize size; +} VkExecutionGraphPipelineScratchSizeAMDX; + +typedef struct VkExecutionGraphPipelineCreateInfoAMDX { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkExecutionGraphPipelineCreateInfoAMDX; + +typedef union VkDeviceOrHostAddressConstAMDX { + VkDeviceAddress deviceAddress; + const void* hostAddress; +} VkDeviceOrHostAddressConstAMDX; + +typedef struct VkDispatchGraphInfoAMDX { + uint32_t nodeIndex; + uint32_t payloadCount; + VkDeviceOrHostAddressConstAMDX payloads; + uint64_t payloadStride; +} VkDispatchGraphInfoAMDX; + +typedef struct VkDispatchGraphCountInfoAMDX { + uint32_t count; + VkDeviceOrHostAddressConstAMDX infos; + uint64_t stride; +} VkDispatchGraphCountInfoAMDX; + +typedef struct VkPipelineShaderStageNodeCreateInfoAMDX { + VkStructureType sType; + const void* pNext; + const char* pName; + uint32_t index; +} VkPipelineShaderStageNodeCreateInfoAMDX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice device, VkPipeline executionGraph, VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice device, VkPipeline executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, uint32_t* pNodeIndex); +typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceAddress countInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX( + VkDevice device, + VkPipeline executionGraph, + VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX( + VkDevice device, + VkPipeline executionGraph, + const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, + uint32_t* pNodeIndex); + +VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX( + VkCommandBuffer commandBuffer, + VkDeviceAddress scratch); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX( + VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + const VkDispatchGraphCountInfoAMDX* pCountInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX( + VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + const VkDispatchGraphCountInfoAMDX* pCountInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX( + VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + VkDeviceAddress countInfo); +#endif + + +// VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_displacement_micromap 1 +#define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2 +#define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap" + +typedef enum VkDisplacementMicromapFormatNV { + VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1, + VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2, + VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3, + VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF +} VkDisplacementMicromapFormatNV; +typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 displacementMicromap; +} VkPhysicalDeviceDisplacementMicromapFeaturesNV; + +typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxDisplacementMicromapSubdivisionLevel; +} VkPhysicalDeviceDisplacementMicromapPropertiesNV; + +typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV { + VkStructureType sType; + void* pNext; + VkFormat displacementBiasAndScaleFormat; + VkFormat displacementVectorFormat; + VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer; + VkDeviceSize displacementBiasAndScaleStride; + VkDeviceOrHostAddressConstKHR displacementVectorBuffer; + VkDeviceSize displacementVectorStride; + VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags; + VkDeviceSize displacedMicromapPrimitiveFlagsStride; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexBuffer; + VkDeviceSize indexStride; + uint32_t baseTriangle; + uint32_t usageCountsCount; + const VkMicromapUsageEXT* pUsageCounts; + const VkMicromapUsageEXT* const* ppUsageCounts; + VkMicromapEXT micromap; +} VkAccelerationStructureTrianglesDisplacementMicromapNV; + #ifdef __cplusplus } diff --git a/ext/vulkan/vulkan_core.h b/ext/vulkan/vulkan_core.h index 4c73571efd..c574858134 100644 --- a/ext/vulkan/vulkan_core.h +++ b/ext/vulkan/vulkan_core.h @@ -2,7 +2,7 @@ #define VULKAN_CORE_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_VERSION_1_0 is a preprocessor guard. Do not pass it to API calls. #define VK_VERSION_1_0 1 #include "vk_platform.h" @@ -58,37 +59,37 @@ extern "C" { #endif #endif -// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. -#define VK_MAKE_VERSION(major, minor, patch) \ - ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) +#define VK_MAKE_API_VERSION(variant, major, minor, patch) \ + ((((uint32_t)(variant)) << 29U) | (((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((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))) +//#define VK_API_VERSION VK_MAKE_API_VERSION(0, 1, 0, 0) // Patch version should always be set to 0 // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 239 +#define VK_HEADER_VERSION 261 // 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_MAKE_API_VERSION should be used instead. +#define VK_MAKE_VERSION(major, minor, patch) \ + ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch))) + // DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. -#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22U) // DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. -#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU) +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) // DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) -#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_VARIANT(version) ((uint32_t)(version) >> 29U) +#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU) +#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) #define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) typedef uint32_t VkBool32; typedef uint64_t VkDeviceAddress; @@ -181,7 +182,11 @@ typedef enum VkResult { VK_THREAD_DONE_KHR = 1000268001, VK_OPERATION_DEFERRED_KHR = 1000268002, VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000, +#endif VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000, + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000, 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_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION, @@ -472,7 +477,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038002, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038003, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT = 1000038003, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038004, @@ -481,7 +486,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT = 1000038005, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_INFO_EXT = 1000038006, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT = 1000038006, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT = 1000038007, @@ -493,7 +498,16 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT = 1000038009, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_INFO_EXT = 1000038010, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT = 1000038010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT = 1000038011, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT = 1000038012, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT = 1000038013, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000, @@ -505,7 +519,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039002, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039003, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_EXT = 1000039003, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039004, @@ -514,19 +528,28 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT = 1000039005, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_INFO_EXT = 1000039006, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_EXT = 1000039006, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT = 1000039007, #endif -#ifdef VK_ENABLE_BETA_EXTENSIONS - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_INFO_EXT = 1000039008, -#endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT = 1000039009, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039010, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT = 1000039011, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_EXT = 1000039012, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_EXT = 1000039013, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_EXT = 1000039014, #endif VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000, VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001, @@ -623,6 +646,21 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX = 1000134000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX = 1000134001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX = 1000134002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX = 1000134003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX = 1000134004, +#endif 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, @@ -777,6 +815,18 @@ typedef enum VkStructureType { 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_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001, + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002, + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005, + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007, + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008, + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009, + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000, + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000, VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001, @@ -800,6 +850,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, 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_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000, + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001, + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002, 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, @@ -828,9 +881,28 @@ typedef enum VkStructureType { #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010, #endif VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000, VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000, VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001, VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002, @@ -880,8 +952,6 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000, VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001, - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002, - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003, VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, @@ -936,6 +1006,8 @@ typedef enum VkStructureType { 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_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001, VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000, VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001, VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002, @@ -946,11 +1018,23 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007, VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008, VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV = 1000397000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV = 1000397001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV = 1000397002, +#endif VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001, 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_SHADER_CORE_PROPERTIES_ARM = 1000415000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002, @@ -963,11 +1047,15 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000, + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001, + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001, VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000, @@ -990,6 +1078,18 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001, + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004, + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002, + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003, + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005, + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001, + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000, VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000, @@ -1001,6 +1101,19 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000, + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000, + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000, + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000, + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001, + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002, + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004, 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, @@ -1163,6 +1276,8 @@ typedef enum VkStructureType { 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_SUBRESOURCE_LAYOUT_2_EXT = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR, + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT, @@ -1174,6 +1289,7 @@ typedef enum VkStructureType { 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_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkStructureType; @@ -1278,6 +1394,7 @@ typedef enum VkObjectType { VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000, VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000, VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000, + VK_OBJECT_TYPE_SHADER_EXT = 1000482000, 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, @@ -1291,6 +1408,7 @@ typedef enum VkVendorId { VK_VENDOR_ID_CODEPLAY = 0x10004, VK_VENDOR_ID_MESA = 0x10005, VK_VENDOR_ID_POCL = 0x10006, + VK_VENDOR_ID_MOBILEYE = 0x10007, VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF } VkVendorId; @@ -1557,6 +1675,8 @@ typedef enum VkFormat { VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, VK_FORMAT_R16G16_S10_5_NV = 1000464000, + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000, + VK_FORMAT_A8_UNORM_KHR = 1000470001, 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, @@ -1649,7 +1769,7 @@ typedef enum VkQueryType { VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, #ifdef VK_ENABLE_BETA_EXTENSIONS - VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, + VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000, #endif VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000, VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, @@ -1805,10 +1925,13 @@ typedef enum VkDynamicState { 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_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001, + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002, 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_ENABLE_NV = 1000205000, VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, @@ -1847,6 +1970,7 @@ typedef enum VkDynamicState { VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030, VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031, VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032, + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000, 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, @@ -2012,6 +2136,9 @@ typedef enum VkAttachmentStoreOp { typedef enum VkPipelineBindPoint { VK_PIPELINE_BIND_POINT_GRAPHICS = 0, VK_PIPELINE_BIND_POINT_COMPUTE = 1, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX = 1000134000, +#endif 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, @@ -2205,6 +2332,7 @@ typedef enum VkImageUsageFlagBits { VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000, VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100, + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 0x00400000, #ifdef VK_ENABLE_BETA_EXTENSIONS VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000, #endif @@ -2399,6 +2527,9 @@ typedef enum VkBufferUsageFlagBits { 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, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000, +#endif 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, @@ -2475,6 +2606,9 @@ typedef enum VkPipelineCreateFlagBits { VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000, VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000, VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000, +#endif VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 0x08000000, VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 0x40000000, VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, @@ -2592,6 +2726,7 @@ typedef enum VkDescriptorSetLayoutCreateFlagBits { VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00000010, VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 0x00000020, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00000080, VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 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_HOST_ONLY_POOL_BIT_VALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT, @@ -4748,6 +4883,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( #endif +// VK_VERSION_1_1 is a preprocessor guard. Do not pass it to API calls. #define VK_VERSION_1_1 1 // Vulkan 1.1 version number #define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0 @@ -4865,6 +5001,7 @@ typedef enum VkExternalMemoryHandleTypeFlagBits { 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_SCREEN_BUFFER_BIT_QNX = 0x00004000, 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, @@ -5613,6 +5750,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport( #endif +// VK_VERSION_1_2 is a preprocessor guard. Do not pass it to API calls. #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 @@ -6367,6 +6505,7 @@ VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress( #endif +// VK_VERSION_1_3 is a preprocessor guard. Do not pass it to API calls. #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 @@ -6476,6 +6615,7 @@ static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0 static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 0x00080000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = 0x00100000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI = 0x8000000000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL; @@ -6641,6 +6781,7 @@ static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_K 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; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = 0x400000000000ULL; #ifdef VK_ENABLE_BETA_EXTENSIONS static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL; #endif @@ -7408,6 +7549,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirements( #endif +// VK_KHR_surface is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_surface 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) #define VK_KHR_SURFACE_SPEC_VERSION 25 @@ -7522,6 +7664,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( #endif +// VK_KHR_swapchain is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_swapchain 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) #define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 @@ -7682,6 +7825,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( #endif +// VK_KHR_display is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_display 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) @@ -7807,6 +7951,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( #endif +// VK_KHR_display_swapchain is a preprocessor guard. Do not pass it to API calls. #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" @@ -7830,11 +7975,13 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( #endif +// VK_KHR_sampler_mirror_clamp_to_edge is a preprocessor guard. Do not pass it to API calls. #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" +// VK_KHR_video_queue is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_video_queue 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) @@ -7890,6 +8037,9 @@ typedef VkFlags VkVideoCapabilityFlagsKHR; typedef enum VkVideoSessionCreateFlagBitsKHR { VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 0x00000002, +#endif VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoSessionCreateFlagBitsKHR; typedef VkFlags VkVideoSessionCreateFlagsKHR; @@ -7903,7 +8053,7 @@ typedef enum VkVideoCodingControlFlagBitsKHR { VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS - VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR = 0x00000004, + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 0x00000004, #endif VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoCodingControlFlagBitsKHR; @@ -8127,6 +8277,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( #endif +// VK_KHR_video_decode_queue is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_video_decode_queue 1 #define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 7 #define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" @@ -8181,6 +8332,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( #endif +// VK_KHR_video_decode_h264 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_video_decode_h264 1 #include "vk_video/vulkan_video_codec_h264std.h" #include "vk_video/vulkan_video_codec_h264std_decode.h" @@ -8241,6 +8393,7 @@ typedef struct VkVideoDecodeH264DpbSlotInfoKHR { +// VK_KHR_dynamic_rendering is a preprocessor guard. Do not pass it to API calls. #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" @@ -8303,6 +8456,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR( #endif +// VK_KHR_multiview is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_multiview 1 #define VK_KHR_MULTIVIEW_SPEC_VERSION 1 #define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" @@ -8314,6 +8468,7 @@ typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesK +// VK_KHR_get_physical_device_properties2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -8379,6 +8534,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( #endif +// VK_KHR_device_group is a preprocessor guard. Do not pass it to API calls. #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" @@ -8431,11 +8587,13 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR( #endif +// VK_KHR_shader_draw_parameters is a preprocessor guard. Do not pass it to API calls. #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" +// VK_KHR_maintenance1 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_maintenance1 1 #define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2 #define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1" @@ -8453,6 +8611,7 @@ VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( #endif +// VK_KHR_device_group_creation is a preprocessor guard. Do not pass it to API calls. #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" @@ -8471,6 +8630,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( #endif +// VK_KHR_external_memory_capabilities is a preprocessor guard. Do not pass it to API calls. #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" @@ -8505,6 +8665,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( #endif +// VK_KHR_external_memory is a preprocessor guard. Do not pass it to API calls. #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" @@ -8517,6 +8678,7 @@ typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; +// VK_KHR_external_memory_fd is a preprocessor guard. Do not pass it to API calls. #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" @@ -8557,6 +8719,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( #endif +// VK_KHR_external_semaphore_capabilities is a preprocessor guard. Do not pass it to API calls. #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" @@ -8582,6 +8745,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( #endif +// VK_KHR_external_semaphore is a preprocessor guard. Do not pass it to API calls. #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" @@ -8593,6 +8757,7 @@ typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; +// VK_KHR_external_semaphore_fd is a preprocessor guard. Do not pass it to API calls. #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" @@ -8627,6 +8792,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( #endif +// VK_KHR_push_descriptor is a preprocessor guard. Do not pass it to API calls. #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" @@ -8657,6 +8823,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( #endif +// VK_KHR_shader_float16_int8 is a preprocessor guard. Do not pass it to API calls. #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" @@ -8666,6 +8833,7 @@ typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8Fea +// VK_KHR_16bit_storage is a preprocessor guard. Do not pass it to API calls. #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" @@ -8673,6 +8841,7 @@ typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeature +// VK_KHR_incremental_present is a preprocessor guard. Do not pass it to API calls. #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" @@ -8696,6 +8865,7 @@ typedef struct VkPresentRegionsKHR { +// VK_KHR_descriptor_update_template is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_descriptor_update_template 1 typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR; @@ -8733,6 +8903,7 @@ VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( #endif +// VK_KHR_imageless_framebuffer is a preprocessor guard. Do not pass it to API calls. #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" @@ -8746,6 +8917,7 @@ typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR; +// VK_KHR_create_renderpass2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -8791,6 +8963,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( #endif +// VK_KHR_shared_presentable_image is a preprocessor guard. Do not pass it to API calls. #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" @@ -8809,6 +8982,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( #endif +// VK_KHR_external_fence_capabilities is a preprocessor guard. Do not pass it to API calls. #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" @@ -8834,6 +9008,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( #endif +// VK_KHR_external_fence is a preprocessor guard. Do not pass it to API calls. #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" @@ -8845,6 +9020,7 @@ typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; +// VK_KHR_external_fence_fd is a preprocessor guard. Do not pass it to API calls. #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" @@ -8879,6 +9055,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( #endif +// VK_KHR_performance_query is a preprocessor guard. Do not pass it to API calls. #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" @@ -9019,6 +9196,7 @@ VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR( #endif +// VK_KHR_maintenance2 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_maintenance2 1 #define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1 #define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2" @@ -9040,6 +9218,7 @@ typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellation +// VK_KHR_get_surface_capabilities2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -9078,6 +9257,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( #endif +// VK_KHR_variable_pointers is a preprocessor guard. Do not pass it to API calls. #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" @@ -9087,6 +9267,7 @@ typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointer +// VK_KHR_get_display_properties2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -9150,6 +9331,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( #endif +// VK_KHR_dedicated_allocation is a preprocessor guard. Do not pass it to API calls. #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" @@ -9159,16 +9341,19 @@ typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; +// VK_KHR_storage_buffer_storage_class is a preprocessor guard. Do not pass it to API calls. #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" +// VK_KHR_relaxed_block_layout is a preprocessor guard. Do not pass it to API calls. #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" +// VK_KHR_get_memory_requirements2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -9205,6 +9390,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( #endif +// VK_KHR_image_format_list is a preprocessor guard. Do not pass it to API calls. #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" @@ -9212,6 +9398,7 @@ typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR; +// VK_KHR_sampler_ycbcr_conversion is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_sampler_ycbcr_conversion 1 typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; @@ -9252,6 +9439,7 @@ VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( #endif +// VK_KHR_bind_memory2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -9275,6 +9463,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( #endif +// VK_KHR_maintenance3 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_maintenance3 1 #define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1 #define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3" @@ -9294,6 +9483,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( #endif +// VK_KHR_draw_indirect_count is a preprocessor guard. Do not pass it to API calls. #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" @@ -9321,6 +9511,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( #endif +// VK_KHR_shader_subgroup_extended_types is a preprocessor guard. Do not pass it to API calls. #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" @@ -9328,6 +9519,7 @@ typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShad +// VK_KHR_8bit_storage is a preprocessor guard. Do not pass it to API calls. #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" @@ -9335,6 +9527,7 @@ typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesK +// VK_KHR_shader_atomic_int64 is a preprocessor guard. Do not pass it to API calls. #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" @@ -9342,6 +9535,7 @@ typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicIn +// VK_KHR_shader_clock is a preprocessor guard. Do not pass it to API calls. #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" @@ -9354,6 +9548,7 @@ typedef struct VkPhysicalDeviceShaderClockFeaturesKHR { +// VK_KHR_video_decode_h265 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_video_decode_h265 1 #include "vk_video/vulkan_video_codec_h265std.h" #include "vk_video/vulkan_video_codec_h265std_decode.h" @@ -9392,11 +9587,11 @@ typedef struct VkVideoDecodeH265SessionParametersCreateInfoKHR { } VkVideoDecodeH265SessionParametersCreateInfoKHR; typedef struct VkVideoDecodeH265PictureInfoKHR { - VkStructureType sType; - const void* pNext; - StdVideoDecodeH265PictureInfo* pStdPictureInfo; - uint32_t sliceSegmentCount; - const uint32_t* pSliceSegmentOffsets; + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH265PictureInfo* pStdPictureInfo; + uint32_t sliceSegmentCount; + const uint32_t* pSliceSegmentOffsets; } VkVideoDecodeH265PictureInfoKHR; typedef struct VkVideoDecodeH265DpbSlotInfoKHR { @@ -9407,6 +9602,7 @@ typedef struct VkVideoDecodeH265DpbSlotInfoKHR { +// VK_KHR_global_priority is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_global_priority 1 #define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR 16U #define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1 @@ -9444,6 +9640,7 @@ typedef struct VkQueueFamilyGlobalPriorityPropertiesKHR { +// VK_KHR_driver_properties is a preprocessor guard. Do not pass it to API calls. #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" @@ -9457,6 +9654,7 @@ typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; +// VK_KHR_shader_float_controls is a preprocessor guard. Do not pass it to API calls. #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" @@ -9466,6 +9664,7 @@ typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPro +// VK_KHR_depth_stencil_resolve is a preprocessor guard. Do not pass it to API calls. #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" @@ -9479,11 +9678,13 @@ typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStenc +// VK_KHR_swapchain_mutable_format is a preprocessor guard. Do not pass it to API calls. #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" +// VK_KHR_timeline_semaphore is a preprocessor guard. Do not pass it to API calls. #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" @@ -9526,6 +9727,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR( #endif +// VK_KHR_vulkan_memory_model is a preprocessor guard. Do not pass it to API calls. #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" @@ -9533,6 +9735,7 @@ typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryMo +// VK_KHR_shader_terminate_invocation is a preprocessor guard. Do not pass it to API calls. #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" @@ -9540,6 +9743,7 @@ typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShader +// VK_KHR_fragment_shading_rate is a preprocessor guard. Do not pass it to API calls. #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" @@ -9619,11 +9823,13 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR( #endif +// VK_KHR_spirv_1_4 is a preprocessor guard. Do not pass it to API calls. #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" +// VK_KHR_surface_protected_capabilities is a preprocessor guard. Do not pass it to API calls. #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" @@ -9635,6 +9841,7 @@ typedef struct VkSurfaceProtectedCapabilitiesKHR { +// VK_KHR_separate_depth_stencil_layouts is a preprocessor guard. Do not pass it to API calls. #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" @@ -9646,6 +9853,7 @@ typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayou +// VK_KHR_present_wait is a preprocessor guard. Do not pass it to API calls. #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" @@ -9666,6 +9874,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR( #endif +// VK_KHR_uniform_buffer_standard_layout is a preprocessor guard. Do not pass it to API calls. #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" @@ -9673,6 +9882,7 @@ typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUnif +// VK_KHR_buffer_device_address is a preprocessor guard. Do not pass it to API calls. #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" @@ -9705,6 +9915,7 @@ VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR( #endif +// VK_KHR_deferred_host_operations is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_deferred_host_operations 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR) #define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4 @@ -9740,6 +9951,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR( #endif +// VK_KHR_pipeline_executable_properties is a preprocessor guard. Do not pass it to API calls. #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" @@ -9830,6 +10042,43 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR #endif +// VK_KHR_map_memory2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_map_memory2 1 +#define VK_KHR_MAP_MEMORY_2_SPEC_VERSION 1 +#define VK_KHR_MAP_MEMORY_2_EXTENSION_NAME "VK_KHR_map_memory2" +typedef VkFlags VkMemoryUnmapFlagsKHR; +typedef struct VkMemoryMapInfoKHR { + VkStructureType sType; + const void* pNext; + VkMemoryMapFlags flags; + VkDeviceMemory memory; + VkDeviceSize offset; + VkDeviceSize size; +} VkMemoryMapInfoKHR; + +typedef struct VkMemoryUnmapInfoKHR { + VkStructureType sType; + const void* pNext; + VkMemoryUnmapFlagsKHR flags; + VkDeviceMemory memory; +} VkMemoryUnmapInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory2KHR)(VkDevice device, const VkMemoryMapInfoKHR* pMemoryMapInfo, void** ppData); +typedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2KHR)(VkDevice device, const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory2KHR( + VkDevice device, + const VkMemoryMapInfoKHR* pMemoryMapInfo, + void** ppData); + +VKAPI_ATTR VkResult VKAPI_CALL vkUnmapMemory2KHR( + VkDevice device, + const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo); +#endif + + +// VK_KHR_shader_integer_dot_product is a preprocessor guard. Do not pass it to API calls. #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" @@ -9839,6 +10088,7 @@ typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShader +// VK_KHR_pipeline_library is a preprocessor guard. Do not pass it to API calls. #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" @@ -9851,11 +10101,13 @@ typedef struct VkPipelineLibraryCreateInfoKHR { +// VK_KHR_shader_non_semantic_info is a preprocessor guard. Do not pass it to API calls. #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" +// VK_KHR_present_id is a preprocessor guard. Do not pass it to API calls. #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" @@ -9874,6 +10126,7 @@ typedef struct VkPhysicalDevicePresentIdFeaturesKHR { +// VK_KHR_synchronization2 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_synchronization2 1 #define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1 #define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2" @@ -9974,6 +10227,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV( #endif +// VK_KHR_fragment_shader_barycentric is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_fragment_shader_barycentric 1 #define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 #define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric" @@ -9991,6 +10245,7 @@ typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR { +// VK_KHR_shader_subgroup_uniform_control_flow is a preprocessor guard. Do not pass it to API calls. #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" @@ -10002,6 +10257,7 @@ typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR { +// VK_KHR_zero_initialize_workgroup_memory is a preprocessor guard. Do not pass it to API calls. #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" @@ -10009,6 +10265,7 @@ typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZe +// VK_KHR_workgroup_memory_explicit_layout is a preprocessor guard. Do not pass it to API calls. #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" @@ -10023,6 +10280,7 @@ typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR { +// VK_KHR_copy_commands2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -10082,6 +10340,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR( #endif +// VK_KHR_format_feature_flags2 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_format_feature_flags2 1 #define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 2 #define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2" @@ -10093,6 +10352,7 @@ typedef VkFormatProperties3 VkFormatProperties3KHR; +// VK_KHR_ray_tracing_maintenance1 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_ray_tracing_maintenance1 1 #define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1 #define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1" @@ -10129,11 +10389,13 @@ VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirect2KHR( #endif +// VK_KHR_portability_enumeration is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_portability_enumeration 1 #define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1 #define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration" +// VK_KHR_maintenance4 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_maintenance4 1 #define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2 #define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4" @@ -10168,6 +10430,263 @@ VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR( #endif +// VK_KHR_maintenance5 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance5 1 +#define VK_KHR_MAINTENANCE_5_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_5_EXTENSION_NAME "VK_KHR_maintenance5" +typedef VkFlags64 VkPipelineCreateFlags2KHR; + +// Flag bits for VkPipelineCreateFlagBits2KHR +typedef VkFlags64 VkPipelineCreateFlagBits2KHR; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR = 0x00000001ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR = 0x00000002ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR = 0x00000004ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 0x00000008ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR = 0x00000010ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV = 0x00000020ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR = 0x00000040ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR = 0x00000100ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR = 0x00000200ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR = 0x00000800ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV = 0x00040000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT = 0x08000000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT = 0x40000000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000ULL; + +typedef VkFlags64 VkBufferUsageFlags2KHR; + +// Flag bits for VkBufferUsageFlagBits2KHR +typedef VkFlags64 VkBufferUsageFlagBits2KHR; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR = 0x00000001ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR = 0x00000002ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000004ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR = 0x00000010ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR = 0x00000020ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR = 0x00000040ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR = 0x00000080ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR = 0x00000100ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV = 0x00000400ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR = 0x00004000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000ULL; +#endif +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR = 0x00020000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = 0x01000000ULL; + +typedef struct VkPhysicalDeviceMaintenance5FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 maintenance5; +} VkPhysicalDeviceMaintenance5FeaturesKHR; + +typedef struct VkPhysicalDeviceMaintenance5PropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 earlyFragmentMultisampleCoverageAfterSampleCounting; + VkBool32 earlyFragmentSampleMaskTestBeforeSampleCounting; + VkBool32 depthStencilSwizzleOneSupport; + VkBool32 polygonModePointSize; + VkBool32 nonStrictSinglePixelWideLinesUseParallelogram; + VkBool32 nonStrictWideLinesUseParallelogram; +} VkPhysicalDeviceMaintenance5PropertiesKHR; + +typedef struct VkRenderingAreaInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkRenderingAreaInfoKHR; + +typedef struct VkImageSubresource2KHR { + VkStructureType sType; + void* pNext; + VkImageSubresource imageSubresource; +} VkImageSubresource2KHR; + +typedef struct VkDeviceImageSubresourceInfoKHR { + VkStructureType sType; + const void* pNext; + const VkImageCreateInfo* pCreateInfo; + const VkImageSubresource2KHR* pSubresource; +} VkDeviceImageSubresourceInfoKHR; + +typedef struct VkSubresourceLayout2KHR { + VkStructureType sType; + void* pNext; + VkSubresourceLayout subresourceLayout; +} VkSubresourceLayout2KHR; + +typedef struct VkPipelineCreateFlags2CreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags2KHR flags; +} VkPipelineCreateFlags2CreateInfoKHR; + +typedef struct VkBufferUsageFlags2CreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkBufferUsageFlags2KHR usage; +} VkBufferUsageFlags2CreateInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer2KHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType); +typedef void (VKAPI_PTR *PFN_vkGetRenderingAreaGranularityKHR)(VkDevice device, const VkRenderingAreaInfoKHR* pRenderingAreaInfo, VkExtent2D* pGranularity); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSubresourceLayoutKHR)(VkDevice device, const VkDeviceImageSubresourceInfoKHR* pInfo, VkSubresourceLayout2KHR* pLayout); +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2KHR)(VkDevice device, VkImage image, const VkImageSubresource2KHR* pSubresource, VkSubresourceLayout2KHR* pLayout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer2KHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkDeviceSize size, + VkIndexType indexType); + +VKAPI_ATTR void VKAPI_CALL vkGetRenderingAreaGranularityKHR( + VkDevice device, + const VkRenderingAreaInfoKHR* pRenderingAreaInfo, + VkExtent2D* pGranularity); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSubresourceLayoutKHR( + VkDevice device, + const VkDeviceImageSubresourceInfoKHR* pInfo, + VkSubresourceLayout2KHR* pLayout); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2KHR( + VkDevice device, + VkImage image, + const VkImageSubresource2KHR* pSubresource, + VkSubresourceLayout2KHR* pLayout); +#endif + + +// VK_KHR_ray_tracing_position_fetch is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_ray_tracing_position_fetch 1 +#define VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME "VK_KHR_ray_tracing_position_fetch" +typedef struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingPositionFetch; +} VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR; + + + +// VK_KHR_cooperative_matrix is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_cooperative_matrix 1 +#define VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION 2 +#define VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_KHR_cooperative_matrix" + +typedef enum VkComponentTypeKHR { + VK_COMPONENT_TYPE_FLOAT16_KHR = 0, + VK_COMPONENT_TYPE_FLOAT32_KHR = 1, + VK_COMPONENT_TYPE_FLOAT64_KHR = 2, + VK_COMPONENT_TYPE_SINT8_KHR = 3, + VK_COMPONENT_TYPE_SINT16_KHR = 4, + VK_COMPONENT_TYPE_SINT32_KHR = 5, + VK_COMPONENT_TYPE_SINT64_KHR = 6, + VK_COMPONENT_TYPE_UINT8_KHR = 7, + VK_COMPONENT_TYPE_UINT16_KHR = 8, + VK_COMPONENT_TYPE_UINT32_KHR = 9, + VK_COMPONENT_TYPE_UINT64_KHR = 10, + VK_COMPONENT_TYPE_FLOAT16_NV = VK_COMPONENT_TYPE_FLOAT16_KHR, + VK_COMPONENT_TYPE_FLOAT32_NV = VK_COMPONENT_TYPE_FLOAT32_KHR, + VK_COMPONENT_TYPE_FLOAT64_NV = VK_COMPONENT_TYPE_FLOAT64_KHR, + VK_COMPONENT_TYPE_SINT8_NV = VK_COMPONENT_TYPE_SINT8_KHR, + VK_COMPONENT_TYPE_SINT16_NV = VK_COMPONENT_TYPE_SINT16_KHR, + VK_COMPONENT_TYPE_SINT32_NV = VK_COMPONENT_TYPE_SINT32_KHR, + VK_COMPONENT_TYPE_SINT64_NV = VK_COMPONENT_TYPE_SINT64_KHR, + VK_COMPONENT_TYPE_UINT8_NV = VK_COMPONENT_TYPE_UINT8_KHR, + VK_COMPONENT_TYPE_UINT16_NV = VK_COMPONENT_TYPE_UINT16_KHR, + VK_COMPONENT_TYPE_UINT32_NV = VK_COMPONENT_TYPE_UINT32_KHR, + VK_COMPONENT_TYPE_UINT64_NV = VK_COMPONENT_TYPE_UINT64_KHR, + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkComponentTypeKHR; + +typedef enum VkScopeKHR { + VK_SCOPE_DEVICE_KHR = 1, + VK_SCOPE_WORKGROUP_KHR = 2, + VK_SCOPE_SUBGROUP_KHR = 3, + VK_SCOPE_QUEUE_FAMILY_KHR = 5, + VK_SCOPE_DEVICE_NV = VK_SCOPE_DEVICE_KHR, + VK_SCOPE_WORKGROUP_NV = VK_SCOPE_WORKGROUP_KHR, + VK_SCOPE_SUBGROUP_NV = VK_SCOPE_SUBGROUP_KHR, + VK_SCOPE_QUEUE_FAMILY_NV = VK_SCOPE_QUEUE_FAMILY_KHR, + VK_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkScopeKHR; +typedef struct VkCooperativeMatrixPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t MSize; + uint32_t NSize; + uint32_t KSize; + VkComponentTypeKHR AType; + VkComponentTypeKHR BType; + VkComponentTypeKHR CType; + VkComponentTypeKHR ResultType; + VkBool32 saturatingAccumulation; + VkScopeKHR scope; +} VkCooperativeMatrixPropertiesKHR; + +typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrix; + VkBool32 cooperativeMatrixRobustBufferAccess; +} VkPhysicalDeviceCooperativeMatrixFeaturesKHR; + +typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR { + VkStructureType sType; + void* pNext; + VkShaderStageFlags cooperativeMatrixSupportedStages; +} VkPhysicalDeviceCooperativeMatrixPropertiesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesKHR* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeMatrixPropertiesKHR* pProperties); +#endif + + +// VK_EXT_debug_report is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_debug_report 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) #define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10 @@ -10275,21 +10794,25 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( #endif +// VK_NV_glsl_shader is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_depth_range_unrestricted is a preprocessor guard. Do not pass it to API calls. #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" +// VK_IMG_filter_cubic is a preprocessor guard. Do not pass it to API calls. #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" +// VK_AMD_rasterization_order is a preprocessor guard. Do not pass it to API calls. #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" @@ -10307,16 +10830,19 @@ typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { +// VK_AMD_shader_trinary_minmax is a preprocessor guard. Do not pass it to API calls. #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" +// VK_AMD_shader_explicit_vertex_parameter is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_debug_marker is a preprocessor guard. Do not pass it to API calls. #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" @@ -10373,11 +10899,13 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( #endif +// VK_AMD_gcn_shader is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_dedicated_allocation is a preprocessor guard. Do not pass it to API calls. #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" @@ -10402,6 +10930,7 @@ typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { +// VK_EXT_transform_feedback is a preprocessor guard. Do not pass it to API calls. #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" @@ -10489,6 +11018,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( #endif +// VK_NVX_binary_import is a preprocessor guard. Do not pass it to API calls. #define VK_NVX_binary_import 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX) @@ -10560,6 +11090,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX( #endif +// VK_NVX_image_view_handle is a preprocessor guard. Do not pass it to API calls. #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" @@ -10593,6 +11124,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX( #endif +// VK_AMD_draw_indirect_count is a preprocessor guard. Do not pass it to API calls. #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" @@ -10620,21 +11152,25 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( #endif +// VK_AMD_negative_viewport_height is a preprocessor guard. Do not pass it to API calls. #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" +// VK_AMD_gpu_shader_half_float is a preprocessor guard. Do not pass it to API calls. #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" +// VK_AMD_shader_ballot is a preprocessor guard. Do not pass it to API calls. #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" +// VK_AMD_texture_gather_bias_lod is a preprocessor guard. Do not pass it to API calls. #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" @@ -10646,6 +11182,7 @@ typedef struct VkTextureLODGatherFormatPropertiesAMD { +// VK_AMD_shader_info is a preprocessor guard. Do not pass it to API calls. #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" @@ -10687,11 +11224,13 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( #endif +// VK_AMD_shader_image_load_store_lod is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_corner_sampled_image is a preprocessor guard. Do not pass it to API calls. #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" @@ -10703,11 +11242,13 @@ typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { +// VK_IMG_format_pvrtc is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_external_memory_capabilities is a preprocessor guard. Do not pass it to API calls. #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" @@ -10750,6 +11291,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesN #endif +// VK_NV_external_memory is a preprocessor guard. Do not pass it to API calls. #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" @@ -10767,6 +11309,7 @@ typedef struct VkExportMemoryAllocateInfoNV { +// VK_EXT_validation_flags is a preprocessor guard. Do not pass it to API calls. #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" @@ -10785,16 +11328,19 @@ typedef struct VkValidationFlagsEXT { +// VK_EXT_shader_subgroup_ballot is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_shader_subgroup_vote is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_texture_compression_astc_hdr is a preprocessor guard. Do not pass it to API calls. #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" @@ -10802,6 +11348,7 @@ typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextur +// VK_EXT_astc_decode_mode is a preprocessor guard. Do not pass it to API calls. #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" @@ -10819,6 +11366,7 @@ typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { +// VK_EXT_pipeline_robustness is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_pipeline_robustness 1 #define VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION 1 #define VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_pipeline_robustness" @@ -10864,6 +11412,7 @@ typedef struct VkPipelineRobustnessCreateInfoEXT { +// VK_EXT_conditional_rendering is a preprocessor guard. Do not pass it to API calls. #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" @@ -10907,6 +11456,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( #endif +// VK_NV_clip_space_w_scaling is a preprocessor guard. Do not pass it to API calls. #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" @@ -10934,6 +11484,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( #endif +// VK_EXT_direct_mode_display is a preprocessor guard. Do not pass it to API calls. #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" @@ -10946,6 +11497,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( #endif +// VK_EXT_display_surface_counter is a preprocessor guard. Do not pass it to API calls. #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" @@ -10982,6 +11534,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( #endif +// VK_EXT_display_control is a preprocessor guard. Do not pass it to API calls. #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" @@ -11058,6 +11611,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( #endif +// VK_GOOGLE_display_timing is a preprocessor guard. Do not pass it to API calls. #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" @@ -11102,16 +11656,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( #endif +// VK_NV_sample_mask_override_coverage is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_geometry_shader_passthrough is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_viewport_array2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -11119,6 +11676,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( #define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME +// VK_NVX_multiview_per_view_attributes is a preprocessor guard. Do not pass it to API calls. #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" @@ -11130,6 +11688,7 @@ typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { +// VK_NV_viewport_swizzle is a preprocessor guard. Do not pass it to API calls. #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" @@ -11163,8 +11722,9 @@ typedef struct VkPipelineViewportSwizzleStateCreateInfoNV { +// VK_EXT_discard_rectangles is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_discard_rectangles 1 -#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 2 #define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" typedef enum VkDiscardRectangleModeEXT { @@ -11189,6 +11749,8 @@ typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { } VkPipelineDiscardRectangleStateCreateInfoEXT; typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleModeEXT)(VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( @@ -11196,9 +11758,18 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 discardRectangleEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleModeEXT( + VkCommandBuffer commandBuffer, + VkDiscardRectangleModeEXT discardRectangleMode); #endif +// VK_EXT_conservative_rasterization is a preprocessor guard. Do not pass it to API calls. #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" @@ -11234,6 +11805,7 @@ typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { +// VK_EXT_depth_clip_enable is a preprocessor guard. Do not pass it to API calls. #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" @@ -11253,11 +11825,13 @@ typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT { +// VK_EXT_swapchain_colorspace is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_hdr_metadata is a preprocessor guard. Do not pass it to API calls. #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" @@ -11290,17 +11864,20 @@ VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( #endif +// VK_EXT_external_memory_dma_buf is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_queue_family_foreign is a preprocessor guard. Do not pass it to API calls. #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) +// VK_EXT_debug_utils is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_debug_utils 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) #define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2 @@ -11443,6 +12020,7 @@ VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( #endif +// VK_EXT_sampler_filter_minmax is a preprocessor guard. Do not pass it to API calls. #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" @@ -11454,21 +12032,25 @@ typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFil +// VK_AMD_gpu_shader_int16 is a preprocessor guard. Do not pass it to API calls. #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" +// VK_AMD_mixed_attachment_samples is a preprocessor guard. Do not pass it to API calls. #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" +// VK_AMD_shader_fragment_mask is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_inline_uniform_block is a preprocessor guard. Do not pass it to API calls. #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" @@ -11482,11 +12064,13 @@ typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUnifo +// VK_EXT_shader_stencil_export is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_sample_locations is a preprocessor guard. Do not pass it to API calls. #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" @@ -11561,6 +12145,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( #endif +// VK_EXT_blend_operation_advanced is a preprocessor guard. Do not pass it to API calls. #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" @@ -11598,6 +12183,7 @@ typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT { +// VK_NV_fragment_coverage_to_color is a preprocessor guard. Do not pass it to API calls. #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" @@ -11612,6 +12198,7 @@ typedef struct VkPipelineCoverageToColorStateCreateInfoNV { +// VK_NV_framebuffer_mixed_samples is a preprocessor guard. Do not pass it to API calls. #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" @@ -11636,11 +12223,13 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV { +// VK_NV_fill_rectangle is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_shader_sm_builtins is a preprocessor guard. Do not pass it to API calls. #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" @@ -11659,11 +12248,13 @@ typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { +// VK_EXT_post_depth_coverage is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_image_drm_format_modifier is a preprocessor guard. Do not pass it to API calls. #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" @@ -11733,6 +12324,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( #endif +// VK_EXT_validation_cache is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_validation_cache 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) #define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 @@ -11788,6 +12380,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( #endif +// VK_EXT_descriptor_indexing is a preprocessor guard. Do not pass it to API calls. #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" @@ -11807,11 +12400,13 @@ typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVaria +// VK_EXT_shader_viewport_index_layer is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_shading_rate_image is a preprocessor guard. Do not pass it to API calls. #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" @@ -11912,6 +12507,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( #endif +// VK_NV_ray_tracing is a preprocessor guard. Do not pass it to API calls. #define VK_NV_ray_tracing 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV) #define VK_NV_RAY_TRACING_SPEC_VERSION 3 @@ -12015,6 +12611,10 @@ typedef enum VkBuildAccelerationStructureFlagBitsKHR { VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 0x00000040, VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 0x00000080, VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 0x00000100, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV = 0x00000200, +#endif + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 0x00000800, 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, @@ -12286,6 +12886,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( #endif +// VK_NV_representative_fragment_test is a preprocessor guard. Do not pass it to API calls. #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" @@ -12303,6 +12904,7 @@ typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { +// VK_EXT_filter_cubic is a preprocessor guard. Do not pass it to API calls. #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" @@ -12321,11 +12923,13 @@ typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT { +// VK_QCOM_render_pass_shader_resolve is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_global_priority is a preprocessor guard. Do not pass it to API calls. #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" @@ -12335,6 +12939,7 @@ typedef VkDeviceQueueGlobalPriorityCreateInfoKHR VkDeviceQueueGlobalPriorityCrea +// VK_EXT_external_memory_host is a preprocessor guard. Do not pass it to API calls. #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" @@ -12368,6 +12973,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( #endif +// VK_AMD_buffer_marker is a preprocessor guard. Do not pass it to API calls. #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" @@ -12383,6 +12989,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( #endif +// VK_AMD_pipeline_compiler_control is a preprocessor guard. Do not pass it to API calls. #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" @@ -12399,6 +13006,7 @@ typedef struct VkPipelineCompilerControlCreateInfoAMD { +// VK_EXT_calibrated_timestamps is a preprocessor guard. Do not pass it to API calls. #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" @@ -12434,6 +13042,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( #endif +// VK_AMD_shader_core_properties is a preprocessor guard. Do not pass it to API calls. #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" @@ -12458,6 +13067,7 @@ typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { +// VK_AMD_memory_overallocation_behavior is a preprocessor guard. Do not pass it to API calls. #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" @@ -12476,6 +13086,7 @@ typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { +// VK_EXT_vertex_attribute_divisor is a preprocessor guard. Do not pass it to API calls. #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" @@ -12506,6 +13117,7 @@ typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { +// VK_EXT_pipeline_creation_feedback is a preprocessor guard. Do not pass it to API calls. #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" @@ -12519,11 +13131,13 @@ typedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT; +// VK_NV_shader_subgroup_partitioned is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_compute_shader_derivatives is a preprocessor guard. Do not pass it to API calls. #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" @@ -12536,6 +13150,7 @@ typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { +// VK_NV_mesh_shader is a preprocessor guard. Do not pass it to API calls. #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" @@ -12597,6 +13212,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( #endif +// VK_NV_fragment_shader_barycentric is a preprocessor guard. Do not pass it to API calls. #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" @@ -12604,6 +13220,7 @@ typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFra +// VK_NV_shader_image_footprint is a preprocessor guard. Do not pass it to API calls. #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" @@ -12615,8 +13232,9 @@ typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { +// VK_NV_scissor_exclusive is a preprocessor guard. Do not pass it to API calls. #define VK_NV_scissor_exclusive 1 -#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 +#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 2 #define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV { VkStructureType sType; @@ -12631,9 +13249,16 @@ typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV { VkBool32 exclusiveScissor; } VkPhysicalDeviceExclusiveScissorFeaturesNV; +typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorEnableNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkBool32* pExclusiveScissorEnables); 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 vkCmdSetExclusiveScissorEnableNV( + VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VkBool32* pExclusiveScissorEnables); + VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, @@ -12642,6 +13267,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( #endif +// VK_NV_device_diagnostic_checkpoints is a preprocessor guard. Do not pass it to API calls. #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" @@ -12673,6 +13299,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( #endif +// VK_INTEL_shader_integer_functions2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -12684,6 +13311,7 @@ typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { +// VK_INTEL_performance_query is a preprocessor guard. Do not pass it to API calls. #define VK_INTEL_performance_query 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL) #define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2 @@ -12822,6 +13450,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( #endif +// VK_EXT_pci_bus_info is a preprocessor guard. Do not pass it to API calls. #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" @@ -12836,6 +13465,7 @@ typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT { +// VK_AMD_display_native_hdr is a preprocessor guard. Do not pass it to API calls. #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" @@ -12861,6 +13491,7 @@ VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( #endif +// VK_EXT_fragment_density_map is a preprocessor guard. Do not pass it to API calls. #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" @@ -12888,6 +13519,7 @@ typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { +// VK_EXT_scalar_block_layout is a preprocessor guard. Do not pass it to API calls. #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" @@ -12895,6 +13527,7 @@ typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLay +// VK_GOOGLE_hlsl_functionality1 is a preprocessor guard. Do not pass it to API calls. #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" @@ -12902,11 +13535,13 @@ typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLay #define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME +// VK_GOOGLE_decorate_string is a preprocessor guard. Do not pass it to API calls. #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" +// VK_EXT_subgroup_size_control is a preprocessor guard. Do not pass it to API calls. #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" @@ -12918,6 +13553,7 @@ typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStag +// VK_AMD_shader_core_properties2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -12935,6 +13571,7 @@ typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { +// VK_AMD_device_coherent_memory is a preprocessor guard. Do not pass it to API calls. #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" @@ -12946,6 +13583,7 @@ typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD { +// VK_EXT_shader_image_atomic_int64 is a preprocessor guard. Do not pass it to API calls. #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" @@ -12958,6 +13596,7 @@ typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT { +// VK_EXT_memory_budget is a preprocessor guard. Do not pass it to API calls. #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" @@ -12970,6 +13609,7 @@ typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT { +// VK_EXT_memory_priority is a preprocessor guard. Do not pass it to API calls. #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" @@ -12987,6 +13627,7 @@ typedef struct VkMemoryPriorityAllocateInfoEXT { +// VK_NV_dedicated_allocation_image_aliasing is a preprocessor guard. Do not pass it to API calls. #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" @@ -12998,6 +13639,7 @@ typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV { +// VK_EXT_buffer_device_address is a preprocessor guard. Do not pass it to API calls. #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" @@ -13028,6 +13670,7 @@ VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( #endif +// VK_EXT_tooling_info is a preprocessor guard. Do not pass it to API calls. #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" @@ -13047,6 +13690,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT( #endif +// VK_EXT_separate_stencil_usage is a preprocessor guard. Do not pass it to API calls. #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" @@ -13054,6 +13698,7 @@ typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT; +// VK_EXT_validation_features is a preprocessor guard. Do not pass it to API calls. #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" @@ -13089,32 +13734,14 @@ typedef struct VkValidationFeaturesEXT { +// VK_NV_cooperative_matrix is a preprocessor guard. Do not pass it to API calls. #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 VkComponentTypeKHR VkComponentTypeNV; -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; +typedef VkScopeKHR VkScopeNV; -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; @@ -13151,6 +13778,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( #endif +// VK_NV_coverage_reduction_mode is a preprocessor guard. Do not pass it to API calls. #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" @@ -13193,6 +13821,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSampl #endif +// VK_EXT_fragment_shader_interlock is a preprocessor guard. Do not pass it to API calls. #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" @@ -13206,6 +13835,7 @@ typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT { +// VK_EXT_ycbcr_image_arrays is a preprocessor guard. Do not pass it to API calls. #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" @@ -13217,6 +13847,7 @@ typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT { +// VK_EXT_provoking_vertex is a preprocessor guard. Do not pass it to API calls. #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" @@ -13248,6 +13879,7 @@ typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT { +// VK_EXT_headless_surface is a preprocessor guard. Do not pass it to API calls. #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" @@ -13269,6 +13901,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( #endif +// VK_EXT_line_rasterization is a preprocessor guard. Do not pass it to API calls. #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" @@ -13316,6 +13949,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( #endif +// VK_EXT_shader_atomic_float is a preprocessor guard. Do not pass it to API calls. #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" @@ -13338,6 +13972,7 @@ typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT { +// VK_EXT_host_query_reset is a preprocessor guard. Do not pass it to API calls. #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" @@ -13354,6 +13989,7 @@ VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( #endif +// VK_EXT_index_type_uint8 is a preprocessor guard. Do not pass it to API calls. #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" @@ -13365,6 +14001,7 @@ typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT { +// VK_EXT_extended_dynamic_state is a preprocessor guard. Do not pass it to API calls. #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" @@ -13449,6 +14086,146 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT( #endif +// VK_EXT_host_image_copy is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_host_image_copy 1 +#define VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION 1 +#define VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME "VK_EXT_host_image_copy" + +typedef enum VkHostImageCopyFlagBitsEXT { + VK_HOST_IMAGE_COPY_MEMCPY_EXT = 0x00000001, + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkHostImageCopyFlagBitsEXT; +typedef VkFlags VkHostImageCopyFlagsEXT; +typedef struct VkPhysicalDeviceHostImageCopyFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 hostImageCopy; +} VkPhysicalDeviceHostImageCopyFeaturesEXT; + +typedef struct VkPhysicalDeviceHostImageCopyPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t copySrcLayoutCount; + VkImageLayout* pCopySrcLayouts; + uint32_t copyDstLayoutCount; + VkImageLayout* pCopyDstLayouts; + uint8_t optimalTilingLayoutUUID[VK_UUID_SIZE]; + VkBool32 identicalMemoryTypeRequirements; +} VkPhysicalDeviceHostImageCopyPropertiesEXT; + +typedef struct VkMemoryToImageCopyEXT { + VkStructureType sType; + const void* pNext; + const void* pHostPointer; + uint32_t memoryRowLength; + uint32_t memoryImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkMemoryToImageCopyEXT; + +typedef struct VkImageToMemoryCopyEXT { + VkStructureType sType; + const void* pNext; + void* pHostPointer; + uint32_t memoryRowLength; + uint32_t memoryImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkImageToMemoryCopyEXT; + +typedef struct VkCopyMemoryToImageInfoEXT { + VkStructureType sType; + const void* pNext; + VkHostImageCopyFlagsEXT flags; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkMemoryToImageCopyEXT* pRegions; +} VkCopyMemoryToImageInfoEXT; + +typedef struct VkCopyImageToMemoryInfoEXT { + VkStructureType sType; + const void* pNext; + VkHostImageCopyFlagsEXT flags; + VkImage srcImage; + VkImageLayout srcImageLayout; + uint32_t regionCount; + const VkImageToMemoryCopyEXT* pRegions; +} VkCopyImageToMemoryInfoEXT; + +typedef struct VkCopyImageToImageInfoEXT { + VkStructureType sType; + const void* pNext; + VkHostImageCopyFlagsEXT flags; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2* pRegions; +} VkCopyImageToImageInfoEXT; + +typedef struct VkHostImageLayoutTransitionInfoEXT { + VkStructureType sType; + const void* pNext; + VkImage image; + VkImageLayout oldLayout; + VkImageLayout newLayout; + VkImageSubresourceRange subresourceRange; +} VkHostImageLayoutTransitionInfoEXT; + +typedef struct VkSubresourceHostMemcpySizeEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize size; +} VkSubresourceHostMemcpySizeEXT; + +typedef struct VkHostImageCopyDevicePerformanceQueryEXT { + VkStructureType sType; + void* pNext; + VkBool32 optimalDeviceAccess; + VkBool32 identicalMemoryLayout; +} VkHostImageCopyDevicePerformanceQueryEXT; + +typedef VkSubresourceLayout2KHR VkSubresourceLayout2EXT; + +typedef VkImageSubresource2KHR VkImageSubresource2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToImageEXT)(VkDevice device, const VkCopyMemoryToImageInfoEXT* pCopyMemoryToImageInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToMemoryEXT)(VkDevice device, const VkCopyImageToMemoryInfoEXT* pCopyImageToMemoryInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToImageEXT)(VkDevice device, const VkCopyImageToImageInfoEXT* pCopyImageToImageInfo); +typedef VkResult (VKAPI_PTR *PFN_vkTransitionImageLayoutEXT)(VkDevice device, uint32_t transitionCount, const VkHostImageLayoutTransitionInfoEXT* pTransitions); +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2KHR* pSubresource, VkSubresourceLayout2KHR* pLayout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToImageEXT( + VkDevice device, + const VkCopyMemoryToImageInfoEXT* pCopyMemoryToImageInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToMemoryEXT( + VkDevice device, + const VkCopyImageToMemoryInfoEXT* pCopyImageToMemoryInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToImageEXT( + VkDevice device, + const VkCopyImageToImageInfoEXT* pCopyImageToImageInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkTransitionImageLayoutEXT( + VkDevice device, + uint32_t transitionCount, + const VkHostImageLayoutTransitionInfoEXT* pTransitions); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT( + VkDevice device, + VkImage image, + const VkImageSubresource2KHR* pSubresource, + VkSubresourceLayout2KHR* pLayout); +#endif + + +// VK_EXT_shader_atomic_float2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -13471,6 +14248,7 @@ typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT { +// VK_EXT_surface_maintenance1 is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_surface_maintenance1 1 #define VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION 1 #define VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_surface_maintenance1" @@ -13515,6 +14293,7 @@ typedef struct VkSurfacePresentModeCompatibilityEXT { +// VK_EXT_swapchain_maintenance1 is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_swapchain_maintenance1 1 #define VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1 #define VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_swapchain_maintenance1" @@ -13526,21 +14305,21 @@ typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT { typedef struct VkSwapchainPresentFenceInfoEXT { VkStructureType sType; - void* pNext; + const void* pNext; uint32_t swapchainCount; const VkFence* pFences; } VkSwapchainPresentFenceInfoEXT; typedef struct VkSwapchainPresentModesCreateInfoEXT { VkStructureType sType; - void* pNext; + const void* pNext; uint32_t presentModeCount; const VkPresentModeKHR* pPresentModes; } VkSwapchainPresentModesCreateInfoEXT; typedef struct VkSwapchainPresentModeInfoEXT { VkStructureType sType; - void* pNext; + const void* pNext; uint32_t swapchainCount; const VkPresentModeKHR* pPresentModes; } VkSwapchainPresentModeInfoEXT; @@ -13570,6 +14349,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkReleaseSwapchainImagesEXT( #endif +// VK_EXT_shader_demote_to_helper_invocation is a preprocessor guard. Do not pass it to API calls. #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" @@ -13577,6 +14357,7 @@ typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceS +// VK_NV_device_generated_commands is a preprocessor guard. Do not pass it to API calls. #define VK_NV_device_generated_commands 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV) #define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 @@ -13592,6 +14373,8 @@ typedef enum VkIndirectCommandsTokenTypeNV { VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = 1000328000, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004, VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF } VkIndirectCommandsTokenTypeNV; @@ -13768,6 +14551,7 @@ VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV( #endif +// VK_NV_inherited_viewport_scissor is a preprocessor guard. Do not pass it to API calls. #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" @@ -13787,6 +14571,7 @@ typedef struct VkCommandBufferInheritanceViewportScissorInfoNV { +// VK_EXT_texel_buffer_alignment is a preprocessor guard. Do not pass it to API calls. #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" @@ -13800,6 +14585,7 @@ typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBuff +// VK_QCOM_render_pass_transform is a preprocessor guard. Do not pass it to API calls. #define VK_QCOM_render_pass_transform 1 #define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 3 #define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" @@ -13818,6 +14604,51 @@ typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM { +// VK_EXT_depth_bias_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_bias_control 1 +#define VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME "VK_EXT_depth_bias_control" + +typedef enum VkDepthBiasRepresentationEXT { + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0, + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1, + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2, + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDepthBiasRepresentationEXT; +typedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthBiasControl; + VkBool32 leastRepresentableValueForceUnormRepresentation; + VkBool32 floatRepresentation; + VkBool32 depthBiasExact; +} VkPhysicalDeviceDepthBiasControlFeaturesEXT; + +typedef struct VkDepthBiasInfoEXT { + VkStructureType sType; + const void* pNext; + float depthBiasConstantFactor; + float depthBiasClamp; + float depthBiasSlopeFactor; +} VkDepthBiasInfoEXT; + +typedef struct VkDepthBiasRepresentationInfoEXT { + VkStructureType sType; + const void* pNext; + VkDepthBiasRepresentationEXT depthBiasRepresentation; + VkBool32 depthBiasExact; +} VkDepthBiasRepresentationInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias2EXT)(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias2EXT( + VkCommandBuffer commandBuffer, + const VkDepthBiasInfoEXT* pDepthBiasInfo); +#endif + + +// VK_EXT_device_memory_report is a preprocessor guard. Do not pass it to API calls. #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" @@ -13863,6 +14694,7 @@ typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT { +// VK_EXT_acquire_drm_display is a preprocessor guard. Do not pass it to API calls. #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" @@ -13883,6 +14715,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT( #endif +// VK_EXT_robustness2 is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_robustness2 1 #define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 #define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" @@ -13903,6 +14736,7 @@ typedef struct VkPhysicalDeviceRobustness2PropertiesEXT { +// VK_EXT_custom_border_color is a preprocessor guard. Do not pass it to API calls. #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" @@ -13928,11 +14762,13 @@ typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT { +// VK_GOOGLE_user_type is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_present_barrier is a preprocessor guard. Do not pass it to API calls. #define VK_NV_present_barrier 1 #define VK_NV_PRESENT_BARRIER_SPEC_VERSION 1 #define VK_NV_PRESENT_BARRIER_EXTENSION_NAME "VK_NV_present_barrier" @@ -13956,6 +14792,7 @@ typedef struct VkSwapchainPresentBarrierCreateInfoNV { +// VK_EXT_private_data is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_private_data 1 typedef VkPrivateDataSlot VkPrivateDataSlotEXT; @@ -14002,6 +14839,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT( #endif +// VK_EXT_pipeline_creation_cache_control is a preprocessor guard. Do not pass it to API calls. #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" @@ -14009,6 +14847,7 @@ typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePip +// VK_NV_device_diagnostics_config is a preprocessor guard. Do not pass it to API calls. #define VK_NV_device_diagnostics_config 1 #define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 2 #define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config" @@ -14035,11 +14874,25 @@ typedef struct VkDeviceDiagnosticsConfigCreateInfoNV { +// VK_QCOM_render_pass_store_ops is a preprocessor guard. Do not pass it to API calls. #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" +// VK_NV_low_latency is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_low_latency 1 +#define VK_NV_LOW_LATENCY_SPEC_VERSION 1 +#define VK_NV_LOW_LATENCY_EXTENSION_NAME "VK_NV_low_latency" +typedef struct VkQueryLowLatencySupportNV { + VkStructureType sType; + const void* pNext; + void* pQueriedLowLatencyData; +} VkQueryLowLatencySupportNV; + + + +// VK_EXT_descriptor_buffer is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_descriptor_buffer 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR) #define VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION 1 @@ -14252,6 +15105,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureOpaqueCaptureDescriptor #endif +// VK_EXT_graphics_pipeline_library is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_graphics_pipeline_library 1 #define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION 1 #define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME "VK_EXT_graphics_pipeline_library" @@ -14279,12 +15133,13 @@ typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT { typedef struct VkGraphicsPipelineLibraryCreateInfoEXT { VkStructureType sType; - void* pNext; + const void* pNext; VkGraphicsPipelineLibraryFlagsEXT flags; } VkGraphicsPipelineLibraryCreateInfoEXT; +// VK_AMD_shader_early_and_late_fragment_tests is a preprocessor guard. Do not pass it to API calls. #define VK_AMD_shader_early_and_late_fragment_tests 1 #define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION 1 #define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME "VK_AMD_shader_early_and_late_fragment_tests" @@ -14296,6 +15151,7 @@ typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD { +// VK_NV_fragment_shading_rate_enums is a preprocessor guard. Do not pass it to API calls. #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" @@ -14353,6 +15209,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV( #endif +// VK_NV_ray_tracing_motion_blur is a preprocessor guard. Do not pass it to API calls. #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" @@ -14443,6 +15300,7 @@ typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV { +// VK_EXT_ycbcr_2plane_444_formats is a preprocessor guard. Do not pass it to API calls. #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" @@ -14454,6 +15312,7 @@ typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT { +// VK_EXT_fragment_density_map2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -14474,6 +15333,7 @@ typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT { +// VK_QCOM_rotated_copy_commands is a preprocessor guard. Do not pass it to API calls. #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" @@ -14485,6 +15345,7 @@ typedef struct VkCopyCommandTransformInfoQCOM { +// VK_EXT_image_robustness is a preprocessor guard. Do not pass it to API calls. #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" @@ -14492,6 +15353,7 @@ typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessF +// VK_EXT_image_compression_control is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_image_compression_control 1 #define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1 #define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control" @@ -14548,18 +15410,6 @@ typedef struct VkImageCompressionControlEXT { VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags; } VkImageCompressionControlEXT; -typedef struct VkSubresourceLayout2EXT { - VkStructureType sType; - void* pNext; - VkSubresourceLayout subresourceLayout; -} VkSubresourceLayout2EXT; - -typedef struct VkImageSubresource2EXT { - VkStructureType sType; - void* pNext; - VkImageSubresource imageSubresource; -} VkImageSubresource2EXT; - typedef struct VkImageCompressionPropertiesEXT { VkStructureType sType; void* pNext; @@ -14567,17 +15417,9 @@ typedef struct VkImageCompressionPropertiesEXT { VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags; } VkImageCompressionPropertiesEXT; -typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT( - VkDevice device, - VkImage image, - const VkImageSubresource2EXT* pSubresource, - VkSubresourceLayout2EXT* pLayout); -#endif +// VK_EXT_attachment_feedback_loop_layout is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_attachment_feedback_loop_layout 1 #define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION 2 #define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_layout" @@ -14589,6 +15431,7 @@ typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT { +// VK_EXT_4444_formats is a preprocessor guard. Do not pass it to API calls. #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" @@ -14601,8 +15444,9 @@ typedef struct VkPhysicalDevice4444FormatsFeaturesEXT { +// VK_EXT_device_fault is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_device_fault 1 -#define VK_EXT_DEVICE_FAULT_SPEC_VERSION 1 +#define VK_EXT_DEVICE_FAULT_SPEC_VERSION 2 #define VK_EXT_DEVICE_FAULT_EXTENSION_NAME "VK_EXT_device_fault" typedef enum VkDeviceFaultAddressTypeEXT { @@ -14666,6 +15510,8 @@ typedef struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT { uint32_t applicationNameOffset; uint32_t applicationVersion; uint32_t engineNameOffset; + uint32_t engineVersion; + uint32_t apiVersion; } VkDeviceFaultVendorBinaryHeaderVersionOneEXT; typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceFaultInfoEXT)(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo); @@ -14678,6 +15524,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultInfoEXT( #endif +// VK_ARM_rasterization_order_attachment_access is a preprocessor guard. Do not pass it to API calls. #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" @@ -14693,6 +15540,7 @@ typedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysical +// VK_EXT_rgba10x6_formats is a preprocessor guard. Do not pass it to API calls. #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" @@ -14704,6 +15552,7 @@ typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT { +// VK_VALVE_mutable_descriptor_type is a preprocessor guard. Do not pass it to API calls. #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" @@ -14733,6 +15582,7 @@ typedef VkMutableDescriptorTypeCreateInfoEXT VkMutableDescriptorTypeCreateInfoVA +// VK_EXT_vertex_input_dynamic_state is a preprocessor guard. Do not pass it to API calls. #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" @@ -14772,6 +15622,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT( #endif +// VK_EXT_physical_device_drm is a preprocessor guard. Do not pass it to API calls. #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" @@ -14788,6 +15639,7 @@ typedef struct VkPhysicalDeviceDrmPropertiesEXT { +// VK_EXT_device_address_binding_report is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_device_address_binding_report 1 #define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION 1 #define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME "VK_EXT_device_address_binding_report" @@ -14820,6 +15672,7 @@ typedef struct VkDeviceAddressBindingCallbackDataEXT { +// VK_EXT_depth_clip_control is a preprocessor guard. Do not pass it to API calls. #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" @@ -14837,6 +15690,7 @@ typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT { +// VK_EXT_primitive_topology_list_restart is a preprocessor guard. Do not pass it to API calls. #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" @@ -14849,8 +15703,9 @@ typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT { +// VK_HUAWEI_subpass_shading is a preprocessor guard. Do not pass it to API calls. #define VK_HUAWEI_subpass_shading 1 -#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2 +#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 3 #define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading" typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI { VkStructureType sType; @@ -14885,6 +15740,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI( #endif +// VK_HUAWEI_invocation_mask is a preprocessor guard. Do not pass it to API calls. #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" @@ -14904,6 +15760,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI( #endif +// VK_NV_external_memory_rdma is a preprocessor guard. Do not pass it to API calls. #define VK_NV_external_memory_rdma 1 typedef void* VkRemoteAddressNV; #define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1 @@ -14931,6 +15788,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV( #endif +// VK_EXT_pipeline_properties is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_pipeline_properties 1 #define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1 #define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties" @@ -14958,6 +15816,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT( #endif +// VK_EXT_multisampled_render_to_single_sampled is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_multisampled_render_to_single_sampled 1 #define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION 1 #define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME "VK_EXT_multisampled_render_to_single_sampled" @@ -14982,6 +15841,7 @@ typedef struct VkMultisampledRenderToSingleSampledInfoEXT { +// VK_EXT_extended_dynamic_state2 is a preprocessor guard. Do not pass it to API calls. #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" @@ -15022,6 +15882,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT( #endif +// VK_EXT_color_write_enable is a preprocessor guard. Do not pass it to API calls. #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" @@ -15048,6 +15909,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWrite #endif +// VK_EXT_primitives_generated_query is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_primitives_generated_query 1 #define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1 #define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME "VK_EXT_primitives_generated_query" @@ -15061,6 +15923,7 @@ typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT { +// VK_EXT_global_priority_query is a preprocessor guard. Do not pass it to API calls. #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" @@ -15071,6 +15934,7 @@ typedef VkQueueFamilyGlobalPriorityPropertiesKHR VkQueueFamilyGlobalPriorityProp +// VK_EXT_image_view_min_lod is a preprocessor guard. Do not pass it to API calls. #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" @@ -15088,6 +15952,7 @@ typedef struct VkImageViewMinLodCreateInfoEXT { +// VK_EXT_multi_draw is a preprocessor guard. Do not pass it to API calls. #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" @@ -15137,6 +16002,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT( #endif +// VK_EXT_image_2d_view_of_3d is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_image_2d_view_of_3d 1 #define VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION 1 #define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d" @@ -15149,6 +16015,29 @@ typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT { +// VK_EXT_shader_tile_image is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_tile_image 1 +#define VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION 1 +#define VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME "VK_EXT_shader_tile_image" +typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderTileImageColorReadAccess; + VkBool32 shaderTileImageDepthReadAccess; + VkBool32 shaderTileImageStencilReadAccess; +} VkPhysicalDeviceShaderTileImageFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderTileImagePropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderTileImageCoherentReadAccelerated; + VkBool32 shaderTileImageReadSampleFromPixelRateInvocation; + VkBool32 shaderTileImageReadFromHelperInvocation; +} VkPhysicalDeviceShaderTileImagePropertiesEXT; + + + +// VK_EXT_opacity_micromap is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_opacity_micromap 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkMicromapEXT) #define VK_EXT_OPACITY_MICROMAP_SPEC_VERSION 2 @@ -15156,6 +16045,9 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkMicromapEXT) typedef enum VkMicromapTypeEXT { VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV = 1000397000, +#endif VK_MICROMAP_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF } VkMicromapTypeEXT; @@ -15417,13 +16309,15 @@ VKAPI_ATTR void VKAPI_CALL vkGetMicromapBuildSizesEXT( #endif +// VK_EXT_load_store_op_none is a preprocessor guard. Do not pass it to API calls. #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" +// VK_HUAWEI_cluster_culling_shader is a preprocessor guard. Do not pass it to API calls. #define VK_HUAWEI_cluster_culling_shader 1 -#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 1 +#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 2 #define VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME "VK_HUAWEI_cluster_culling_shader" typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI { VkStructureType sType; @@ -15438,6 +16332,7 @@ typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI { uint32_t maxWorkGroupCount[3]; uint32_t maxWorkGroupSize[3]; uint32_t maxOutputClusterCount; + VkDeviceSize indirectBufferOffsetAlignment; } VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI; typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterHUAWEI)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); @@ -15457,6 +16352,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterIndirectHUAWEI( #endif +// VK_EXT_border_color_swizzle is a preprocessor guard. Do not pass it to API calls. #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" @@ -15476,6 +16372,7 @@ typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT { +// VK_EXT_pageable_device_local_memory is a preprocessor guard. Do not pass it to API calls. #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" @@ -15495,6 +16392,41 @@ VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT( #endif +// VK_ARM_shader_core_properties is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_shader_core_properties 1 +#define VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION 1 +#define VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_ARM_shader_core_properties" +typedef struct VkPhysicalDeviceShaderCorePropertiesARM { + VkStructureType sType; + void* pNext; + uint32_t pixelRate; + uint32_t texelRate; + uint32_t fmaRate; +} VkPhysicalDeviceShaderCorePropertiesARM; + + + +// VK_EXT_image_sliced_view_of_3d is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_sliced_view_of_3d 1 +#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION 1 +#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_sliced_view_of_3d" +#define VK_REMAINING_3D_SLICES_EXT (~0U) +typedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageSlicedViewOf3D; +} VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + +typedef struct VkImageViewSlicedCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t sliceOffset; + uint32_t sliceCount; +} VkImageViewSlicedCreateInfoEXT; + + + +// VK_VALVE_descriptor_set_host_mapping is a preprocessor guard. Do not pass it to API calls. #define VK_VALVE_descriptor_set_host_mapping 1 #define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION 1 #define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME "VK_VALVE_descriptor_set_host_mapping" @@ -15534,6 +16466,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetHostMappingVALVE( #endif +// VK_EXT_depth_clamp_zero_one is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_depth_clamp_zero_one 1 #define VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION 1 #define VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME "VK_EXT_depth_clamp_zero_one" @@ -15545,6 +16478,7 @@ typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT { +// VK_EXT_non_seamless_cube_map is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_non_seamless_cube_map 1 #define VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION 1 #define VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME "VK_EXT_non_seamless_cube_map" @@ -15556,6 +16490,7 @@ typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT { +// VK_QCOM_fragment_density_map_offset is a preprocessor guard. Do not pass it to API calls. #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" @@ -15580,6 +16515,7 @@ typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM { +// VK_NV_copy_memory_indirect is a preprocessor guard. Do not pass it to API calls. #define VK_NV_copy_memory_indirect 1 #define VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION 1 #define VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME "VK_NV_copy_memory_indirect" @@ -15631,6 +16567,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageIndirectNV( #endif +// VK_NV_memory_decompression is a preprocessor guard. Do not pass it to API calls. #define VK_NV_memory_decompression 1 #define VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION 1 #define VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME "VK_NV_memory_decompression" @@ -15678,6 +16615,59 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryIndirectCountNV( #endif +// VK_NV_device_generated_commands_compute is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_device_generated_commands_compute 1 +#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION 2 +#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME "VK_NV_device_generated_commands_compute" +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCompute; + VkBool32 deviceGeneratedComputePipelines; + VkBool32 deviceGeneratedComputeCaptureReplay; +} VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + +typedef struct VkComputePipelineIndirectBufferInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceAddress deviceAddress; + VkDeviceSize size; + VkDeviceAddress pipelineDeviceAddressCaptureReplay; +} VkComputePipelineIndirectBufferInfoNV; + +typedef struct VkPipelineIndirectDeviceAddressInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; +} VkPipelineIndirectDeviceAddressInfoNV; + +typedef struct VkBindPipelineIndirectCommandNV { + VkDeviceAddress pipelineAddress; +} VkBindPipelineIndirectCommandNV; + +typedef void (VKAPI_PTR *PFN_vkGetPipelineIndirectMemoryRequirementsNV)(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdUpdatePipelineIndirectBufferNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetPipelineIndirectDeviceAddressNV)(VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPipelineIndirectMemoryRequirementsNV( + VkDevice device, + const VkComputePipelineCreateInfo* pCreateInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkCmdUpdatePipelineIndirectBufferNV( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetPipelineIndirectDeviceAddressNV( + VkDevice device, + const VkPipelineIndirectDeviceAddressInfoNV* pInfo); +#endif + + +// VK_NV_linear_color_attachment is a preprocessor guard. Do not pass it to API calls. #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" @@ -15689,11 +16679,13 @@ typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV { +// VK_GOOGLE_surfaceless_query is a preprocessor guard. Do not pass it to API calls. #define VK_GOOGLE_surfaceless_query 1 #define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 2 #define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query" +// VK_EXT_image_compression_control_swapchain is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_image_compression_control_swapchain 1 #define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1 #define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain" @@ -15705,6 +16697,7 @@ typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT { +// VK_QCOM_image_processing is a preprocessor guard. Do not pass it to API calls. #define VK_QCOM_image_processing 1 #define VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION 1 #define VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME "VK_QCOM_image_processing" @@ -15735,6 +16728,19 @@ typedef struct VkPhysicalDeviceImageProcessingPropertiesQCOM { +// VK_EXT_external_memory_acquire_unmodified is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_external_memory_acquire_unmodified 1 +#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME "VK_EXT_external_memory_acquire_unmodified" +typedef struct VkExternalMemoryAcquireUnmodifiedEXT { + VkStructureType sType; + const void* pNext; + VkBool32 acquireUnmodifiedMemory; +} VkExternalMemoryAcquireUnmodifiedEXT; + + + +// VK_EXT_extended_dynamic_state3 is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_extended_dynamic_state3 1 #define VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION 2 #define VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME "VK_EXT_extended_dynamic_state3" @@ -15968,6 +16974,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageReductionModeNV( #endif +// VK_EXT_subpass_merge_feedback is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_subpass_merge_feedback 1 #define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2 #define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback" @@ -16025,6 +17032,7 @@ typedef struct VkRenderPassSubpassFeedbackCreateInfoEXT { +// VK_LUNARG_direct_driver_loading is a preprocessor guard. Do not pass it to API calls. #define VK_LUNARG_direct_driver_loading 1 #define VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION 1 #define VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME "VK_LUNARG_direct_driver_loading" @@ -16055,6 +17063,7 @@ typedef struct VkDirectDriverLoadingListLUNARG { +// VK_EXT_shader_module_identifier is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_shader_module_identifier 1 #define VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT 32U #define VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION 1 @@ -16101,11 +17110,13 @@ VKAPI_ATTR void VKAPI_CALL vkGetShaderModuleCreateInfoIdentifierEXT( #endif +// VK_EXT_rasterization_order_attachment_access is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_rasterization_order_attachment_access 1 #define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 #define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_EXT_rasterization_order_attachment_access" +// VK_NV_optical_flow is a preprocessor guard. Do not pass it to API calls. #define VK_NV_optical_flow 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkOpticalFlowSessionNV) #define VK_NV_OPTICAL_FLOW_SPEC_VERSION 1 @@ -16270,6 +17281,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdOpticalFlowExecuteNV( #endif +// VK_EXT_legacy_dithering is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_legacy_dithering 1 #define VK_EXT_LEGACY_DITHERING_SPEC_VERSION 1 #define VK_EXT_LEGACY_DITHERING_EXTENSION_NAME "VK_EXT_legacy_dithering" @@ -16281,6 +17293,7 @@ typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT { +// VK_EXT_pipeline_protected_access is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_pipeline_protected_access 1 #define VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION 1 #define VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME "VK_EXT_pipeline_protected_access" @@ -16292,6 +17305,94 @@ typedef struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT { +// VK_EXT_shader_object is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_object 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderEXT) +#define VK_EXT_SHADER_OBJECT_SPEC_VERSION 1 +#define VK_EXT_SHADER_OBJECT_EXTENSION_NAME "VK_EXT_shader_object" + +typedef enum VkShaderCodeTypeEXT { + VK_SHADER_CODE_TYPE_BINARY_EXT = 0, + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1, + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkShaderCodeTypeEXT; + +typedef enum VkShaderCreateFlagBitsEXT { + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 0x00000001, + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000002, + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000004, + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 0x00000008, + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 0x00000010, + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 0x00000020, + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00000040, + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkShaderCreateFlagBitsEXT; +typedef VkFlags VkShaderCreateFlagsEXT; +typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderObject; +} VkPhysicalDeviceShaderObjectFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderObjectPropertiesEXT { + VkStructureType sType; + void* pNext; + uint8_t shaderBinaryUUID[VK_UUID_SIZE]; + uint32_t shaderBinaryVersion; +} VkPhysicalDeviceShaderObjectPropertiesEXT; + +typedef struct VkShaderCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkShaderCreateFlagsEXT flags; + VkShaderStageFlagBits stage; + VkShaderStageFlags nextStage; + VkShaderCodeTypeEXT codeType; + size_t codeSize; + const void* pCode; + const char* pName; + uint32_t setLayoutCount; + const VkDescriptorSetLayout* pSetLayouts; + uint32_t pushConstantRangeCount; + const VkPushConstantRange* pPushConstantRanges; + const VkSpecializationInfo* pSpecializationInfo; +} VkShaderCreateInfoEXT; + +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkShaderRequiredSubgroupSizeCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateShadersEXT)(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkShaderEXT* pShaders); +typedef void (VKAPI_PTR *PFN_vkDestroyShaderEXT)(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetShaderBinaryDataEXT)(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdBindShadersEXT)(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateShadersEXT( + VkDevice device, + uint32_t createInfoCount, + const VkShaderCreateInfoEXT* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkShaderEXT* pShaders); + +VKAPI_ATTR void VKAPI_CALL vkDestroyShaderEXT( + VkDevice device, + VkShaderEXT shader, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderBinaryDataEXT( + VkDevice device, + VkShaderEXT shader, + size_t* pDataSize, + void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindShadersEXT( + VkCommandBuffer commandBuffer, + uint32_t stageCount, + const VkShaderStageFlagBits* pStages, + const VkShaderEXT* pShaders); +#endif + + +// VK_QCOM_tile_properties is a preprocessor guard. Do not pass it to API calls. #define VK_QCOM_tile_properties 1 #define VK_QCOM_TILE_PROPERTIES_SPEC_VERSION 1 #define VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME "VK_QCOM_tile_properties" @@ -16326,6 +17427,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetDynamicRenderingTilePropertiesQCOM( #endif +// VK_SEC_amigo_profiling is a preprocessor guard. Do not pass it to API calls. #define VK_SEC_amigo_profiling 1 #define VK_SEC_AMIGO_PROFILING_SPEC_VERSION 1 #define VK_SEC_AMIGO_PROFILING_EXTENSION_NAME "VK_SEC_amigo_profiling" @@ -16344,6 +17446,7 @@ typedef struct VkAmigoProfilingSubmitInfoSEC { +// VK_QCOM_multiview_per_view_viewports is a preprocessor guard. Do not pass it to API calls. #define VK_QCOM_multiview_per_view_viewports 1 #define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION 1 #define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME "VK_QCOM_multiview_per_view_viewports" @@ -16355,6 +17458,7 @@ typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM { +// VK_NV_ray_tracing_invocation_reorder is a preprocessor guard. Do not pass it to API calls. #define VK_NV_ray_tracing_invocation_reorder 1 #define VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1 #define VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME "VK_NV_ray_tracing_invocation_reorder" @@ -16378,11 +17482,13 @@ typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV { +// VK_EXT_mutable_descriptor_type is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_mutable_descriptor_type 1 #define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 #define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_EXT_mutable_descriptor_type" +// VK_ARM_shader_core_builtins is a preprocessor guard. Do not pass it to API calls. #define VK_ARM_shader_core_builtins 1 #define VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION 2 #define VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME "VK_ARM_shader_core_builtins" @@ -16402,6 +17508,69 @@ typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM { +// VK_EXT_pipeline_library_group_handles is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pipeline_library_group_handles 1 +#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME "VK_EXT_pipeline_library_group_handles" +typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelineLibraryGroupHandles; +} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + + + +// VK_EXT_dynamic_rendering_unused_attachments is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_dynamic_rendering_unused_attachments 1 +#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION 1 +#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME "VK_EXT_dynamic_rendering_unused_attachments" +typedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 dynamicRenderingUnusedAttachments; +} VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + + + +// VK_QCOM_multiview_per_view_render_areas is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_multiview_per_view_render_areas 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME "VK_QCOM_multiview_per_view_render_areas" +typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 multiviewPerViewRenderAreas; +} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + +typedef struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM { + VkStructureType sType; + const void* pNext; + uint32_t perViewRenderAreaCount; + const VkRect2D* pPerViewRenderAreas; +} VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + + + +// VK_EXT_attachment_feedback_loop_dynamic_state is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_attachment_feedback_loop_dynamic_state 1 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION 1 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_dynamic_state" +typedef struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 attachmentFeedbackLoopDynamicState; +} VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetAttachmentFeedbackLoopEnableEXT( + VkCommandBuffer commandBuffer, + VkImageAspectFlags aspectMask); +#endif + + +// VK_KHR_acceleration_structure is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_acceleration_structure 1 #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 #define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" @@ -16677,6 +17846,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR( #endif +// VK_KHR_ray_tracing_pipeline is a preprocessor guard. Do not pass it to API calls. #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" @@ -16813,6 +17983,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR( #endif +// VK_KHR_ray_query is a preprocessor guard. Do not pass it to API calls. #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" @@ -16824,6 +17995,7 @@ typedef struct VkPhysicalDeviceRayQueryFeaturesKHR { +// VK_EXT_mesh_shader is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_mesh_shader 1 #define VK_EXT_MESH_SHADER_SPEC_VERSION 1 #define VK_EXT_MESH_SHADER_EXTENSION_NAME "VK_EXT_mesh_shader" diff --git a/ext/vulkan/vulkan_directfb.h b/ext/vulkan/vulkan_directfb.h index ab3504efaf..1f11a08273 100644 --- a/ext/vulkan/vulkan_directfb.h +++ b/ext/vulkan/vulkan_directfb.h @@ -2,7 +2,7 @@ #define VULKAN_DIRECTFB_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_EXT_directfb_surface is a preprocessor guard. Do not pass it to API calls. #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" diff --git a/ext/vulkan/vulkan_fuchsia.h b/ext/vulkan/vulkan_fuchsia.h index 61774ff9cb..76e1564832 100644 --- a/ext/vulkan/vulkan_fuchsia.h +++ b/ext/vulkan/vulkan_fuchsia.h @@ -2,7 +2,7 @@ #define VULKAN_FUCHSIA_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_FUCHSIA_imagepipe_surface is a preprocessor guard. Do not pass it to API calls. #define VK_FUCHSIA_imagepipe_surface 1 #define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 #define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" @@ -41,6 +42,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( #endif +// VK_FUCHSIA_external_memory is a preprocessor guard. Do not pass it to API calls. #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" @@ -81,6 +83,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( #endif +// VK_FUCHSIA_external_semaphore is a preprocessor guard. Do not pass it to API calls. #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" @@ -115,6 +118,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( #endif +// VK_FUCHSIA_buffer_collection is a preprocessor guard. Do not pass it to API calls. #define VK_FUCHSIA_buffer_collection 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) #define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 diff --git a/ext/vulkan/vulkan_ggp.h b/ext/vulkan/vulkan_ggp.h index 19dfd22617..9783aa3b38 100644 --- a/ext/vulkan/vulkan_ggp.h +++ b/ext/vulkan/vulkan_ggp.h @@ -2,7 +2,7 @@ #define VULKAN_GGP_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_GGP_stream_descriptor_surface is a preprocessor guard. Do not pass it to API calls. #define VK_GGP_stream_descriptor_surface 1 #define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1 #define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME "VK_GGP_stream_descriptor_surface" @@ -41,6 +42,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP( #endif +// VK_GGP_frame_token is a preprocessor guard. Do not pass it to API calls. #define VK_GGP_frame_token 1 #define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1 #define VK_GGP_FRAME_TOKEN_EXTENSION_NAME "VK_GGP_frame_token" diff --git a/ext/vulkan/vulkan_ios.h b/ext/vulkan/vulkan_ios.h index 5792205439..211429ff45 100644 --- a/ext/vulkan/vulkan_ios.h +++ b/ext/vulkan/vulkan_ios.h @@ -2,7 +2,7 @@ #define VULKAN_IOS_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_MVK_ios_surface is a preprocessor guard. Do not pass it to API calls. #define VK_MVK_ios_surface 1 #define VK_MVK_IOS_SURFACE_SPEC_VERSION 3 #define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" diff --git a/ext/vulkan/vulkan_macos.h b/ext/vulkan/vulkan_macos.h index 8e197c7cff..c6509cc8cf 100644 --- a/ext/vulkan/vulkan_macos.h +++ b/ext/vulkan/vulkan_macos.h @@ -2,7 +2,7 @@ #define VULKAN_MACOS_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_MVK_macos_surface is a preprocessor guard. Do not pass it to API calls. #define VK_MVK_macos_surface 1 #define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3 #define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" diff --git a/ext/vulkan/vulkan_metal.h b/ext/vulkan/vulkan_metal.h index 11b9640919..94563a003a 100644 --- a/ext/vulkan/vulkan_metal.h +++ b/ext/vulkan/vulkan_metal.h @@ -2,7 +2,7 @@ #define VULKAN_METAL_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_EXT_metal_surface is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_metal_surface 1 #ifdef __OBJC__ @class CAMetalLayer; @@ -47,6 +48,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT( #endif +// VK_EXT_metal_objects is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_metal_objects 1 #ifdef __OBJC__ @protocol MTLDevice; diff --git a/ext/vulkan/vulkan_screen.h b/ext/vulkan/vulkan_screen.h index f0ef40a6ca..981738f738 100644 --- a/ext/vulkan/vulkan_screen.h +++ b/ext/vulkan/vulkan_screen.h @@ -2,7 +2,7 @@ #define VULKAN_SCREEN_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_QNX_screen_surface is a preprocessor guard. Do not pass it to API calls. #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" @@ -47,6 +48,59 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX( struct _screen_window* window); #endif + +// VK_QNX_external_memory_screen_buffer is a preprocessor guard. Do not pass it to API calls. +#define VK_QNX_external_memory_screen_buffer 1 +#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION 1 +#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME "VK_QNX_external_memory_screen_buffer" +typedef struct VkScreenBufferPropertiesQNX { + VkStructureType sType; + void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeBits; +} VkScreenBufferPropertiesQNX; + +typedef struct VkScreenBufferFormatPropertiesQNX { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + uint64_t screenUsage; + VkFormatFeatureFlags formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkScreenBufferFormatPropertiesQNX; + +typedef struct VkImportScreenBufferInfoQNX { + VkStructureType sType; + const void* pNext; + struct _screen_buffer* buffer; +} VkImportScreenBufferInfoQNX; + +typedef struct VkExternalFormatQNX { + VkStructureType sType; + void* pNext; + uint64_t externalFormat; +} VkExternalFormatQNX; + +typedef struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX { + VkStructureType sType; + void* pNext; + VkBool32 screenBufferImport; +} VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; + +typedef VkResult (VKAPI_PTR *PFN_vkGetScreenBufferPropertiesQNX)(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetScreenBufferPropertiesQNX( + VkDevice device, + const struct _screen_buffer* buffer, + VkScreenBufferPropertiesQNX* pProperties); +#endif + #ifdef __cplusplus } #endif diff --git a/ext/vulkan/vulkan_vi.h b/ext/vulkan/vulkan_vi.h index 0355e7a162..c9227e8226 100644 --- a/ext/vulkan/vulkan_vi.h +++ b/ext/vulkan/vulkan_vi.h @@ -2,7 +2,7 @@ #define VULKAN_VI_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_NN_vi_surface is a preprocessor guard. Do not pass it to API calls. #define VK_NN_vi_surface 1 #define VK_NN_VI_SURFACE_SPEC_VERSION 1 #define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface" diff --git a/ext/vulkan/vulkan_wayland.h b/ext/vulkan/vulkan_wayland.h index 9afd0b76d5..c93b217872 100644 --- a/ext/vulkan/vulkan_wayland.h +++ b/ext/vulkan/vulkan_wayland.h @@ -2,7 +2,7 @@ #define VULKAN_WAYLAND_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_KHR_wayland_surface is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_wayland_surface 1 #define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" diff --git a/ext/vulkan/vulkan_win32.h b/ext/vulkan/vulkan_win32.h index a8e46c89b9..fae3b8532c 100644 --- a/ext/vulkan/vulkan_win32.h +++ b/ext/vulkan/vulkan_win32.h @@ -2,7 +2,7 @@ #define VULKAN_WIN32_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_KHR_win32_surface is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_win32_surface 1 #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6 #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface" @@ -47,6 +48,7 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( #endif +// VK_KHR_external_memory_win32 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_external_memory_win32 1 #define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32" @@ -96,6 +98,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( #endif +// VK_KHR_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_win32_keyed_mutex 1 #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1 #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex" @@ -113,6 +116,7 @@ typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { +// VK_KHR_external_semaphore_win32 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_external_semaphore_win32 1 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32" @@ -165,6 +169,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( #endif +// VK_KHR_external_fence_win32 is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_external_fence_win32 1 #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32" @@ -208,6 +213,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( #endif +// VK_NV_external_memory_win32 is a preprocessor guard. Do not pass it to API calls. #define VK_NV_external_memory_win32 1 #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" @@ -236,6 +242,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( #endif +// VK_NV_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls. #define VK_NV_win32_keyed_mutex 1 #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2 #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" @@ -253,6 +260,7 @@ typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { +// VK_EXT_full_screen_exclusive is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_full_screen_exclusive 1 #define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4 #define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive" @@ -309,6 +317,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT( #endif +// VK_NV_acquire_winrt_display is a preprocessor guard. Do not pass it to API calls. #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" diff --git a/ext/vulkan/vulkan_xcb.h b/ext/vulkan/vulkan_xcb.h index 68e61b88f0..de7405524a 100644 --- a/ext/vulkan/vulkan_xcb.h +++ b/ext/vulkan/vulkan_xcb.h @@ -2,7 +2,7 @@ #define VULKAN_XCB_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_KHR_xcb_surface is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_xcb_surface 1 #define VK_KHR_XCB_SURFACE_SPEC_VERSION 6 #define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" diff --git a/ext/vulkan/vulkan_xlib.h b/ext/vulkan/vulkan_xlib.h index ea5360ab64..1aa632f2ef 100644 --- a/ext/vulkan/vulkan_xlib.h +++ b/ext/vulkan/vulkan_xlib.h @@ -2,7 +2,7 @@ #define VULKAN_XLIB_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_KHR_xlib_surface is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_xlib_surface 1 #define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6 #define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface" diff --git a/ext/vulkan/vulkan_xlib_xrandr.h b/ext/vulkan/vulkan_xlib_xrandr.h index 8fc35cfc56..e164ffc91e 100644 --- a/ext/vulkan/vulkan_xlib_xrandr.h +++ b/ext/vulkan/vulkan_xlib_xrandr.h @@ -2,7 +2,7 @@ #define VULKAN_XLIB_XRANDR_H_ 1 /* -** Copyright 2015-2022 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ @@ -19,6 +19,7 @@ extern "C" { +// VK_EXT_acquire_xlib_display is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_acquire_xlib_display 1 #define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 #define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" diff --git a/ffmpeg b/ffmpeg index b0173289b1..b2160ff5e6 160000 --- a/ffmpeg +++ b/ffmpeg @@ -1 +1 @@ -Subproject commit b0173289b16e7708963600068229860a732cc30f +Subproject commit b2160ff5e6c2b3f7892e41a53f390db350dfbf5b diff --git a/headless/Headless.cpp b/headless/Headless.cpp index 9ebe83d2b0..16c7991bf3 100644 --- a/headless/Headless.cpp +++ b/headless/Headless.cpp @@ -70,22 +70,22 @@ class PrintfLogger : public LogListener { public: void Log(const LogMessage &message) override { switch (message.level) { - case LogTypes::LVERBOSE: + case LogLevel::LVERBOSE: fprintf(stderr, "V %s", message.msg.c_str()); break; - case LogTypes::LDEBUG: + case LogLevel::LDEBUG: fprintf(stderr, "D %s", message.msg.c_str()); break; - case LogTypes::LINFO: + case LogLevel::LINFO: fprintf(stderr, "I %s", message.msg.c_str()); break; - case LogTypes::LERROR: + case LogLevel::LERROR: fprintf(stderr, "E %s", message.msg.c_str()); break; - case LogTypes::LWARNING: + case LogLevel::LWARNING: fprintf(stderr, "W %s", message.msg.c_str()); break; - case LogTypes::LNOTICE: + case LogLevel::LNOTICE: default: fprintf(stderr, "N %s", message.msg.c_str()); break; @@ -428,10 +428,10 @@ int main(int argc, const char* argv[]) PrintfLogger *printfLogger = new PrintfLogger(); - for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++) { - LogTypes::LOG_TYPE type = (LogTypes::LOG_TYPE)i; + for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; i++) { + LogType type = (LogType)i; logman->SetEnabled(type, fullLog); - logman->SetLogLevel(type, LogTypes::LDEBUG); + logman->SetLogLevel(type, LogLevel::LDEBUG); } logman->AddListener(printfLogger); diff --git a/ios/ViewController.mm b/ios/ViewController.mm index 34297dcd8b..c768ef2dc5 100644 --- a/ios/ViewController.mm +++ b/ios/ViewController.mm @@ -754,10 +754,6 @@ void stopLocation() { @end -void System_ShowFileInFolder(const char *path) { - // Unsupported -} - void System_LaunchUrl(LaunchUrlType urlType, char const* url) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithCString:url encoding:NSStringEncodingConversionAllowLossy]]]; diff --git a/libretro/libretro.cpp b/libretro/libretro.cpp index 5f0764930b..2c4ebdc34d 100644 --- a/libretro/libretro.cpp +++ b/libretro/libretro.cpp @@ -239,22 +239,22 @@ class PrintfLogger : public LogListener { switch (message.level) { - case LogTypes::LVERBOSE: - case LogTypes::LDEBUG: + case LogLevel::LVERBOSE: + case LogLevel::LDEBUG: log_(RETRO_LOG_DEBUG, "[%s] %s", message.log, message.msg.c_str()); break; - case LogTypes::LERROR: + case LogLevel::LERROR: log_(RETRO_LOG_ERROR, "[%s] %s", message.log, message.msg.c_str()); break; - case LogTypes::LNOTICE: - case LogTypes::LWARNING: + case LogLevel::LNOTICE: + case LogLevel::LWARNING: log_(RETRO_LOG_WARN, "[%s] %s", message.log, message.msg.c_str()); break; - case LogTypes::LINFO: + case LogLevel::LINFO: default: log_(RETRO_LOG_INFO, "[%s] %s", message.log, message.msg.c_str()); @@ -1081,7 +1081,7 @@ void retro_init(void) logman->RemoveListener(logman->GetDebuggerListener()); logman->ChangeFileLog(nullptr); logman->AddListener(printfLogger); - logman->SetAllLogLevels(LogTypes::LINFO); + logman->SetAllLogLevels(LogLevel::LINFO); } g_Config.Load("", "");