/* Copyright (c) 2015-2024 The Khronos Group Inc. * Copyright (c) 2015-2024 Valve Corporation * Copyright (c) 2015-2024 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. * * The Shader Validation file is in charge of taking the Shader Module data and validating it */ #pragma once #include "vulkan/vulkan.h" #include "utils/vk_layer_utils.h" #include <spirv-tools/libspirv.hpp> struct DeviceFeatures; struct DeviceExtensions; class APIVersion; enum class ShaderObjectStage : uint32_t { … }; constexpr uint32_t kShaderObjectStageCount = …; inline ShaderObjectStage VkShaderStageToShaderObjectStage(VkShaderStageFlagBits stage) { … } class ValidationCache { … }; spv_target_env PickSpirvEnv(const APIVersion &api_version, bool spirv_1_4); void AdjustValidatorOptions(const DeviceExtensions &device_extensions, const DeviceFeatures &enabled_features, spvtools::ValidatorOptions &out_options, uint32_t *out_hash);