#include <assert.h>
#include <vector>
#include <vulkan/vk_enum_string_helper.h>
#include "generated/chassis.h"
#include "core_validation.h"
#include "error_message/error_strings.h"
#include "state_tracker/image_state.h"
#include "state_tracker/buffer_state.h"
bool CoreChecks::InsideVideoCodingScope(const vvl::CommandBuffer &cb_state, const Location &loc, const char *vuid) const { … }
bool CoreChecks::OutsideVideoCodingScope(const vvl::CommandBuffer &cb_state, const Location &loc, const char *vuid) const { … }
std::vector<VkVideoFormatPropertiesKHR> CoreChecks::GetVideoFormatProperties(VkImageUsageFlags image_usage,
const VkVideoProfileListInfoKHR *profile_list) const { … }
std::vector<VkVideoFormatPropertiesKHR> CoreChecks::GetVideoFormatProperties(VkImageUsageFlags image_usage,
const VkVideoProfileInfoKHR *profile) const { … }
bool CoreChecks::IsVideoFormatSupported(VkFormat format, VkImageUsageFlags image_usage,
const VkVideoProfileInfoKHR *profile) const { … }
bool CoreChecks::IsBufferCompatibleWithVideoProfile(const vvl::Buffer &buffer_state,
const std::shared_ptr<const vvl::VideoProfileDesc> &video_profile) const { … }
bool CoreChecks::IsImageCompatibleWithVideoProfile(const vvl::Image &image_state,
const std::shared_ptr<const vvl::VideoProfileDesc> &video_profile) const { … }
void CoreChecks::EnqueueVerifyVideoSessionInitialized(vvl::CommandBuffer &cb_state, vvl::VideoSession &vs_state,
const Location &loc, const char *vuid) { … }
void CoreChecks::EnqueueVerifyVideoInlineQueryUnavailable(vvl::CommandBuffer &cb_state, const VkVideoInlineQueryInfoKHR &query_info,
Func command) { … }
bool CoreChecks::ValidateVideoInlineQueryInfo(const vvl::QueryPool &query_pool_state, const VkVideoInlineQueryInfoKHR &query_info,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoEncodeRateControlInfo(const VkVideoEncodeRateControlInfoKHR &rc_info, const void *pNext,
VkCommandBuffer cmdbuf, const vvl::VideoSession &vs_state,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoEncodeRateControlInfoH264(const VkVideoEncodeRateControlInfoKHR &rc_info, const void *pNext,
VkCommandBuffer cmdbuf, const vvl::VideoSession &vs_state,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoEncodeRateControlInfoH265(const VkVideoEncodeRateControlInfoKHR &rc_info, const void *pNext,
VkCommandBuffer cmdbuf, const vvl::VideoSession &vs_state,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoEncodeRateControlLayerInfo(uint32_t layer_index, const VkVideoEncodeRateControlInfoKHR &rc_info,
const void *pNext, VkCommandBuffer cmdbuf,
const vvl::VideoSession &vs_state, const Location &rc_info_loc) const { … }
template <typename RateControlLayerInfo>
bool CoreChecks::ValidateVideoEncodeRateControlH26xQp(VkCommandBuffer cmdbuf, const vvl::VideoSession &vs_state,
const RateControlLayerInfo &rc_layer_info, const char *min_qp_range_vuid,
const char *max_qp_range_vuid, int32_t min_qp, int32_t max_qp,
const char *min_qp_per_pic_type_vuid, const char *max_qp_per_pic_type_vuid,
bool qp_per_picture_type, const char *min_max_qp_compare_vuid,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoEncodeRateControlLayerInfoH264(uint32_t layer_index, const VkVideoEncodeRateControlInfoKHR &rc_info,
const void *pNext, VkCommandBuffer cmdbuf,
const vvl::VideoSession &vs_state,
const Location &rc_layer_info_loc) const { … }
bool CoreChecks::ValidateVideoEncodeRateControlLayerInfoH265(uint32_t layer_index, const VkVideoEncodeRateControlInfoKHR &rc_info,
const void *pNext, VkCommandBuffer cmdbuf,
const vvl::VideoSession &vs_state,
const Location &rc_layer_info_loc) const { … }
bool CoreChecks::ValidateVideoPictureResource(const vvl::VideoPictureResource &picture_resource, VkCommandBuffer cmdbuf,
const vvl::VideoSession &vs_state, const Location &loc, const char *coded_offset_vuid,
const char *coded_extent_vuid) const { … }
template bool CoreChecks::ValidateVideoProfileInfo<VkDevice>(const VkVideoProfileInfoKHR *profile, const VkDevice object,
const Location &loc) const;
template bool CoreChecks::ValidateVideoProfileInfo<VkPhysicalDevice>(const VkVideoProfileInfoKHR *profile,
const VkPhysicalDevice object, const Location &loc) const;
template <typename HandleT>
bool CoreChecks::ValidateVideoProfileInfo(const VkVideoProfileInfoKHR *profile, const HandleT object, const Location &loc) const { … }
template bool CoreChecks::ValidateVideoProfileListInfo<VkDevice>(
const VkVideoProfileListInfoKHR *profile_list, const VkDevice object, const Location &loc, bool expect_decode_profile,
const char *missing_decode_profile_msg_code, bool expect_encode_profile, const char *missing_encode_profile_msg_code) const;
template bool CoreChecks::ValidateVideoProfileListInfo<VkPhysicalDevice>(
const VkVideoProfileListInfoKHR *profile_list, const VkPhysicalDevice object, const Location &loc, bool expect_decode_profile,
const char *missing_decode_profile_msg_code, bool expect_encode_profile, const char *missing_encode_profile_msg_code) const;
template <typename HandleT>
bool CoreChecks::ValidateVideoProfileListInfo(const VkVideoProfileListInfoKHR *profile_list, const HandleT object,
const Location &loc, bool expect_decode_profile,
const char *missing_decode_profile_msg_code, bool expect_encode_profile,
const char *missing_encode_profile_msg_code) const { … }
bool CoreChecks::ValidateDecodeH264ParametersAddInfo(const vvl::VideoSession &vs_state,
const VkVideoDecodeH264SessionParametersAddInfoKHR *add_info, VkDevice device,
const Location &loc,
const VkVideoDecodeH264SessionParametersCreateInfoKHR *create_info,
const vvl::VideoSessionParameters *template_state) const { … }
bool CoreChecks::ValidateDecodeH265ParametersAddInfo(const vvl::VideoSession &vs_state,
const VkVideoDecodeH265SessionParametersAddInfoKHR *add_info, VkDevice device,
const Location &loc,
const VkVideoDecodeH265SessionParametersCreateInfoKHR *create_info,
const vvl::VideoSessionParameters *template_state) const { … }
bool CoreChecks::ValidateEncodeH264ParametersAddInfo(const vvl::VideoSession &vs_state,
const VkVideoEncodeH264SessionParametersAddInfoKHR *add_info, VkDevice device,
const Location &loc,
const VkVideoEncodeH264SessionParametersCreateInfoKHR *create_info,
const vvl::VideoSessionParameters *template_state) const { … }
bool CoreChecks::ValidateEncodeH265ParametersAddInfo(const vvl::VideoSession &vs_state,
const VkVideoEncodeH265SessionParametersAddInfoKHR *add_info, VkDevice device,
const Location &loc,
const VkVideoEncodeH265SessionParametersCreateInfoKHR *create_info,
const vvl::VideoSessionParameters *template_state) const { … }
bool CoreChecks::ValidateDecodeDistinctOutput(const vvl::CommandBuffer &cb_state, const VkVideoDecodeInfoKHR &decode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoDecodeInfoH264(const vvl::CommandBuffer &cb_state, const VkVideoDecodeInfoKHR &decode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoDecodeInfoH265(const vvl::CommandBuffer &cb_state, const VkVideoDecodeInfoKHR &decode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoDecodeInfoAV1(const vvl::CommandBuffer &cb_state, const VkVideoDecodeInfoKHR &decode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoEncodeH264PicType(const vvl::VideoSession &vs_state, StdVideoH264PictureType pic_type,
const Location &loc, const char *where) const { … }
bool CoreChecks::ValidateVideoEncodeInfoH264(const vvl::CommandBuffer &cb_state, const VkVideoEncodeInfoKHR &encode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateVideoEncodeH265PicType(const vvl::VideoSession &vs_state, StdVideoH265PictureType pic_type,
const Location &loc, const char *where) const { … }
bool CoreChecks::ValidateVideoEncodeInfoH265(const vvl::CommandBuffer &cb_state, const VkVideoEncodeInfoKHR &encode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateActiveReferencePictureCount(const vvl::CommandBuffer &cb_state, const VkVideoDecodeInfoKHR &decode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateActiveReferencePictureCount(const vvl::CommandBuffer &cb_state, const VkVideoEncodeInfoKHR &encode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateReferencePictureUseCount(const vvl::CommandBuffer &cb_state, const VkVideoDecodeInfoKHR &decode_info,
const Location &loc) const { … }
bool CoreChecks::ValidateReferencePictureUseCount(const vvl::CommandBuffer &cb_state, const VkVideoEncodeInfoKHR &encode_info,
const Location &loc) const { … }
bool CoreChecks::PreCallValidateGetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,
const VkVideoProfileInfoKHR *pVideoProfile,
VkVideoCapabilitiesKHR *pCapabilities,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateGetPhysicalDeviceVideoFormatPropertiesKHR(
VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR *pVideoFormatInfo,
uint32_t *pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR *pVideoFormatProperties, const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *pQualityLevelInfo,
VkVideoEncodeQualityLevelPropertiesKHR *pQualityLevelProperties, const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateCreateVideoSessionKHR(VkDevice device, const VkVideoSessionCreateInfoKHR *pCreateInfo,
const VkAllocationCallbacks *pAllocator, VkVideoSessionKHR *pVideoSession,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateDestroyVideoSessionKHR(VkDevice device, VkVideoSessionKHR videoSession,
const VkAllocationCallbacks *pAllocator,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateBindVideoSessionMemoryKHR(VkDevice device, VkVideoSessionKHR videoSession,
uint32_t bindSessionMemoryInfoCount,
const VkBindVideoSessionMemoryInfoKHR *pBindSessionMemoryInfos,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateCreateVideoSessionParametersKHR(VkDevice device,
const VkVideoSessionParametersCreateInfoKHR *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
VkVideoSessionParametersKHR *pVideoSessionParameters,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateUpdateVideoSessionParametersKHR(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters,
const VkVideoSessionParametersUpdateInfoKHR *pUpdateInfo,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateDestroyVideoSessionParametersKHR(VkDevice device,
VkVideoSessionParametersKHR videoSessionParameters,
const VkAllocationCallbacks *pAllocator,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateGetEncodedVideoSessionParametersKHR(
VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR *pVideoSessionParametersInfo,
VkVideoEncodeSessionParametersFeedbackInfoKHR *pFeedbackInfo, size_t *pDataSize, void *pData,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR *pBeginInfo,
const ErrorObject &error_obj) const { … }
void CoreChecks::PreCallRecordCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR *pBeginInfo,
const RecordObject &record_obj) { … }
bool CoreChecks::PreCallValidateCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR *pEndCodingInfo,
const ErrorObject &error_obj) const { … }
bool CoreChecks::PreCallValidateCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,
const VkVideoCodingControlInfoKHR *pCodingControlInfo,
const ErrorObject &error_obj) const { … }
void CoreChecks::PreCallRecordCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,
const VkVideoCodingControlInfoKHR *pCodingControlInfo,
const RecordObject &record_obj) { … }
bool CoreChecks::PreCallValidateCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR *pDecodeInfo,
const ErrorObject &error_obj) const { … }
void CoreChecks::PreCallRecordCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR *pDecodeInfo,
const RecordObject &record_obj) { … }
bool CoreChecks::PreCallValidateCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR *pEncodeInfo,
const ErrorObject &error_obj) const { … }
void CoreChecks::PreCallRecordCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR *pEncodeInfo,
const RecordObject &record_obj) { … }