blob: 41a58c98dc12db8342e93e927258c99b11679310 [file] [log] [blame]
// *** THIS FILE IS GENERATED - DO NOT EDIT ***
// See api_version_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.
****************************************************************************/
// NOLINTBEGIN
#pragma once
#include <vulkan/vulkan.h>
#include <sstream>
#include <iomanip>
#define VK_VERSION_1_1_NAME "VK_VERSION_1_1"
#define VK_VERSION_1_2_NAME "VK_VERSION_1_2"
#define VK_VERSION_1_3_NAME "VK_VERSION_1_3"
#define VVL_UNRECOGNIZED_API_VERSION 0xFFFFFFFF
class APIVersion {
public:
APIVersion() : api_version_(VVL_UNRECOGNIZED_API_VERSION) {}
APIVersion(uint32_t api_version) : api_version_(api_version) {}
APIVersion& operator=(uint32_t api_version) {
api_version_ = api_version;
return *this;
}
bool Valid() const { return api_version_ != VVL_UNRECOGNIZED_API_VERSION; }
uint32_t Value() const { return api_version_; }
uint32_t Major() const { return VK_API_VERSION_MAJOR(api_version_); }
uint32_t Minor() const { return VK_API_VERSION_MINOR(api_version_); }
uint32_t Patch() const { return VK_API_VERSION_PATCH(api_version_); }
bool operator<(APIVersion api_version) const { return api_version_ < api_version.api_version_; }
bool operator<=(APIVersion api_version) const { return api_version_ <= api_version.api_version_; }
bool operator>(APIVersion api_version) const { return api_version_ > api_version.api_version_; }
bool operator>=(APIVersion api_version) const { return api_version_ >= api_version.api_version_; }
bool operator==(APIVersion api_version) const { return api_version_ == api_version.api_version_; }
bool operator!=(APIVersion api_version) const { return api_version_ != api_version.api_version_; }
private:
uint32_t api_version_;
};
static inline APIVersion NormalizeApiVersion(APIVersion specified_version) {
if (specified_version < VK_API_VERSION_1_1)
return VK_API_VERSION_1_0;
else if (specified_version < VK_API_VERSION_1_2)
return VK_API_VERSION_1_1;
else if (specified_version < VK_API_VERSION_1_3)
return VK_API_VERSION_1_2;
else
return VK_API_VERSION_1_3;
}
// Convert integer API version to a string
static inline std::string StringAPIVersion(APIVersion version) {
std::stringstream version_name;
if (!version.Valid()) {
return "<unrecognized>";
}
version_name << version.Major() << "." << version.Minor() << "." << version.Patch() << " (0x" << std::setfill('0')
<< std::setw(8) << std::hex << version.Value() << ")";
return version_name.str();
}
// NOLINTEND