blob: 38136fcef4cb3e8b6ce7dfaf3baef82564cae726 [file] [log] [blame]
// Copyright 2023 The Khronos Group Inc.
// Copyright 2023 Valve Corporation
// Copyright 2023 LunarG, Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
// Author(s):
// - Christophe Riccio <christophe@lunarg.com>
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include <vulkan/vk_layer.h>
#define VK_EXT_layer_settings 1
#define VK_EXT_LAYER_SETTINGS_SPEC_VERSION 1
#define VK_EXT_LAYER_SETTINGS_EXTENSION_NAME "VK_EXT_layer_settings"
// NOTE: VK_STRUCTURE_TYPE_MAX_ENUM - 1 is used by the intel driver.
// NOTE: VK_STRUCTURE_TYPE_MAX_ENUM - 42 is used by the validation layers
#define VK_STRUCTURE_TYPE_LAYER_SETTINGS_EXT ((VkStructureType)(VK_STRUCTURE_TYPE_MAX_ENUM - 43))
#define VK_STRUCTURE_TYPE_LAYER_SETTING_PROPERTIES_EXT ((VkStructureType)(VK_STRUCTURE_TYPE_MAX_ENUM - 44))
typedef enum VkLayerSettingTypeEXT {
VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0,
VK_LAYER_SETTING_TYPE_INT32_EXT,
VK_LAYER_SETTING_TYPE_INT64_EXT,
VK_LAYER_SETTING_TYPE_UINT32_EXT,
VK_LAYER_SETTING_TYPE_UINT64_EXT,
VK_LAYER_SETTING_TYPE_FLOAT32_EXT,
VK_LAYER_SETTING_TYPE_FLOAT64_EXT,
VK_LAYER_SETTING_TYPE_STRING_EXT,
VK_LAYER_SETTING_TYPE_FRAMESET_EXT
} VkLayerSettingTypeEXT;
typedef struct VkFramesetEXT {
uint32_t first;
uint32_t count;
uint32_t step;
} VkFramesetEXT;
typedef struct VkLayerSettingEXT {
const char *pLayerName;
const char *pSettingName;
VkLayerSettingTypeEXT type;
uint32_t count;
const void *pValues;
} VkLayerSettingEXT;
typedef struct VkLayerSettingsCreateInfoEXT {
VkStructureType sType;
const void *pNext;
uint32_t settingCount;
const VkLayerSettingEXT *pSettings;
} VkLayerSettingsCreateInfoEXT;
typedef struct VkLayerSettingPropertiesEXT {
VkStructureType sType;
const void *pNext;
char key[VK_MAX_DESCRIPTION_SIZE];
VkLayerSettingTypeEXT type;
} VkLayerSettingPropertiesEXT;
VkResult vkEnumerateInstanceLayerSettingsEXT(VkInstance instance, const char *pLayerName, uint32_t *pPropertyCount,
VkLayerSettingPropertiesEXT *pProperties);
#ifdef __cplusplus
}
#endif