blob: 7e94253245f178d8b6b95e441916d89c1aec5ca5 [file] [log] [blame]
/* Copyright (c) 2021 The Khronos Group Inc.
* Copyright (c) 2021 Valve Corporation
* Copyright (c) 2021 LunarG, Inc.
* Copyright (C) 2021 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: Jeremy Gebben <jeremyg@lunarg.com>
*/
#pragma once
#include <string>
#include <vulkan/vulkan_core.h>
#include "vk_layer_data.h"
namespace core_error {
struct Location;
}
struct SubresourceRangeErrorCodes;
namespace sync_vuid_maps {
using core_error::Location;
extern const std::map<VkPipelineStageFlags2KHR, std::string> kFeatureNameMap;
const std::string &GetBadFeatureVUID(const Location &loc, VkPipelineStageFlags2KHR bit);
const std::string &GetBadAccessFlagsVUID(const Location &loc, VkAccessFlags2KHR bit);
const std::string &GetStageQueueCapVUID(const Location &loc, VkPipelineStageFlags2KHR bit);
enum class QueueError {
kSrcOrDstMustBeIgnore = 0,
kSpecialOrIgnoreOnly,
kSrcAndDstValidOrSpecial,
kSrcAndDestMustBeIgnore,
kSrcAndDstBothValid,
kSubmitQueueMustMatchSrcOrDst,
};
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,
};
const std::string &GetBufferBarrierVUID(const Location &loc, BufferError error);
enum class ImageError {
kNoMemory = 0,
kConflictingLayout,
kBadLayout,
kNotColorAspect,
kNotColorAspectYcbcr,
kBadMultiplanarAspect,
kBadPlaneCount,
kNotDepthOrStencilAspect,
kNotDepthAndStencilAspect,
kNotSeparateDepthAndStencilAspect,
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,
kTimelineCannotBeSignalled,
kTimelineSemMaxDiff,
kProtectedFeatureDisabled,
kBadUnprotectedSubmit,
kBadProtectedSubmit,
kCmdNotSimultaneous,
kReusedOneTimeCmd,
kSecondaryCmdNotSimultaneous,
kCmdWrongQueueFamily,
kSecondaryCmdInSubmit,
kHostStageMask,
};
const std::string &GetQueueSubmitVUID(const Location &loc, SubmitError error);
}; // namespace sync_vuid_maps