bool use_break;
PFN_vkDbgCreateMsgCallback dbgCreateMsgCallback;
PFN_vkDbgDestroyMsgCallback dbgDestroyMsgCallback;
- VkDbgMsgCallback msg_callback;
+ PFN_vkDbgMsgCallback dbgBreakCallback;
+ VkDebugReportCallbackLUNARG msg_callback;
uint32_t current_buffer;
uint32_t queue_count;
bool validate;
PFN_vkDbgCreateMsgCallback dbgCreateMsgCallback;
PFN_vkDbgDestroyMsgCallback dbgDestroyMsgCallback;
- VkDbgMsgCallback msg_callback;
+ VkDebugReportCallbackLUNARG msg_callback;
float depthStencil;
float depthIncrement;
VkFlags msg_flags,
PFN_vkDbgMsgCallback func,
void *user_data,
- VkDbgMsgCallback *msg_obj)
+ VkDebugReportCallbackLUNARG *msg_obj)
{
struct icd_instance_logger *logger;
VkResult icd_instance_destroy_logger(
struct icd_instance *instance,
- const VkDbgMsgCallback msg_obj)
+ const VkDebugReportCallbackLUNARG msg_obj)
{
struct icd_instance_logger *logger, *prev;
- VkDbgMsgCallback local_msg_obj = msg_obj;
+ VkDebugReportCallbackLUNARG local_msg_obj = msg_obj;
for (prev = NULL, logger = instance->loggers; logger;
prev = logger, logger = logger->next) {
VkFlags msg_flags,
PFN_vkDbgMsgCallback func,
void *user_data,
- VkDbgMsgCallback *msg_obj);
+ VkDebugReportCallbackLUNARG *msg_obj);
VkResult icd_instance_destroy_logger(
struct icd_instance *instance,
- const VkDbgMsgCallback msg_obj);
+ const VkDebugReportCallbackLUNARG msg_obj);
void icd_instance_log(const struct icd_instance *instance,
VkFlags msg_flags,
// LL node for tree of dbg callback functions
typedef struct VkLayerDbgFunctionNode_
{
- VkDbgMsgCallback msgCallback;
+ VkDebugReportCallbackLUNARG msgCallback;
PFN_vkDbgMsgCallback pfnMsgCallback;
VkFlags msgFlags;
const void *pUserData;
#define VK_EXT_LUNARG_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_LUNARG_debug_report"
-VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDbgMsgCallback)
+VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackLUNARG)
// ------------------------------------------------------------------------------------------------
// Enumerations
// ------------------------------------------------------------------------------------------------
// API functions
-typedef VkResult (VKAPI_PTR *PFN_vkDbgCreateMsgCallback)(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDbgMsgCallback* pMsgCallback);
-typedef VkResult (VKAPI_PTR *PFN_vkDbgDestroyMsgCallback)(VkInstance instance, VkDbgMsgCallback msgCallback);
+typedef VkResult (VKAPI_PTR *PFN_vkDbgCreateMsgCallback)(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDebugReportCallbackLUNARG* pMsgCallback);
+typedef VkResult (VKAPI_PTR *PFN_vkDbgDestroyMsgCallback)(VkInstance instance, VkDebugReportCallbackLUNARG msgCallback);
#ifdef VK_PROTOTYPES
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback);
+ VkDebugReportCallbackLUNARG* pMsgCallback);
VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback);
+ VkDebugReportCallbackLUNARG msgCallback);
#endif // VK_PROTOTYPES
// This struct will be stored in a map hashed by the dispatchable object
struct layer_data {
debug_report_data *report_data;
- std::vector<VkDbgMsgCallback> logging_callback;
+ std::vector<VkDebugReportCallbackLUNARG> logging_callback;
VkLayerDispatchTable* device_dispatch_table;
VkLayerInstanceDispatchTable* instance_dispatch_table;
devExts device_extensions;
uint32_t debug_action = 0;
FILE *log_output = NULL;
const char *option_str;
- VkDbgMsgCallback callback;
+ VkDebugReportCallbackLUNARG callback;
// initialize DeviceLimits options
report_flags = getLayerOptionFlags("DeviceLimitsReportFlags", 0);
getLayerOptionEnum("DeviceLimitsDebugAction", (uint32_t *) &debug_action);
// Clean up logging callback, if any
while (my_data->logging_callback.size() > 0) {
- VkDbgMsgCallback callback = my_data->logging_callback.back();
+ VkDebugReportCallbackLUNARG callback = my_data->logging_callback.back();
layer_destroy_msg_callback(my_data->report_data, callback);
my_data->logging_callback.pop_back();
}
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback)
+ VkDebugReportCallbackLUNARG* pMsgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult res = my_data->instance_dispatch_table->DbgCreateMsgCallback(instance, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback)
+ VkDebugReportCallbackLUNARG msgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult res = my_data->instance_dispatch_table->DbgDestroyMsgCallback(instance, msgCallback);
struct layer_data {
debug_report_data* report_data;
- std::vector<VkDbgMsgCallback> logging_callback;
+ std::vector<VkDebugReportCallbackLUNARG> logging_callback;
VkLayerDispatchTable* device_dispatch_table;
VkLayerInstanceDispatchTable* instance_dispatch_table;
devExts device_extensions;
uint32_t debug_action = 0;
FILE *log_output = NULL;
const char *option_str;
- VkDbgMsgCallback callback;
+ VkDebugReportCallbackLUNARG callback;
// initialize DrawState options
report_flags = getLayerOptionFlags("DrawStateReportFlags", 0);
getLayerOptionEnum("DrawStateDebugAction", (uint32_t *) &debug_action);
// Clean up logging callback, if any
while (my_data->logging_callback.size() > 0) {
- VkDbgMsgCallback callback = my_data->logging_callback.back();
+ VkDebugReportCallbackLUNARG callback = my_data->logging_callback.back();
layer_destroy_msg_callback(my_data->report_data, callback);
my_data->logging_callback.pop_back();
}
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback)
+ VkDebugReportCallbackLUNARG* pMsgCallback)
{
layer_data* my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult res = my_data->instance_dispatch_table->DbgCreateMsgCallback(instance, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback)
+ VkDebugReportCallbackLUNARG msgCallback)
{
layer_data* my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult res = my_data->instance_dispatch_table->DbgDestroyMsgCallback(instance, msgCallback);
// The following is for logging error messages:
struct layer_data {
debug_report_data *report_data;
- VkDbgMsgCallback logging_callback;
+ VkDebugReportCallbackLUNARG logging_callback;
layer_data() :
report_data(nullptr),
struct layer_data {
debug_report_data *report_data;
- vector<VkDbgMsgCallback> logging_callback;
+ vector<VkDebugReportCallbackLUNARG> logging_callback;
VkLayerDispatchTable* device_dispatch_table;
VkLayerInstanceDispatchTable *instance_dispatch_table;
VkPhysicalDevice physicalDevice;
static void InitImage(layer_data *data, const VkAllocationCallbacks *pAllocator)
{
- VkDbgMsgCallback callback;
+ VkDebugReportCallbackLUNARG callback;
uint32_t report_flags = getLayerOptionFlags("ImageReportFlags", 0);
uint32_t debug_action = 0;
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback)
+ VkDebugReportCallbackLUNARG* pMsgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult res = my_data->instance_dispatch_table->DbgCreateMsgCallback(instance, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback)
+ VkDebugReportCallbackLUNARG msgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult res = my_data->instance_dispatch_table->DbgDestroyMsgCallback(instance, msgCallback);
// Clean up logging callback, if any
while (my_data->logging_callback.size() > 0) {
- VkDbgMsgCallback callback = my_data->logging_callback.back();
+ VkDebugReportCallbackLUNARG callback = my_data->logging_callback.back();
layer_destroy_msg_callback(my_data->report_data, callback);
my_data->logging_callback.pop_back();
}
struct layer_data {
debug_report_data *report_data;
- std::vector<VkDbgMsgCallback> logging_callback;
+ std::vector<VkDebugReportCallbackLUNARG> logging_callback;
VkLayerDispatchTable *device_dispatch_table;
VkLayerInstanceDispatchTable *instance_dispatch_table;
VkBool32 wsi_enabled;
uint32_t debug_action = 0;
FILE *log_output = NULL;
const char *option_str;
- VkDbgMsgCallback callback;
+ VkDebugReportCallbackLUNARG callback;
// initialize MemTracker options
report_flags = getLayerOptionFlags("MemTrackerReportFlags", 0);
getLayerOptionEnum("MemTrackerDebugAction", (uint32_t *) &debug_action);
// Clean up logging callback, if any
while (my_data->logging_callback.size() > 0) {
- VkDbgMsgCallback callback = my_data->logging_callback.back();
+ VkDebugReportCallbackLUNARG callback = my_data->logging_callback.back();
layer_destroy_msg_callback(my_data->report_data, callback);
my_data->logging_callback.pop_back();
}
}
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgCreateMsgCallback(
- VkInstance instance,
- VkFlags msgFlags,
- const PFN_vkDbgMsgCallback pfnMsgCallback,
- void *pUserData,
- VkDbgMsgCallback *pMsgCallback)
+ VkInstance instance,
+ VkFlags msgFlags,
+ const PFN_vkDbgMsgCallback pfnMsgCallback,
+ void *pUserData,
+ VkDebugReportCallbackLUNARG *pMsgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkLayerInstanceDispatchTable *pTable = my_data->instance_dispatch_table;
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback)
+ VkDebugReportCallbackLUNARG msgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkLayerInstanceDispatchTable *pTable = my_data->instance_dispatch_table;
struct layer_data {
debug_report_data *report_data;
//TODO: put instance data here
- VkDbgMsgCallback logging_callback;
+ VkDebugReportCallbackLUNARG logging_callback;
bool wsi_enabled;
bool objtrack_extensions_enabled;
struct layer_data {
debug_report_data *report_data;
- std::vector<VkDbgMsgCallback> logging_callback;
+ std::vector<VkDebugReportCallbackLUNARG> logging_callback;
layer_data() :
report_data(nullptr)
static void InitParamChecker(layer_data *data, const VkAllocationCallbacks *pAllocator)
{
- VkDbgMsgCallback callback;
+ VkDebugReportCallbackLUNARG callback;
uint32_t report_flags = getLayerOptionFlags("ParamCheckerReportFlags", 0);
uint32_t debug_action = 0;
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback)
+ VkDebugReportCallbackLUNARG* pMsgCallback)
{
VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, instance);
VkResult result = pTable->DbgCreateMsgCallback(instance, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback)
+ VkDebugReportCallbackLUNARG msgCallback)
{
VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, instance);
VkResult result = pTable->DbgDestroyMsgCallback(instance, msgCallback);
// Clean up logging callback, if any
layer_data *my_data = get_my_data_ptr(key, layer_data_map);
while (my_data->logging_callback.size() > 0) {
- VkDbgMsgCallback callback = my_data->logging_callback.back();
+ VkDebugReportCallbackLUNARG callback = my_data->logging_callback.back();
layer_destroy_msg_callback(my_data->report_data, callback);
my_data->logging_callback.pop_back();
}
uint32_t debug_action = 0;
FILE *log_output = NULL;
const char *option_str;
- VkDbgMsgCallback callback;
+ VkDebugReportCallbackLUNARG callback;
// Initialize Swapchain options:
report_flags = getLayerOptionFlags("SwapchainReportFlags", 0);
// Clean up logging callback, if any
while (my_data->logging_callback.size() > 0) {
- VkDbgMsgCallback callback = my_data->logging_callback.back();
+ VkDebugReportCallbackLUNARG callback = my_data->logging_callback.back();
layer_destroy_msg_callback(my_data->report_data, callback);
my_data->logging_callback.pop_back();
}
return NULL;
}
-VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgCreateMsgCallback(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDbgMsgCallback* pMsgCallback)
+VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgCreateMsgCallback(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDebugReportCallbackLUNARG* pMsgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult result = my_data->instance_dispatch_table->DbgCreateMsgCallback(instance, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
return result;
}
-VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(VkInstance instance, VkDbgMsgCallback msgCallback)
+VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(VkInstance instance, VkDebugReportCallbackLUNARG msgCallback)
{
layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
VkResult result = my_data->instance_dispatch_table->DbgDestroyMsgCallback(instance, msgCallback);
struct layer_data {
debug_report_data *report_data;
- std::vector<VkDbgMsgCallback> logging_callback;
+ std::vector<VkDebugReportCallbackLUNARG> logging_callback;
VkLayerDispatchTable* device_dispatch_table;
VkLayerInstanceDispatchTable* instance_dispatch_table;
// NOTE: The following are for keeping track of info that is used for
struct layer_data {
debug_report_data *report_data;
- VkDbgMsgCallback logging_callback;
+ VkDebugReportCallbackLUNARG logging_callback;
layer_data() :
report_data(nullptr),
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void *pUserData,
- VkDbgMsgCallback *pMsgCallback)
+ VkDebugReportCallbackLUNARG *pMsgCallback)
{
VkLayerDbgFunctionNode *pNewDbgFuncNode = (VkLayerDbgFunctionNode*)malloc(sizeof(VkLayerDbgFunctionNode));
if (!pNewDbgFuncNode)
// Handle of 0 is logging_callback so use allocated Node address as unique handle
if (!(*pMsgCallback))
- *pMsgCallback = (VkDbgMsgCallback) pNewDbgFuncNode;
+ *pMsgCallback = (VkDebugReportCallbackLUNARG) pNewDbgFuncNode;
pNewDbgFuncNode->msgCallback = *pMsgCallback;
pNewDbgFuncNode->pfnMsgCallback = pfnMsgCallback;
pNewDbgFuncNode->msgFlags = msgFlags;
static inline void layer_destroy_msg_callback(
debug_report_data *debug_data,
- VkDbgMsgCallback msg_callback)
+ VkDebugReportCallbackLUNARG msg_callback)
{
VkLayerDbgFunctionNode *pTrav = debug_data->g_pDbgFunctionHead;
VkLayerDbgFunctionNode *pPrev = pTrav;
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback)
+ VkDebugReportCallbackLUNARG* pMsgCallback)
{
VkLayerDbgFunctionNode *pNewDbgFuncNode = (VkLayerDbgFunctionNode *) loader_heap_alloc((struct loader_instance *)instance, sizeof(VkLayerDbgFunctionNode), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (!pNewDbgFuncNode)
static VKAPI_ATTR VkResult VKAPI_CALL debug_report_DbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msg_callback)
+ VkDebugReportCallbackLUNARG msg_callback)
{
struct loader_instance *inst = loader_get_instance(instance);
loader_platform_thread_lock_mutex(&loader_lock);
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback)
+ VkDebugReportCallbackLUNARG* pMsgCallback)
{
- VkDbgMsgCallback *icd_info;
+ VkDebugReportCallbackLUNARG *icd_info;
const struct loader_icd *icd;
struct loader_instance *inst;
VkResult res;
break;
}
- icd_info = calloc(sizeof(VkDbgMsgCallback), inst->total_icd_count);
+ icd_info = calloc(sizeof(VkDebugReportCallbackLUNARG), inst->total_icd_count);
if (!icd_info) {
return VK_ERROR_OUT_OF_HOST_MEMORY;
}
return res;
}
- *(VkDbgMsgCallback **)pMsgCallback = icd_info;
+ *(VkDebugReportCallbackLUNARG **)pMsgCallback = icd_info;
return VK_SUCCESS;
}
*/
VKAPI_ATTR VkResult VKAPI_CALL loader_DbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback)
+ VkDebugReportCallbackLUNARG msgCallback)
{
uint32_t storage_idx;
- VkDbgMsgCallback *icd_info;
+ VkDebugReportCallbackLUNARG *icd_info;
const struct loader_icd *icd;
VkResult res = VK_SUCCESS;
struct loader_instance *inst;
break;
}
- icd_info = *(VkDbgMsgCallback **) &msgCallback;
+ icd_info = *(VkDebugReportCallbackLUNARG **) &msgCallback;
storage_idx = 0;
for (icd = inst->icds; icd; icd = icd->next) {
if (icd_info[storage_idx]) {
VkFlags msgFlags,
const PFN_vkDbgMsgCallback pfnMsgCallback,
void* pUserData,
- VkDbgMsgCallback* pMsgCallback);
+ VkDebugReportCallbackLUNARG* pMsgCallback);
VKAPI_ATTR VkResult VKAPI_CALL loader_DbgDestroyMsgCallback(
VkInstance instance,
- VkDbgMsgCallback msgCallback);
+ VkDebugReportCallbackLUNARG msgCallback);
extern const VkLayerInstanceDispatchTable instance_disp;
struct loader_msg_callback_map_entry {
- VkDbgMsgCallback icd_obj;
- VkDbgMsgCallback loader_obj;
+ VkDebugReportCallbackLUNARG icd_obj;
+ VkDebugReportCallbackLUNARG loader_obj;
};
bool compare_vk_extension_properties(
def _gen_create_msg_callback(self):
r_body = []
r_body.append('%s' % self.lineinfo.get())
- r_body.append('VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgCreateMsgCallback(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDbgMsgCallback* pMsgCallback)')
+ r_body.append('VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgCreateMsgCallback(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDebugReportCallbackLUNARG* pMsgCallback)')
r_body.append('{')
# Switch to this code section for the new per-instance storage and debug callbacks
if self.layer_name == 'ObjectTracker' or self.layer_name == 'Threading':
def _gen_destroy_msg_callback(self):
r_body = []
r_body.append('%s' % self.lineinfo.get())
- r_body.append('VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(VkInstance instance, VkDbgMsgCallback msgCallback)')
+ r_body.append('VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkDbgDestroyMsgCallback(VkInstance instance, VkDebugReportCallbackLUNARG msgCallback)')
r_body.append('{')
# Switch to this code section for the new per-instance storage and debug callbacks
if self.layer_name == 'ObjectTracker' or self.layer_name == 'Threading':
name="VK_LUNARG_DEBUG_REPORT",
headers=["vk_lunarg_debug_report.h"],
objects=[
- "VkDbgMsgCallback",
+ "VkDebugReportCallbackLUNARG",
],
protos=[
Proto("VkResult", "DbgCreateMsgCallback",
Param("VkFlags", "msgFlags"),
Param("const PFN_vkDbgMsgCallback", "pfnMsgCallback"),
Param("void*", "pUserData"),
- Param("VkDbgMsgCallback*", "pMsgCallback")]),
+ Param("VkDebugReportCallbackLUNARG*", "pMsgCallback")]),
Proto("VkResult", "DbgDestroyMsgCallback",
[Param("VkInstance", "instance"),
- Param("VkDbgMsgCallback", "msgCallback")]),
+ Param("VkDebugReportCallbackLUNARG", "msgCallback")]),
],
)
lunarg_debug_marker = Extension(
"VkFramebuffer",
"VkSwapchainKHR",
"VkSurfaceKHR",
- "VkDbgMsgCallback",
+ "VkDebugReportCallbackLUNARG",
]
object_type_list = object_dispatch_list + object_non_dispatch_list