blob: d9cf9d57ddfe60063993be03df36d6ad010a097a [file] [log] [blame]
/* Copyright (c) 2021, 2023 The Khronos Group Inc.
* Copyright (c) 2021, 2023 Valve Corporation
* Copyright (c) 2022, 2023 LunarG, Inc.
* Copyright (C) 2021, 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.
*/
#pragma once
#include <string>
#include <vulkan/vulkan_core.h>
#include "containers/custom_containers.h"
struct Location;
struct DeviceExtensions;
struct SubresourceRangeErrorCodes;
struct DeviceExtensions;
namespace sync_vuid_maps {
extern const std::map<VkPipelineStageFlags2KHR, std::string> kFeatureNameMap;
const std::string &GetBadFeatureVUID(const Location &loc, VkPipelineStageFlags2 bit, const DeviceExtensions &device_extensions);
const std::string &GetBadAccessFlagsVUID(const Location &loc, VkAccessFlags2KHR bit);
const std::string &GetStageQueueCapVUID(const Location &loc, VkPipelineStageFlags2KHR bit);
enum class QueueError {
kSrcNoExternalExt = 0,
kDstNoExternalExt,
kSrcNoForeignExt,
kDstNoForeignExt,
kSync1ConcurrentNoIgnored,
kSync1ConcurrentSrc,
kSync1ConcurrentDst,
kExclusiveSrc,
kExclusiveDst,
kHostStage,
};
extern const std::map<QueueError, std::string> kQueueErrorSummary;
const std::string &GetBarrierQueueVUID(const Location &loc, QueueError error);
const std::string &GetBadImageLayoutVUID(const Location &loc, VkImageLayout layout);
enum class BufferError {
kNoMemory = 0,
kOffsetTooBig,
kSizeOutOfRange,
kSizeZero,
kQueueFamilyExternal,
};
const std::string &GetBufferBarrierVUID(const Location &loc, BufferError error);
enum class ImageError {
kNoMemory = 0,
kConflictingLayout,
kBadLayout,
kBadAttFeedbackLoopLayout,
kBadSync2OldLayout,
kBadSync2NewLayout,
kNotColorAspectSinglePlane,
kNotColorAspectNonDisjoint,
kBadMultiplanarAspect,
kBadPlaneCount,
kNotDepthOrStencilAspect,
kNotDepthAndStencilAspect,
kSeparateDepthWithStencilLayout,
kSeparateStencilhWithDepthLayout,
kRenderPassMismatch,
kRenderPassLayoutChange,
};
const std::string &GetImageBarrierVUID(const Location &loc, ImageError error);
struct GetImageBarrierVUIDFunctor {
ImageError error;
GetImageBarrierVUIDFunctor(ImageError error_) : error(error_) {}
const std::string &operator()(const Location &loc) const { return GetImageBarrierVUID(loc, error); }
};
const SubresourceRangeErrorCodes &GetSubResourceVUIDs(const Location &loc);
enum class SubmitError {
kTimelineSemSmallValue,
kSemAlreadySignalled,
kBinaryCannotBeSignalled,
kTimelineSemMaxDiff,
kProtectedFeatureDisabled,
kBadUnprotectedSubmit,
kBadProtectedSubmit,
kCmdNotSimultaneous,
kReusedOneTimeCmd,
kSecondaryCmdNotSimultaneous,
kCmdWrongQueueFamily,
kSecondaryCmdInSubmit,
kHostStageMask,
kOtherQueueWaiting,
};
const std::string &GetQueueSubmitVUID(const Location &loc, SubmitError error);
enum class ShaderTileImageError { kShaderTileImageFeatureError, kShaderTileImageBarrierError };
const std::string &GetShaderTileImageVUID(const Location &loc, ShaderTileImageError error);
const std::string &GetAccessMaskRayQueryVUIDSelector(const Location &loc, const DeviceExtensions &device_extensions);
} // namespace sync_vuid_maps