blob: 2e0a755abb7a2a15a16fc39f0871cc923b815703 [file] [log] [blame]
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001/*
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -06002 * Vulkan
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003 *
4 * Copyright (C) 2014 LunarG, Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included
14 * in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
25#include <stdio.h>
26#include <stdlib.h>
27#include <string.h>
28
29#include <iostream>
30#include <string>
31#include <sstream>
Mark Lobodzinski3723c512015-05-26 10:58:40 -050032#include <unordered_map>
Jeremy Hayesea53d6f2015-06-26 12:48:09 -060033#include <vector>
Jeremy Hayesc6cfa572015-04-06 13:46:11 -060034
35#include "loader_platform.h"
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060036#include "vkLayer.h"
Jeremy Hayesc6cfa572015-04-06 13:46:11 -060037#include "layers_config.h"
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -060038#include "vk_enum_validate_helper.h"
39#include "vk_struct_validate_helper.h"
Jeremy Hayesc6cfa572015-04-06 13:46:11 -060040//The following is #included again to catch certain OS-specific functions being used:
41#include "loader_platform.h"
42
Jon Ashburn5a10d212015-06-01 10:02:09 -060043#include "layers_table.h"
Jeremy Hayesea53d6f2015-06-26 12:48:09 -060044#include "layer_data.h"
45#include "layer_logging.h"
Jeremy Hayesc6cfa572015-04-06 13:46:11 -060046
Jeremy Hayesea53d6f2015-06-26 12:48:09 -060047typedef struct _layer_data {
48 debug_report_data *report_data;
49 VkDbgMsgCallback logging_callback;
50} layer_data;
Mark Lobodzinski3723c512015-05-26 10:58:40 -050051
Jeremy Hayesea53d6f2015-06-26 12:48:09 -060052static std::unordered_map<void*, layer_data*> layer_data_map;
53static device_table_map pc_device_table_map;
54static instance_table_map pc_instance_table_map;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -060055
Jeremy Hayesea53d6f2015-06-26 12:48:09 -060056#define PC_LAYER_EXT_ARRAY_SIZE 2
57static const VkExtensionProperties pcExts[PC_LAYER_EXT_ARRAY_SIZE] = {
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -060058 {
59 VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
60 "ParamChecker",
61 0x10,
62 "Sample layer: ParamChecker",
Courtney Goeltzenleuchter23b5f8d2015-06-17 20:51:59 -060063 },
64 {
65 VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES,
66 "Validation",
67 0x10,
68 "Sample layer: ParamChecker",
Courtney Goeltzenleuchter1c7c65d2015-06-10 17:39:03 -060069 }
Jon Ashburneb2728b2015-04-10 14:33:07 -060070};
71
Jeremy Hayesea53d6f2015-06-26 12:48:09 -060072// "my instance data"
73debug_report_data *mid(VkInstance object)
Tony Barbour426b9052015-06-24 16:06:58 -060074{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -060075 dispatch_key key = get_dispatch_key(object);
76 layer_data *data = get_my_data_ptr(get_dispatch_key(object), layer_data_map);
77#if DISPATCH_MAP_DEBUG
78 fprintf(stderr, "MID: map: %p, object: %p, key: %p, data: %p\n", &layer_data_map, object, key, data);
79#endif
80 assert(data->report_data != NULL);
81
82 return data->report_data;
83}
84
85// "my device data"
86debug_report_data *mdd(VkObject object)
87{
88 dispatch_key key = get_dispatch_key(object);
89 layer_data *data = get_my_data_ptr(key, layer_data_map);
90#if DISPATCH_MAP_DEBUG
91 fprintf(stderr, "MDD: map: %p, object: %p, key: %p, data: %p\n", &layer_data_map, object, key, data);
92#endif
93 assert(data->report_data != NULL);
94 return data->report_data;
95}
96
97static void InitParamChecker(layer_data *data)
98{
99 uint32_t report_flags = getLayerOptionFlags("ParamCheckerReportFlags", 0);
100
101 uint32_t debug_action = 0;
102 getLayerOptionEnum("ParamCheckerDebugAction", (uint32_t *) &debug_action);
103 if(debug_action & VK_DBG_LAYER_ACTION_LOG_MSG)
104 {
105 FILE *log_output = NULL;
106 const char* option_str = getLayerOption("ParamCheckerLogFilename");
107 if(option_str)
108 {
109 log_output = fopen(option_str, "w");
110 }
111 if(log_output == NULL)
112 {
113 log_output = stdout;
114 }
115
116 layer_create_msg_callback(data->report_data, report_flags, log_callback, (void*)log_output, &data->logging_callback);
117 }
118}
119
120VK_LAYER_EXPORT VkResult VKAPI vkDbgCreateMsgCallback(
121 VkInstance instance,
122 VkFlags msgFlags,
123 const PFN_vkDbgMsgCallback pfnMsgCallback,
124 void* pUserData,
125 VkDbgMsgCallback* pMsgCallback)
126{
127 VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, instance);
128 VkResult result = pTable->DbgCreateMsgCallback(instance, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
129
130 if (result == VK_SUCCESS)
131 {
132 layer_data *data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
133 result = layer_create_msg_callback(data->report_data, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
134 }
135
136 return result;
137}
138
139VK_LAYER_EXPORT VkResult VKAPI vkDbgDestroyMsgCallback(
140 VkInstance instance,
141 VkDbgMsgCallback msgCallback)
142{
143 VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, instance);
144 VkResult result = pTable->DbgDestroyMsgCallback(instance, msgCallback);
145
146 layer_data *data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
147 layer_destroy_msg_callback(data->report_data, msgCallback);
148
149 return result;
150}
151
152VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionCount(uint32_t* pCount)
153{
154 *pCount = PC_LAYER_EXT_ARRAY_SIZE;
Tony Barbour426b9052015-06-24 16:06:58 -0600155 return VK_SUCCESS;
156}
157
158VK_LAYER_EXPORT VkResult VKAPI vkGetGlobalExtensionProperties(
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600159 uint32_t extensionIndex,
160 VkExtensionProperties* pProperties)
Jon Ashburneb2728b2015-04-10 14:33:07 -0600161{
Jon Ashburneb2728b2015-04-10 14:33:07 -0600162 /* This entrypoint is NOT going to init it's own dispatch table since loader calls here early */
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600163 if (extensionIndex >= PC_LAYER_EXT_ARRAY_SIZE)
Tony Barbour426b9052015-06-24 16:06:58 -0600164 return VK_ERROR_INVALID_VALUE;
165 memcpy(pProperties, &pcExts[extensionIndex], sizeof(VkExtensionProperties));
Jon Ashburneb2728b2015-04-10 14:33:07 -0600166
167 return VK_SUCCESS;
168}
169
Tony Barbour426b9052015-06-24 16:06:58 -0600170VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionCount(
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600171 VkPhysicalDevice gpu,
172 uint32_t* pCount)
Tony Barbour426b9052015-06-24 16:06:58 -0600173{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600174 *pCount = PC_LAYER_EXT_ARRAY_SIZE;
Tony Barbour426b9052015-06-24 16:06:58 -0600175 return VK_SUCCESS;
176}
177
178VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceExtensionProperties(
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600179 VkPhysicalDevice gpu,
180 uint32_t extensionIndex,
181 VkExtensionProperties* pProperties)
Jeremy Hayescf469132015-04-17 10:36:53 -0600182{
Courtney Goeltzenleuchter23b5f8d2015-06-17 20:51:59 -0600183 /* This entrypoint is NOT going to init it's own dispatch table since loader calls here early */
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600184 if (extensionIndex >= PC_LAYER_EXT_ARRAY_SIZE)
Tony Barbour426b9052015-06-24 16:06:58 -0600185 return VK_ERROR_INVALID_VALUE;
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600186 memcpy(pProperties, &pcExts[extensionIndex], sizeof(VkExtensionProperties));
Courtney Goeltzenleuchter23b5f8d2015-06-17 20:51:59 -0600187
188 return VK_SUCCESS;
Jeremy Hayescf469132015-04-17 10:36:53 -0600189}
190
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600191// Version: 0.111.0
192
193static
194std::string EnumeratorString(VkResult const& enumerator)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -0600195{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600196 switch(enumerator)
197 {
198 case VK_ERROR_MEMORY_NOT_BOUND:
199 {
200 return "VK_ERROR_MEMORY_NOT_BOUND";
201 break;
202 }
203 case VK_ERROR_BUILDING_COMMAND_BUFFER:
204 {
205 return "VK_ERROR_BUILDING_COMMAND_BUFFER";
206 break;
207 }
208 case VK_ERROR_INCOMPATIBLE_DRIVER:
209 {
210 return "VK_ERROR_INCOMPATIBLE_DRIVER";
211 break;
212 }
213 case VK_ERROR_MEMORY_UNMAP_FAILED:
214 {
215 return "VK_ERROR_MEMORY_UNMAP_FAILED";
216 break;
217 }
218 case VK_ERROR_MEMORY_MAP_FAILED:
219 {
220 return "VK_ERROR_MEMORY_MAP_FAILED";
221 break;
222 }
223 case VK_ERROR_BAD_PIPELINE_DATA:
224 {
225 return "VK_ERROR_BAD_PIPELINE_DATA";
226 break;
227 }
228 case VK_ERROR_INVALID_OBJECT_TYPE:
229 {
230 return "VK_ERROR_INVALID_OBJECT_TYPE";
231 break;
232 }
233 case VK_ERROR_INVALID_QUEUE_TYPE:
234 {
235 return "VK_ERROR_INVALID_QUEUE_TYPE";
236 break;
237 }
238 case VK_ERROR_BAD_SHADER_CODE:
239 {
240 return "VK_ERROR_BAD_SHADER_CODE";
241 break;
242 }
243 case VK_ERROR_INVALID_IMAGE:
244 {
245 return "VK_ERROR_INVALID_IMAGE";
246 break;
247 }
248 case VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION:
249 {
250 return "VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION";
251 break;
252 }
253 case VK_ERROR_INITIALIZATION_FAILED:
254 {
255 return "VK_ERROR_INITIALIZATION_FAILED";
256 break;
257 }
258 case VK_NOT_READY:
259 {
260 return "VK_NOT_READY";
261 break;
262 }
263 case VK_ERROR_INVALID_POINTER:
264 {
265 return "VK_ERROR_INVALID_POINTER";
266 break;
267 }
268 case VK_ERROR_INVALID_VALUE:
269 {
270 return "VK_ERROR_INVALID_VALUE";
271 break;
272 }
273 case VK_ERROR_UNAVAILABLE:
274 {
275 return "VK_ERROR_UNAVAILABLE";
276 break;
277 }
278 case VK_ERROR_OUT_OF_HOST_MEMORY:
279 {
280 return "VK_ERROR_OUT_OF_HOST_MEMORY";
281 break;
282 }
283 case VK_ERROR_UNKNOWN:
284 {
285 return "VK_ERROR_UNKNOWN";
286 break;
287 }
288 case VK_ERROR_NOT_MAPPABLE:
289 {
290 return "VK_ERROR_NOT_MAPPABLE";
291 break;
292 }
293 case VK_ERROR_OUT_OF_DEVICE_MEMORY:
294 {
295 return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
296 break;
297 }
298 case VK_EVENT_SET:
299 {
300 return "VK_EVENT_SET";
301 break;
302 }
303 case VK_TIMEOUT:
304 {
305 return "VK_TIMEOUT";
306 break;
307 }
308 case VK_ERROR_INVALID_FLAGS:
309 {
310 return "VK_ERROR_INVALID_FLAGS";
311 break;
312 }
313 case VK_EVENT_RESET:
314 {
315 return "VK_EVENT_RESET";
316 break;
317 }
318 case VK_ERROR_INVALID_DESCRIPTOR_SET_DATA:
319 {
320 return "VK_ERROR_INVALID_DESCRIPTOR_SET_DATA";
321 break;
322 }
323 case VK_UNSUPPORTED:
324 {
325 return "VK_UNSUPPORTED";
326 break;
327 }
328 case VK_ERROR_INVALID_HANDLE:
329 {
330 return "VK_ERROR_INVALID_HANDLE";
331 break;
332 }
333 case VK_ERROR_INCOMPATIBLE_DEVICE:
334 {
335 return "VK_ERROR_INCOMPATIBLE_DEVICE";
336 break;
337 }
338 case VK_SUCCESS:
339 {
340 return "VK_SUCCESS";
341 break;
342 }
343 case VK_ERROR_INCOMPATIBLE_QUEUE:
344 {
345 return "VK_ERROR_INCOMPATIBLE_QUEUE";
346 break;
347 }
348 case VK_ERROR_INVALID_EXTENSION:
349 {
350 return "VK_ERROR_INVALID_EXTENSION";
351 break;
352 }
353 case VK_ERROR_DEVICE_ALREADY_CREATED:
354 {
355 return "VK_ERROR_DEVICE_ALREADY_CREATED";
356 break;
357 }
358 case VK_ERROR_DEVICE_LOST:
359 {
360 return "VK_ERROR_DEVICE_LOST";
361 break;
362 }
363 case VK_ERROR_INVALID_ORDINAL:
364 {
365 return "VK_ERROR_INVALID_ORDINAL";
366 break;
367 }
368 case VK_ERROR_INVALID_MEMORY_SIZE:
369 {
370 return "VK_ERROR_INVALID_MEMORY_SIZE";
371 break;
372 }
373 case VK_ERROR_INCOMPLETE_COMMAND_BUFFER:
374 {
375 return "VK_ERROR_INCOMPLETE_COMMAND_BUFFER";
376 break;
377 }
378 case VK_ERROR_INVALID_ALIGNMENT:
379 {
380 return "VK_ERROR_INVALID_ALIGNMENT";
381 break;
382 }
383 case VK_ERROR_INVALID_FORMAT:
384 {
385 return "VK_ERROR_INVALID_FORMAT";
386 break;
387 }
388 default:
389 {
390 return "unrecognized enumerator";
391 break;
392 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -0600393 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -0600394}
395
396static
397bool ValidateEnumerator(VkQueueFlagBits const& enumerator)
398{
399 VkQueueFlagBits allFlags = (VkQueueFlagBits)(VK_QUEUE_EXTENDED_BIT |
400 VK_QUEUE_DMA_BIT |
401 VK_QUEUE_COMPUTE_BIT |
402 VK_QUEUE_SPARSE_MEMMGR_BIT |
403 VK_QUEUE_GRAPHICS_BIT);
404 if(enumerator & (~allFlags))
405 {
406 return false;
407 }
408
409 return true;
410}
411
412static
413std::string EnumeratorString(VkQueueFlagBits const& enumerator)
414{
415 if(!ValidateEnumerator(enumerator))
416 {
417 return "unrecognized enumerator";
418 }
419
420 std::vector<std::string> strings;
421 if(enumerator & VK_QUEUE_EXTENDED_BIT)
422 {
423 strings.push_back("VK_QUEUE_EXTENDED_BIT");
424 }
425 if(enumerator & VK_QUEUE_DMA_BIT)
426 {
427 strings.push_back("VK_QUEUE_DMA_BIT");
428 }
429 if(enumerator & VK_QUEUE_COMPUTE_BIT)
430 {
431 strings.push_back("VK_QUEUE_COMPUTE_BIT");
432 }
433 if(enumerator & VK_QUEUE_SPARSE_MEMMGR_BIT)
434 {
435 strings.push_back("VK_QUEUE_SPARSE_MEMMGR_BIT");
436 }
437 if(enumerator & VK_QUEUE_GRAPHICS_BIT)
438 {
439 strings.push_back("VK_QUEUE_GRAPHICS_BIT");
440 }
441
442 std::string enumeratorString;
443 for(auto const& string : strings)
444 {
445 enumeratorString += string;
446
447 if(string != strings.back())
448 {
449 enumeratorString += '|';
450 }
451 }
452
453 return enumeratorString;
454}
455
456static
457bool ValidateEnumerator(VkMemoryPropertyFlagBits const& enumerator)
458{
459 VkMemoryPropertyFlagBits allFlags = (VkMemoryPropertyFlagBits)(VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL |
460 VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT |
461 VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT |
462 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
463 VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT |
464 VK_MEMORY_PROPERTY_DEVICE_ONLY);
465 if(enumerator & (~allFlags))
466 {
467 return false;
468 }
469
470 return true;
471}
472
473static
474std::string EnumeratorString(VkMemoryPropertyFlagBits const& enumerator)
475{
476 if(!ValidateEnumerator(enumerator))
477 {
478 return "unrecognized enumerator";
479 }
480
481 std::vector<std::string> strings;
482 if(enumerator & VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL)
483 {
484 strings.push_back("VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL");
485 }
486 if(enumerator & VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT)
487 {
488 strings.push_back("VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT");
489 }
490 if(enumerator & VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT)
491 {
492 strings.push_back("VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT");
493 }
494 if(enumerator & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)
495 {
496 strings.push_back("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT");
497 }
498 if(enumerator & VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT)
499 {
500 strings.push_back("VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT");
501 }
502 if(enumerator & VK_MEMORY_PROPERTY_DEVICE_ONLY)
503 {
504 strings.push_back("VK_MEMORY_PROPERTY_DEVICE_ONLY");
505 }
506
507 std::string enumeratorString;
508 for(auto const& string : strings)
509 {
510 enumeratorString += string;
511
512 if(string != strings.back())
513 {
514 enumeratorString += '|';
515 }
516 }
517
518 return enumeratorString;
519}
520
521static
522bool ValidateEnumerator(VkMemoryOutputFlagBits const& enumerator)
523{
524 VkMemoryOutputFlagBits allFlags = (VkMemoryOutputFlagBits)(VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
525 VK_MEMORY_OUTPUT_TRANSFER_BIT |
526 VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT |
527 VK_MEMORY_OUTPUT_SHADER_WRITE_BIT |
528 VK_MEMORY_OUTPUT_HOST_WRITE_BIT);
529 if(enumerator & (~allFlags))
530 {
531 return false;
532 }
533
534 return true;
535}
536
537static
538std::string EnumeratorString(VkMemoryOutputFlagBits const& enumerator)
539{
540 if(!ValidateEnumerator(enumerator))
541 {
542 return "unrecognized enumerator";
543 }
544
545 std::vector<std::string> strings;
546 if(enumerator & VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT)
547 {
548 strings.push_back("VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT");
549 }
550 if(enumerator & VK_MEMORY_OUTPUT_TRANSFER_BIT)
551 {
552 strings.push_back("VK_MEMORY_OUTPUT_TRANSFER_BIT");
553 }
554 if(enumerator & VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT)
555 {
556 strings.push_back("VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT");
557 }
558 if(enumerator & VK_MEMORY_OUTPUT_SHADER_WRITE_BIT)
559 {
560 strings.push_back("VK_MEMORY_OUTPUT_SHADER_WRITE_BIT");
561 }
562 if(enumerator & VK_MEMORY_OUTPUT_HOST_WRITE_BIT)
563 {
564 strings.push_back("VK_MEMORY_OUTPUT_HOST_WRITE_BIT");
565 }
566
567 std::string enumeratorString;
568 for(auto const& string : strings)
569 {
570 enumeratorString += string;
571
572 if(string != strings.back())
573 {
574 enumeratorString += '|';
575 }
576 }
577
578 return enumeratorString;
579}
580
581static
582bool ValidateEnumerator(VkMemoryInputFlagBits const& enumerator)
583{
584 VkMemoryInputFlagBits allFlags = (VkMemoryInputFlagBits)(VK_MEMORY_INPUT_TRANSFER_BIT |
585 VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT |
586 VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT |
587 VK_MEMORY_INPUT_SHADER_READ_BIT |
588 VK_MEMORY_INPUT_UNIFORM_READ_BIT |
589 VK_MEMORY_INPUT_INDEX_FETCH_BIT |
590 VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT |
591 VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT |
592 VK_MEMORY_INPUT_HOST_READ_BIT);
593 if(enumerator & (~allFlags))
594 {
595 return false;
596 }
597
598 return true;
599}
600
601static
602std::string EnumeratorString(VkMemoryInputFlagBits const& enumerator)
603{
604 if(!ValidateEnumerator(enumerator))
605 {
606 return "unrecognized enumerator";
607 }
608
609 std::vector<std::string> strings;
610 if(enumerator & VK_MEMORY_INPUT_TRANSFER_BIT)
611 {
612 strings.push_back("VK_MEMORY_INPUT_TRANSFER_BIT");
613 }
614 if(enumerator & VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT)
615 {
616 strings.push_back("VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT");
617 }
618 if(enumerator & VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT)
619 {
620 strings.push_back("VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT");
621 }
622 if(enumerator & VK_MEMORY_INPUT_SHADER_READ_BIT)
623 {
624 strings.push_back("VK_MEMORY_INPUT_SHADER_READ_BIT");
625 }
626 if(enumerator & VK_MEMORY_INPUT_UNIFORM_READ_BIT)
627 {
628 strings.push_back("VK_MEMORY_INPUT_UNIFORM_READ_BIT");
629 }
630 if(enumerator & VK_MEMORY_INPUT_INDEX_FETCH_BIT)
631 {
632 strings.push_back("VK_MEMORY_INPUT_INDEX_FETCH_BIT");
633 }
634 if(enumerator & VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT)
635 {
636 strings.push_back("VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT");
637 }
638 if(enumerator & VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT)
639 {
640 strings.push_back("VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT");
641 }
642 if(enumerator & VK_MEMORY_INPUT_HOST_READ_BIT)
643 {
644 strings.push_back("VK_MEMORY_INPUT_HOST_READ_BIT");
645 }
646
647 std::string enumeratorString;
648 for(auto const& string : strings)
649 {
650 enumeratorString += string;
651
652 if(string != strings.back())
653 {
654 enumeratorString += '|';
655 }
656 }
657
658 return enumeratorString;
659}
660
661static
662bool ValidateEnumerator(VkBufferUsageFlagBits const& enumerator)
663{
664 VkBufferUsageFlagBits allFlags = (VkBufferUsageFlagBits)(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT |
665 VK_BUFFER_USAGE_INDEX_BUFFER_BIT |
666 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT |
667 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT |
668 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
669 VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT |
670 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
671 VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT |
672 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
673 VK_BUFFER_USAGE_GENERAL);
674 if(enumerator & (~allFlags))
675 {
676 return false;
677 }
678
679 return true;
680}
681
682static
683std::string EnumeratorString(VkBufferUsageFlagBits const& enumerator)
684{
685 if(!ValidateEnumerator(enumerator))
686 {
687 return "unrecognized enumerator";
688 }
689
690 std::vector<std::string> strings;
691 if(enumerator & VK_BUFFER_USAGE_VERTEX_BUFFER_BIT)
692 {
693 strings.push_back("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT");
694 }
695 if(enumerator & VK_BUFFER_USAGE_INDEX_BUFFER_BIT)
696 {
697 strings.push_back("VK_BUFFER_USAGE_INDEX_BUFFER_BIT");
698 }
699 if(enumerator & VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)
700 {
701 strings.push_back("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT");
702 }
703 if(enumerator & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)
704 {
705 strings.push_back("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT");
706 }
707 if(enumerator & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT)
708 {
709 strings.push_back("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT");
710 }
711 if(enumerator & VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT)
712 {
713 strings.push_back("VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT");
714 }
715 if(enumerator & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT)
716 {
717 strings.push_back("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT");
718 }
719 if(enumerator & VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT)
720 {
721 strings.push_back("VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT");
722 }
723 if(enumerator & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT)
724 {
725 strings.push_back("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT");
726 }
727 if(enumerator & VK_BUFFER_USAGE_GENERAL)
728 {
729 strings.push_back("VK_BUFFER_USAGE_GENERAL");
730 }
731
732 std::string enumeratorString;
733 for(auto const& string : strings)
734 {
735 enumeratorString += string;
736
737 if(string != strings.back())
738 {
739 enumeratorString += '|';
740 }
741 }
742
743 return enumeratorString;
744}
745
746static
747bool ValidateEnumerator(VkBufferCreateFlagBits const& enumerator)
748{
749 VkBufferCreateFlagBits allFlags = (VkBufferCreateFlagBits)(VK_BUFFER_CREATE_SPARSE_BIT);
750 if(enumerator & (~allFlags))
751 {
752 return false;
753 }
754
755 return true;
756}
757
758static
759std::string EnumeratorString(VkBufferCreateFlagBits const& enumerator)
760{
761 if(!ValidateEnumerator(enumerator))
762 {
763 return "unrecognized enumerator";
764 }
765
766 std::vector<std::string> strings;
767 if(enumerator & VK_BUFFER_CREATE_SPARSE_BIT)
768 {
769 strings.push_back("VK_BUFFER_CREATE_SPARSE_BIT");
770 }
771
772 std::string enumeratorString;
773 for(auto const& string : strings)
774 {
775 enumeratorString += string;
776
777 if(string != strings.back())
778 {
779 enumeratorString += '|';
780 }
781 }
782
783 return enumeratorString;
784}
785
786static
787bool ValidateEnumerator(VkShaderStageFlagBits const& enumerator)
788{
789 VkShaderStageFlagBits allFlags = (VkShaderStageFlagBits)(VK_SHADER_STAGE_ALL |
790 VK_SHADER_STAGE_FRAGMENT_BIT |
791 VK_SHADER_STAGE_GEOMETRY_BIT |
792 VK_SHADER_STAGE_COMPUTE_BIT |
793 VK_SHADER_STAGE_TESS_EVALUATION_BIT |
794 VK_SHADER_STAGE_TESS_CONTROL_BIT |
795 VK_SHADER_STAGE_VERTEX_BIT);
796 if(enumerator & (~allFlags))
797 {
798 return false;
799 }
800
801 return true;
802}
803
804static
805std::string EnumeratorString(VkShaderStageFlagBits const& enumerator)
806{
807 if(!ValidateEnumerator(enumerator))
808 {
809 return "unrecognized enumerator";
810 }
811
812 std::vector<std::string> strings;
813 if(enumerator & VK_SHADER_STAGE_ALL)
814 {
815 strings.push_back("VK_SHADER_STAGE_ALL");
816 }
817 if(enumerator & VK_SHADER_STAGE_FRAGMENT_BIT)
818 {
819 strings.push_back("VK_SHADER_STAGE_FRAGMENT_BIT");
820 }
821 if(enumerator & VK_SHADER_STAGE_GEOMETRY_BIT)
822 {
823 strings.push_back("VK_SHADER_STAGE_GEOMETRY_BIT");
824 }
825 if(enumerator & VK_SHADER_STAGE_COMPUTE_BIT)
826 {
827 strings.push_back("VK_SHADER_STAGE_COMPUTE_BIT");
828 }
829 if(enumerator & VK_SHADER_STAGE_TESS_EVALUATION_BIT)
830 {
831 strings.push_back("VK_SHADER_STAGE_TESS_EVALUATION_BIT");
832 }
833 if(enumerator & VK_SHADER_STAGE_TESS_CONTROL_BIT)
834 {
835 strings.push_back("VK_SHADER_STAGE_TESS_CONTROL_BIT");
836 }
837 if(enumerator & VK_SHADER_STAGE_VERTEX_BIT)
838 {
839 strings.push_back("VK_SHADER_STAGE_VERTEX_BIT");
840 }
841
842 std::string enumeratorString;
843 for(auto const& string : strings)
844 {
845 enumeratorString += string;
846
847 if(string != strings.back())
848 {
849 enumeratorString += '|';
850 }
851 }
852
853 return enumeratorString;
854}
855
856static
857bool ValidateEnumerator(VkImageUsageFlagBits const& enumerator)
858{
859 VkImageUsageFlagBits allFlags = (VkImageUsageFlagBits)(VK_IMAGE_USAGE_DEPTH_STENCIL_BIT |
860 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
861 VK_IMAGE_USAGE_STORAGE_BIT |
862 VK_IMAGE_USAGE_SAMPLED_BIT |
863 VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT |
864 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT |
865 VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT |
866 VK_IMAGE_USAGE_GENERAL);
867 if(enumerator & (~allFlags))
868 {
869 return false;
870 }
871
872 return true;
873}
874
875static
876std::string EnumeratorString(VkImageUsageFlagBits const& enumerator)
877{
878 if(!ValidateEnumerator(enumerator))
879 {
880 return "unrecognized enumerator";
881 }
882
883 std::vector<std::string> strings;
884 if(enumerator & VK_IMAGE_USAGE_DEPTH_STENCIL_BIT)
885 {
886 strings.push_back("VK_IMAGE_USAGE_DEPTH_STENCIL_BIT");
887 }
888 if(enumerator & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)
889 {
890 strings.push_back("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT");
891 }
892 if(enumerator & VK_IMAGE_USAGE_STORAGE_BIT)
893 {
894 strings.push_back("VK_IMAGE_USAGE_STORAGE_BIT");
895 }
896 if(enumerator & VK_IMAGE_USAGE_SAMPLED_BIT)
897 {
898 strings.push_back("VK_IMAGE_USAGE_SAMPLED_BIT");
899 }
900 if(enumerator & VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT)
901 {
902 strings.push_back("VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT");
903 }
904 if(enumerator & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)
905 {
906 strings.push_back("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT");
907 }
908 if(enumerator & VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT)
909 {
910 strings.push_back("VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT");
911 }
912 if(enumerator & VK_IMAGE_USAGE_GENERAL)
913 {
914 strings.push_back("VK_IMAGE_USAGE_GENERAL");
915 }
916
917 std::string enumeratorString;
918 for(auto const& string : strings)
919 {
920 enumeratorString += string;
921
922 if(string != strings.back())
923 {
924 enumeratorString += '|';
925 }
926 }
927
928 return enumeratorString;
929}
930
931static
932bool ValidateEnumerator(VkImageCreateFlagBits const& enumerator)
933{
934 VkImageCreateFlagBits allFlags = (VkImageCreateFlagBits)(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT |
935 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT |
936 VK_IMAGE_CREATE_SPARSE_BIT |
937 VK_IMAGE_CREATE_INVARIANT_DATA_BIT);
938 if(enumerator & (~allFlags))
939 {
940 return false;
941 }
942
943 return true;
944}
945
946static
947std::string EnumeratorString(VkImageCreateFlagBits const& enumerator)
948{
949 if(!ValidateEnumerator(enumerator))
950 {
951 return "unrecognized enumerator";
952 }
953
954 std::vector<std::string> strings;
955 if(enumerator & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)
956 {
957 strings.push_back("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT");
958 }
959 if(enumerator & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT)
960 {
961 strings.push_back("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT");
962 }
963 if(enumerator & VK_IMAGE_CREATE_SPARSE_BIT)
964 {
965 strings.push_back("VK_IMAGE_CREATE_SPARSE_BIT");
966 }
967 if(enumerator & VK_IMAGE_CREATE_INVARIANT_DATA_BIT)
968 {
969 strings.push_back("VK_IMAGE_CREATE_INVARIANT_DATA_BIT");
970 }
971
972 std::string enumeratorString;
973 for(auto const& string : strings)
974 {
975 enumeratorString += string;
976
977 if(string != strings.back())
978 {
979 enumeratorString += '|';
980 }
981 }
982
983 return enumeratorString;
984}
985
986static
987bool ValidateEnumerator(VkDepthStencilViewCreateFlagBits const& enumerator)
988{
989 VkDepthStencilViewCreateFlagBits allFlags = (VkDepthStencilViewCreateFlagBits)(VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT |
990 VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT);
991 if(enumerator & (~allFlags))
992 {
993 return false;
994 }
995
996 return true;
997}
998
999static
1000std::string EnumeratorString(VkDepthStencilViewCreateFlagBits const& enumerator)
1001{
1002 if(!ValidateEnumerator(enumerator))
1003 {
1004 return "unrecognized enumerator";
1005 }
1006
1007 std::vector<std::string> strings;
1008 if(enumerator & VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT)
1009 {
1010 strings.push_back("VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT");
1011 }
1012 if(enumerator & VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT)
1013 {
1014 strings.push_back("VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT");
1015 }
1016
1017 std::string enumeratorString;
1018 for(auto const& string : strings)
1019 {
1020 enumeratorString += string;
1021
1022 if(string != strings.back())
1023 {
1024 enumeratorString += '|';
1025 }
1026 }
1027
1028 return enumeratorString;
1029}
1030
1031static
1032bool ValidateEnumerator(VkPipelineCreateFlagBits const& enumerator)
1033{
1034 VkPipelineCreateFlagBits allFlags = (VkPipelineCreateFlagBits)(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT |
1035 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT);
1036 if(enumerator & (~allFlags))
1037 {
1038 return false;
1039 }
1040
1041 return true;
1042}
1043
1044static
1045std::string EnumeratorString(VkPipelineCreateFlagBits const& enumerator)
1046{
1047 if(!ValidateEnumerator(enumerator))
1048 {
1049 return "unrecognized enumerator";
1050 }
1051
1052 std::vector<std::string> strings;
1053 if(enumerator & VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)
1054 {
1055 strings.push_back("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT");
1056 }
1057 if(enumerator & VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)
1058 {
1059 strings.push_back("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT");
1060 }
1061
1062 std::string enumeratorString;
1063 for(auto const& string : strings)
1064 {
1065 enumeratorString += string;
1066
1067 if(string != strings.back())
1068 {
1069 enumeratorString += '|';
1070 }
1071 }
1072
1073 return enumeratorString;
1074}
1075
1076static
1077bool ValidateEnumerator(VkChannelFlagBits const& enumerator)
1078{
1079 VkChannelFlagBits allFlags = (VkChannelFlagBits)(VK_CHANNEL_A_BIT |
1080 VK_CHANNEL_B_BIT |
1081 VK_CHANNEL_G_BIT |
1082 VK_CHANNEL_R_BIT);
1083 if(enumerator & (~allFlags))
1084 {
1085 return false;
1086 }
1087
1088 return true;
1089}
1090
1091static
1092std::string EnumeratorString(VkChannelFlagBits const& enumerator)
1093{
1094 if(!ValidateEnumerator(enumerator))
1095 {
1096 return "unrecognized enumerator";
1097 }
1098
1099 std::vector<std::string> strings;
1100 if(enumerator & VK_CHANNEL_A_BIT)
1101 {
1102 strings.push_back("VK_CHANNEL_A_BIT");
1103 }
1104 if(enumerator & VK_CHANNEL_B_BIT)
1105 {
1106 strings.push_back("VK_CHANNEL_B_BIT");
1107 }
1108 if(enumerator & VK_CHANNEL_G_BIT)
1109 {
1110 strings.push_back("VK_CHANNEL_G_BIT");
1111 }
1112 if(enumerator & VK_CHANNEL_R_BIT)
1113 {
1114 strings.push_back("VK_CHANNEL_R_BIT");
1115 }
1116
1117 std::string enumeratorString;
1118 for(auto const& string : strings)
1119 {
1120 enumeratorString += string;
1121
1122 if(string != strings.back())
1123 {
1124 enumeratorString += '|';
1125 }
1126 }
1127
1128 return enumeratorString;
1129}
1130
1131static
1132bool ValidateEnumerator(VkFenceCreateFlagBits const& enumerator)
1133{
1134 VkFenceCreateFlagBits allFlags = (VkFenceCreateFlagBits)(VK_FENCE_CREATE_SIGNALED_BIT);
1135 if(enumerator & (~allFlags))
1136 {
1137 return false;
1138 }
1139
1140 return true;
1141}
1142
1143static
1144std::string EnumeratorString(VkFenceCreateFlagBits const& enumerator)
1145{
1146 if(!ValidateEnumerator(enumerator))
1147 {
1148 return "unrecognized enumerator";
1149 }
1150
1151 std::vector<std::string> strings;
1152 if(enumerator & VK_FENCE_CREATE_SIGNALED_BIT)
1153 {
1154 strings.push_back("VK_FENCE_CREATE_SIGNALED_BIT");
1155 }
1156
1157 std::string enumeratorString;
1158 for(auto const& string : strings)
1159 {
1160 enumeratorString += string;
1161
1162 if(string != strings.back())
1163 {
1164 enumeratorString += '|';
1165 }
1166 }
1167
1168 return enumeratorString;
1169}
1170
1171static
1172bool ValidateEnumerator(VkFormatFeatureFlagBits const& enumerator)
1173{
1174 VkFormatFeatureFlagBits allFlags = (VkFormatFeatureFlagBits)(VK_FORMAT_FEATURE_CONVERSION_BIT |
1175 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT |
1176 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT |
1177 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
1178 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT |
1179 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT |
1180 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT |
1181 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT |
1182 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT |
1183 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
1184 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT);
1185 if(enumerator & (~allFlags))
1186 {
1187 return false;
1188 }
1189
1190 return true;
1191}
1192
1193static
1194std::string EnumeratorString(VkFormatFeatureFlagBits const& enumerator)
1195{
1196 if(!ValidateEnumerator(enumerator))
1197 {
1198 return "unrecognized enumerator";
1199 }
1200
1201 std::vector<std::string> strings;
1202 if(enumerator & VK_FORMAT_FEATURE_CONVERSION_BIT)
1203 {
1204 strings.push_back("VK_FORMAT_FEATURE_CONVERSION_BIT");
1205 }
1206 if(enumerator & VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT)
1207 {
1208 strings.push_back("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT");
1209 }
1210 if(enumerator & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)
1211 {
1212 strings.push_back("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT");
1213 }
1214 if(enumerator & VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT)
1215 {
1216 strings.push_back("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT");
1217 }
1218 if(enumerator & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT)
1219 {
1220 strings.push_back("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT");
1221 }
1222 if(enumerator & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)
1223 {
1224 strings.push_back("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT");
1225 }
1226 if(enumerator & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT)
1227 {
1228 strings.push_back("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT");
1229 }
1230 if(enumerator & VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT)
1231 {
1232 strings.push_back("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT");
1233 }
1234 if(enumerator & VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)
1235 {
1236 strings.push_back("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT");
1237 }
1238 if(enumerator & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)
1239 {
1240 strings.push_back("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT");
1241 }
1242 if(enumerator & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)
1243 {
1244 strings.push_back("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT");
1245 }
1246
1247 std::string enumeratorString;
1248 for(auto const& string : strings)
1249 {
1250 enumeratorString += string;
1251
1252 if(string != strings.back())
1253 {
1254 enumeratorString += '|';
1255 }
1256 }
1257
1258 return enumeratorString;
1259}
1260
1261static
1262bool ValidateEnumerator(VkQueryControlFlagBits const& enumerator)
1263{
1264 VkQueryControlFlagBits allFlags = (VkQueryControlFlagBits)(VK_QUERY_CONTROL_CONSERVATIVE_BIT);
1265 if(enumerator & (~allFlags))
1266 {
1267 return false;
1268 }
1269
1270 return true;
1271}
1272
1273static
1274std::string EnumeratorString(VkQueryControlFlagBits const& enumerator)
1275{
1276 if(!ValidateEnumerator(enumerator))
1277 {
1278 return "unrecognized enumerator";
1279 }
1280
1281 std::vector<std::string> strings;
1282 if(enumerator & VK_QUERY_CONTROL_CONSERVATIVE_BIT)
1283 {
1284 strings.push_back("VK_QUERY_CONTROL_CONSERVATIVE_BIT");
1285 }
1286
1287 std::string enumeratorString;
1288 for(auto const& string : strings)
1289 {
1290 enumeratorString += string;
1291
1292 if(string != strings.back())
1293 {
1294 enumeratorString += '|';
1295 }
1296 }
1297
1298 return enumeratorString;
1299}
1300
1301static
1302bool ValidateEnumerator(VkQueryResultFlagBits const& enumerator)
1303{
1304 VkQueryResultFlagBits allFlags = (VkQueryResultFlagBits)(VK_QUERY_RESULT_PARTIAL_BIT |
1305 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT |
1306 VK_QUERY_RESULT_WAIT_BIT |
1307 VK_QUERY_RESULT_64_BIT |
1308 VK_QUERY_RESULT_DEFAULT);
1309 if(enumerator & (~allFlags))
1310 {
1311 return false;
1312 }
1313
1314 return true;
1315}
1316
1317static
1318std::string EnumeratorString(VkQueryResultFlagBits const& enumerator)
1319{
1320 if(!ValidateEnumerator(enumerator))
1321 {
1322 return "unrecognized enumerator";
1323 }
1324
1325 std::vector<std::string> strings;
1326 if(enumerator & VK_QUERY_RESULT_PARTIAL_BIT)
1327 {
1328 strings.push_back("VK_QUERY_RESULT_PARTIAL_BIT");
1329 }
1330 if(enumerator & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT)
1331 {
1332 strings.push_back("VK_QUERY_RESULT_WITH_AVAILABILITY_BIT");
1333 }
1334 if(enumerator & VK_QUERY_RESULT_WAIT_BIT)
1335 {
1336 strings.push_back("VK_QUERY_RESULT_WAIT_BIT");
1337 }
1338 if(enumerator & VK_QUERY_RESULT_64_BIT)
1339 {
1340 strings.push_back("VK_QUERY_RESULT_64_BIT");
1341 }
1342 if(enumerator & VK_QUERY_RESULT_DEFAULT)
1343 {
1344 strings.push_back("VK_QUERY_RESULT_DEFAULT");
1345 }
1346
1347 std::string enumeratorString;
1348 for(auto const& string : strings)
1349 {
1350 enumeratorString += string;
1351
1352 if(string != strings.back())
1353 {
1354 enumeratorString += '|';
1355 }
1356 }
1357
1358 return enumeratorString;
1359}
1360
1361static
1362bool ValidateEnumerator(VkCmdBufferOptimizeFlagBits const& enumerator)
1363{
1364 VkCmdBufferOptimizeFlagBits allFlags = (VkCmdBufferOptimizeFlagBits)(VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT |
1365 VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT |
1366 VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT |
1367 VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT);
1368 if(enumerator & (~allFlags))
1369 {
1370 return false;
1371 }
1372
1373 return true;
1374}
1375
1376static
1377std::string EnumeratorString(VkCmdBufferOptimizeFlagBits const& enumerator)
1378{
1379 if(!ValidateEnumerator(enumerator))
1380 {
1381 return "unrecognized enumerator";
1382 }
1383
1384 std::vector<std::string> strings;
1385 if(enumerator & VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT)
1386 {
1387 strings.push_back("VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT");
1388 }
1389 if(enumerator & VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT)
1390 {
1391 strings.push_back("VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT");
1392 }
1393 if(enumerator & VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT)
1394 {
1395 strings.push_back("VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT");
1396 }
1397 if(enumerator & VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT)
1398 {
1399 strings.push_back("VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT");
1400 }
1401
1402 std::string enumeratorString;
1403 for(auto const& string : strings)
1404 {
1405 enumeratorString += string;
1406
1407 if(string != strings.back())
1408 {
1409 enumeratorString += '|';
1410 }
1411 }
1412
1413 return enumeratorString;
1414}
1415
1416static
1417bool ValidateEnumerator(VkQueryPipelineStatisticFlagBits const& enumerator)
1418{
1419 VkQueryPipelineStatisticFlagBits allFlags = (VkQueryPipelineStatisticFlagBits)(VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT |
1420 VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT |
1421 VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT |
1422 VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT |
1423 VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT |
1424 VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT |
1425 VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT |
1426 VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT |
1427 VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT |
1428 VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT |
1429 VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT);
1430 if(enumerator & (~allFlags))
1431 {
1432 return false;
1433 }
1434
1435 return true;
1436}
1437
1438static
1439std::string EnumeratorString(VkQueryPipelineStatisticFlagBits const& enumerator)
1440{
1441 if(!ValidateEnumerator(enumerator))
1442 {
1443 return "unrecognized enumerator";
1444 }
1445
1446 std::vector<std::string> strings;
1447 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT)
1448 {
1449 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT");
1450 }
1451 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT)
1452 {
1453 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT");
1454 }
1455 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT)
1456 {
1457 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT");
1458 }
1459 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT)
1460 {
1461 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT");
1462 }
1463 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT)
1464 {
1465 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT");
1466 }
1467 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT)
1468 {
1469 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT");
1470 }
1471 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT)
1472 {
1473 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT");
1474 }
1475 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT)
1476 {
1477 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT");
1478 }
1479 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT)
1480 {
1481 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT");
1482 }
1483 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT)
1484 {
1485 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT");
1486 }
1487 if(enumerator & VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT)
1488 {
1489 strings.push_back("VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT");
1490 }
1491
1492 std::string enumeratorString;
1493 for(auto const& string : strings)
1494 {
1495 enumeratorString += string;
1496
1497 if(string != strings.back())
1498 {
1499 enumeratorString += '|';
1500 }
1501 }
1502
1503 return enumeratorString;
1504}
1505
1506VK_LAYER_EXPORT VkResult VKAPI vkCreateInstance(
1507 const VkInstanceCreateInfo* pCreateInfo,
1508 VkInstance* pInstance)
1509{
1510 VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, *pInstance);
1511 VkResult result = pTable->CreateInstance(pCreateInfo, pInstance);
1512
1513 if (result == VK_SUCCESS) {
1514 layer_data *data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map);
1515 data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->extensionCount,
1516 pCreateInfo->pEnabledExtensions);
1517
1518 InitParamChecker(data);
1519 }
1520
1521 return result;
1522}
1523
1524VK_LAYER_EXPORT VkResult VKAPI vkDestroyInstance(
1525 VkInstance instance)
1526{
1527 // Grab the key before the instance is destroyed.
1528 dispatch_key key = get_dispatch_key(instance);
1529 VkLayerInstanceDispatchTable *pTable = get_dispatch_table(pc_instance_table_map, instance);
1530 VkResult result = pTable->DestroyInstance(instance);
1531
1532 // Clean up logging callback, if any
1533 layer_data *data = get_my_data_ptr(key, layer_data_map);
1534 if(data->logging_callback)
1535 {
1536 layer_destroy_msg_callback(data->report_data, data->logging_callback);
1537 }
1538
1539 layer_debug_report_destroy_instance(mid(instance));
1540 layer_data_map.erase(pTable);
1541
1542 pc_instance_table_map.erase(key);
1543 assert(pc_instance_table_map.size() == 0 && "Should not have any instance mappings hanging around");
1544
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001545 return result;
1546}
1547
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001548void PreEnumeratePhysicalDevices(
1549 VkInstance instance,
1550 VkPhysicalDevice* pPhysicalDevices)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001551{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001552 if(instance == nullptr)
1553 {
1554 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1555 "vkEnumeratePhysicalDevices parameter, VkInstance instance, is null pointer");
1556 return;
1557 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001558
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001559 if(pPhysicalDevices == nullptr)
1560 {
1561 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1562 "vkEnumeratePhysicalDevices parameter, VkPhysicalDevice* pPhysicalDevices, is null pointer");
1563 return;
1564 }
1565 if((*pPhysicalDevices) == nullptr)
1566 {
1567 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1568 "vkEnumeratePhysicalDevices parameter, VkPhysicalDevice* pPhysicalDevices, is null pointer");
1569 return;
1570 }
1571}
1572
1573void PostEnumeratePhysicalDevices(
1574 VkInstance instance,
1575 uint32_t* pPhysicalDeviceCount,
1576 VkPhysicalDevice* pPhysicalDevices,
1577 VkResult result)
1578{
1579 if(instance == nullptr)
1580 {
1581 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1582 "vkEnumeratePhysicalDevices parameter, VkInstance instance, is null pointer");
1583 return;
1584 }
1585
1586 if(pPhysicalDeviceCount == nullptr)
1587 {
1588 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1589 "vkEnumeratePhysicalDevices parameter, uint32_t* pPhysicalDeviceCount, is null pointer");
1590 return;
1591 }
1592
1593 if(pPhysicalDevices == nullptr)
1594 {
1595 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1596 "vkEnumeratePhysicalDevices parameter, VkPhysicalDevice* pPhysicalDevices, is null pointer");
1597 return;
1598 }
1599 if((*pPhysicalDevices) == nullptr)
1600 {
1601 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1602 "vkEnumeratePhysicalDevices parameter, VkPhysicalDevice* pPhysicalDevices, is null pointer");
1603 return;
1604 }
1605
1606 if(result != VK_SUCCESS)
1607 {
1608 std::string reason = "vkEnumeratePhysicalDevices parameter, VkResult result, is " + EnumeratorString(result);
1609 log_msg(mid(instance), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1610 return;
1611 }
1612}
1613
1614VK_LAYER_EXPORT VkResult VKAPI vkEnumeratePhysicalDevices(
1615 VkInstance instance,
1616 uint32_t* pPhysicalDeviceCount,
1617 VkPhysicalDevice* pPhysicalDevices)
1618{
1619 PreEnumeratePhysicalDevices(instance, pPhysicalDevices);
1620 VkResult result = get_dispatch_table(pc_instance_table_map, instance)->EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
1621
1622 PostEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices, result);
1623
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001624 return result;
1625}
1626
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001627void PreGetPhysicalDeviceFeatures(
1628 VkPhysicalDevice physicalDevice)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001629{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001630 if(physicalDevice == nullptr)
1631 {
1632 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1633 "vkGetPhysicalDeviceFeatures parameter, VkPhysicalDevice physicalDevice, is null pointer");
1634 return;
1635 }
1636}
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001637
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001638void PostGetPhysicalDeviceFeatures(
1639 VkPhysicalDevice physicalDevice,
1640 VkPhysicalDeviceFeatures* pFeatures,
1641 VkResult result)
1642{
1643 if(physicalDevice == nullptr)
1644 {
1645 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1646 "vkGetPhysicalDeviceFeatures parameter, VkPhysicalDevice physicalDevice, is null pointer");
1647 return;
1648 }
1649
1650 if(pFeatures == nullptr)
1651 {
1652 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1653 "vkGetPhysicalDeviceFeatures parameter, VkPhysicalDeviceFeatures* pFeatures, is null pointer");
1654 return;
1655 }
1656
1657 if(result != VK_SUCCESS)
1658 {
1659 std::string reason = "vkGetPhysicalDeviceFeatures parameter, VkResult result, is " + EnumeratorString(result);
1660 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1661 return;
1662 }
1663}
1664
1665VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFeatures(
1666 VkPhysicalDevice physicalDevice,
1667 VkPhysicalDeviceFeatures* pFeatures)
1668{
1669 PreGetPhysicalDeviceFeatures(physicalDevice);
1670 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFeatures(physicalDevice, pFeatures);
1671
1672 PostGetPhysicalDeviceFeatures(physicalDevice, pFeatures, result);
1673
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001674 return result;
1675}
1676
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001677void PreGetPhysicalDeviceFormatInfo(
1678 VkPhysicalDevice physicalDevice)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001679{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001680 if(physicalDevice == nullptr)
1681 {
1682 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1683 "vkGetPhysicalDeviceFormatInfo parameter, VkPhysicalDevice physicalDevice, is null pointer");
1684 return;
1685 }
1686}
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001687
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001688void PostGetPhysicalDeviceFormatInfo(
1689 VkPhysicalDevice physicalDevice,
1690 VkFormat format,
1691 VkFormatProperties* pFormatInfo,
1692 VkResult result)
1693{
1694 if(physicalDevice == nullptr)
1695 {
1696 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1697 "vkGetPhysicalDeviceFormatInfo parameter, VkPhysicalDevice physicalDevice, is null pointer");
1698 return;
1699 }
1700
1701 if(format < VK_FORMAT_BEGIN_RANGE ||
1702 format > VK_FORMAT_END_RANGE)
1703 {
1704 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1705 "vkGetPhysicalDeviceFormatInfo parameter, VkFormat format, is unrecognized enumerator");
1706 return;
1707 }
1708
1709 if(pFormatInfo == nullptr)
1710 {
1711 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1712 "vkGetPhysicalDeviceFormatInfo parameter, VkFormatProperties* pFormatInfo, is null pointer");
1713 return;
1714 }
1715 if(!ValidateEnumerator((VkFormatFeatureFlagBits)pFormatInfo->linearTilingFeatures))
1716 {
1717 std::string reason = "vkGetPhysicalDeviceFormatInfo parameter, VkFormatFeatureFlags pFormatInfo->linearTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->linearTilingFeatures);
1718 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1719 return;
1720 }
1721 if(!ValidateEnumerator((VkFormatFeatureFlagBits)pFormatInfo->optimalTilingFeatures))
1722 {
1723 std::string reason = "vkGetPhysicalDeviceFormatInfo parameter, VkFormatFeatureFlags pFormatInfo->optimalTilingFeatures, is " + EnumeratorString((VkFormatFeatureFlagBits)pFormatInfo->optimalTilingFeatures);
1724 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1725 return;
1726 }
1727
1728 if(result != VK_SUCCESS)
1729 {
1730 std::string reason = "vkGetPhysicalDeviceFormatInfo parameter, VkResult result, is " + EnumeratorString(result);
1731 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1732 return;
1733 }
1734}
1735
1736VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceFormatInfo(
1737 VkPhysicalDevice physicalDevice,
1738 VkFormat format,
1739 VkFormatProperties* pFormatInfo)
1740{
1741 PreGetPhysicalDeviceFormatInfo(physicalDevice);
1742 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceFormatInfo(physicalDevice, format, pFormatInfo);
1743
1744 PostGetPhysicalDeviceFormatInfo(physicalDevice, format, pFormatInfo, result);
1745
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06001746 return result;
1747}
1748
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001749void PreGetPhysicalDeviceLimits(
1750 VkPhysicalDevice physicalDevice)
1751{
1752 if(physicalDevice == nullptr)
1753 {
1754 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1755 "vkGetPhysicalDeviceLimits parameter, VkPhysicalDevice physicalDevice, is null pointer");
1756 return;
1757 }
1758}
1759
1760void PostGetPhysicalDeviceLimits(
1761 VkPhysicalDevice physicalDevice,
1762 VkPhysicalDeviceLimits* pLimits,
1763 VkResult result)
1764{
1765 if(physicalDevice == nullptr)
1766 {
1767 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1768 "vkGetPhysicalDeviceLimits parameter, VkPhysicalDevice physicalDevice, is null pointer");
1769 return;
1770 }
1771
1772 if(pLimits == nullptr)
1773 {
1774 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1775 "vkGetPhysicalDeviceLimits parameter, VkPhysicalDeviceLimits* pLimits, is null pointer");
1776 return;
1777 }
1778
1779 if(result != VK_SUCCESS)
1780 {
1781 std::string reason = "vkGetPhysicalDeviceLimits parameter, VkResult result, is " + EnumeratorString(result);
1782 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1783 return;
1784 }
1785}
1786
1787VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceLimits(
1788 VkPhysicalDevice physicalDevice,
1789 VkPhysicalDeviceLimits* pLimits)
1790{
1791 PreGetPhysicalDeviceLimits(physicalDevice);
1792 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceLimits(physicalDevice, pLimits);
1793
1794 PostGetPhysicalDeviceLimits(physicalDevice, pLimits, result);
1795
1796 return result;
1797}
1798
1799VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice(
1800 VkPhysicalDevice physicalDevice,
1801 const VkDeviceCreateInfo* pCreateInfo,
1802 VkDevice* pDevice)
1803{
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -06001804 VkLayerDispatchTable *pTable = get_dispatch_table(pc_device_table_map, *pDevice);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06001805 VkResult result = pTable->CreateDevice(physicalDevice, pCreateInfo, pDevice);
1806 if(result == VK_SUCCESS)
1807 {
1808 layer_data *instance_data = get_my_data_ptr(get_dispatch_key(physicalDevice), layer_data_map);
1809 layer_data *device_data = get_my_data_ptr(get_dispatch_key(*pDevice), layer_data_map);
1810 device_data->report_data = layer_debug_report_create_device(instance_data->report_data, *pDevice);
1811 }
1812
1813 return result;
1814}
1815
1816VK_LAYER_EXPORT VkResult VKAPI vkDestroyDevice(
1817 VkDevice device)
1818{
1819 layer_debug_report_destroy_device(device);
1820
1821 dispatch_key key = get_dispatch_key(device);
1822#if DISPATCH_MAP_DEBUG
1823 fprintf(stderr, "Device: %p, key: %p\n", device, key);
1824#endif
1825
1826 VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyDevice(device);
1827 pc_device_table_map.erase(key);
1828 assert(pc_device_table_map.size() == 0 && "Should not have any instance mappings hanging around");
1829
1830 return result;
1831}
1832
1833void PreGetPhysicalDeviceProperties(
1834 VkPhysicalDevice physicalDevice)
1835{
1836 if(physicalDevice == nullptr)
1837 {
1838 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1839 "vkGetPhysicalDeviceProperties parameter, VkPhysicalDevice physicalDevice, is null pointer");
1840 return;
1841 }
1842}
1843
1844void PostGetPhysicalDeviceProperties(
1845 VkPhysicalDevice physicalDevice,
1846 VkPhysicalDeviceProperties* pProperties,
1847 VkResult result)
1848{
1849 if(physicalDevice == nullptr)
1850 {
1851 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1852 "vkGetPhysicalDeviceProperties parameter, VkPhysicalDevice physicalDevice, is null pointer");
1853 return;
1854 }
1855
1856 if(pProperties == nullptr)
1857 {
1858 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1859 "vkGetPhysicalDeviceProperties parameter, VkPhysicalDeviceProperties* pProperties, is null pointer");
1860 return;
1861 }
1862 if(pProperties->deviceType < VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE ||
1863 pProperties->deviceType > VK_PHYSICAL_DEVICE_TYPE_END_RANGE)
1864 {
1865 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1866 "vkGetPhysicalDeviceProperties parameter, VkPhysicalDeviceType pProperties->deviceType, is unrecognized enumerator");
1867 return;
1868 }
1869
1870 if(result != VK_SUCCESS)
1871 {
1872 std::string reason = "vkGetPhysicalDeviceProperties parameter, VkResult result, is " + EnumeratorString(result);
1873 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1874 return;
1875 }
1876}
1877
1878VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceProperties(
1879 VkPhysicalDevice physicalDevice,
1880 VkPhysicalDeviceProperties* pProperties)
1881{
1882 PreGetPhysicalDeviceProperties(physicalDevice);
1883 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceProperties(physicalDevice, pProperties);
1884
1885 PostGetPhysicalDeviceProperties(physicalDevice, pProperties, result);
1886
1887 return result;
1888}
1889
1890void PreGetPhysicalDevicePerformance(
1891 VkPhysicalDevice physicalDevice)
1892{
1893 if(physicalDevice == nullptr)
1894 {
1895 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1896 "vkGetPhysicalDevicePerformance parameter, VkPhysicalDevice physicalDevice, is null pointer");
1897 return;
1898 }
1899}
1900
1901void PostGetPhysicalDevicePerformance(
1902 VkPhysicalDevice physicalDevice,
1903 VkPhysicalDevicePerformance* pPerformance,
1904 VkResult result)
1905{
1906 if(physicalDevice == nullptr)
1907 {
1908 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1909 "vkGetPhysicalDevicePerformance parameter, VkPhysicalDevice physicalDevice, is null pointer");
1910 return;
1911 }
1912
1913 if(pPerformance == nullptr)
1914 {
1915 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1916 "vkGetPhysicalDevicePerformance parameter, VkPhysicalDevicePerformance* pPerformance, is null pointer");
1917 return;
1918 }
1919
1920 if(result != VK_SUCCESS)
1921 {
1922 std::string reason = "vkGetPhysicalDevicePerformance parameter, VkResult result, is " + EnumeratorString(result);
1923 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1924 return;
1925 }
1926}
1927
1928VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDevicePerformance(
1929 VkPhysicalDevice physicalDevice,
1930 VkPhysicalDevicePerformance* pPerformance)
1931{
1932 PreGetPhysicalDevicePerformance(physicalDevice);
1933 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDevicePerformance(physicalDevice, pPerformance);
1934
1935 PostGetPhysicalDevicePerformance(physicalDevice, pPerformance, result);
1936
1937 return result;
1938}
1939
1940void PreGetPhysicalDeviceQueueCount(
1941 VkPhysicalDevice physicalDevice)
1942{
1943 if(physicalDevice == nullptr)
1944 {
1945 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1946 "vkGetPhysicalDeviceQueueCount parameter, VkPhysicalDevice physicalDevice, is null pointer");
1947 return;
1948 }
1949}
1950
1951void PostGetPhysicalDeviceQueueCount(
1952 VkPhysicalDevice physicalDevice,
1953 uint32_t* pCount,
1954 VkResult result)
1955{
1956 if(physicalDevice == nullptr)
1957 {
1958 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1959 "vkGetPhysicalDeviceQueueCount parameter, VkPhysicalDevice physicalDevice, is null pointer");
1960 return;
1961 }
1962
1963 if(pCount == nullptr)
1964 {
1965 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1966 "vkGetPhysicalDeviceQueueCount parameter, uint32_t* pCount, is null pointer");
1967 return;
1968 }
1969
1970 if(result != VK_SUCCESS)
1971 {
1972 std::string reason = "vkGetPhysicalDeviceQueueCount parameter, VkResult result, is " + EnumeratorString(result);
1973 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
1974 return;
1975 }
1976}
1977
1978VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueCount(
1979 VkPhysicalDevice physicalDevice,
1980 uint32_t* pCount)
1981{
1982 PreGetPhysicalDeviceQueueCount(physicalDevice);
1983 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceQueueCount(physicalDevice, pCount);
1984
1985 PostGetPhysicalDeviceQueueCount(physicalDevice, pCount, result);
1986
1987 return result;
1988}
1989
1990void PreGetPhysicalDeviceQueueProperties(
1991 VkPhysicalDevice physicalDevice)
1992{
1993 if(physicalDevice == nullptr)
1994 {
1995 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
1996 "vkGetPhysicalDeviceQueueProperties parameter, VkPhysicalDevice physicalDevice, is null pointer");
1997 return;
1998 }
1999}
2000
2001void PostGetPhysicalDeviceQueueProperties(
2002 VkPhysicalDevice physicalDevice,
2003 uint32_t count,
2004 VkPhysicalDeviceQueueProperties* pQueueProperties,
2005 VkResult result)
2006{
2007 if(physicalDevice == nullptr)
2008 {
2009 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2010 "vkGetPhysicalDeviceQueueProperties parameter, VkPhysicalDevice physicalDevice, is null pointer");
2011 return;
2012 }
2013
2014
2015 if(pQueueProperties == nullptr)
2016 {
2017 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2018 "vkGetPhysicalDeviceQueueProperties parameter, VkPhysicalDeviceQueueProperties* pQueueProperties, is null pointer");
2019 return;
2020 }
2021 if(!ValidateEnumerator((VkQueueFlagBits)pQueueProperties->queueFlags))
2022 {
2023 std::string reason = "vkGetPhysicalDeviceQueueProperties parameter, VkQueueFlags pQueueProperties->queueFlags, is " + EnumeratorString((VkQueueFlagBits)pQueueProperties->queueFlags);
2024 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2025 return;
2026 }
2027
2028 if(result != VK_SUCCESS)
2029 {
2030 std::string reason = "vkGetPhysicalDeviceQueueProperties parameter, VkResult result, is " + EnumeratorString(result);
2031 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2032 return;
2033 }
2034}
2035
2036VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceQueueProperties(
2037 VkPhysicalDevice physicalDevice,
2038 uint32_t count,
2039 VkPhysicalDeviceQueueProperties* pQueueProperties)
2040{
2041 PreGetPhysicalDeviceQueueProperties(physicalDevice);
2042 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceQueueProperties(physicalDevice, count, pQueueProperties);
2043
2044 PostGetPhysicalDeviceQueueProperties(physicalDevice, count, pQueueProperties, result);
2045
2046 return result;
2047}
2048
2049void PreGetPhysicalDeviceMemoryProperties(
2050 VkPhysicalDevice physicalDevice)
2051{
2052 if(physicalDevice == nullptr)
2053 {
2054 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2055 "vkGetPhysicalDeviceMemoryProperties parameter, VkPhysicalDevice physicalDevice, is null pointer");
2056 return;
2057 }
2058}
2059
2060void PostGetPhysicalDeviceMemoryProperties(
2061 VkPhysicalDevice physicalDevice,
2062 VkPhysicalDeviceMemoryProperties* pMemoryProperies,
2063 VkResult result)
2064{
2065 if(physicalDevice == nullptr)
2066 {
2067 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2068 "vkGetPhysicalDeviceMemoryProperties parameter, VkPhysicalDevice physicalDevice, is null pointer");
2069 return;
2070 }
2071
2072 if(pMemoryProperies == nullptr)
2073 {
2074 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2075 "vkGetPhysicalDeviceMemoryProperties parameter, VkPhysicalDeviceMemoryProperties* pMemoryProperies, is null pointer");
2076 return;
2077 }
2078
2079 if(result != VK_SUCCESS)
2080 {
2081 std::string reason = "vkGetPhysicalDeviceMemoryProperties parameter, VkResult result, is " + EnumeratorString(result);
2082 log_msg(mdd(physicalDevice), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2083 return;
2084 }
2085}
2086
2087VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceMemoryProperties(
2088 VkPhysicalDevice physicalDevice,
2089 VkPhysicalDeviceMemoryProperties* pMemoryProperies)
2090{
2091 PreGetPhysicalDeviceMemoryProperties(physicalDevice);
2092 VkResult result = get_dispatch_table(pc_instance_table_map, physicalDevice)->GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperies);
2093
2094 PostGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperies, result);
2095
2096 return result;
2097}
2098
2099void PreGetDeviceQueue(
2100 VkDevice device,
2101 VkQueue* pQueue)
2102{
2103 if(device == nullptr)
2104 {
2105 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2106 "vkGetDeviceQueue parameter, VkDevice device, is null pointer");
2107 return;
2108 }
2109
2110 if(pQueue == nullptr)
2111 {
2112 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2113 "vkGetDeviceQueue parameter, VkQueue* pQueue, is null pointer");
2114 return;
2115 }
2116 if((*pQueue) == nullptr)
2117 {
2118 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2119 "vkGetDeviceQueue parameter, VkQueue* pQueue, is null pointer");
2120 return;
2121 }
2122}
2123
2124void PostGetDeviceQueue(
2125 VkDevice device,
2126 uint32_t queueNodeIndex,
2127 uint32_t queueIndex,
2128 VkQueue* pQueue,
2129 VkResult result)
2130{
2131 if(device == nullptr)
2132 {
2133 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2134 "vkGetDeviceQueue parameter, VkDevice device, is null pointer");
2135 return;
2136 }
2137
2138
2139
2140 if(pQueue == nullptr)
2141 {
2142 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2143 "vkGetDeviceQueue parameter, VkQueue* pQueue, is null pointer");
2144 return;
2145 }
2146 if((*pQueue) == nullptr)
2147 {
2148 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2149 "vkGetDeviceQueue parameter, VkQueue* pQueue, is null pointer");
2150 return;
2151 }
2152
2153 if(result != VK_SUCCESS)
2154 {
2155 std::string reason = "vkGetDeviceQueue parameter, VkResult result, is " + EnumeratorString(result);
2156 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2157 return;
2158 }
2159}
2160
2161VK_LAYER_EXPORT VkResult VKAPI vkGetDeviceQueue(
2162 VkDevice device,
2163 uint32_t queueNodeIndex,
2164 uint32_t queueIndex,
2165 VkQueue* pQueue)
2166{
2167 PreGetDeviceQueue(device, pQueue);
2168 VkResult result = get_dispatch_table(pc_device_table_map, device)->GetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue);
2169
2170 PostGetDeviceQueue(device, queueNodeIndex, queueIndex, pQueue, result);
2171
2172 return result;
2173}
2174
2175void PreQueueSubmit(
2176 VkQueue queue,
2177 const VkCmdBuffer* pCmdBuffers)
2178{
2179 if(queue == nullptr)
2180 {
2181 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2182 "vkQueueSubmit parameter, VkQueue queue, is null pointer");
2183 return;
2184 }
2185
2186 if(pCmdBuffers == nullptr)
2187 {
2188 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2189 "vkQueueSubmit parameter, const VkCmdBuffer* pCmdBuffers, is null pointer");
2190 return;
2191 }
2192 if((*pCmdBuffers) == nullptr)
2193 {
2194 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2195 "vkQueueSubmit parameter, const VkCmdBuffer* pCmdBuffers, is null pointer");
2196 return;
2197 }
2198}
2199
2200void PostQueueSubmit(
2201 VkQueue queue,
2202 uint32_t cmdBufferCount,
2203 VkFence fence,
2204 VkResult result)
2205{
2206 if(queue == nullptr)
2207 {
2208 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2209 "vkQueueSubmit parameter, VkQueue queue, is null pointer");
2210 return;
2211 }
2212
2213
2214 if(fence == nullptr)
2215 {
2216 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2217 "vkQueueSubmit parameter, VkFence fence, is null pointer");
2218 return;
2219 }
2220
2221 if(result != VK_SUCCESS)
2222 {
2223 std::string reason = "vkQueueSubmit parameter, VkResult result, is " + EnumeratorString(result);
2224 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2225 return;
2226 }
2227}
2228
2229VK_LAYER_EXPORT VkResult VKAPI vkQueueSubmit(
2230 VkQueue queue,
2231 uint32_t cmdBufferCount,
2232 const VkCmdBuffer* pCmdBuffers,
2233 VkFence fence)
2234{
2235 PreQueueSubmit(queue, pCmdBuffers);
2236 VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
2237
2238 PostQueueSubmit(queue, cmdBufferCount, fence, result);
2239
2240 return result;
2241}
2242
2243void PreQueueWaitIdle(
2244 VkQueue queue)
2245{
2246 if(queue == nullptr)
2247 {
2248 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2249 "vkQueueWaitIdle parameter, VkQueue queue, is null pointer");
2250 return;
2251 }
2252}
2253
2254void PostQueueWaitIdle(
2255 VkQueue queue,
2256 VkResult result)
2257{
2258 if(queue == nullptr)
2259 {
2260 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2261 "vkQueueWaitIdle parameter, VkQueue queue, is null pointer");
2262 return;
2263 }
2264
2265 if(result != VK_SUCCESS)
2266 {
2267 std::string reason = "vkQueueWaitIdle parameter, VkResult result, is " + EnumeratorString(result);
2268 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2269 return;
2270 }
2271}
2272
2273VK_LAYER_EXPORT VkResult VKAPI vkQueueWaitIdle(
2274 VkQueue queue)
2275{
2276 PreQueueWaitIdle(queue);
2277 VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueWaitIdle(queue);
2278
2279 PostQueueWaitIdle(queue, result);
2280
2281 return result;
2282}
2283
2284void PreDeviceWaitIdle(
2285 VkDevice device)
2286{
2287 if(device == nullptr)
2288 {
2289 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2290 "vkDeviceWaitIdle parameter, VkDevice device, is null pointer");
2291 return;
2292 }
2293}
2294
2295void PostDeviceWaitIdle(
2296 VkDevice device,
2297 VkResult result)
2298{
2299 if(device == nullptr)
2300 {
2301 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2302 "vkDeviceWaitIdle parameter, VkDevice device, is null pointer");
2303 return;
2304 }
2305
2306 if(result != VK_SUCCESS)
2307 {
2308 std::string reason = "vkDeviceWaitIdle parameter, VkResult result, is " + EnumeratorString(result);
2309 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2310 return;
2311 }
2312}
2313
2314VK_LAYER_EXPORT VkResult VKAPI vkDeviceWaitIdle(
2315 VkDevice device)
2316{
2317 PreDeviceWaitIdle(device);
2318 VkResult result = get_dispatch_table(pc_device_table_map, device)->DeviceWaitIdle(device);
2319
2320 PostDeviceWaitIdle(device, result);
2321
2322 return result;
2323}
2324
2325void PreAllocMemory(
2326 VkDevice device,
2327 const VkMemoryAllocInfo* pAllocInfo)
2328{
2329 if(device == nullptr)
2330 {
2331 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2332 "vkAllocMemory parameter, VkDevice device, is null pointer");
2333 return;
2334 }
2335
2336 if(pAllocInfo == nullptr)
2337 {
2338 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2339 "vkAllocMemory parameter, const VkMemoryAllocInfo* pAllocInfo, is null pointer");
2340 return;
2341 }
2342 if(pAllocInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
2343 pAllocInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
2344 {
2345 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2346 "vkAllocMemory parameter, VkStructureType pAllocInfo->sType, is unrecognized enumerator");
2347 return;
2348 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002349}
2350
2351void PostAllocMemory(
2352 VkDevice device,
2353 VkDeviceMemory* pMem,
2354 VkResult result)
2355{
2356 if(device == nullptr)
2357 {
2358 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2359 "vkAllocMemory parameter, VkDevice device, is null pointer");
2360 return;
2361 }
2362
2363 if(pMem == nullptr)
2364 {
2365 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2366 "vkAllocMemory parameter, VkDeviceMemory* pMem, is null pointer");
2367 return;
2368 }
2369 if((*pMem) == nullptr)
2370 {
2371 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2372 "vkAllocMemory parameter, VkDeviceMemory* pMem, is null pointer");
2373 return;
2374 }
2375
2376 if(result != VK_SUCCESS)
2377 {
2378 std::string reason = "vkAllocMemory parameter, VkResult result, is " + EnumeratorString(result);
2379 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2380 return;
2381 }
2382}
2383
2384VK_LAYER_EXPORT VkResult VKAPI vkAllocMemory(
2385 VkDevice device,
2386 const VkMemoryAllocInfo* pAllocInfo,
2387 VkDeviceMemory* pMem)
2388{
2389 PreAllocMemory(device, pAllocInfo);
2390 VkResult result = get_dispatch_table(pc_device_table_map, device)->AllocMemory(device, pAllocInfo, pMem);
2391
2392 PostAllocMemory(device, pMem, result);
2393
2394 return result;
2395}
2396
2397void PreFreeMemory(
2398 VkDevice device)
2399{
2400 if(device == nullptr)
2401 {
2402 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2403 "vkFreeMemory parameter, VkDevice device, is null pointer");
2404 return;
2405 }
2406}
2407
2408void PostFreeMemory(
2409 VkDevice device,
2410 VkDeviceMemory mem,
2411 VkResult result)
2412{
2413 if(device == nullptr)
2414 {
2415 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2416 "vkFreeMemory parameter, VkDevice device, is null pointer");
2417 return;
2418 }
2419
2420 if(mem == nullptr)
2421 {
2422 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2423 "vkFreeMemory parameter, VkDeviceMemory mem, is null pointer");
2424 return;
2425 }
2426
2427 if(result != VK_SUCCESS)
2428 {
2429 std::string reason = "vkFreeMemory parameter, VkResult result, is " + EnumeratorString(result);
2430 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2431 return;
2432 }
2433}
2434
2435VK_LAYER_EXPORT VkResult VKAPI vkFreeMemory(
2436 VkDevice device,
2437 VkDeviceMemory mem)
2438{
2439 PreFreeMemory(device);
2440 VkResult result = get_dispatch_table(pc_device_table_map, device)->FreeMemory(device, mem);
2441
2442 PostFreeMemory(device, mem, result);
2443
2444 return result;
2445}
2446
2447void PreMapMemory(
2448 VkDevice device)
2449{
2450 if(device == nullptr)
2451 {
2452 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2453 "vkMapMemory parameter, VkDevice device, is null pointer");
2454 return;
2455 }
2456}
2457
2458void PostMapMemory(
2459 VkDevice device,
2460 VkDeviceMemory mem,
2461 VkDeviceSize offset,
2462 VkDeviceSize size,
2463 VkMemoryMapFlags flags,
2464 void** ppData,
2465 VkResult result)
2466{
2467 if(device == nullptr)
2468 {
2469 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2470 "vkMapMemory parameter, VkDevice device, is null pointer");
2471 return;
2472 }
2473
2474 if(mem == nullptr)
2475 {
2476 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2477 "vkMapMemory parameter, VkDeviceMemory mem, is null pointer");
2478 return;
2479 }
2480
2481
2482
2483
2484 if(ppData == nullptr)
2485 {
2486 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2487 "vkMapMemory parameter, void** ppData, is null pointer");
2488 return;
2489 }
2490
2491 if(result != VK_SUCCESS)
2492 {
2493 std::string reason = "vkMapMemory parameter, VkResult result, is " + EnumeratorString(result);
2494 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2495 return;
2496 }
2497}
2498
2499VK_LAYER_EXPORT VkResult VKAPI vkMapMemory(
2500 VkDevice device,
2501 VkDeviceMemory mem,
2502 VkDeviceSize offset,
2503 VkDeviceSize size,
2504 VkMemoryMapFlags flags,
2505 void** ppData)
2506{
2507 PreMapMemory(device);
2508 VkResult result = get_dispatch_table(pc_device_table_map, device)->MapMemory(device, mem, offset, size, flags, ppData);
2509
2510 PostMapMemory(device, mem, offset, size, flags, ppData, result);
2511
2512 return result;
2513}
2514
2515void PreUnmapMemory(
2516 VkDevice device)
2517{
2518 if(device == nullptr)
2519 {
2520 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2521 "vkUnmapMemory parameter, VkDevice device, is null pointer");
2522 return;
2523 }
2524}
2525
2526void PostUnmapMemory(
2527 VkDevice device,
2528 VkDeviceMemory mem,
2529 VkResult result)
2530{
2531 if(device == nullptr)
2532 {
2533 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2534 "vkUnmapMemory parameter, VkDevice device, is null pointer");
2535 return;
2536 }
2537
2538 if(mem == nullptr)
2539 {
2540 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2541 "vkUnmapMemory parameter, VkDeviceMemory mem, is null pointer");
2542 return;
2543 }
2544
2545 if(result != VK_SUCCESS)
2546 {
2547 std::string reason = "vkUnmapMemory parameter, VkResult result, is " + EnumeratorString(result);
2548 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2549 return;
2550 }
2551}
2552
2553VK_LAYER_EXPORT VkResult VKAPI vkUnmapMemory(
2554 VkDevice device,
2555 VkDeviceMemory mem)
2556{
2557 PreUnmapMemory(device);
2558 VkResult result = get_dispatch_table(pc_device_table_map, device)->UnmapMemory(device, mem);
2559
2560 PostUnmapMemory(device, mem, result);
2561
2562 return result;
2563}
2564
2565void PreFlushMappedMemoryRanges(
2566 VkDevice device,
2567 const VkMappedMemoryRange* pMemRanges)
2568{
2569 if(device == nullptr)
2570 {
2571 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2572 "vkFlushMappedMemoryRanges parameter, VkDevice device, is null pointer");
2573 return;
2574 }
2575
2576 if(pMemRanges == nullptr)
2577 {
2578 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2579 "vkFlushMappedMemoryRanges parameter, const VkMappedMemoryRange* pMemRanges, is null pointer");
2580 return;
2581 }
2582 if(pMemRanges->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
2583 pMemRanges->sType > VK_STRUCTURE_TYPE_END_RANGE)
2584 {
2585 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2586 "vkFlushMappedMemoryRanges parameter, VkStructureType pMemRanges->sType, is unrecognized enumerator");
2587 return;
2588 }
2589 if(pMemRanges->mem == nullptr)
2590 {
2591 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2592 "vkFlushMappedMemoryRanges parameter, VkDeviceMemory pMemRanges->mem, is null pointer");
2593 return;
2594 }
2595}
2596
2597void PostFlushMappedMemoryRanges(
2598 VkDevice device,
2599 uint32_t memRangeCount,
2600 VkResult result)
2601{
2602 if(device == nullptr)
2603 {
2604 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2605 "vkFlushMappedMemoryRanges parameter, VkDevice device, is null pointer");
2606 return;
2607 }
2608
2609
2610 if(result != VK_SUCCESS)
2611 {
2612 std::string reason = "vkFlushMappedMemoryRanges parameter, VkResult result, is " + EnumeratorString(result);
2613 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2614 return;
2615 }
2616}
2617
Courtney Goeltzenleuchtera569a502015-04-29 17:16:21 -06002618VK_LAYER_EXPORT VkResult VKAPI vkFlushMappedMemoryRanges(
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002619 VkDevice device,
2620 uint32_t memRangeCount,
2621 const VkMappedMemoryRange* pMemRanges)
Tony Barbour859ceab2015-04-16 19:23:13 -06002622{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002623 PreFlushMappedMemoryRanges(device, pMemRanges);
2624 VkResult result = get_dispatch_table(pc_device_table_map, device)->FlushMappedMemoryRanges(device, memRangeCount, pMemRanges);
Tony Barbour859ceab2015-04-16 19:23:13 -06002625
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002626 PostFlushMappedMemoryRanges(device, memRangeCount, result);
2627
Courtney Goeltzenleuchtera569a502015-04-29 17:16:21 -06002628 return result;
2629}
2630
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002631void PreInvalidateMappedMemoryRanges(
2632 VkDevice device,
2633 const VkMappedMemoryRange* pMemRanges)
2634{
2635 if(device == nullptr)
2636 {
2637 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2638 "vkInvalidateMappedMemoryRanges parameter, VkDevice device, is null pointer");
2639 return;
2640 }
2641
2642 if(pMemRanges == nullptr)
2643 {
2644 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2645 "vkInvalidateMappedMemoryRanges parameter, const VkMappedMemoryRange* pMemRanges, is null pointer");
2646 return;
2647 }
2648 if(pMemRanges->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
2649 pMemRanges->sType > VK_STRUCTURE_TYPE_END_RANGE)
2650 {
2651 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2652 "vkInvalidateMappedMemoryRanges parameter, VkStructureType pMemRanges->sType, is unrecognized enumerator");
2653 return;
2654 }
2655 if(pMemRanges->mem == nullptr)
2656 {
2657 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2658 "vkInvalidateMappedMemoryRanges parameter, VkDeviceMemory pMemRanges->mem, is null pointer");
2659 return;
2660 }
2661}
2662
2663void PostInvalidateMappedMemoryRanges(
2664 VkDevice device,
2665 uint32_t memRangeCount,
2666 VkResult result)
2667{
2668 if(device == nullptr)
2669 {
2670 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2671 "vkInvalidateMappedMemoryRanges parameter, VkDevice device, is null pointer");
2672 return;
2673 }
2674
2675
2676 if(result != VK_SUCCESS)
2677 {
2678 std::string reason = "vkInvalidateMappedMemoryRanges parameter, VkResult result, is " + EnumeratorString(result);
2679 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2680 return;
2681 }
2682}
2683
Courtney Goeltzenleuchtera569a502015-04-29 17:16:21 -06002684VK_LAYER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges(
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002685 VkDevice device,
2686 uint32_t memRangeCount,
2687 const VkMappedMemoryRange* pMemRanges)
Courtney Goeltzenleuchtera569a502015-04-29 17:16:21 -06002688{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002689 PreInvalidateMappedMemoryRanges(device, pMemRanges);
2690 VkResult result = get_dispatch_table(pc_device_table_map, device)->InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
Courtney Goeltzenleuchtera569a502015-04-29 17:16:21 -06002691
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002692 PostInvalidateMappedMemoryRanges(device, memRangeCount, result);
2693
Tony Barbour859ceab2015-04-16 19:23:13 -06002694 return result;
2695}
2696
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002697void PreDestroyObject(
2698 VkDevice device)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002699{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002700 if(device == nullptr)
2701 {
2702 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2703 "vkDestroyObject parameter, VkDevice device, is null pointer");
2704 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002705 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002706}
2707
2708void PostDestroyObject(
2709 VkDevice device,
2710 VkObjectType objType,
2711 VkObject object,
2712 VkResult result)
2713{
2714 if(device == nullptr)
2715 {
2716 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2717 "vkDestroyObject parameter, VkDevice device, is null pointer");
2718 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002719 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002720
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002721 if(objType < VK_OBJECT_TYPE_BEGIN_RANGE ||
2722 objType > VK_OBJECT_TYPE_END_RANGE)
2723 {
2724 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2725 "vkDestroyObject parameter, VkObjectType objType, is unrecognized enumerator");
2726 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002727 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002728
2729 if(object == nullptr)
2730 {
2731 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2732 "vkDestroyObject parameter, VkObject object, is null pointer");
2733 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002734 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002735
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002736 if(result != VK_SUCCESS)
2737 {
2738 std::string reason = "vkDestroyObject parameter, VkResult result, is " + EnumeratorString(result);
2739 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2740 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002741 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002742}
2743
2744VK_LAYER_EXPORT VkResult VKAPI vkDestroyObject(
2745 VkDevice device,
2746 VkObjectType objType,
2747 VkObject object)
2748{
2749 PreDestroyObject(device);
2750 VkResult result = get_dispatch_table(pc_device_table_map, device)->DestroyObject(device, objType, object);
2751
2752 PostDestroyObject(device, objType, object, result);
2753
2754 return result;
2755}
2756
2757void PreBindObjectMemory(
2758 VkDevice device)
2759{
2760 if(device == nullptr)
2761 {
2762 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2763 "vkBindObjectMemory parameter, VkDevice device, is null pointer");
2764 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002765 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002766}
2767
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002768void PostBindObjectMemory(
2769 VkDevice device,
2770 VkObjectType objType,
2771 VkObject object,
2772 VkDeviceMemory mem,
2773 VkDeviceSize memOffset,
2774 VkResult result)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002775{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002776 if(device == nullptr)
2777 {
2778 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2779 "vkBindObjectMemory parameter, VkDevice device, is null pointer");
2780 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002781 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002782
2783 if(objType < VK_OBJECT_TYPE_BEGIN_RANGE ||
2784 objType > VK_OBJECT_TYPE_END_RANGE)
2785 {
2786 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2787 "vkBindObjectMemory parameter, VkObjectType objType, is unrecognized enumerator");
2788 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002789 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002790
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002791 if(object == nullptr)
2792 {
2793 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2794 "vkBindObjectMemory parameter, VkObject object, is null pointer");
2795 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002796 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002797
2798 if(mem == nullptr)
2799 {
2800 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2801 "vkBindObjectMemory parameter, VkDeviceMemory mem, is null pointer");
2802 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002803 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002804
2805
2806 if(result != VK_SUCCESS)
2807 {
2808 std::string reason = "vkBindObjectMemory parameter, VkResult result, is " + EnumeratorString(result);
2809 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2810 return;
2811 }
2812}
2813
2814VK_LAYER_EXPORT VkResult VKAPI vkBindObjectMemory(
2815 VkDevice device,
2816 VkObjectType objType,
2817 VkObject object,
2818 VkDeviceMemory mem,
2819 VkDeviceSize memOffset)
2820{
2821 PreBindObjectMemory(device);
2822 VkResult result = get_dispatch_table(pc_device_table_map, device)->BindObjectMemory(device, objType, object, mem, memOffset);
2823
2824 PostBindObjectMemory(device, objType, object, mem, memOffset, result);
2825
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002826 return result;
2827}
2828
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002829void PreGetObjectMemoryRequirements(
2830 VkDevice device)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002831{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002832 if(device == nullptr)
2833 {
2834 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2835 "vkGetObjectMemoryRequirements parameter, VkDevice device, is null pointer");
2836 return;
2837 }
2838}
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002839
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002840void PostGetObjectMemoryRequirements(
2841 VkDevice device,
2842 VkObjectType objType,
2843 VkObject object,
2844 VkMemoryRequirements* pMemoryRequirements,
2845 VkResult result)
2846{
2847 if(device == nullptr)
2848 {
2849 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2850 "vkGetObjectMemoryRequirements parameter, VkDevice device, is null pointer");
2851 return;
2852 }
2853
2854 if(objType < VK_OBJECT_TYPE_BEGIN_RANGE ||
2855 objType > VK_OBJECT_TYPE_END_RANGE)
2856 {
2857 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2858 "vkGetObjectMemoryRequirements parameter, VkObjectType objType, is unrecognized enumerator");
2859 return;
2860 }
2861
2862 if(object == nullptr)
2863 {
2864 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2865 "vkGetObjectMemoryRequirements parameter, VkObject object, is null pointer");
2866 return;
2867 }
2868
2869 if(pMemoryRequirements == nullptr)
2870 {
2871 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2872 "vkGetObjectMemoryRequirements parameter, VkMemoryRequirements* pMemoryRequirements, is null pointer");
2873 return;
2874 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002875
2876 if(result != VK_SUCCESS)
2877 {
2878 std::string reason = "vkGetObjectMemoryRequirements parameter, VkResult result, is " + EnumeratorString(result);
2879 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2880 return;
2881 }
2882}
2883
2884VK_LAYER_EXPORT VkResult VKAPI vkGetObjectMemoryRequirements(
2885 VkDevice device,
2886 VkObjectType objType,
2887 VkObject object,
2888 VkMemoryRequirements* pMemoryRequirements)
2889{
2890 PreGetObjectMemoryRequirements(device);
2891 VkResult result = get_dispatch_table(pc_device_table_map, device)->GetObjectMemoryRequirements(device, objType, object, pMemoryRequirements);
2892
2893 PostGetObjectMemoryRequirements(device, objType, object, pMemoryRequirements, result);
2894
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002895 return result;
2896}
2897
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002898void PreQueueBindSparseBufferMemory(
2899 VkQueue queue)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002900{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002901 if(queue == nullptr)
2902 {
2903 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2904 "vkQueueBindSparseBufferMemory parameter, VkQueue queue, is null pointer");
2905 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002906 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002907}
2908
2909void PostQueueBindSparseBufferMemory(
2910 VkQueue queue,
2911 VkBuffer buffer,
2912 VkDeviceSize rangeOffset,
2913 VkDeviceSize rangeSize,
2914 VkDeviceMemory mem,
2915 VkDeviceSize memOffset,
2916 VkResult result)
2917{
2918 if(queue == nullptr)
2919 {
2920 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2921 "vkQueueBindSparseBufferMemory parameter, VkQueue queue, is null pointer");
2922 return;
2923 }
2924
2925 if(buffer == nullptr)
2926 {
2927 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2928 "vkQueueBindSparseBufferMemory parameter, VkBuffer buffer, is null pointer");
2929 return;
2930 }
2931
2932
2933
2934 if(mem == nullptr)
2935 {
2936 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2937 "vkQueueBindSparseBufferMemory parameter, VkDeviceMemory mem, is null pointer");
2938 return;
2939 }
2940
2941
2942 if(result != VK_SUCCESS)
2943 {
2944 std::string reason = "vkQueueBindSparseBufferMemory parameter, VkResult result, is " + EnumeratorString(result);
2945 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
2946 return;
2947 }
2948}
2949
2950VK_LAYER_EXPORT VkResult VKAPI vkQueueBindSparseBufferMemory(
2951 VkQueue queue,
2952 VkBuffer buffer,
2953 VkDeviceSize rangeOffset,
2954 VkDeviceSize rangeSize,
2955 VkDeviceMemory mem,
2956 VkDeviceSize memOffset)
2957{
2958 PreQueueBindSparseBufferMemory(queue);
2959 VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueBindSparseBufferMemory(queue, buffer, rangeOffset, rangeSize, mem, memOffset);
2960
2961 PostQueueBindSparseBufferMemory(queue, buffer, rangeOffset, rangeSize, mem, memOffset, result);
2962
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002963 return result;
2964}
2965
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002966void PreQueueBindSparseImageMemory(
2967 VkQueue queue,
2968 const VkImageMemoryBindInfo* pBindInfo)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002969{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002970 if(queue == nullptr)
2971 {
2972 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2973 "vkQueueBindSparseImageMemory parameter, VkQueue queue, is null pointer");
2974 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002975 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002976
2977 if(pBindInfo == nullptr)
2978 {
2979 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2980 "vkQueueBindSparseImageMemory parameter, const VkImageMemoryBindInfo* pBindInfo, is null pointer");
2981 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06002982 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06002983 if(pBindInfo->subresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
2984 pBindInfo->subresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
2985 {
2986 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
2987 "vkQueueBindSparseImageMemory parameter, VkImageAspect pBindInfo->subresource.aspect, is unrecognized enumerator");
2988 return;
2989 }
2990}
2991
2992void PostQueueBindSparseImageMemory(
2993 VkQueue queue,
2994 VkImage image,
2995 VkDeviceMemory mem,
2996 VkDeviceSize memOffset,
2997 VkResult result)
2998{
2999 if(queue == nullptr)
3000 {
3001 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3002 "vkQueueBindSparseImageMemory parameter, VkQueue queue, is null pointer");
3003 return;
3004 }
3005
3006 if(image == nullptr)
3007 {
3008 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3009 "vkQueueBindSparseImageMemory parameter, VkImage image, is null pointer");
3010 return;
3011 }
3012
3013 if(mem == nullptr)
3014 {
3015 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3016 "vkQueueBindSparseImageMemory parameter, VkDeviceMemory mem, is null pointer");
3017 return;
3018 }
3019
3020
3021 if(result != VK_SUCCESS)
3022 {
3023 std::string reason = "vkQueueBindSparseImageMemory parameter, VkResult result, is " + EnumeratorString(result);
3024 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3025 return;
3026 }
3027}
3028
3029VK_LAYER_EXPORT VkResult VKAPI vkQueueBindSparseImageMemory(
3030 VkQueue queue,
3031 VkImage image,
3032 const VkImageMemoryBindInfo* pBindInfo,
3033 VkDeviceMemory mem,
3034 VkDeviceSize memOffset)
3035{
3036 PreQueueBindSparseImageMemory(queue, pBindInfo);
3037 VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueBindSparseImageMemory(queue, image, pBindInfo, mem, memOffset);
3038
3039 PostQueueBindSparseImageMemory(queue, image, mem, memOffset, result);
3040
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003041 return result;
3042}
3043
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003044void PreCreateFence(
3045 VkDevice device,
3046 const VkFenceCreateInfo* pCreateInfo)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003047{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003048 if(device == nullptr)
3049 {
3050 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3051 "vkCreateFence parameter, VkDevice device, is null pointer");
3052 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003053 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003054
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003055 if(pCreateInfo == nullptr)
3056 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003057 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3058 "vkCreateFence parameter, const VkFenceCreateInfo* pCreateInfo, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003059 return;
3060 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003061 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
3062 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003063 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003064 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3065 "vkCreateFence parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003066 return;
3067 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003068 if(!ValidateEnumerator((VkFenceCreateFlagBits)pCreateInfo->flags))
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003069 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003070 std::string reason = "vkCreateFence parameter, VkFenceCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkFenceCreateFlagBits)pCreateInfo->flags);
3071 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003072 return;
3073 }
3074}
3075
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003076void PostCreateFence(
3077 VkDevice device,
3078 VkFence* pFence,
3079 VkResult result)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003080{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003081 if(device == nullptr)
3082 {
3083 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3084 "vkCreateFence parameter, VkDevice device, is null pointer");
3085 return;
3086 }
3087
3088 if(pFence == nullptr)
3089 {
3090 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3091 "vkCreateFence parameter, VkFence* pFence, is null pointer");
3092 return;
3093 }
3094 if((*pFence) == nullptr)
3095 {
3096 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3097 "vkCreateFence parameter, VkFence* pFence, is null pointer");
3098 return;
3099 }
3100
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -06003101 if(result != VK_SUCCESS)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06003102 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06003103 std::string reason = "vkCreateFence parameter, VkResult result, is " + EnumeratorString(result);
3104 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3105 return;
3106 }
3107}
3108
3109VK_LAYER_EXPORT VkResult VKAPI vkCreateFence(
3110 VkDevice device,
3111 const VkFenceCreateInfo* pCreateInfo,
3112 VkFence* pFence)
3113{
3114 PreCreateFence(device, pCreateInfo);
3115 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateFence(device, pCreateInfo, pFence);
3116
3117 PostCreateFence(device, pFence, result);
3118
3119 return result;
3120}
3121
3122void PreResetFences(
3123 VkDevice device,
3124 const VkFence* pFences)
3125{
3126 if(device == nullptr)
3127 {
3128 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3129 "vkResetFences parameter, VkDevice device, is null pointer");
3130 return;
3131 }
3132
3133 if(pFences == nullptr)
3134 {
3135 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3136 "vkResetFences parameter, const VkFence* pFences, is null pointer");
3137 return;
3138 }
3139 if((*pFences) == nullptr)
3140 {
3141 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3142 "vkResetFences parameter, const VkFence* pFences, is null pointer");
3143 return;
3144 }
3145}
3146
3147void PostResetFences(
3148 VkDevice device,
3149 uint32_t fenceCount,
3150 VkResult result)
3151{
3152 if(device == nullptr)
3153 {
3154 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3155 "vkResetFences parameter, VkDevice device, is null pointer");
3156 return;
3157 }
3158
3159
3160 if(result != VK_SUCCESS)
3161 {
3162 std::string reason = "vkResetFences parameter, VkResult result, is " + EnumeratorString(result);
3163 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3164 return;
3165 }
3166}
3167
3168VK_LAYER_EXPORT VkResult VKAPI vkResetFences(
3169 VkDevice device,
3170 uint32_t fenceCount,
3171 const VkFence* pFences)
3172{
3173 PreResetFences(device, pFences);
3174 VkResult result = get_dispatch_table(pc_device_table_map, device)->ResetFences(device, fenceCount, pFences);
3175
3176 PostResetFences(device, fenceCount, result);
3177
3178 return result;
3179}
3180
3181void PreGetFenceStatus(
3182 VkDevice device)
3183{
3184 if(device == nullptr)
3185 {
3186 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3187 "vkGetFenceStatus parameter, VkDevice device, is null pointer");
3188 return;
3189 }
3190}
3191
3192void PostGetFenceStatus(
3193 VkDevice device,
3194 VkFence fence,
3195 VkResult result)
3196{
3197 if(device == nullptr)
3198 {
3199 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3200 "vkGetFenceStatus parameter, VkDevice device, is null pointer");
3201 return;
3202 }
3203
3204 if(fence == nullptr)
3205 {
3206 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3207 "vkGetFenceStatus parameter, VkFence fence, is null pointer");
3208 return;
3209 }
3210
3211 if(result != VK_SUCCESS)
3212 {
3213 std::string reason = "vkGetFenceStatus parameter, VkResult result, is " + EnumeratorString(result);
3214 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3215 return;
3216 }
3217}
3218
3219VK_LAYER_EXPORT VkResult VKAPI vkGetFenceStatus(
3220 VkDevice device,
3221 VkFence fence)
3222{
3223 PreGetFenceStatus(device);
3224 VkResult result = get_dispatch_table(pc_device_table_map, device)->GetFenceStatus(device, fence);
3225
3226 PostGetFenceStatus(device, fence, result);
3227
3228 return result;
3229}
3230
3231void PreWaitForFences(
3232 VkDevice device,
3233 const VkFence* pFences)
3234{
3235 if(device == nullptr)
3236 {
3237 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3238 "vkWaitForFences parameter, VkDevice device, is null pointer");
3239 return;
3240 }
3241
3242 if(pFences == nullptr)
3243 {
3244 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3245 "vkWaitForFences parameter, const VkFence* pFences, is null pointer");
3246 return;
3247 }
3248 if((*pFences) == nullptr)
3249 {
3250 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3251 "vkWaitForFences parameter, const VkFence* pFences, is null pointer");
3252 return;
3253 }
3254}
3255
3256void PostWaitForFences(
3257 VkDevice device,
3258 uint32_t fenceCount,
3259 bool32_t waitAll,
3260 uint64_t timeout,
3261 VkResult result)
3262{
3263 if(device == nullptr)
3264 {
3265 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3266 "vkWaitForFences parameter, VkDevice device, is null pointer");
3267 return;
3268 }
3269
3270
3271
3272
3273 if(result != VK_SUCCESS)
3274 {
3275 std::string reason = "vkWaitForFences parameter, VkResult result, is " + EnumeratorString(result);
3276 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3277 return;
3278 }
3279}
3280
3281VK_LAYER_EXPORT VkResult VKAPI vkWaitForFences(
3282 VkDevice device,
3283 uint32_t fenceCount,
3284 const VkFence* pFences,
3285 bool32_t waitAll,
3286 uint64_t timeout)
3287{
3288 PreWaitForFences(device, pFences);
3289 VkResult result = get_dispatch_table(pc_device_table_map, device)->WaitForFences(device, fenceCount, pFences, waitAll, timeout);
3290
3291 PostWaitForFences(device, fenceCount, waitAll, timeout, result);
3292
3293 return result;
3294}
3295
3296void PreCreateSemaphore(
3297 VkDevice device,
3298 const VkSemaphoreCreateInfo* pCreateInfo)
3299{
3300 if(device == nullptr)
3301 {
3302 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3303 "vkCreateSemaphore parameter, VkDevice device, is null pointer");
3304 return;
3305 }
3306
3307 if(pCreateInfo == nullptr)
3308 {
3309 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3310 "vkCreateSemaphore parameter, const VkSemaphoreCreateInfo* pCreateInfo, is null pointer");
3311 return;
3312 }
3313 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
3314 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
3315 {
3316 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3317 "vkCreateSemaphore parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
3318 return;
3319 }
3320}
3321
3322void PostCreateSemaphore(
3323 VkDevice device,
3324 VkSemaphore* pSemaphore,
3325 VkResult result)
3326{
3327 if(device == nullptr)
3328 {
3329 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3330 "vkCreateSemaphore parameter, VkDevice device, is null pointer");
3331 return;
3332 }
3333
3334 if(pSemaphore == nullptr)
3335 {
3336 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3337 "vkCreateSemaphore parameter, VkSemaphore* pSemaphore, is null pointer");
3338 return;
3339 }
3340 if((*pSemaphore) == nullptr)
3341 {
3342 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3343 "vkCreateSemaphore parameter, VkSemaphore* pSemaphore, is null pointer");
3344 return;
3345 }
3346
3347 if(result != VK_SUCCESS)
3348 {
3349 std::string reason = "vkCreateSemaphore parameter, VkResult result, is " + EnumeratorString(result);
3350 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3351 return;
3352 }
3353}
3354
3355VK_LAYER_EXPORT VkResult VKAPI vkCreateSemaphore(
3356 VkDevice device,
3357 const VkSemaphoreCreateInfo* pCreateInfo,
3358 VkSemaphore* pSemaphore)
3359{
3360 PreCreateSemaphore(device, pCreateInfo);
3361 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateSemaphore(device, pCreateInfo, pSemaphore);
3362
3363 PostCreateSemaphore(device, pSemaphore, result);
3364
3365 return result;
3366}
3367
3368void PreQueueSignalSemaphore(
3369 VkQueue queue)
3370{
3371 if(queue == nullptr)
3372 {
3373 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3374 "vkQueueSignalSemaphore parameter, VkQueue queue, is null pointer");
3375 return;
3376 }
3377}
3378
3379void PostQueueSignalSemaphore(
3380 VkQueue queue,
3381 VkSemaphore semaphore,
3382 VkResult result)
3383{
3384 if(queue == nullptr)
3385 {
3386 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3387 "vkQueueSignalSemaphore parameter, VkQueue queue, is null pointer");
3388 return;
3389 }
3390
3391 if(semaphore == nullptr)
3392 {
3393 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3394 "vkQueueSignalSemaphore parameter, VkSemaphore semaphore, is null pointer");
3395 return;
3396 }
3397
3398 if(result != VK_SUCCESS)
3399 {
3400 std::string reason = "vkQueueSignalSemaphore parameter, VkResult result, is " + EnumeratorString(result);
3401 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3402 return;
3403 }
3404}
3405
3406VK_LAYER_EXPORT VkResult VKAPI vkQueueSignalSemaphore(
3407 VkQueue queue,
3408 VkSemaphore semaphore)
3409{
3410 PreQueueSignalSemaphore(queue);
3411 VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueSignalSemaphore(queue, semaphore);
3412
3413 PostQueueSignalSemaphore(queue, semaphore, result);
3414
3415 return result;
3416}
3417
3418void PreQueueWaitSemaphore(
3419 VkQueue queue)
3420{
3421 if(queue == nullptr)
3422 {
3423 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3424 "vkQueueWaitSemaphore parameter, VkQueue queue, is null pointer");
3425 return;
3426 }
3427}
3428
3429void PostQueueWaitSemaphore(
3430 VkQueue queue,
3431 VkSemaphore semaphore,
3432 VkResult result)
3433{
3434 if(queue == nullptr)
3435 {
3436 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3437 "vkQueueWaitSemaphore parameter, VkQueue queue, is null pointer");
3438 return;
3439 }
3440
3441 if(semaphore == nullptr)
3442 {
3443 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3444 "vkQueueWaitSemaphore parameter, VkSemaphore semaphore, is null pointer");
3445 return;
3446 }
3447
3448 if(result != VK_SUCCESS)
3449 {
3450 std::string reason = "vkQueueWaitSemaphore parameter, VkResult result, is " + EnumeratorString(result);
3451 log_msg(mdd(queue), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3452 return;
3453 }
3454}
3455
3456VK_LAYER_EXPORT VkResult VKAPI vkQueueWaitSemaphore(
3457 VkQueue queue,
3458 VkSemaphore semaphore)
3459{
3460 PreQueueWaitSemaphore(queue);
3461 VkResult result = get_dispatch_table(pc_device_table_map, queue)->QueueWaitSemaphore(queue, semaphore);
3462
3463 PostQueueWaitSemaphore(queue, semaphore, result);
3464
3465 return result;
3466}
3467
3468void PreCreateEvent(
3469 VkDevice device,
3470 const VkEventCreateInfo* pCreateInfo)
3471{
3472 if(device == nullptr)
3473 {
3474 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3475 "vkCreateEvent parameter, VkDevice device, is null pointer");
3476 return;
3477 }
3478
3479 if(pCreateInfo == nullptr)
3480 {
3481 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3482 "vkCreateEvent parameter, const VkEventCreateInfo* pCreateInfo, is null pointer");
3483 return;
3484 }
3485 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
3486 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
3487 {
3488 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3489 "vkCreateEvent parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
3490 return;
3491 }
3492}
3493
3494void PostCreateEvent(
3495 VkDevice device,
3496 VkEvent* pEvent,
3497 VkResult result)
3498{
3499 if(device == nullptr)
3500 {
3501 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3502 "vkCreateEvent parameter, VkDevice device, is null pointer");
3503 return;
3504 }
3505
3506 if(pEvent == nullptr)
3507 {
3508 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3509 "vkCreateEvent parameter, VkEvent* pEvent, is null pointer");
3510 return;
3511 }
3512 if((*pEvent) == nullptr)
3513 {
3514 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3515 "vkCreateEvent parameter, VkEvent* pEvent, is null pointer");
3516 return;
3517 }
3518
3519 if(result != VK_SUCCESS)
3520 {
3521 std::string reason = "vkCreateEvent parameter, VkResult result, is " + EnumeratorString(result);
3522 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3523 return;
3524 }
3525}
3526
3527VK_LAYER_EXPORT VkResult VKAPI vkCreateEvent(
3528 VkDevice device,
3529 const VkEventCreateInfo* pCreateInfo,
3530 VkEvent* pEvent)
3531{
3532 PreCreateEvent(device, pCreateInfo);
3533 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateEvent(device, pCreateInfo, pEvent);
3534
3535 PostCreateEvent(device, pEvent, result);
3536
3537 return result;
3538}
3539
3540void PreGetEventStatus(
3541 VkDevice device)
3542{
3543 if(device == nullptr)
3544 {
3545 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3546 "vkGetEventStatus parameter, VkDevice device, is null pointer");
3547 return;
3548 }
3549}
3550
3551void PostGetEventStatus(
3552 VkDevice device,
3553 VkEvent event,
3554 VkResult result)
3555{
3556 if(device == nullptr)
3557 {
3558 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3559 "vkGetEventStatus parameter, VkDevice device, is null pointer");
3560 return;
3561 }
3562
3563 if(event == nullptr)
3564 {
3565 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3566 "vkGetEventStatus parameter, VkEvent event, is null pointer");
3567 return;
3568 }
3569
3570 if(result != VK_SUCCESS)
3571 {
3572 std::string reason = "vkGetEventStatus parameter, VkResult result, is " + EnumeratorString(result);
3573 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3574 return;
3575 }
3576}
3577
3578VK_LAYER_EXPORT VkResult VKAPI vkGetEventStatus(
3579 VkDevice device,
3580 VkEvent event)
3581{
3582 PreGetEventStatus(device);
3583 VkResult result = get_dispatch_table(pc_device_table_map, device)->GetEventStatus(device, event);
3584
3585 PostGetEventStatus(device, event, result);
3586
3587 return result;
3588}
3589
3590void PreSetEvent(
3591 VkDevice device)
3592{
3593 if(device == nullptr)
3594 {
3595 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3596 "vkSetEvent parameter, VkDevice device, is null pointer");
3597 return;
3598 }
3599}
3600
3601void PostSetEvent(
3602 VkDevice device,
3603 VkEvent event,
3604 VkResult result)
3605{
3606 if(device == nullptr)
3607 {
3608 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3609 "vkSetEvent parameter, VkDevice device, is null pointer");
3610 return;
3611 }
3612
3613 if(event == nullptr)
3614 {
3615 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3616 "vkSetEvent parameter, VkEvent event, is null pointer");
3617 return;
3618 }
3619
3620 if(result != VK_SUCCESS)
3621 {
3622 std::string reason = "vkSetEvent parameter, VkResult result, is " + EnumeratorString(result);
3623 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3624 return;
3625 }
3626}
3627
3628VK_LAYER_EXPORT VkResult VKAPI vkSetEvent(
3629 VkDevice device,
3630 VkEvent event)
3631{
3632 PreSetEvent(device);
3633 VkResult result = get_dispatch_table(pc_device_table_map, device)->SetEvent(device, event);
3634
3635 PostSetEvent(device, event, result);
3636
3637 return result;
3638}
3639
3640void PreResetEvent(
3641 VkDevice device)
3642{
3643 if(device == nullptr)
3644 {
3645 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3646 "vkResetEvent parameter, VkDevice device, is null pointer");
3647 return;
3648 }
3649}
3650
3651void PostResetEvent(
3652 VkDevice device,
3653 VkEvent event,
3654 VkResult result)
3655{
3656 if(device == nullptr)
3657 {
3658 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3659 "vkResetEvent parameter, VkDevice device, is null pointer");
3660 return;
3661 }
3662
3663 if(event == nullptr)
3664 {
3665 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3666 "vkResetEvent parameter, VkEvent event, is null pointer");
3667 return;
3668 }
3669
3670 if(result != VK_SUCCESS)
3671 {
3672 std::string reason = "vkResetEvent parameter, VkResult result, is " + EnumeratorString(result);
3673 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3674 return;
3675 }
3676}
3677
3678VK_LAYER_EXPORT VkResult VKAPI vkResetEvent(
3679 VkDevice device,
3680 VkEvent event)
3681{
3682 PreResetEvent(device);
3683 VkResult result = get_dispatch_table(pc_device_table_map, device)->ResetEvent(device, event);
3684
3685 PostResetEvent(device, event, result);
3686
3687 return result;
3688}
3689
3690void PreCreateQueryPool(
3691 VkDevice device,
3692 const VkQueryPoolCreateInfo* pCreateInfo)
3693{
3694 if(device == nullptr)
3695 {
3696 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3697 "vkCreateQueryPool parameter, VkDevice device, is null pointer");
3698 return;
3699 }
3700
3701 if(pCreateInfo == nullptr)
3702 {
3703 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3704 "vkCreateQueryPool parameter, const VkQueryPoolCreateInfo* pCreateInfo, is null pointer");
3705 return;
3706 }
3707 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
3708 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
3709 {
3710 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3711 "vkCreateQueryPool parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
3712 return;
3713 }
3714 if(pCreateInfo->queryType < VK_QUERY_TYPE_BEGIN_RANGE ||
3715 pCreateInfo->queryType > VK_QUERY_TYPE_END_RANGE)
3716 {
3717 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3718 "vkCreateQueryPool parameter, VkQueryType pCreateInfo->queryType, is unrecognized enumerator");
3719 return;
3720 }
3721 if(!ValidateEnumerator((VkQueryPipelineStatisticFlagBits)pCreateInfo->pipelineStatistics))
3722 {
3723 std::string reason = "vkCreateQueryPool parameter, VkQueryPipelineStatisticFlags pCreateInfo->pipelineStatistics, is " + EnumeratorString((VkQueryPipelineStatisticFlagBits)pCreateInfo->pipelineStatistics);
3724 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3725 return;
3726 }
3727}
3728
3729void PostCreateQueryPool(
3730 VkDevice device,
3731 VkQueryPool* pQueryPool,
3732 VkResult result)
3733{
3734 if(device == nullptr)
3735 {
3736 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3737 "vkCreateQueryPool parameter, VkDevice device, is null pointer");
3738 return;
3739 }
3740
3741 if(pQueryPool == nullptr)
3742 {
3743 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3744 "vkCreateQueryPool parameter, VkQueryPool* pQueryPool, is null pointer");
3745 return;
3746 }
3747 if((*pQueryPool) == nullptr)
3748 {
3749 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3750 "vkCreateQueryPool parameter, VkQueryPool* pQueryPool, is null pointer");
3751 return;
3752 }
3753
3754 if(result != VK_SUCCESS)
3755 {
3756 std::string reason = "vkCreateQueryPool parameter, VkResult result, is " + EnumeratorString(result);
3757 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3758 return;
3759 }
3760}
3761
3762VK_LAYER_EXPORT VkResult VKAPI vkCreateQueryPool(
3763 VkDevice device,
3764 const VkQueryPoolCreateInfo* pCreateInfo,
3765 VkQueryPool* pQueryPool)
3766{
3767 PreCreateQueryPool(device, pCreateInfo);
3768 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateQueryPool(device, pCreateInfo, pQueryPool);
3769
3770 PostCreateQueryPool(device, pQueryPool, result);
3771
3772 return result;
3773}
3774
3775void PreGetQueryPoolResults(
3776 VkDevice device)
3777{
3778 if(device == nullptr)
3779 {
3780 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3781 "vkGetQueryPoolResults parameter, VkDevice device, is null pointer");
3782 return;
3783 }
3784}
3785
3786void PostGetQueryPoolResults(
3787 VkDevice device,
3788 VkQueryPool queryPool,
3789 uint32_t startQuery,
3790 uint32_t queryCount,
3791 size_t* pDataSize,
3792 void* pData,
3793 VkQueryResultFlags flags,
3794 VkResult result)
3795{
3796 if(device == nullptr)
3797 {
3798 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3799 "vkGetQueryPoolResults parameter, VkDevice device, is null pointer");
3800 return;
3801 }
3802
3803 if(queryPool == nullptr)
3804 {
3805 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3806 "vkGetQueryPoolResults parameter, VkQueryPool queryPool, is null pointer");
3807 return;
3808 }
3809
3810
3811
3812 if(pDataSize == nullptr)
3813 {
3814 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3815 "vkGetQueryPoolResults parameter, size_t* pDataSize, is null pointer");
3816 return;
3817 }
3818
3819 if(pData == nullptr)
3820 {
3821 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3822 "vkGetQueryPoolResults parameter, void* pData, is null pointer");
3823 return;
3824 }
3825
3826 if(!ValidateEnumerator((VkQueryResultFlagBits)flags))
3827 {
3828 std::string reason = "vkGetQueryPoolResults parameter, VkQueryResultFlags flags, is " + EnumeratorString((VkQueryResultFlagBits)flags);
3829 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3830 return;
3831 }
3832
3833 if(result != VK_SUCCESS)
3834 {
3835 std::string reason = "vkGetQueryPoolResults parameter, VkResult result, is " + EnumeratorString(result);
3836 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3837 return;
3838 }
3839}
3840
3841VK_LAYER_EXPORT VkResult VKAPI vkGetQueryPoolResults(
3842 VkDevice device,
3843 VkQueryPool queryPool,
3844 uint32_t startQuery,
3845 uint32_t queryCount,
3846 size_t* pDataSize,
3847 void* pData,
3848 VkQueryResultFlags flags)
3849{
3850 PreGetQueryPoolResults(device);
3851 VkResult result = get_dispatch_table(pc_device_table_map, device)->GetQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
3852
3853 PostGetQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags, result);
3854
3855 return result;
3856}
3857
3858void PreCreateBuffer(
3859 VkDevice device,
3860 const VkBufferCreateInfo* pCreateInfo)
3861{
3862 if(device == nullptr)
3863 {
3864 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3865 "vkCreateBuffer parameter, VkDevice device, is null pointer");
3866 return;
3867 }
3868
3869 if(pCreateInfo == nullptr)
3870 {
3871 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3872 "vkCreateBuffer parameter, const VkBufferCreateInfo* pCreateInfo, is null pointer");
3873 return;
3874 }
3875 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
3876 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
3877 {
3878 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3879 "vkCreateBuffer parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
3880 return;
3881 }
3882 if(!ValidateEnumerator((VkBufferUsageFlagBits)pCreateInfo->usage))
3883 {
3884 std::string reason = "vkCreateBuffer parameter, VkBufferUsageFlags pCreateInfo->usage, is " + EnumeratorString((VkBufferUsageFlagBits)pCreateInfo->usage);
3885 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3886 return;
3887 }
3888 if(!ValidateEnumerator((VkBufferCreateFlagBits)pCreateInfo->flags))
3889 {
3890 std::string reason = "vkCreateBuffer parameter, VkBufferCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkBufferCreateFlagBits)pCreateInfo->flags);
3891 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3892 return;
3893 }
3894}
3895
3896void PostCreateBuffer(
3897 VkDevice device,
3898 VkBuffer* pBuffer,
3899 VkResult result)
3900{
3901 if(device == nullptr)
3902 {
3903 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3904 "vkCreateBuffer parameter, VkDevice device, is null pointer");
3905 return;
3906 }
3907
3908 if(pBuffer == nullptr)
3909 {
3910 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3911 "vkCreateBuffer parameter, VkBuffer* pBuffer, is null pointer");
3912 return;
3913 }
3914 if((*pBuffer) == nullptr)
3915 {
3916 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3917 "vkCreateBuffer parameter, VkBuffer* pBuffer, is null pointer");
3918 return;
3919 }
3920
3921 if(result != VK_SUCCESS)
3922 {
3923 std::string reason = "vkCreateBuffer parameter, VkResult result, is " + EnumeratorString(result);
3924 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
3925 return;
3926 }
3927}
3928
3929VK_LAYER_EXPORT VkResult VKAPI vkCreateBuffer(
3930 VkDevice device,
3931 const VkBufferCreateInfo* pCreateInfo,
3932 VkBuffer* pBuffer)
3933{
3934 PreCreateBuffer(device, pCreateInfo);
3935 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateBuffer(device, pCreateInfo, pBuffer);
3936
3937 PostCreateBuffer(device, pBuffer, result);
3938
3939 return result;
3940}
3941
3942void PreCreateBufferView(
3943 VkDevice device,
3944 const VkBufferViewCreateInfo* pCreateInfo)
3945{
3946 if(device == nullptr)
3947 {
3948 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3949 "vkCreateBufferView parameter, VkDevice device, is null pointer");
3950 return;
3951 }
3952
3953 if(pCreateInfo == nullptr)
3954 {
3955 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3956 "vkCreateBufferView parameter, const VkBufferViewCreateInfo* pCreateInfo, is null pointer");
3957 return;
3958 }
3959 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
3960 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
3961 {
3962 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3963 "vkCreateBufferView parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
3964 return;
3965 }
3966 if(pCreateInfo->buffer == nullptr)
3967 {
3968 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3969 "vkCreateBufferView parameter, VkBuffer pCreateInfo->buffer, is null pointer");
3970 return;
3971 }
3972 if(pCreateInfo->viewType < VK_BUFFER_VIEW_TYPE_BEGIN_RANGE ||
3973 pCreateInfo->viewType > VK_BUFFER_VIEW_TYPE_END_RANGE)
3974 {
3975 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3976 "vkCreateBufferView parameter, VkBufferViewType pCreateInfo->viewType, is unrecognized enumerator");
3977 return;
3978 }
3979 if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE ||
3980 pCreateInfo->format > VK_FORMAT_END_RANGE)
3981 {
3982 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3983 "vkCreateBufferView parameter, VkFormat pCreateInfo->format, is unrecognized enumerator");
3984 return;
3985 }
3986}
3987
3988void PostCreateBufferView(
3989 VkDevice device,
3990 VkBufferView* pView,
3991 VkResult result)
3992{
3993 if(device == nullptr)
3994 {
3995 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
3996 "vkCreateBufferView parameter, VkDevice device, is null pointer");
3997 return;
3998 }
3999
4000 if(pView == nullptr)
4001 {
4002 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4003 "vkCreateBufferView parameter, VkBufferView* pView, is null pointer");
4004 return;
4005 }
4006 if((*pView) == nullptr)
4007 {
4008 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4009 "vkCreateBufferView parameter, VkBufferView* pView, is null pointer");
4010 return;
4011 }
4012
4013 if(result != VK_SUCCESS)
4014 {
4015 std::string reason = "vkCreateBufferView parameter, VkResult result, is " + EnumeratorString(result);
4016 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4017 return;
4018 }
4019}
4020
4021VK_LAYER_EXPORT VkResult VKAPI vkCreateBufferView(
4022 VkDevice device,
4023 const VkBufferViewCreateInfo* pCreateInfo,
4024 VkBufferView* pView)
4025{
4026 PreCreateBufferView(device, pCreateInfo);
4027 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateBufferView(device, pCreateInfo, pView);
4028
4029 PostCreateBufferView(device, pView, result);
4030
4031 return result;
4032}
4033
4034void PreCreateImage(
4035 VkDevice device,
4036 const VkImageCreateInfo* pCreateInfo)
4037{
4038 if(device == nullptr)
4039 {
4040 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4041 "vkCreateImage parameter, VkDevice device, is null pointer");
4042 return;
4043 }
4044
4045 if(pCreateInfo == nullptr)
4046 {
4047 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4048 "vkCreateImage parameter, const VkImageCreateInfo* pCreateInfo, is null pointer");
4049 return;
4050 }
4051 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4052 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
4053 {
4054 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4055 "vkCreateImage parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
4056 return;
4057 }
4058 if(pCreateInfo->imageType < VK_IMAGE_TYPE_BEGIN_RANGE ||
4059 pCreateInfo->imageType > VK_IMAGE_TYPE_END_RANGE)
4060 {
4061 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4062 "vkCreateImage parameter, VkImageType pCreateInfo->imageType, is unrecognized enumerator");
4063 return;
4064 }
4065 if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE ||
4066 pCreateInfo->format > VK_FORMAT_END_RANGE)
4067 {
4068 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4069 "vkCreateImage parameter, VkFormat pCreateInfo->format, is unrecognized enumerator");
4070 return;
4071 }
4072 if(pCreateInfo->tiling < VK_IMAGE_TILING_BEGIN_RANGE ||
4073 pCreateInfo->tiling > VK_IMAGE_TILING_END_RANGE)
4074 {
4075 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4076 "vkCreateImage parameter, VkImageTiling pCreateInfo->tiling, is unrecognized enumerator");
4077 return;
4078 }
4079 if(!ValidateEnumerator((VkImageUsageFlagBits)pCreateInfo->usage))
4080 {
4081 std::string reason = "vkCreateImage parameter, VkImageUsageFlags pCreateInfo->usage, is " + EnumeratorString((VkImageUsageFlagBits)pCreateInfo->usage);
4082 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4083 return;
4084 }
4085 if(!ValidateEnumerator((VkImageCreateFlagBits)pCreateInfo->flags))
4086 {
4087 std::string reason = "vkCreateImage parameter, VkImageCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkImageCreateFlagBits)pCreateInfo->flags);
4088 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4089 return;
4090 }
4091}
4092
4093void PostCreateImage(
4094 VkDevice device,
4095 VkImage* pImage,
4096 VkResult result)
4097{
4098 if(device == nullptr)
4099 {
4100 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4101 "vkCreateImage parameter, VkDevice device, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004102 return;
4103 }
4104
4105 if(pImage == nullptr)
4106 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004107 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4108 "vkCreateImage parameter, VkImage* pImage, is null pointer");
4109 return;
4110 }
4111 if((*pImage) == nullptr)
4112 {
4113 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4114 "vkCreateImage parameter, VkImage* pImage, is null pointer");
4115 return;
4116 }
4117
4118 if(result != VK_SUCCESS)
4119 {
4120 std::string reason = "vkCreateImage parameter, VkResult result, is " + EnumeratorString(result);
4121 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004122 return;
4123 }
4124}
4125
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004126VK_LAYER_EXPORT VkResult VKAPI vkCreateImage(
4127 VkDevice device,
4128 const VkImageCreateInfo* pCreateInfo,
4129 VkImage* pImage)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004130{
4131 PreCreateImage(device, pCreateInfo);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004132 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateImage(device, pCreateInfo, pImage);
4133
4134 PostCreateImage(device, pImage, result);
4135
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004136 return result;
4137}
4138
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004139void PreGetImageSubresourceLayout(
4140 VkDevice device,
4141 const VkImageSubresource* pSubresource)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004142{
4143 if(device == nullptr)
4144 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004145 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4146 "vkGetImageSubresourceLayout parameter, VkDevice device, is null pointer");
4147 return;
4148 }
4149
4150 if(pSubresource == nullptr)
4151 {
4152 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4153 "vkGetImageSubresourceLayout parameter, const VkImageSubresource* pSubresource, is null pointer");
4154 return;
4155 }
4156 if(pSubresource->aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
4157 pSubresource->aspect > VK_IMAGE_ASPECT_END_RANGE)
4158 {
4159 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4160 "vkGetImageSubresourceLayout parameter, VkImageAspect pSubresource->aspect, is unrecognized enumerator");
4161 return;
4162 }
4163}
4164
4165void PostGetImageSubresourceLayout(
4166 VkDevice device,
4167 VkImage image,
4168 VkSubresourceLayout* pLayout,
4169 VkResult result)
4170{
4171 if(device == nullptr)
4172 {
4173 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4174 "vkGetImageSubresourceLayout parameter, VkDevice device, is null pointer");
4175 return;
4176 }
4177
4178 if(image == nullptr)
4179 {
4180 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4181 "vkGetImageSubresourceLayout parameter, VkImage image, is null pointer");
4182 return;
4183 }
4184
4185 if(pLayout == nullptr)
4186 {
4187 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4188 "vkGetImageSubresourceLayout parameter, VkSubresourceLayout* pLayout, is null pointer");
4189 return;
4190 }
4191
4192 if(result != VK_SUCCESS)
4193 {
4194 std::string reason = "vkGetImageSubresourceLayout parameter, VkResult result, is " + EnumeratorString(result);
4195 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4196 return;
4197 }
4198}
4199
4200VK_LAYER_EXPORT VkResult VKAPI vkGetImageSubresourceLayout(
4201 VkDevice device,
4202 VkImage image,
4203 const VkImageSubresource* pSubresource,
4204 VkSubresourceLayout* pLayout)
4205{
4206 PreGetImageSubresourceLayout(device, pSubresource);
4207 VkResult result = get_dispatch_table(pc_device_table_map, device)->GetImageSubresourceLayout(device, image, pSubresource, pLayout);
4208
4209 PostGetImageSubresourceLayout(device, image, pLayout, result);
4210
4211 return result;
4212}
4213
4214void PreCreateImageView(
4215 VkDevice device,
4216 const VkImageViewCreateInfo* pCreateInfo)
4217{
4218 if(device == nullptr)
4219 {
4220 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4221 "vkCreateImageView parameter, VkDevice device, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004222 return;
4223 }
4224
4225 if(pCreateInfo == nullptr)
4226 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004227 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4228 "vkCreateImageView parameter, const VkImageViewCreateInfo* pCreateInfo, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004229 return;
4230 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004231 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4232 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004233 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004234 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4235 "vkCreateImageView parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
4236 return;
4237 }
4238 if(pCreateInfo->image == nullptr)
4239 {
4240 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4241 "vkCreateImageView parameter, VkImage pCreateInfo->image, is null pointer");
4242 return;
4243 }
4244 if(pCreateInfo->viewType < VK_IMAGE_VIEW_TYPE_BEGIN_RANGE ||
4245 pCreateInfo->viewType > VK_IMAGE_VIEW_TYPE_END_RANGE)
4246 {
4247 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4248 "vkCreateImageView parameter, VkImageViewType pCreateInfo->viewType, is unrecognized enumerator");
4249 return;
4250 }
4251 if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE ||
4252 pCreateInfo->format > VK_FORMAT_END_RANGE)
4253 {
4254 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4255 "vkCreateImageView parameter, VkFormat pCreateInfo->format, is unrecognized enumerator");
4256 return;
4257 }
4258 if(pCreateInfo->channels.r < VK_CHANNEL_SWIZZLE_BEGIN_RANGE ||
4259 pCreateInfo->channels.r > VK_CHANNEL_SWIZZLE_END_RANGE)
4260 {
4261 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4262 "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.r, is unrecognized enumerator");
4263 return;
4264 }
4265 if(pCreateInfo->channels.g < VK_CHANNEL_SWIZZLE_BEGIN_RANGE ||
4266 pCreateInfo->channels.g > VK_CHANNEL_SWIZZLE_END_RANGE)
4267 {
4268 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4269 "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.g, is unrecognized enumerator");
4270 return;
4271 }
4272 if(pCreateInfo->channels.b < VK_CHANNEL_SWIZZLE_BEGIN_RANGE ||
4273 pCreateInfo->channels.b > VK_CHANNEL_SWIZZLE_END_RANGE)
4274 {
4275 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4276 "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.b, is unrecognized enumerator");
4277 return;
4278 }
4279 if(pCreateInfo->channels.a < VK_CHANNEL_SWIZZLE_BEGIN_RANGE ||
4280 pCreateInfo->channels.a > VK_CHANNEL_SWIZZLE_END_RANGE)
4281 {
4282 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4283 "vkCreateImageView parameter, VkChannelSwizzle pCreateInfo->channels.a, is unrecognized enumerator");
4284 return;
4285 }
4286 if(pCreateInfo->subresourceRange.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
4287 pCreateInfo->subresourceRange.aspect > VK_IMAGE_ASPECT_END_RANGE)
4288 {
4289 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4290 "vkCreateImageView parameter, VkImageAspect pCreateInfo->subresourceRange.aspect, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004291 return;
4292 }
4293}
4294
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004295void PostCreateImageView(
4296 VkDevice device,
4297 VkImageView* pView,
4298 VkResult result)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004299{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004300 if(device == nullptr)
4301 {
4302 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4303 "vkCreateImageView parameter, VkDevice device, is null pointer");
4304 return;
4305 }
4306
4307 if(pView == nullptr)
4308 {
4309 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4310 "vkCreateImageView parameter, VkImageView* pView, is null pointer");
4311 return;
4312 }
4313 if((*pView) == nullptr)
4314 {
4315 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4316 "vkCreateImageView parameter, VkImageView* pView, is null pointer");
4317 return;
4318 }
4319
Courtney Goeltzenleuchter9cc421e2015-04-08 15:36:08 -06004320 if(result != VK_SUCCESS)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06004321 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004322 std::string reason = "vkCreateImageView parameter, VkResult result, is " + EnumeratorString(result);
4323 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4324 return;
4325 }
4326}
4327
4328VK_LAYER_EXPORT VkResult VKAPI vkCreateImageView(
4329 VkDevice device,
4330 const VkImageViewCreateInfo* pCreateInfo,
4331 VkImageView* pView)
4332{
4333 PreCreateImageView(device, pCreateInfo);
4334 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateImageView(device, pCreateInfo, pView);
4335
4336 PostCreateImageView(device, pView, result);
4337
4338 return result;
4339}
4340
4341void PreCreateColorAttachmentView(
4342 VkDevice device,
4343 const VkColorAttachmentViewCreateInfo* pCreateInfo)
4344{
4345 if(device == nullptr)
4346 {
4347 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4348 "vkCreateColorAttachmentView parameter, VkDevice device, is null pointer");
4349 return;
4350 }
4351
4352 if(pCreateInfo == nullptr)
4353 {
4354 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4355 "vkCreateColorAttachmentView parameter, const VkColorAttachmentViewCreateInfo* pCreateInfo, is null pointer");
4356 return;
4357 }
4358 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4359 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
4360 {
4361 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4362 "vkCreateColorAttachmentView parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
4363 return;
4364 }
4365 if(pCreateInfo->image == nullptr)
4366 {
4367 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4368 "vkCreateColorAttachmentView parameter, VkImage pCreateInfo->image, is null pointer");
4369 return;
4370 }
4371 if(pCreateInfo->format < VK_FORMAT_BEGIN_RANGE ||
4372 pCreateInfo->format > VK_FORMAT_END_RANGE)
4373 {
4374 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4375 "vkCreateColorAttachmentView parameter, VkFormat pCreateInfo->format, is unrecognized enumerator");
4376 return;
4377 }
4378 if(pCreateInfo->msaaResolveImage == nullptr)
4379 {
4380 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4381 "vkCreateColorAttachmentView parameter, VkImage pCreateInfo->msaaResolveImage, is null pointer");
4382 return;
4383 }
4384 if(pCreateInfo->msaaResolveSubResource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
4385 pCreateInfo->msaaResolveSubResource.aspect > VK_IMAGE_ASPECT_END_RANGE)
4386 {
4387 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4388 "vkCreateColorAttachmentView parameter, VkImageAspect pCreateInfo->msaaResolveSubResource.aspect, is unrecognized enumerator");
4389 return;
4390 }
4391}
4392
4393void PostCreateColorAttachmentView(
4394 VkDevice device,
4395 VkColorAttachmentView* pView,
4396 VkResult result)
4397{
4398 if(device == nullptr)
4399 {
4400 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4401 "vkCreateColorAttachmentView parameter, VkDevice device, is null pointer");
4402 return;
4403 }
4404
4405 if(pView == nullptr)
4406 {
4407 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4408 "vkCreateColorAttachmentView parameter, VkColorAttachmentView* pView, is null pointer");
4409 return;
4410 }
4411 if((*pView) == nullptr)
4412 {
4413 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4414 "vkCreateColorAttachmentView parameter, VkColorAttachmentView* pView, is null pointer");
4415 return;
4416 }
4417
4418 if(result != VK_SUCCESS)
4419 {
4420 std::string reason = "vkCreateColorAttachmentView parameter, VkResult result, is " + EnumeratorString(result);
4421 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4422 return;
4423 }
4424}
4425
4426VK_LAYER_EXPORT VkResult VKAPI vkCreateColorAttachmentView(
4427 VkDevice device,
4428 const VkColorAttachmentViewCreateInfo* pCreateInfo,
4429 VkColorAttachmentView* pView)
4430{
4431 PreCreateColorAttachmentView(device, pCreateInfo);
4432 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateColorAttachmentView(device, pCreateInfo, pView);
4433
4434 PostCreateColorAttachmentView(device, pView, result);
4435
4436 return result;
4437}
4438
4439void PreCreateDepthStencilView(
4440 VkDevice device,
4441 const VkDepthStencilViewCreateInfo* pCreateInfo)
4442{
4443 if(device == nullptr)
4444 {
4445 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4446 "vkCreateDepthStencilView parameter, VkDevice device, is null pointer");
4447 return;
4448 }
4449
4450 if(pCreateInfo == nullptr)
4451 {
4452 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4453 "vkCreateDepthStencilView parameter, const VkDepthStencilViewCreateInfo* pCreateInfo, is null pointer");
4454 return;
4455 }
4456 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4457 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
4458 {
4459 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4460 "vkCreateDepthStencilView parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
4461 return;
4462 }
4463 if(pCreateInfo->image == nullptr)
4464 {
4465 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4466 "vkCreateDepthStencilView parameter, VkImage pCreateInfo->image, is null pointer");
4467 return;
4468 }
4469 if(!ValidateEnumerator((VkDepthStencilViewCreateFlagBits)pCreateInfo->flags))
4470 {
4471 std::string reason = "vkCreateDepthStencilView parameter, VkDepthStencilViewCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkDepthStencilViewCreateFlagBits)pCreateInfo->flags);
4472 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4473 return;
4474 }
4475}
4476
4477void PostCreateDepthStencilView(
4478 VkDevice device,
4479 VkDepthStencilView* pView,
4480 VkResult result)
4481{
4482 if(device == nullptr)
4483 {
4484 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4485 "vkCreateDepthStencilView parameter, VkDevice device, is null pointer");
4486 return;
4487 }
4488
4489 if(pView == nullptr)
4490 {
4491 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4492 "vkCreateDepthStencilView parameter, VkDepthStencilView* pView, is null pointer");
4493 return;
4494 }
4495 if((*pView) == nullptr)
4496 {
4497 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4498 "vkCreateDepthStencilView parameter, VkDepthStencilView* pView, is null pointer");
4499 return;
4500 }
4501
4502 if(result != VK_SUCCESS)
4503 {
4504 std::string reason = "vkCreateDepthStencilView parameter, VkResult result, is " + EnumeratorString(result);
4505 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4506 return;
4507 }
4508}
4509
4510VK_LAYER_EXPORT VkResult VKAPI vkCreateDepthStencilView(
4511 VkDevice device,
4512 const VkDepthStencilViewCreateInfo* pCreateInfo,
4513 VkDepthStencilView* pView)
4514{
4515 PreCreateDepthStencilView(device, pCreateInfo);
4516 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDepthStencilView(device, pCreateInfo, pView);
4517
4518 PostCreateDepthStencilView(device, pView, result);
4519
4520 return result;
4521}
4522
Courtney Goeltzenleuchter2d034fd2015-06-28 13:01:17 -06004523void PreCreateShaderModule(
4524 VkDevice device,
4525 const VkShaderModuleCreateInfo* pCreateInfo)
4526{
4527 if(device == nullptr)
4528 {
4529 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4530 "vkCreateShaderModule parameter, VkDevice device, is null pointer");
4531 return;
4532 }
4533
4534 if(pCreateInfo == nullptr)
4535 {
4536 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4537 "vkCreateShaderModule parameter, const VkShaderCreateInfo* pCreateInfo, is null pointer");
4538 return;
4539 }
4540 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4541 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
4542 {
4543 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4544 "vkCreateShaderModule parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
4545 return;
4546 }
4547 if(pCreateInfo->pCode == nullptr)
4548 {
4549 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4550 "vkCreateShaderModule parameter, const void* pCreateInfo->pCode, is null pointer");
4551 return;
4552 }
4553 if(pCreateInfo->codeSize == 0)
4554 {
4555 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4556 "vkCreateShaderModule parameter, size_t pCreateInfo->codeSize, is zero");
4557 return;
4558 }
4559}
4560
4561void PostCreateShaderModule(
4562 VkDevice device,
4563 VkShaderModule* pShaderModule,
4564 VkResult result)
4565{
4566 if(device == nullptr)
4567 {
4568 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4569 "vkCreateShaderModule parameter, VkDevice device, is null pointer");
4570 return;
4571 }
4572
4573 if(pShaderModule == nullptr)
4574 {
4575 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4576 "vkCreateShaderModule parameter, VkShader* pShader, is null pointer");
4577 return;
4578 }
4579 if((*pShaderModule) == nullptr)
4580 {
4581 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4582 "vkCreateShaderModule parameter, VkShader* pShader, is null pointer");
4583 return;
4584 }
4585
4586 if(result != VK_SUCCESS)
4587 {
4588 std::string reason = "vkCreateShaderModule parameter, VkResult result, is " + EnumeratorString(result);
4589 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4590 return;
4591 }
4592}
4593
4594VK_LAYER_EXPORT VkResult VKAPI vkCreateShaderModule(
4595 VkDevice device,
4596 const VkShaderModuleCreateInfo* pCreateInfo,
4597 VkShaderModule* pShaderModule)
4598{
4599 PreCreateShaderModule(device, pCreateInfo);
4600 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateShaderModule(device, pCreateInfo, pShaderModule);
4601
4602 PostCreateShaderModule(device, pShaderModule, result);
4603
4604 return result;
4605}
4606
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004607void PreCreateShader(
4608 VkDevice device,
4609 const VkShaderCreateInfo* pCreateInfo)
4610{
4611 if(device == nullptr)
4612 {
4613 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4614 "vkCreateShader parameter, VkDevice device, is null pointer");
4615 return;
4616 }
4617
4618 if(pCreateInfo == nullptr)
4619 {
4620 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4621 "vkCreateShader parameter, const VkShaderCreateInfo* pCreateInfo, is null pointer");
4622 return;
4623 }
4624 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4625 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
4626 {
4627 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4628 "vkCreateShader parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
4629 return;
4630 }
4631 if(pCreateInfo->module == nullptr)
4632 {
4633 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4634 "vkCreateShader parameter, VkShaderModule pCreateInfo->module, is null pointer");
4635 return;
4636 }
Courtney Goeltzenleuchter2d034fd2015-06-28 13:01:17 -06004637 if(pCreateInfo->pName == nullptr)
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004638 {
4639 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4640 "vkCreateShader parameter, const char* pCreateInfo->name, is null pointer");
4641 return;
4642 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06004643}
4644
4645void PostCreateShader(
4646 VkDevice device,
4647 VkShader* pShader,
4648 VkResult result)
4649{
4650 if(device == nullptr)
4651 {
4652 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4653 "vkCreateShader parameter, VkDevice device, is null pointer");
4654 return;
4655 }
4656
4657 if(pShader == nullptr)
4658 {
4659 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4660 "vkCreateShader parameter, VkShader* pShader, is null pointer");
4661 return;
4662 }
4663 if((*pShader) == nullptr)
4664 {
4665 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4666 "vkCreateShader parameter, VkShader* pShader, is null pointer");
4667 return;
4668 }
4669
4670 if(result != VK_SUCCESS)
4671 {
4672 std::string reason = "vkCreateShader parameter, VkResult result, is " + EnumeratorString(result);
4673 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
4674 return;
4675 }
4676}
4677
4678VK_LAYER_EXPORT VkResult VKAPI vkCreateShader(
4679 VkDevice device,
4680 const VkShaderCreateInfo* pCreateInfo,
4681 VkShader* pShader)
4682{
4683 PreCreateShader(device, pCreateInfo);
4684 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateShader(device, pCreateInfo, pShader);
4685
4686 PostCreateShader(device, pShader, result);
4687
4688 return result;
4689}
4690
4691void PreCreateGraphicsPipeline(
4692 VkDevice device,
4693 const VkGraphicsPipelineCreateInfo* pCreateInfo)
4694{
4695 if(device == nullptr)
4696 {
4697 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4698 "vkCreateGraphicsPipeline parameter, VkDevice device, is null pointer");
4699 return;
4700 }
4701
4702 if(pCreateInfo == nullptr)
4703 {
4704 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4705 "vkCreateGraphicsPipeline parameter, const VkGraphicsPipelineCreateInfo* pCreateInfo, is null pointer");
4706 return;
4707 }
4708 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4709 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
4710 {
4711 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4712 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
4713 return;
4714 }
4715 if(pCreateInfo->pStages == nullptr)
4716 {
4717 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4718 "vkCreateGraphicsPipeline parameter, const VkPipelineShaderStageCreateInfo* pCreateInfo->pStages, is null pointer");
4719 return;
4720 }
4721 if(pCreateInfo->pStages->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4722 pCreateInfo->pStages->sType > VK_STRUCTURE_TYPE_END_RANGE)
4723 {
4724 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4725 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pStages->sType, is unrecognized enumerator");
4726 return;
4727 }
4728 if(pCreateInfo->pStages->pNext == nullptr)
4729 {
4730 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4731 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pStages->pNext, is null pointer");
4732 return;
4733 }
4734 if(pCreateInfo->pStages->stage < VK_SHADER_STAGE_BEGIN_RANGE ||
4735 pCreateInfo->pStages->stage > VK_SHADER_STAGE_END_RANGE)
4736 {
4737 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4738 "vkCreateGraphicsPipeline parameter, VkShaderStage pCreateInfo->pStages->stage, is unrecognized enumerator");
4739 return;
4740 }
4741 if(pCreateInfo->pStages->shader == nullptr)
4742 {
4743 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4744 "vkCreateGraphicsPipeline parameter, VkShader pCreateInfo->pStages->shader, is null pointer");
4745 return;
4746 }
4747 if(pCreateInfo->pStages->pLinkConstBufferInfo == nullptr)
4748 {
4749 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4750 "vkCreateGraphicsPipeline parameter, const VkLinkConstBuffer* pCreateInfo->pStages->pLinkConstBufferInfo, is null pointer");
4751 return;
4752 }
4753 if(pCreateInfo->pStages->pLinkConstBufferInfo->pBufferData == nullptr)
4754 {
4755 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4756 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pStages->pLinkConstBufferInfo->pBufferData, is null pointer");
4757 return;
4758 }
4759 if(pCreateInfo->pStages->pSpecializationInfo == nullptr)
4760 {
4761 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4762 "vkCreateGraphicsPipeline parameter, const VkSpecializationInfo* pCreateInfo->pStages->pSpecializationInfo, is null pointer");
4763 return;
4764 }
4765 if(pCreateInfo->pStages->pSpecializationInfo->pMap == nullptr)
4766 {
4767 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4768 "vkCreateGraphicsPipeline parameter, const VkSpecializationMapEntry* pCreateInfo->pStages->pSpecializationInfo->pMap, is null pointer");
4769 return;
4770 }
4771 if(pCreateInfo->pStages->pSpecializationInfo->pData == nullptr)
4772 {
4773 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4774 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pStages->pSpecializationInfo->pData, is null pointer");
4775 return;
4776 }
4777 if(pCreateInfo->pVertexInputState == nullptr)
4778 {
4779 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4780 "vkCreateGraphicsPipeline parameter, const VkPipelineVertexInputStateCreateInfo* pCreateInfo->pVertexInputState, is null pointer");
4781 return;
4782 }
4783 if(pCreateInfo->pVertexInputState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4784 pCreateInfo->pVertexInputState->sType > VK_STRUCTURE_TYPE_END_RANGE)
4785 {
4786 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4787 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pVertexInputState->sType, is unrecognized enumerator");
4788 return;
4789 }
4790 if(pCreateInfo->pVertexInputState->pNext == nullptr)
4791 {
4792 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4793 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pVertexInputState->pNext, is null pointer");
4794 return;
4795 }
4796 if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions == nullptr)
4797 {
4798 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4799 "vkCreateGraphicsPipeline parameter, const VkVertexInputBindingDescription* pCreateInfo->pVertexInputState->pVertexBindingDescriptions, is null pointer");
4800 return;
4801 }
4802 if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate < VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE ||
4803 pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate > VK_VERTEX_INPUT_STEP_RATE_END_RANGE)
4804 {
4805 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4806 "vkCreateGraphicsPipeline parameter, VkVertexInputStepRate pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate, is unrecognized enumerator");
4807 return;
4808 }
4809 if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions == nullptr)
4810 {
4811 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4812 "vkCreateGraphicsPipeline parameter, const VkVertexInputAttributeDescription* pCreateInfo->pVertexInputState->pVertexAttributeDescriptions, is null pointer");
4813 return;
4814 }
4815 if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format < VK_FORMAT_BEGIN_RANGE ||
4816 pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format > VK_FORMAT_END_RANGE)
4817 {
4818 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4819 "vkCreateGraphicsPipeline parameter, VkFormat pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format, is unrecognized enumerator");
4820 return;
4821 }
4822 if(pCreateInfo->pIaState == nullptr)
4823 {
4824 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4825 "vkCreateGraphicsPipeline parameter, const VkPipelineIaStateCreateInfo* pCreateInfo->pIaState, is null pointer");
4826 return;
4827 }
4828 if(pCreateInfo->pIaState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4829 pCreateInfo->pIaState->sType > VK_STRUCTURE_TYPE_END_RANGE)
4830 {
4831 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4832 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pIaState->sType, is unrecognized enumerator");
4833 return;
4834 }
4835 if(pCreateInfo->pIaState->pNext == nullptr)
4836 {
4837 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4838 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pIaState->pNext, is null pointer");
4839 return;
4840 }
4841 if(pCreateInfo->pIaState->topology < VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE ||
4842 pCreateInfo->pIaState->topology > VK_PRIMITIVE_TOPOLOGY_END_RANGE)
4843 {
4844 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4845 "vkCreateGraphicsPipeline parameter, VkPrimitiveTopology pCreateInfo->pIaState->topology, is unrecognized enumerator");
4846 return;
4847 }
4848 if(pCreateInfo->pTessState == nullptr)
4849 {
4850 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4851 "vkCreateGraphicsPipeline parameter, const VkPipelineTessStateCreateInfo* pCreateInfo->pTessState, is null pointer");
4852 return;
4853 }
4854 if(pCreateInfo->pTessState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4855 pCreateInfo->pTessState->sType > VK_STRUCTURE_TYPE_END_RANGE)
4856 {
4857 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4858 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pTessState->sType, is unrecognized enumerator");
4859 return;
4860 }
4861 if(pCreateInfo->pTessState->pNext == nullptr)
4862 {
4863 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4864 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pTessState->pNext, is null pointer");
4865 return;
4866 }
4867 if(pCreateInfo->pVpState == nullptr)
4868 {
4869 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4870 "vkCreateGraphicsPipeline parameter, const VkPipelineVpStateCreateInfo* pCreateInfo->pVpState, is null pointer");
4871 return;
4872 }
4873 if(pCreateInfo->pVpState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4874 pCreateInfo->pVpState->sType > VK_STRUCTURE_TYPE_END_RANGE)
4875 {
4876 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4877 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pVpState->sType, is unrecognized enumerator");
4878 return;
4879 }
4880 if(pCreateInfo->pVpState->pNext == nullptr)
4881 {
4882 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4883 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pVpState->pNext, is null pointer");
4884 return;
4885 }
4886 if(pCreateInfo->pVpState->clipOrigin < VK_COORDINATE_ORIGIN_BEGIN_RANGE ||
4887 pCreateInfo->pVpState->clipOrigin > VK_COORDINATE_ORIGIN_END_RANGE)
4888 {
4889 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4890 "vkCreateGraphicsPipeline parameter, VkCoordinateOrigin pCreateInfo->pVpState->clipOrigin, is unrecognized enumerator");
4891 return;
4892 }
4893 if(pCreateInfo->pVpState->depthMode < VK_DEPTH_MODE_BEGIN_RANGE ||
4894 pCreateInfo->pVpState->depthMode > VK_DEPTH_MODE_END_RANGE)
4895 {
4896 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4897 "vkCreateGraphicsPipeline parameter, VkDepthMode pCreateInfo->pVpState->depthMode, is unrecognized enumerator");
4898 return;
4899 }
4900 if(pCreateInfo->pRsState == nullptr)
4901 {
4902 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4903 "vkCreateGraphicsPipeline parameter, const VkPipelineRsStateCreateInfo* pCreateInfo->pRsState, is null pointer");
4904 return;
4905 }
4906 if(pCreateInfo->pRsState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4907 pCreateInfo->pRsState->sType > VK_STRUCTURE_TYPE_END_RANGE)
4908 {
4909 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4910 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pRsState->sType, is unrecognized enumerator");
4911 return;
4912 }
4913 if(pCreateInfo->pRsState->pNext == nullptr)
4914 {
4915 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4916 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pRsState->pNext, is null pointer");
4917 return;
4918 }
4919 if(pCreateInfo->pRsState->pointOrigin < VK_COORDINATE_ORIGIN_BEGIN_RANGE ||
4920 pCreateInfo->pRsState->pointOrigin > VK_COORDINATE_ORIGIN_END_RANGE)
4921 {
4922 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4923 "vkCreateGraphicsPipeline parameter, VkCoordinateOrigin pCreateInfo->pRsState->pointOrigin, is unrecognized enumerator");
4924 return;
4925 }
4926 if(pCreateInfo->pRsState->provokingVertex < VK_PROVOKING_VERTEX_BEGIN_RANGE ||
4927 pCreateInfo->pRsState->provokingVertex > VK_PROVOKING_VERTEX_END_RANGE)
4928 {
4929 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4930 "vkCreateGraphicsPipeline parameter, VkProvokingVertex pCreateInfo->pRsState->provokingVertex, is unrecognized enumerator");
4931 return;
4932 }
4933 if(pCreateInfo->pRsState->fillMode < VK_FILL_MODE_BEGIN_RANGE ||
4934 pCreateInfo->pRsState->fillMode > VK_FILL_MODE_END_RANGE)
4935 {
4936 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4937 "vkCreateGraphicsPipeline parameter, VkFillMode pCreateInfo->pRsState->fillMode, is unrecognized enumerator");
4938 return;
4939 }
4940 if(pCreateInfo->pRsState->cullMode < VK_CULL_MODE_BEGIN_RANGE ||
4941 pCreateInfo->pRsState->cullMode > VK_CULL_MODE_END_RANGE)
4942 {
4943 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4944 "vkCreateGraphicsPipeline parameter, VkCullMode pCreateInfo->pRsState->cullMode, is unrecognized enumerator");
4945 return;
4946 }
4947 if(pCreateInfo->pRsState->frontFace < VK_FRONT_FACE_BEGIN_RANGE ||
4948 pCreateInfo->pRsState->frontFace > VK_FRONT_FACE_END_RANGE)
4949 {
4950 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4951 "vkCreateGraphicsPipeline parameter, VkFrontFace pCreateInfo->pRsState->frontFace, is unrecognized enumerator");
4952 return;
4953 }
4954 if(pCreateInfo->pMsState == nullptr)
4955 {
4956 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4957 "vkCreateGraphicsPipeline parameter, const VkPipelineMsStateCreateInfo* pCreateInfo->pMsState, is null pointer");
4958 return;
4959 }
4960 if(pCreateInfo->pMsState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4961 pCreateInfo->pMsState->sType > VK_STRUCTURE_TYPE_END_RANGE)
4962 {
4963 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4964 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pMsState->sType, is unrecognized enumerator");
4965 return;
4966 }
4967 if(pCreateInfo->pMsState->pNext == nullptr)
4968 {
4969 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4970 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pMsState->pNext, is null pointer");
4971 return;
4972 }
4973 if(pCreateInfo->pDsState == nullptr)
4974 {
4975 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4976 "vkCreateGraphicsPipeline parameter, const VkPipelineDsStateCreateInfo* pCreateInfo->pDsState, is null pointer");
4977 return;
4978 }
4979 if(pCreateInfo->pDsState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
4980 pCreateInfo->pDsState->sType > VK_STRUCTURE_TYPE_END_RANGE)
4981 {
4982 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4983 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pDsState->sType, is unrecognized enumerator");
4984 return;
4985 }
4986 if(pCreateInfo->pDsState->pNext == nullptr)
4987 {
4988 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4989 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pDsState->pNext, is null pointer");
4990 return;
4991 }
4992 if(pCreateInfo->pDsState->format < VK_FORMAT_BEGIN_RANGE ||
4993 pCreateInfo->pDsState->format > VK_FORMAT_END_RANGE)
4994 {
4995 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
4996 "vkCreateGraphicsPipeline parameter, VkFormat pCreateInfo->pDsState->format, is unrecognized enumerator");
4997 return;
4998 }
4999 if(pCreateInfo->pDsState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
5000 pCreateInfo->pDsState->depthCompareOp > VK_COMPARE_OP_END_RANGE)
5001 {
5002 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5003 "vkCreateGraphicsPipeline parameter, VkCompareOp pCreateInfo->pDsState->depthCompareOp, is unrecognized enumerator");
5004 return;
5005 }
5006 if(pCreateInfo->pDsState->front.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5007 pCreateInfo->pDsState->front.stencilFailOp > VK_STENCIL_OP_END_RANGE)
5008 {
5009 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5010 "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->front.stencilFailOp, is unrecognized enumerator");
5011 return;
5012 }
5013 if(pCreateInfo->pDsState->front.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE ||
5014 pCreateInfo->pDsState->front.stencilPassOp > VK_STENCIL_OP_END_RANGE)
5015 {
5016 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5017 "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->front.stencilPassOp, is unrecognized enumerator");
5018 return;
5019 }
5020 if(pCreateInfo->pDsState->front.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5021 pCreateInfo->pDsState->front.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE)
5022 {
5023 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5024 "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->front.stencilDepthFailOp, is unrecognized enumerator");
5025 return;
5026 }
5027 if(pCreateInfo->pDsState->front.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
5028 pCreateInfo->pDsState->front.stencilCompareOp > VK_COMPARE_OP_END_RANGE)
5029 {
5030 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5031 "vkCreateGraphicsPipeline parameter, VkCompareOp pCreateInfo->pDsState->front.stencilCompareOp, is unrecognized enumerator");
5032 return;
5033 }
5034 if(pCreateInfo->pDsState->back.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5035 pCreateInfo->pDsState->back.stencilFailOp > VK_STENCIL_OP_END_RANGE)
5036 {
5037 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5038 "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->back.stencilFailOp, is unrecognized enumerator");
5039 return;
5040 }
5041 if(pCreateInfo->pDsState->back.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE ||
5042 pCreateInfo->pDsState->back.stencilPassOp > VK_STENCIL_OP_END_RANGE)
5043 {
5044 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5045 "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->back.stencilPassOp, is unrecognized enumerator");
5046 return;
5047 }
5048 if(pCreateInfo->pDsState->back.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5049 pCreateInfo->pDsState->back.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE)
5050 {
5051 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5052 "vkCreateGraphicsPipeline parameter, VkStencilOp pCreateInfo->pDsState->back.stencilDepthFailOp, is unrecognized enumerator");
5053 return;
5054 }
5055 if(pCreateInfo->pDsState->back.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
5056 pCreateInfo->pDsState->back.stencilCompareOp > VK_COMPARE_OP_END_RANGE)
5057 {
5058 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5059 "vkCreateGraphicsPipeline parameter, VkCompareOp pCreateInfo->pDsState->back.stencilCompareOp, is unrecognized enumerator");
5060 return;
5061 }
5062 if(pCreateInfo->pCbState == nullptr)
5063 {
5064 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5065 "vkCreateGraphicsPipeline parameter, const VkPipelineCbStateCreateInfo* pCreateInfo->pCbState, is null pointer");
5066 return;
5067 }
5068 if(pCreateInfo->pCbState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5069 pCreateInfo->pCbState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5070 {
5071 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5072 "vkCreateGraphicsPipeline parameter, VkStructureType pCreateInfo->pCbState->sType, is unrecognized enumerator");
5073 return;
5074 }
5075 if(pCreateInfo->pCbState->pNext == nullptr)
5076 {
5077 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5078 "vkCreateGraphicsPipeline parameter, const void* pCreateInfo->pCbState->pNext, is null pointer");
5079 return;
5080 }
5081 if(pCreateInfo->pCbState->logicOp < VK_LOGIC_OP_BEGIN_RANGE ||
5082 pCreateInfo->pCbState->logicOp > VK_LOGIC_OP_END_RANGE)
5083 {
5084 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5085 "vkCreateGraphicsPipeline parameter, VkLogicOp pCreateInfo->pCbState->logicOp, is unrecognized enumerator");
5086 return;
5087 }
5088 if(pCreateInfo->pCbState->pAttachments == nullptr)
5089 {
5090 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5091 "vkCreateGraphicsPipeline parameter, const VkPipelineCbAttachmentState* pCreateInfo->pCbState->pAttachments, is null pointer");
5092 return;
5093 }
5094 if(pCreateInfo->pCbState->pAttachments->format < VK_FORMAT_BEGIN_RANGE ||
5095 pCreateInfo->pCbState->pAttachments->format > VK_FORMAT_END_RANGE)
5096 {
5097 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5098 "vkCreateGraphicsPipeline parameter, VkFormat pCreateInfo->pCbState->pAttachments->format, is unrecognized enumerator");
5099 return;
5100 }
5101 if(pCreateInfo->pCbState->pAttachments->srcBlendColor < VK_BLEND_BEGIN_RANGE ||
5102 pCreateInfo->pCbState->pAttachments->srcBlendColor > VK_BLEND_END_RANGE)
5103 {
5104 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5105 "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendColor, is unrecognized enumerator");
5106 return;
5107 }
5108 if(pCreateInfo->pCbState->pAttachments->destBlendColor < VK_BLEND_BEGIN_RANGE ||
5109 pCreateInfo->pCbState->pAttachments->destBlendColor > VK_BLEND_END_RANGE)
5110 {
5111 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5112 "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendColor, is unrecognized enumerator");
5113 return;
5114 }
5115 if(pCreateInfo->pCbState->pAttachments->blendOpColor < VK_BLEND_OP_BEGIN_RANGE ||
5116 pCreateInfo->pCbState->pAttachments->blendOpColor > VK_BLEND_OP_END_RANGE)
5117 {
5118 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5119 "vkCreateGraphicsPipeline parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpColor, is unrecognized enumerator");
5120 return;
5121 }
5122 if(pCreateInfo->pCbState->pAttachments->srcBlendAlpha < VK_BLEND_BEGIN_RANGE ||
5123 pCreateInfo->pCbState->pAttachments->srcBlendAlpha > VK_BLEND_END_RANGE)
5124 {
5125 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5126 "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendAlpha, is unrecognized enumerator");
5127 return;
5128 }
5129 if(pCreateInfo->pCbState->pAttachments->destBlendAlpha < VK_BLEND_BEGIN_RANGE ||
5130 pCreateInfo->pCbState->pAttachments->destBlendAlpha > VK_BLEND_END_RANGE)
5131 {
5132 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5133 "vkCreateGraphicsPipeline parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendAlpha, is unrecognized enumerator");
5134 return;
5135 }
5136 if(pCreateInfo->pCbState->pAttachments->blendOpAlpha < VK_BLEND_OP_BEGIN_RANGE ||
5137 pCreateInfo->pCbState->pAttachments->blendOpAlpha > VK_BLEND_OP_END_RANGE)
5138 {
5139 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5140 "vkCreateGraphicsPipeline parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpAlpha, is unrecognized enumerator");
5141 return;
5142 }
5143 if(!ValidateEnumerator((VkChannelFlagBits)pCreateInfo->pCbState->pAttachments->channelWriteMask))
5144 {
5145 std::string reason = "vkCreateGraphicsPipeline parameter, VkChannelFlags pCreateInfo->pCbState->pAttachments->channelWriteMask, is " + EnumeratorString((VkChannelFlagBits)pCreateInfo->pCbState->pAttachments->channelWriteMask);
5146 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5147 return;
5148 }
5149 if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags))
5150 {
5151 std::string reason = "vkCreateGraphicsPipeline parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags);
5152 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5153 return;
5154 }
5155 if(pCreateInfo->layout == nullptr)
5156 {
5157 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5158 "vkCreateGraphicsPipeline parameter, VkPipelineLayout pCreateInfo->layout, is null pointer");
5159 return;
5160 }
5161}
5162
5163void PostCreateGraphicsPipeline(
5164 VkDevice device,
5165 VkPipeline* pPipeline,
5166 VkResult result)
5167{
5168 if(device == nullptr)
5169 {
5170 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5171 "vkCreateGraphicsPipeline parameter, VkDevice device, is null pointer");
5172 return;
5173 }
5174
5175 if(pPipeline == nullptr)
5176 {
5177 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5178 "vkCreateGraphicsPipeline parameter, VkPipeline* pPipeline, is null pointer");
5179 return;
5180 }
5181 if((*pPipeline) == nullptr)
5182 {
5183 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5184 "vkCreateGraphicsPipeline parameter, VkPipeline* pPipeline, is null pointer");
5185 return;
5186 }
5187
5188 if(result != VK_SUCCESS)
5189 {
5190 std::string reason = "vkCreateGraphicsPipeline parameter, VkResult result, is " + EnumeratorString(result);
5191 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5192 return;
5193 }
5194}
5195
5196VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipeline(
5197 VkDevice device,
5198 const VkGraphicsPipelineCreateInfo* pCreateInfo,
5199 VkPipeline* pPipeline)
5200{
5201 PreCreateGraphicsPipeline(device, pCreateInfo);
5202 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateGraphicsPipeline(device, pCreateInfo, pPipeline);
5203
5204 PostCreateGraphicsPipeline(device, pPipeline, result);
5205
5206 return result;
5207}
5208
5209void PreCreateGraphicsPipelineDerivative(
5210 VkDevice device,
5211 const VkGraphicsPipelineCreateInfo* pCreateInfo)
5212{
5213 if(device == nullptr)
5214 {
5215 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5216 "vkCreateGraphicsPipelineDerivative parameter, VkDevice device, is null pointer");
5217 return;
5218 }
5219
5220 if(pCreateInfo == nullptr)
5221 {
5222 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5223 "vkCreateGraphicsPipelineDerivative parameter, const VkGraphicsPipelineCreateInfo* pCreateInfo, is null pointer");
5224 return;
5225 }
5226 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5227 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
5228 {
5229 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5230 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
5231 return;
5232 }
5233 if(pCreateInfo->pStages == nullptr)
5234 {
5235 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5236 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineShaderStageCreateInfo* pCreateInfo->pStages, is null pointer");
5237 return;
5238 }
5239 if(pCreateInfo->pStages->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5240 pCreateInfo->pStages->sType > VK_STRUCTURE_TYPE_END_RANGE)
5241 {
5242 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5243 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pStages->sType, is unrecognized enumerator");
5244 return;
5245 }
5246 if(pCreateInfo->pStages->pNext == nullptr)
5247 {
5248 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5249 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pStages->pNext, is null pointer");
5250 return;
5251 }
5252 if(pCreateInfo->pStages->stage < VK_SHADER_STAGE_BEGIN_RANGE ||
5253 pCreateInfo->pStages->stage > VK_SHADER_STAGE_END_RANGE)
5254 {
5255 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5256 "vkCreateGraphicsPipelineDerivative parameter, VkShaderStage pCreateInfo->pStages->stage, is unrecognized enumerator");
5257 return;
5258 }
5259 if(pCreateInfo->pStages->shader == nullptr)
5260 {
5261 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5262 "vkCreateGraphicsPipelineDerivative parameter, VkShader pCreateInfo->pStages->shader, is null pointer");
5263 return;
5264 }
5265 if(pCreateInfo->pStages->pLinkConstBufferInfo == nullptr)
5266 {
5267 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5268 "vkCreateGraphicsPipelineDerivative parameter, const VkLinkConstBuffer* pCreateInfo->pStages->pLinkConstBufferInfo, is null pointer");
5269 return;
5270 }
5271 if(pCreateInfo->pStages->pLinkConstBufferInfo->pBufferData == nullptr)
5272 {
5273 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5274 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pStages->pLinkConstBufferInfo->pBufferData, is null pointer");
5275 return;
5276 }
5277 if(pCreateInfo->pStages->pSpecializationInfo == nullptr)
5278 {
5279 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5280 "vkCreateGraphicsPipelineDerivative parameter, const VkSpecializationInfo* pCreateInfo->pStages->pSpecializationInfo, is null pointer");
5281 return;
5282 }
5283 if(pCreateInfo->pStages->pSpecializationInfo->pMap == nullptr)
5284 {
5285 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5286 "vkCreateGraphicsPipelineDerivative parameter, const VkSpecializationMapEntry* pCreateInfo->pStages->pSpecializationInfo->pMap, is null pointer");
5287 return;
5288 }
5289 if(pCreateInfo->pStages->pSpecializationInfo->pData == nullptr)
5290 {
5291 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5292 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pStages->pSpecializationInfo->pData, is null pointer");
5293 return;
5294 }
5295 if(pCreateInfo->pVertexInputState == nullptr)
5296 {
5297 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5298 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineVertexInputStateCreateInfo* pCreateInfo->pVertexInputState, is null pointer");
5299 return;
5300 }
5301 if(pCreateInfo->pVertexInputState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5302 pCreateInfo->pVertexInputState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5303 {
5304 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5305 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pVertexInputState->sType, is unrecognized enumerator");
5306 return;
5307 }
5308 if(pCreateInfo->pVertexInputState->pNext == nullptr)
5309 {
5310 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5311 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pVertexInputState->pNext, is null pointer");
5312 return;
5313 }
5314 if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions == nullptr)
5315 {
5316 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5317 "vkCreateGraphicsPipelineDerivative parameter, const VkVertexInputBindingDescription* pCreateInfo->pVertexInputState->pVertexBindingDescriptions, is null pointer");
5318 return;
5319 }
5320 if(pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate < VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE ||
5321 pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate > VK_VERTEX_INPUT_STEP_RATE_END_RANGE)
5322 {
5323 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5324 "vkCreateGraphicsPipelineDerivative parameter, VkVertexInputStepRate pCreateInfo->pVertexInputState->pVertexBindingDescriptions->stepRate, is unrecognized enumerator");
5325 return;
5326 }
5327 if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions == nullptr)
5328 {
5329 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5330 "vkCreateGraphicsPipelineDerivative parameter, const VkVertexInputAttributeDescription* pCreateInfo->pVertexInputState->pVertexAttributeDescriptions, is null pointer");
5331 return;
5332 }
5333 if(pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format < VK_FORMAT_BEGIN_RANGE ||
5334 pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format > VK_FORMAT_END_RANGE)
5335 {
5336 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5337 "vkCreateGraphicsPipelineDerivative parameter, VkFormat pCreateInfo->pVertexInputState->pVertexAttributeDescriptions->format, is unrecognized enumerator");
5338 return;
5339 }
5340 if(pCreateInfo->pIaState == nullptr)
5341 {
5342 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5343 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineIaStateCreateInfo* pCreateInfo->pIaState, is null pointer");
5344 return;
5345 }
5346 if(pCreateInfo->pIaState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5347 pCreateInfo->pIaState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5348 {
5349 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5350 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pIaState->sType, is unrecognized enumerator");
5351 return;
5352 }
5353 if(pCreateInfo->pIaState->pNext == nullptr)
5354 {
5355 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5356 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pIaState->pNext, is null pointer");
5357 return;
5358 }
5359 if(pCreateInfo->pIaState->topology < VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE ||
5360 pCreateInfo->pIaState->topology > VK_PRIMITIVE_TOPOLOGY_END_RANGE)
5361 {
5362 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5363 "vkCreateGraphicsPipelineDerivative parameter, VkPrimitiveTopology pCreateInfo->pIaState->topology, is unrecognized enumerator");
5364 return;
5365 }
5366 if(pCreateInfo->pTessState == nullptr)
5367 {
5368 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5369 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineTessStateCreateInfo* pCreateInfo->pTessState, is null pointer");
5370 return;
5371 }
5372 if(pCreateInfo->pTessState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5373 pCreateInfo->pTessState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5374 {
5375 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5376 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pTessState->sType, is unrecognized enumerator");
5377 return;
5378 }
5379 if(pCreateInfo->pTessState->pNext == nullptr)
5380 {
5381 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5382 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pTessState->pNext, is null pointer");
5383 return;
5384 }
5385 if(pCreateInfo->pVpState == nullptr)
5386 {
5387 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5388 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineVpStateCreateInfo* pCreateInfo->pVpState, is null pointer");
5389 return;
5390 }
5391 if(pCreateInfo->pVpState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5392 pCreateInfo->pVpState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5393 {
5394 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5395 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pVpState->sType, is unrecognized enumerator");
5396 return;
5397 }
5398 if(pCreateInfo->pVpState->pNext == nullptr)
5399 {
5400 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5401 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pVpState->pNext, is null pointer");
5402 return;
5403 }
5404 if(pCreateInfo->pVpState->clipOrigin < VK_COORDINATE_ORIGIN_BEGIN_RANGE ||
5405 pCreateInfo->pVpState->clipOrigin > VK_COORDINATE_ORIGIN_END_RANGE)
5406 {
5407 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5408 "vkCreateGraphicsPipelineDerivative parameter, VkCoordinateOrigin pCreateInfo->pVpState->clipOrigin, is unrecognized enumerator");
5409 return;
5410 }
5411 if(pCreateInfo->pVpState->depthMode < VK_DEPTH_MODE_BEGIN_RANGE ||
5412 pCreateInfo->pVpState->depthMode > VK_DEPTH_MODE_END_RANGE)
5413 {
5414 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5415 "vkCreateGraphicsPipelineDerivative parameter, VkDepthMode pCreateInfo->pVpState->depthMode, is unrecognized enumerator");
5416 return;
5417 }
5418 if(pCreateInfo->pRsState == nullptr)
5419 {
5420 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5421 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineRsStateCreateInfo* pCreateInfo->pRsState, is null pointer");
5422 return;
5423 }
5424 if(pCreateInfo->pRsState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5425 pCreateInfo->pRsState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5426 {
5427 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5428 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pRsState->sType, is unrecognized enumerator");
5429 return;
5430 }
5431 if(pCreateInfo->pRsState->pNext == nullptr)
5432 {
5433 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5434 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pRsState->pNext, is null pointer");
5435 return;
5436 }
5437 if(pCreateInfo->pRsState->pointOrigin < VK_COORDINATE_ORIGIN_BEGIN_RANGE ||
5438 pCreateInfo->pRsState->pointOrigin > VK_COORDINATE_ORIGIN_END_RANGE)
5439 {
5440 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5441 "vkCreateGraphicsPipelineDerivative parameter, VkCoordinateOrigin pCreateInfo->pRsState->pointOrigin, is unrecognized enumerator");
5442 return;
5443 }
5444 if(pCreateInfo->pRsState->provokingVertex < VK_PROVOKING_VERTEX_BEGIN_RANGE ||
5445 pCreateInfo->pRsState->provokingVertex > VK_PROVOKING_VERTEX_END_RANGE)
5446 {
5447 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5448 "vkCreateGraphicsPipelineDerivative parameter, VkProvokingVertex pCreateInfo->pRsState->provokingVertex, is unrecognized enumerator");
5449 return;
5450 }
5451 if(pCreateInfo->pRsState->fillMode < VK_FILL_MODE_BEGIN_RANGE ||
5452 pCreateInfo->pRsState->fillMode > VK_FILL_MODE_END_RANGE)
5453 {
5454 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5455 "vkCreateGraphicsPipelineDerivative parameter, VkFillMode pCreateInfo->pRsState->fillMode, is unrecognized enumerator");
5456 return;
5457 }
5458 if(pCreateInfo->pRsState->cullMode < VK_CULL_MODE_BEGIN_RANGE ||
5459 pCreateInfo->pRsState->cullMode > VK_CULL_MODE_END_RANGE)
5460 {
5461 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5462 "vkCreateGraphicsPipelineDerivative parameter, VkCullMode pCreateInfo->pRsState->cullMode, is unrecognized enumerator");
5463 return;
5464 }
5465 if(pCreateInfo->pRsState->frontFace < VK_FRONT_FACE_BEGIN_RANGE ||
5466 pCreateInfo->pRsState->frontFace > VK_FRONT_FACE_END_RANGE)
5467 {
5468 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5469 "vkCreateGraphicsPipelineDerivative parameter, VkFrontFace pCreateInfo->pRsState->frontFace, is unrecognized enumerator");
5470 return;
5471 }
5472 if(pCreateInfo->pMsState == nullptr)
5473 {
5474 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5475 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineMsStateCreateInfo* pCreateInfo->pMsState, is null pointer");
5476 return;
5477 }
5478 if(pCreateInfo->pMsState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5479 pCreateInfo->pMsState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5480 {
5481 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5482 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pMsState->sType, is unrecognized enumerator");
5483 return;
5484 }
5485 if(pCreateInfo->pMsState->pNext == nullptr)
5486 {
5487 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5488 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pMsState->pNext, is null pointer");
5489 return;
5490 }
5491 if(pCreateInfo->pDsState == nullptr)
5492 {
5493 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5494 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineDsStateCreateInfo* pCreateInfo->pDsState, is null pointer");
5495 return;
5496 }
5497 if(pCreateInfo->pDsState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5498 pCreateInfo->pDsState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5499 {
5500 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5501 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pDsState->sType, is unrecognized enumerator");
5502 return;
5503 }
5504 if(pCreateInfo->pDsState->pNext == nullptr)
5505 {
5506 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5507 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pDsState->pNext, is null pointer");
5508 return;
5509 }
5510 if(pCreateInfo->pDsState->format < VK_FORMAT_BEGIN_RANGE ||
5511 pCreateInfo->pDsState->format > VK_FORMAT_END_RANGE)
5512 {
5513 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5514 "vkCreateGraphicsPipelineDerivative parameter, VkFormat pCreateInfo->pDsState->format, is unrecognized enumerator");
5515 return;
5516 }
5517 if(pCreateInfo->pDsState->depthCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
5518 pCreateInfo->pDsState->depthCompareOp > VK_COMPARE_OP_END_RANGE)
5519 {
5520 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5521 "vkCreateGraphicsPipelineDerivative parameter, VkCompareOp pCreateInfo->pDsState->depthCompareOp, is unrecognized enumerator");
5522 return;
5523 }
5524 if(pCreateInfo->pDsState->front.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5525 pCreateInfo->pDsState->front.stencilFailOp > VK_STENCIL_OP_END_RANGE)
5526 {
5527 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5528 "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->front.stencilFailOp, is unrecognized enumerator");
5529 return;
5530 }
5531 if(pCreateInfo->pDsState->front.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE ||
5532 pCreateInfo->pDsState->front.stencilPassOp > VK_STENCIL_OP_END_RANGE)
5533 {
5534 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5535 "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->front.stencilPassOp, is unrecognized enumerator");
5536 return;
5537 }
5538 if(pCreateInfo->pDsState->front.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5539 pCreateInfo->pDsState->front.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE)
5540 {
5541 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5542 "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->front.stencilDepthFailOp, is unrecognized enumerator");
5543 return;
5544 }
5545 if(pCreateInfo->pDsState->front.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
5546 pCreateInfo->pDsState->front.stencilCompareOp > VK_COMPARE_OP_END_RANGE)
5547 {
5548 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5549 "vkCreateGraphicsPipelineDerivative parameter, VkCompareOp pCreateInfo->pDsState->front.stencilCompareOp, is unrecognized enumerator");
5550 return;
5551 }
5552 if(pCreateInfo->pDsState->back.stencilFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5553 pCreateInfo->pDsState->back.stencilFailOp > VK_STENCIL_OP_END_RANGE)
5554 {
5555 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5556 "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->back.stencilFailOp, is unrecognized enumerator");
5557 return;
5558 }
5559 if(pCreateInfo->pDsState->back.stencilPassOp < VK_STENCIL_OP_BEGIN_RANGE ||
5560 pCreateInfo->pDsState->back.stencilPassOp > VK_STENCIL_OP_END_RANGE)
5561 {
5562 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5563 "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->back.stencilPassOp, is unrecognized enumerator");
5564 return;
5565 }
5566 if(pCreateInfo->pDsState->back.stencilDepthFailOp < VK_STENCIL_OP_BEGIN_RANGE ||
5567 pCreateInfo->pDsState->back.stencilDepthFailOp > VK_STENCIL_OP_END_RANGE)
5568 {
5569 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5570 "vkCreateGraphicsPipelineDerivative parameter, VkStencilOp pCreateInfo->pDsState->back.stencilDepthFailOp, is unrecognized enumerator");
5571 return;
5572 }
5573 if(pCreateInfo->pDsState->back.stencilCompareOp < VK_COMPARE_OP_BEGIN_RANGE ||
5574 pCreateInfo->pDsState->back.stencilCompareOp > VK_COMPARE_OP_END_RANGE)
5575 {
5576 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5577 "vkCreateGraphicsPipelineDerivative parameter, VkCompareOp pCreateInfo->pDsState->back.stencilCompareOp, is unrecognized enumerator");
5578 return;
5579 }
5580 if(pCreateInfo->pCbState == nullptr)
5581 {
5582 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5583 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineCbStateCreateInfo* pCreateInfo->pCbState, is null pointer");
5584 return;
5585 }
5586 if(pCreateInfo->pCbState->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5587 pCreateInfo->pCbState->sType > VK_STRUCTURE_TYPE_END_RANGE)
5588 {
5589 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5590 "vkCreateGraphicsPipelineDerivative parameter, VkStructureType pCreateInfo->pCbState->sType, is unrecognized enumerator");
5591 return;
5592 }
5593 if(pCreateInfo->pCbState->pNext == nullptr)
5594 {
5595 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5596 "vkCreateGraphicsPipelineDerivative parameter, const void* pCreateInfo->pCbState->pNext, is null pointer");
5597 return;
5598 }
5599 if(pCreateInfo->pCbState->logicOp < VK_LOGIC_OP_BEGIN_RANGE ||
5600 pCreateInfo->pCbState->logicOp > VK_LOGIC_OP_END_RANGE)
5601 {
5602 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5603 "vkCreateGraphicsPipelineDerivative parameter, VkLogicOp pCreateInfo->pCbState->logicOp, is unrecognized enumerator");
5604 return;
5605 }
5606 if(pCreateInfo->pCbState->pAttachments == nullptr)
5607 {
5608 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5609 "vkCreateGraphicsPipelineDerivative parameter, const VkPipelineCbAttachmentState* pCreateInfo->pCbState->pAttachments, is null pointer");
5610 return;
5611 }
5612 if(pCreateInfo->pCbState->pAttachments->format < VK_FORMAT_BEGIN_RANGE ||
5613 pCreateInfo->pCbState->pAttachments->format > VK_FORMAT_END_RANGE)
5614 {
5615 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5616 "vkCreateGraphicsPipelineDerivative parameter, VkFormat pCreateInfo->pCbState->pAttachments->format, is unrecognized enumerator");
5617 return;
5618 }
5619 if(pCreateInfo->pCbState->pAttachments->srcBlendColor < VK_BLEND_BEGIN_RANGE ||
5620 pCreateInfo->pCbState->pAttachments->srcBlendColor > VK_BLEND_END_RANGE)
5621 {
5622 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5623 "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendColor, is unrecognized enumerator");
5624 return;
5625 }
5626 if(pCreateInfo->pCbState->pAttachments->destBlendColor < VK_BLEND_BEGIN_RANGE ||
5627 pCreateInfo->pCbState->pAttachments->destBlendColor > VK_BLEND_END_RANGE)
5628 {
5629 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5630 "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendColor, is unrecognized enumerator");
5631 return;
5632 }
5633 if(pCreateInfo->pCbState->pAttachments->blendOpColor < VK_BLEND_OP_BEGIN_RANGE ||
5634 pCreateInfo->pCbState->pAttachments->blendOpColor > VK_BLEND_OP_END_RANGE)
5635 {
5636 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5637 "vkCreateGraphicsPipelineDerivative parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpColor, is unrecognized enumerator");
5638 return;
5639 }
5640 if(pCreateInfo->pCbState->pAttachments->srcBlendAlpha < VK_BLEND_BEGIN_RANGE ||
5641 pCreateInfo->pCbState->pAttachments->srcBlendAlpha > VK_BLEND_END_RANGE)
5642 {
5643 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5644 "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->srcBlendAlpha, is unrecognized enumerator");
5645 return;
5646 }
5647 if(pCreateInfo->pCbState->pAttachments->destBlendAlpha < VK_BLEND_BEGIN_RANGE ||
5648 pCreateInfo->pCbState->pAttachments->destBlendAlpha > VK_BLEND_END_RANGE)
5649 {
5650 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5651 "vkCreateGraphicsPipelineDerivative parameter, VkBlend pCreateInfo->pCbState->pAttachments->destBlendAlpha, is unrecognized enumerator");
5652 return;
5653 }
5654 if(pCreateInfo->pCbState->pAttachments->blendOpAlpha < VK_BLEND_OP_BEGIN_RANGE ||
5655 pCreateInfo->pCbState->pAttachments->blendOpAlpha > VK_BLEND_OP_END_RANGE)
5656 {
5657 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5658 "vkCreateGraphicsPipelineDerivative parameter, VkBlendOp pCreateInfo->pCbState->pAttachments->blendOpAlpha, is unrecognized enumerator");
5659 return;
5660 }
5661 if(!ValidateEnumerator((VkChannelFlagBits)pCreateInfo->pCbState->pAttachments->channelWriteMask))
5662 {
5663 std::string reason = "vkCreateGraphicsPipelineDerivative parameter, VkChannelFlags pCreateInfo->pCbState->pAttachments->channelWriteMask, is " + EnumeratorString((VkChannelFlagBits)pCreateInfo->pCbState->pAttachments->channelWriteMask);
5664 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5665 return;
5666 }
5667 if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags))
5668 {
5669 std::string reason = "vkCreateGraphicsPipelineDerivative parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags);
5670 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5671 return;
5672 }
5673 if(pCreateInfo->layout == nullptr)
5674 {
5675 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5676 "vkCreateGraphicsPipelineDerivative parameter, VkPipelineLayout pCreateInfo->layout, is null pointer");
5677 return;
5678 }
5679}
5680
5681void PostCreateGraphicsPipelineDerivative(
5682 VkDevice device,
5683 VkPipeline basePipeline,
5684 VkPipeline* pPipeline,
5685 VkResult result)
5686{
5687 if(device == nullptr)
5688 {
5689 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5690 "vkCreateGraphicsPipelineDerivative parameter, VkDevice device, is null pointer");
5691 return;
5692 }
5693
5694 if(basePipeline == nullptr)
5695 {
5696 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5697 "vkCreateGraphicsPipelineDerivative parameter, VkPipeline basePipeline, is null pointer");
5698 return;
5699 }
5700
5701 if(pPipeline == nullptr)
5702 {
5703 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5704 "vkCreateGraphicsPipelineDerivative parameter, VkPipeline* pPipeline, is null pointer");
5705 return;
5706 }
5707 if((*pPipeline) == nullptr)
5708 {
5709 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5710 "vkCreateGraphicsPipelineDerivative parameter, VkPipeline* pPipeline, is null pointer");
5711 return;
5712 }
5713
5714 if(result != VK_SUCCESS)
5715 {
5716 std::string reason = "vkCreateGraphicsPipelineDerivative parameter, VkResult result, is " + EnumeratorString(result);
5717 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5718 return;
5719 }
5720}
5721
5722VK_LAYER_EXPORT VkResult VKAPI vkCreateGraphicsPipelineDerivative(
5723 VkDevice device,
5724 const VkGraphicsPipelineCreateInfo* pCreateInfo,
5725 VkPipeline basePipeline,
5726 VkPipeline* pPipeline)
5727{
5728 PreCreateGraphicsPipelineDerivative(device, pCreateInfo);
5729 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, pPipeline);
5730
5731 PostCreateGraphicsPipelineDerivative(device, basePipeline, pPipeline, result);
5732
5733 return result;
5734}
5735
5736void PreCreateComputePipeline(
5737 VkDevice device,
5738 const VkComputePipelineCreateInfo* pCreateInfo)
5739{
5740 if(device == nullptr)
5741 {
5742 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5743 "vkCreateComputePipeline parameter, VkDevice device, is null pointer");
5744 return;
5745 }
5746
5747 if(pCreateInfo == nullptr)
5748 {
5749 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5750 "vkCreateComputePipeline parameter, const VkComputePipelineCreateInfo* pCreateInfo, is null pointer");
5751 return;
5752 }
5753 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5754 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
5755 {
5756 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5757 "vkCreateComputePipeline parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
5758 return;
5759 }
5760 if(pCreateInfo->cs.sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
5761 pCreateInfo->cs.sType > VK_STRUCTURE_TYPE_END_RANGE)
5762 {
5763 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5764 "vkCreateComputePipeline parameter, VkStructureType pCreateInfo->cs.sType, is unrecognized enumerator");
5765 return;
5766 }
5767 if(pCreateInfo->cs.pNext == nullptr)
5768 {
5769 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5770 "vkCreateComputePipeline parameter, const void* pCreateInfo->cs.pNext, is null pointer");
5771 return;
5772 }
5773 if(pCreateInfo->cs.stage < VK_SHADER_STAGE_BEGIN_RANGE ||
5774 pCreateInfo->cs.stage > VK_SHADER_STAGE_END_RANGE)
5775 {
5776 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5777 "vkCreateComputePipeline parameter, VkShaderStage pCreateInfo->cs.stage, is unrecognized enumerator");
5778 return;
5779 }
5780 if(pCreateInfo->cs.shader == nullptr)
5781 {
5782 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5783 "vkCreateComputePipeline parameter, VkShader pCreateInfo->cs.shader, is null pointer");
5784 return;
5785 }
5786 if(pCreateInfo->cs.pLinkConstBufferInfo == nullptr)
5787 {
5788 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5789 "vkCreateComputePipeline parameter, const VkLinkConstBuffer* pCreateInfo->cs.pLinkConstBufferInfo, is null pointer");
5790 return;
5791 }
5792 if(pCreateInfo->cs.pLinkConstBufferInfo->pBufferData == nullptr)
5793 {
5794 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5795 "vkCreateComputePipeline parameter, const void* pCreateInfo->cs.pLinkConstBufferInfo->pBufferData, is null pointer");
5796 return;
5797 }
5798 if(pCreateInfo->cs.pSpecializationInfo == nullptr)
5799 {
5800 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5801 "vkCreateComputePipeline parameter, const VkSpecializationInfo* pCreateInfo->cs.pSpecializationInfo, is null pointer");
5802 return;
5803 }
5804 if(pCreateInfo->cs.pSpecializationInfo->pMap == nullptr)
5805 {
5806 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5807 "vkCreateComputePipeline parameter, const VkSpecializationMapEntry* pCreateInfo->cs.pSpecializationInfo->pMap, is null pointer");
5808 return;
5809 }
5810 if(pCreateInfo->cs.pSpecializationInfo->pData == nullptr)
5811 {
5812 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5813 "vkCreateComputePipeline parameter, const void* pCreateInfo->cs.pSpecializationInfo->pData, is null pointer");
5814 return;
5815 }
5816 if(!ValidateEnumerator((VkPipelineCreateFlagBits)pCreateInfo->flags))
5817 {
5818 std::string reason = "vkCreateComputePipeline parameter, VkPipelineCreateFlags pCreateInfo->flags, is " + EnumeratorString((VkPipelineCreateFlagBits)pCreateInfo->flags);
5819 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5820 return;
5821 }
5822 if(pCreateInfo->layout == nullptr)
5823 {
5824 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5825 "vkCreateComputePipeline parameter, VkPipelineLayout pCreateInfo->layout, is null pointer");
5826 return;
5827 }
5828}
5829
5830void PostCreateComputePipeline(
5831 VkDevice device,
5832 VkPipeline* pPipeline,
5833 VkResult result)
5834{
5835 if(device == nullptr)
5836 {
5837 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5838 "vkCreateComputePipeline parameter, VkDevice device, is null pointer");
5839 return;
5840 }
5841
5842 if(pPipeline == nullptr)
5843 {
5844 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5845 "vkCreateComputePipeline parameter, VkPipeline* pPipeline, is null pointer");
5846 return;
5847 }
5848 if((*pPipeline) == nullptr)
5849 {
5850 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5851 "vkCreateComputePipeline parameter, VkPipeline* pPipeline, is null pointer");
5852 return;
5853 }
5854
5855 if(result != VK_SUCCESS)
5856 {
5857 std::string reason = "vkCreateComputePipeline parameter, VkResult result, is " + EnumeratorString(result);
5858 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5859 return;
5860 }
5861}
5862
5863VK_LAYER_EXPORT VkResult VKAPI vkCreateComputePipeline(
5864 VkDevice device,
5865 const VkComputePipelineCreateInfo* pCreateInfo,
5866 VkPipeline* pPipeline)
5867{
5868 PreCreateComputePipeline(device, pCreateInfo);
5869 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateComputePipeline(device, pCreateInfo, pPipeline);
5870
5871 PostCreateComputePipeline(device, pPipeline, result);
5872
5873 return result;
5874}
5875
5876void PreStorePipeline(
5877 VkDevice device)
5878{
5879 if(device == nullptr)
5880 {
5881 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5882 "vkStorePipeline parameter, VkDevice device, is null pointer");
5883 return;
5884 }
5885}
5886
5887void PostStorePipeline(
5888 VkDevice device,
5889 VkPipeline pipeline,
5890 size_t* pDataSize,
5891 void* pData,
5892 VkResult result)
5893{
5894 if(device == nullptr)
5895 {
5896 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5897 "vkStorePipeline parameter, VkDevice device, is null pointer");
5898 return;
5899 }
5900
5901 if(pipeline == nullptr)
5902 {
5903 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5904 "vkStorePipeline parameter, VkPipeline pipeline, is null pointer");
5905 return;
5906 }
5907
5908 if(pDataSize == nullptr)
5909 {
5910 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5911 "vkStorePipeline parameter, size_t* pDataSize, is null pointer");
5912 return;
5913 }
5914
5915 if(pData == nullptr)
5916 {
5917 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5918 "vkStorePipeline parameter, void* pData, is null pointer");
5919 return;
5920 }
5921
5922 if(result != VK_SUCCESS)
5923 {
5924 std::string reason = "vkStorePipeline parameter, VkResult result, is " + EnumeratorString(result);
5925 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5926 return;
5927 }
5928}
5929
5930VK_LAYER_EXPORT VkResult VKAPI vkStorePipeline(
5931 VkDevice device,
5932 VkPipeline pipeline,
5933 size_t* pDataSize,
5934 void* pData)
5935{
5936 PreStorePipeline(device);
5937 VkResult result = get_dispatch_table(pc_device_table_map, device)->StorePipeline(device, pipeline, pDataSize, pData);
5938
5939 PostStorePipeline(device, pipeline, pDataSize, pData, result);
5940
5941 return result;
5942}
5943
5944void PreLoadPipeline(
5945 VkDevice device,
5946 const void* pData)
5947{
5948 if(device == nullptr)
5949 {
5950 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5951 "vkLoadPipeline parameter, VkDevice device, is null pointer");
5952 return;
5953 }
5954
5955 if(pData == nullptr)
5956 {
5957 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5958 "vkLoadPipeline parameter, const void* pData, is null pointer");
5959 return;
5960 }
5961}
5962
5963void PostLoadPipeline(
5964 VkDevice device,
5965 size_t dataSize,
5966 VkPipeline* pPipeline,
5967 VkResult result)
5968{
5969 if(device == nullptr)
5970 {
5971 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5972 "vkLoadPipeline parameter, VkDevice device, is null pointer");
5973 return;
5974 }
5975
5976
5977 if(pPipeline == nullptr)
5978 {
5979 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5980 "vkLoadPipeline parameter, VkPipeline* pPipeline, is null pointer");
5981 return;
5982 }
5983 if((*pPipeline) == nullptr)
5984 {
5985 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
5986 "vkLoadPipeline parameter, VkPipeline* pPipeline, is null pointer");
5987 return;
5988 }
5989
5990 if(result != VK_SUCCESS)
5991 {
5992 std::string reason = "vkLoadPipeline parameter, VkResult result, is " + EnumeratorString(result);
5993 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
5994 return;
5995 }
5996}
5997
5998VK_LAYER_EXPORT VkResult VKAPI vkLoadPipeline(
5999 VkDevice device,
6000 size_t dataSize,
6001 const void* pData,
6002 VkPipeline* pPipeline)
6003{
6004 PreLoadPipeline(device, pData);
6005 VkResult result = get_dispatch_table(pc_device_table_map, device)->LoadPipeline(device, dataSize, pData, pPipeline);
6006
6007 PostLoadPipeline(device, dataSize, pPipeline, result);
6008
6009 return result;
6010}
6011
6012void PreLoadPipelineDerivative(
6013 VkDevice device,
6014 const void* pData)
6015{
6016 if(device == nullptr)
6017 {
6018 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6019 "vkLoadPipelineDerivative parameter, VkDevice device, is null pointer");
6020 return;
6021 }
6022
6023 if(pData == nullptr)
6024 {
6025 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6026 "vkLoadPipelineDerivative parameter, const void* pData, is null pointer");
6027 return;
6028 }
6029}
6030
6031void PostLoadPipelineDerivative(
6032 VkDevice device,
6033 size_t dataSize,
6034 VkPipeline basePipeline,
6035 VkPipeline* pPipeline,
6036 VkResult result)
6037{
6038 if(device == nullptr)
6039 {
6040 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6041 "vkLoadPipelineDerivative parameter, VkDevice device, is null pointer");
6042 return;
6043 }
6044
6045
6046 if(basePipeline == nullptr)
6047 {
6048 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6049 "vkLoadPipelineDerivative parameter, VkPipeline basePipeline, is null pointer");
6050 return;
6051 }
6052
6053 if(pPipeline == nullptr)
6054 {
6055 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6056 "vkLoadPipelineDerivative parameter, VkPipeline* pPipeline, is null pointer");
6057 return;
6058 }
6059 if((*pPipeline) == nullptr)
6060 {
6061 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6062 "vkLoadPipelineDerivative parameter, VkPipeline* pPipeline, is null pointer");
6063 return;
6064 }
6065
6066 if(result != VK_SUCCESS)
6067 {
6068 std::string reason = "vkLoadPipelineDerivative parameter, VkResult result, is " + EnumeratorString(result);
6069 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6070 return;
6071 }
6072}
6073
6074VK_LAYER_EXPORT VkResult VKAPI vkLoadPipelineDerivative(
6075 VkDevice device,
6076 size_t dataSize,
6077 const void* pData,
6078 VkPipeline basePipeline,
6079 VkPipeline* pPipeline)
6080{
6081 PreLoadPipelineDerivative(device, pData);
6082 VkResult result = get_dispatch_table(pc_device_table_map, device)->LoadPipelineDerivative(device, dataSize, pData, basePipeline, pPipeline);
6083
6084 PostLoadPipelineDerivative(device, dataSize, basePipeline, pPipeline, result);
6085
6086 return result;
6087}
6088
6089void PreCreatePipelineLayout(
6090 VkDevice device,
6091 const VkPipelineLayoutCreateInfo* pCreateInfo)
6092{
6093 if(device == nullptr)
6094 {
6095 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6096 "vkCreatePipelineLayout parameter, VkDevice device, is null pointer");
6097 return;
6098 }
6099
6100 if(pCreateInfo == nullptr)
6101 {
6102 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6103 "vkCreatePipelineLayout parameter, const VkPipelineLayoutCreateInfo* pCreateInfo, is null pointer");
6104 return;
6105 }
6106 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6107 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
6108 {
6109 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6110 "vkCreatePipelineLayout parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
6111 return;
6112 }
6113 if(pCreateInfo->pSetLayouts == nullptr)
6114 {
6115 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6116 "vkCreatePipelineLayout parameter, const VkDescriptorSetLayout* pCreateInfo->pSetLayouts, is null pointer");
6117 return;
6118 }
6119 if((*pCreateInfo->pSetLayouts) == nullptr)
6120 {
6121 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6122 "vkCreatePipelineLayout parameter, const VkDescriptorSetLayout* pCreateInfo->pSetLayouts, is null pointer");
6123 return;
6124 }
6125}
6126
6127void PostCreatePipelineLayout(
6128 VkDevice device,
6129 VkPipelineLayout* pPipelineLayout,
6130 VkResult result)
6131{
6132 if(device == nullptr)
6133 {
6134 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6135 "vkCreatePipelineLayout parameter, VkDevice device, is null pointer");
6136 return;
6137 }
6138
6139 if(pPipelineLayout == nullptr)
6140 {
6141 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6142 "vkCreatePipelineLayout parameter, VkPipelineLayout* pPipelineLayout, is null pointer");
6143 return;
6144 }
6145 if((*pPipelineLayout) == nullptr)
6146 {
6147 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6148 "vkCreatePipelineLayout parameter, VkPipelineLayout* pPipelineLayout, is null pointer");
6149 return;
6150 }
6151
6152 if(result != VK_SUCCESS)
6153 {
6154 std::string reason = "vkCreatePipelineLayout parameter, VkResult result, is " + EnumeratorString(result);
6155 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6156 return;
6157 }
6158}
6159
6160VK_LAYER_EXPORT VkResult VKAPI vkCreatePipelineLayout(
6161 VkDevice device,
6162 const VkPipelineLayoutCreateInfo* pCreateInfo,
6163 VkPipelineLayout* pPipelineLayout)
6164{
6165 PreCreatePipelineLayout(device, pCreateInfo);
6166 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout);
6167
6168 PostCreatePipelineLayout(device, pPipelineLayout, result);
6169
6170 return result;
6171}
6172
6173void PreCreateSampler(
6174 VkDevice device,
6175 const VkSamplerCreateInfo* pCreateInfo)
6176{
6177 if(device == nullptr)
6178 {
6179 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6180 "vkCreateSampler parameter, VkDevice device, is null pointer");
6181 return;
6182 }
6183
6184 if(pCreateInfo == nullptr)
6185 {
6186 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6187 "vkCreateSampler parameter, const VkSamplerCreateInfo* pCreateInfo, is null pointer");
6188 return;
6189 }
6190 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6191 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
6192 {
6193 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6194 "vkCreateSampler parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
6195 return;
6196 }
6197 if(pCreateInfo->magFilter < VK_TEX_FILTER_BEGIN_RANGE ||
6198 pCreateInfo->magFilter > VK_TEX_FILTER_END_RANGE)
6199 {
6200 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6201 "vkCreateSampler parameter, VkTexFilter pCreateInfo->magFilter, is unrecognized enumerator");
6202 return;
6203 }
6204 if(pCreateInfo->minFilter < VK_TEX_FILTER_BEGIN_RANGE ||
6205 pCreateInfo->minFilter > VK_TEX_FILTER_END_RANGE)
6206 {
6207 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6208 "vkCreateSampler parameter, VkTexFilter pCreateInfo->minFilter, is unrecognized enumerator");
6209 return;
6210 }
6211 if(pCreateInfo->mipMode < VK_TEX_MIPMAP_MODE_BEGIN_RANGE ||
6212 pCreateInfo->mipMode > VK_TEX_MIPMAP_MODE_END_RANGE)
6213 {
6214 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6215 "vkCreateSampler parameter, VkTexMipmapMode pCreateInfo->mipMode, is unrecognized enumerator");
6216 return;
6217 }
6218 if(pCreateInfo->addressU < VK_TEX_ADDRESS_BEGIN_RANGE ||
6219 pCreateInfo->addressU > VK_TEX_ADDRESS_END_RANGE)
6220 {
6221 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6222 "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressU, is unrecognized enumerator");
6223 return;
6224 }
6225 if(pCreateInfo->addressV < VK_TEX_ADDRESS_BEGIN_RANGE ||
6226 pCreateInfo->addressV > VK_TEX_ADDRESS_END_RANGE)
6227 {
6228 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6229 "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressV, is unrecognized enumerator");
6230 return;
6231 }
6232 if(pCreateInfo->addressW < VK_TEX_ADDRESS_BEGIN_RANGE ||
6233 pCreateInfo->addressW > VK_TEX_ADDRESS_END_RANGE)
6234 {
6235 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6236 "vkCreateSampler parameter, VkTexAddress pCreateInfo->addressW, is unrecognized enumerator");
6237 return;
6238 }
6239 if(pCreateInfo->compareOp < VK_COMPARE_OP_BEGIN_RANGE ||
6240 pCreateInfo->compareOp > VK_COMPARE_OP_END_RANGE)
6241 {
6242 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6243 "vkCreateSampler parameter, VkCompareOp pCreateInfo->compareOp, is unrecognized enumerator");
6244 return;
6245 }
6246 if(pCreateInfo->borderColor < VK_BORDER_COLOR_BEGIN_RANGE ||
6247 pCreateInfo->borderColor > VK_BORDER_COLOR_END_RANGE)
6248 {
6249 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6250 "vkCreateSampler parameter, VkBorderColor pCreateInfo->borderColor, is unrecognized enumerator");
6251 return;
6252 }
6253}
6254
6255void PostCreateSampler(
6256 VkDevice device,
6257 VkSampler* pSampler,
6258 VkResult result)
6259{
6260 if(device == nullptr)
6261 {
6262 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6263 "vkCreateSampler parameter, VkDevice device, is null pointer");
6264 return;
6265 }
6266
6267 if(pSampler == nullptr)
6268 {
6269 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6270 "vkCreateSampler parameter, VkSampler* pSampler, is null pointer");
6271 return;
6272 }
6273 if((*pSampler) == nullptr)
6274 {
6275 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6276 "vkCreateSampler parameter, VkSampler* pSampler, is null pointer");
6277 return;
6278 }
6279
6280 if(result != VK_SUCCESS)
6281 {
6282 std::string reason = "vkCreateSampler parameter, VkResult result, is " + EnumeratorString(result);
6283 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6284 return;
6285 }
6286}
6287
6288VK_LAYER_EXPORT VkResult VKAPI vkCreateSampler(
6289 VkDevice device,
6290 const VkSamplerCreateInfo* pCreateInfo,
6291 VkSampler* pSampler)
6292{
6293 PreCreateSampler(device, pCreateInfo);
6294 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateSampler(device, pCreateInfo, pSampler);
6295
6296 PostCreateSampler(device, pSampler, result);
6297
6298 return result;
6299}
6300
6301void PreCreateDescriptorSetLayout(
6302 VkDevice device,
6303 const VkDescriptorSetLayoutCreateInfo* pCreateInfo)
6304{
6305 if(device == nullptr)
6306 {
6307 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6308 "vkCreateDescriptorSetLayout parameter, VkDevice device, is null pointer");
6309 return;
6310 }
6311
6312 if(pCreateInfo == nullptr)
6313 {
6314 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6315 "vkCreateDescriptorSetLayout parameter, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, is null pointer");
6316 return;
6317 }
6318 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6319 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
6320 {
6321 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6322 "vkCreateDescriptorSetLayout parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
6323 return;
6324 }
6325 if(pCreateInfo->pBinding == nullptr)
6326 {
6327 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6328 "vkCreateDescriptorSetLayout parameter, const VkDescriptorSetLayoutBinding* pCreateInfo->pBinding, is null pointer");
6329 return;
6330 }
6331 if(pCreateInfo->pBinding->descriptorType < VK_DESCRIPTOR_TYPE_BEGIN_RANGE ||
6332 pCreateInfo->pBinding->descriptorType > VK_DESCRIPTOR_TYPE_END_RANGE)
6333 {
6334 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6335 "vkCreateDescriptorSetLayout parameter, VkDescriptorType pCreateInfo->pBinding->descriptorType, is unrecognized enumerator");
6336 return;
6337 }
6338 if(!ValidateEnumerator((VkShaderStageFlagBits)pCreateInfo->pBinding->stageFlags))
6339 {
6340 std::string reason = "vkCreateDescriptorSetLayout parameter, VkShaderStageFlags pCreateInfo->pBinding->stageFlags, is " + EnumeratorString((VkShaderStageFlagBits)pCreateInfo->pBinding->stageFlags);
6341 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6342 return;
6343 }
6344 if(pCreateInfo->pBinding->pImmutableSamplers == nullptr)
6345 {
6346 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6347 "vkCreateDescriptorSetLayout parameter, const VkSampler* pCreateInfo->pBinding->pImmutableSamplers, is null pointer");
6348 return;
6349 }
6350 if((*pCreateInfo->pBinding->pImmutableSamplers) == nullptr)
6351 {
6352 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6353 "vkCreateDescriptorSetLayout parameter, const VkSampler* pCreateInfo->pBinding->pImmutableSamplers, is null pointer");
6354 return;
6355 }
6356}
6357
6358void PostCreateDescriptorSetLayout(
6359 VkDevice device,
6360 VkDescriptorSetLayout* pSetLayout,
6361 VkResult result)
6362{
6363 if(device == nullptr)
6364 {
6365 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6366 "vkCreateDescriptorSetLayout parameter, VkDevice device, is null pointer");
6367 return;
6368 }
6369
6370 if(pSetLayout == nullptr)
6371 {
6372 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6373 "vkCreateDescriptorSetLayout parameter, VkDescriptorSetLayout* pSetLayout, is null pointer");
6374 return;
6375 }
6376 if((*pSetLayout) == nullptr)
6377 {
6378 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6379 "vkCreateDescriptorSetLayout parameter, VkDescriptorSetLayout* pSetLayout, is null pointer");
6380 return;
6381 }
6382
6383 if(result != VK_SUCCESS)
6384 {
6385 std::string reason = "vkCreateDescriptorSetLayout parameter, VkResult result, is " + EnumeratorString(result);
6386 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6387 return;
6388 }
6389}
6390
6391VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(
6392 VkDevice device,
6393 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
6394 VkDescriptorSetLayout* pSetLayout)
6395{
6396 PreCreateDescriptorSetLayout(device, pCreateInfo);
6397 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout);
6398
6399 PostCreateDescriptorSetLayout(device, pSetLayout, result);
6400
6401 return result;
6402}
6403
6404void PreCreateDescriptorPool(
6405 VkDevice device,
6406 const VkDescriptorPoolCreateInfo* pCreateInfo)
6407{
6408 if(device == nullptr)
6409 {
6410 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6411 "vkCreateDescriptorPool parameter, VkDevice device, is null pointer");
6412 return;
6413 }
6414
6415 if(pCreateInfo == nullptr)
6416 {
6417 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6418 "vkCreateDescriptorPool parameter, const VkDescriptorPoolCreateInfo* pCreateInfo, is null pointer");
6419 return;
6420 }
6421 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6422 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
6423 {
6424 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6425 "vkCreateDescriptorPool parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
6426 return;
6427 }
6428 if(pCreateInfo->pTypeCount == nullptr)
6429 {
6430 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6431 "vkCreateDescriptorPool parameter, const VkDescriptorTypeCount* pCreateInfo->pTypeCount, is null pointer");
6432 return;
6433 }
6434 if(pCreateInfo->pTypeCount->type < VK_DESCRIPTOR_TYPE_BEGIN_RANGE ||
6435 pCreateInfo->pTypeCount->type > VK_DESCRIPTOR_TYPE_END_RANGE)
6436 {
6437 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6438 "vkCreateDescriptorPool parameter, VkDescriptorType pCreateInfo->pTypeCount->type, is unrecognized enumerator");
6439 return;
6440 }
6441}
6442
6443void PostCreateDescriptorPool(
6444 VkDevice device,
6445 VkDescriptorPoolUsage poolUsage,
6446 uint32_t maxSets,
6447 VkDescriptorPool* pDescriptorPool,
6448 VkResult result)
6449{
6450 if(device == nullptr)
6451 {
6452 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6453 "vkCreateDescriptorPool parameter, VkDevice device, is null pointer");
6454 return;
6455 }
6456
6457 if(poolUsage < VK_DESCRIPTOR_POOL_USAGE_BEGIN_RANGE ||
6458 poolUsage > VK_DESCRIPTOR_POOL_USAGE_END_RANGE)
6459 {
6460 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6461 "vkCreateDescriptorPool parameter, VkDescriptorPoolUsage poolUsage, is unrecognized enumerator");
6462 return;
6463 }
6464
6465
6466 if(pDescriptorPool == nullptr)
6467 {
6468 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6469 "vkCreateDescriptorPool parameter, VkDescriptorPool* pDescriptorPool, is null pointer");
6470 return;
6471 }
6472 if((*pDescriptorPool) == nullptr)
6473 {
6474 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6475 "vkCreateDescriptorPool parameter, VkDescriptorPool* pDescriptorPool, is null pointer");
6476 return;
6477 }
6478
6479 if(result != VK_SUCCESS)
6480 {
6481 std::string reason = "vkCreateDescriptorPool parameter, VkResult result, is " + EnumeratorString(result);
6482 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6483 return;
6484 }
6485}
6486
6487VK_LAYER_EXPORT VkResult VKAPI vkCreateDescriptorPool(
6488 VkDevice device,
6489 VkDescriptorPoolUsage poolUsage,
6490 uint32_t maxSets,
6491 const VkDescriptorPoolCreateInfo* pCreateInfo,
6492 VkDescriptorPool* pDescriptorPool)
6493{
6494 PreCreateDescriptorPool(device, pCreateInfo);
6495 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
6496
6497 PostCreateDescriptorPool(device, poolUsage, maxSets, pDescriptorPool, result);
6498
6499 return result;
6500}
6501
6502void PreResetDescriptorPool(
6503 VkDevice device)
6504{
6505 if(device == nullptr)
6506 {
6507 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6508 "vkResetDescriptorPool parameter, VkDevice device, is null pointer");
6509 return;
6510 }
6511}
6512
6513void PostResetDescriptorPool(
6514 VkDevice device,
6515 VkDescriptorPool descriptorPool,
6516 VkResult result)
6517{
6518 if(device == nullptr)
6519 {
6520 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6521 "vkResetDescriptorPool parameter, VkDevice device, is null pointer");
6522 return;
6523 }
6524
6525 if(descriptorPool == nullptr)
6526 {
6527 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6528 "vkResetDescriptorPool parameter, VkDescriptorPool descriptorPool, is null pointer");
6529 return;
6530 }
6531
6532 if(result != VK_SUCCESS)
6533 {
6534 std::string reason = "vkResetDescriptorPool parameter, VkResult result, is " + EnumeratorString(result);
6535 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6536 return;
6537 }
6538}
6539
6540VK_LAYER_EXPORT VkResult VKAPI vkResetDescriptorPool(
6541 VkDevice device,
6542 VkDescriptorPool descriptorPool)
6543{
6544 PreResetDescriptorPool(device);
6545 VkResult result = get_dispatch_table(pc_device_table_map, device)->ResetDescriptorPool(device, descriptorPool);
6546
6547 PostResetDescriptorPool(device, descriptorPool, result);
6548
6549 return result;
6550}
6551
6552void PreAllocDescriptorSets(
6553 VkDevice device,
6554 const VkDescriptorSetLayout* pSetLayouts)
6555{
6556 if(device == nullptr)
6557 {
6558 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6559 "vkAllocDescriptorSets parameter, VkDevice device, is null pointer");
6560 return;
6561 }
6562
6563 if(pSetLayouts == nullptr)
6564 {
6565 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6566 "vkAllocDescriptorSets parameter, const VkDescriptorSetLayout* pSetLayouts, is null pointer");
6567 return;
6568 }
6569 if((*pSetLayouts) == nullptr)
6570 {
6571 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6572 "vkAllocDescriptorSets parameter, const VkDescriptorSetLayout* pSetLayouts, is null pointer");
6573 return;
6574 }
6575}
6576
6577void PostAllocDescriptorSets(
6578 VkDevice device,
6579 VkDescriptorPool descriptorPool,
6580 VkDescriptorSetUsage setUsage,
6581 uint32_t count,
6582 VkDescriptorSet* pDescriptorSets,
6583 uint32_t* pCount,
6584 VkResult result)
6585{
6586 if(device == nullptr)
6587 {
6588 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6589 "vkAllocDescriptorSets parameter, VkDevice device, is null pointer");
6590 return;
6591 }
6592
6593 if(descriptorPool == nullptr)
6594 {
6595 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6596 "vkAllocDescriptorSets parameter, VkDescriptorPool descriptorPool, is null pointer");
6597 return;
6598 }
6599
6600 if(setUsage < VK_DESCRIPTOR_SET_USAGE_BEGIN_RANGE ||
6601 setUsage > VK_DESCRIPTOR_SET_USAGE_END_RANGE)
6602 {
6603 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6604 "vkAllocDescriptorSets parameter, VkDescriptorSetUsage setUsage, is unrecognized enumerator");
6605 return;
6606 }
6607
6608
6609 if(pDescriptorSets == nullptr)
6610 {
6611 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6612 "vkAllocDescriptorSets parameter, VkDescriptorSet* pDescriptorSets, is null pointer");
6613 return;
6614 }
6615 if((*pDescriptorSets) == nullptr)
6616 {
6617 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6618 "vkAllocDescriptorSets parameter, VkDescriptorSet* pDescriptorSets, is null pointer");
6619 return;
6620 }
6621
6622 if(pCount == nullptr)
6623 {
6624 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6625 "vkAllocDescriptorSets parameter, uint32_t* pCount, is null pointer");
6626 return;
6627 }
6628
6629 if(result != VK_SUCCESS)
6630 {
6631 std::string reason = "vkAllocDescriptorSets parameter, VkResult result, is " + EnumeratorString(result);
6632 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6633 return;
6634 }
6635}
6636
6637VK_LAYER_EXPORT VkResult VKAPI vkAllocDescriptorSets(
6638 VkDevice device,
6639 VkDescriptorPool descriptorPool,
6640 VkDescriptorSetUsage setUsage,
6641 uint32_t count,
6642 const VkDescriptorSetLayout* pSetLayouts,
6643 VkDescriptorSet* pDescriptorSets,
6644 uint32_t* pCount)
6645{
6646 PreAllocDescriptorSets(device, pSetLayouts);
6647 VkResult result = get_dispatch_table(pc_device_table_map, device)->AllocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
6648
6649 PostAllocDescriptorSets(device, descriptorPool, setUsage, count, pDescriptorSets, pCount, result);
6650
6651 return result;
6652}
6653
6654void PreUpdateDescriptorSets(
6655 VkDevice device,
6656 const VkWriteDescriptorSet* pDescriptorWrites,
6657 const VkCopyDescriptorSet* pDescriptorCopies)
6658{
6659 if(device == nullptr)
6660 {
6661 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6662 "vkUpdateDescriptorSets parameter, VkDevice device, is null pointer");
6663 return;
6664 }
6665
6666 if(pDescriptorWrites == nullptr)
6667 {
6668 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6669 "vkUpdateDescriptorSets parameter, const VkWriteDescriptorSet* pDescriptorWrites, is null pointer");
6670 return;
6671 }
6672 if(pDescriptorWrites->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6673 pDescriptorWrites->sType > VK_STRUCTURE_TYPE_END_RANGE)
6674 {
6675 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6676 "vkUpdateDescriptorSets parameter, VkStructureType pDescriptorWrites->sType, is unrecognized enumerator");
6677 return;
6678 }
6679 if(pDescriptorWrites->pNext == nullptr)
6680 {
6681 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6682 "vkUpdateDescriptorSets parameter, const void* pDescriptorWrites->pNext, is null pointer");
6683 return;
6684 }
6685 if(pDescriptorWrites->destSet == nullptr)
6686 {
6687 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6688 "vkUpdateDescriptorSets parameter, VkDescriptorSet pDescriptorWrites->destSet, is null pointer");
6689 return;
6690 }
6691 if(pDescriptorWrites->descriptorType < VK_DESCRIPTOR_TYPE_BEGIN_RANGE ||
6692 pDescriptorWrites->descriptorType > VK_DESCRIPTOR_TYPE_END_RANGE)
6693 {
6694 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6695 "vkUpdateDescriptorSets parameter, VkDescriptorType pDescriptorWrites->descriptorType, is unrecognized enumerator");
6696 return;
6697 }
6698 if(pDescriptorWrites->pDescriptors == nullptr)
6699 {
6700 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6701 "vkUpdateDescriptorSets parameter, const VkDescriptorInfo* pDescriptorWrites->pDescriptors, is null pointer");
6702 return;
6703 }
6704 if(pDescriptorWrites->pDescriptors->bufferView == nullptr)
6705 {
6706 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6707 "vkUpdateDescriptorSets parameter, VkBufferView pDescriptorWrites->pDescriptors->bufferView, is null pointer");
6708 return;
6709 }
6710 if(pDescriptorWrites->pDescriptors->sampler == nullptr)
6711 {
6712 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6713 "vkUpdateDescriptorSets parameter, VkSampler pDescriptorWrites->pDescriptors->sampler, is null pointer");
6714 return;
6715 }
6716 if(pDescriptorWrites->pDescriptors->imageView == nullptr)
6717 {
6718 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6719 "vkUpdateDescriptorSets parameter, VkImageView pDescriptorWrites->pDescriptors->imageView, is null pointer");
6720 return;
6721 }
6722 if(pDescriptorWrites->pDescriptors->imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
6723 pDescriptorWrites->pDescriptors->imageLayout > VK_IMAGE_LAYOUT_END_RANGE)
6724 {
6725 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6726 "vkUpdateDescriptorSets parameter, VkImageLayout pDescriptorWrites->pDescriptors->imageLayout, is unrecognized enumerator");
6727 return;
6728 }
6729
6730 if(pDescriptorCopies == nullptr)
6731 {
6732 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6733 "vkUpdateDescriptorSets parameter, const VkCopyDescriptorSet* pDescriptorCopies, is null pointer");
6734 return;
6735 }
6736 if(pDescriptorCopies->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6737 pDescriptorCopies->sType > VK_STRUCTURE_TYPE_END_RANGE)
6738 {
6739 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6740 "vkUpdateDescriptorSets parameter, VkStructureType pDescriptorCopies->sType, is unrecognized enumerator");
6741 return;
6742 }
6743 if(pDescriptorCopies->pNext == nullptr)
6744 {
6745 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6746 "vkUpdateDescriptorSets parameter, const void* pDescriptorCopies->pNext, is null pointer");
6747 return;
6748 }
6749 if(pDescriptorCopies->srcSet == nullptr)
6750 {
6751 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6752 "vkUpdateDescriptorSets parameter, VkDescriptorSet pDescriptorCopies->srcSet, is null pointer");
6753 return;
6754 }
6755 if(pDescriptorCopies->destSet == nullptr)
6756 {
6757 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6758 "vkUpdateDescriptorSets parameter, VkDescriptorSet pDescriptorCopies->destSet, is null pointer");
6759 return;
6760 }
6761}
6762
6763void PostUpdateDescriptorSets(
6764 VkDevice device,
6765 uint32_t writeCount,
6766 uint32_t copyCount,
6767 VkResult result)
6768{
6769 if(device == nullptr)
6770 {
6771 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6772 "vkUpdateDescriptorSets parameter, VkDevice device, is null pointer");
6773 return;
6774 }
6775
6776
6777
6778 if(result != VK_SUCCESS)
6779 {
6780 std::string reason = "vkUpdateDescriptorSets parameter, VkResult result, is " + EnumeratorString(result);
6781 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6782 return;
6783 }
6784}
6785
6786VK_LAYER_EXPORT VkResult VKAPI vkUpdateDescriptorSets(
6787 VkDevice device,
6788 uint32_t writeCount,
6789 const VkWriteDescriptorSet* pDescriptorWrites,
6790 uint32_t copyCount,
6791 const VkCopyDescriptorSet* pDescriptorCopies)
6792{
6793 PreUpdateDescriptorSets(device, pDescriptorWrites, pDescriptorCopies);
6794 VkResult result = get_dispatch_table(pc_device_table_map, device)->UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
6795
6796 PostUpdateDescriptorSets(device, writeCount, copyCount, result);
6797
6798 return result;
6799}
6800
6801void PreCreateDynamicViewportState(
6802 VkDevice device,
6803 const VkDynamicVpStateCreateInfo* pCreateInfo)
6804{
6805 if(device == nullptr)
6806 {
6807 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6808 "vkCreateDynamicViewportState parameter, VkDevice device, is null pointer");
6809 return;
6810 }
6811
6812 if(pCreateInfo == nullptr)
6813 {
6814 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6815 "vkCreateDynamicViewportState parameter, const VkDynamicVpStateCreateInfo* pCreateInfo, is null pointer");
6816 return;
6817 }
6818 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6819 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
6820 {
6821 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6822 "vkCreateDynamicViewportState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
6823 return;
6824 }
6825 if(pCreateInfo->pViewports == nullptr)
6826 {
6827 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6828 "vkCreateDynamicViewportState parameter, const VkViewport* pCreateInfo->pViewports, is null pointer");
6829 return;
6830 }
6831 if(pCreateInfo->pScissors == nullptr)
6832 {
6833 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6834 "vkCreateDynamicViewportState parameter, const VkRect* pCreateInfo->pScissors, is null pointer");
6835 return;
6836 }
6837}
6838
6839void PostCreateDynamicViewportState(
6840 VkDevice device,
6841 VkDynamicVpState* pState,
6842 VkResult result)
6843{
6844 if(device == nullptr)
6845 {
6846 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6847 "vkCreateDynamicViewportState parameter, VkDevice device, is null pointer");
6848 return;
6849 }
6850
6851 if(pState == nullptr)
6852 {
6853 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6854 "vkCreateDynamicViewportState parameter, VkDynamicVpState* pState, is null pointer");
6855 return;
6856 }
6857 if((*pState) == nullptr)
6858 {
6859 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6860 "vkCreateDynamicViewportState parameter, VkDynamicVpState* pState, is null pointer");
6861 return;
6862 }
6863
6864 if(result != VK_SUCCESS)
6865 {
6866 std::string reason = "vkCreateDynamicViewportState parameter, VkResult result, is " + EnumeratorString(result);
6867 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6868 return;
6869 }
6870}
6871
6872VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(
6873 VkDevice device,
6874 const VkDynamicVpStateCreateInfo* pCreateInfo,
6875 VkDynamicVpState* pState)
6876{
6877 PreCreateDynamicViewportState(device, pCreateInfo);
6878 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicViewportState(device, pCreateInfo, pState);
6879
6880 PostCreateDynamicViewportState(device, pState, result);
6881
6882 return result;
6883}
6884
6885void PreCreateDynamicRasterState(
6886 VkDevice device,
6887 const VkDynamicRsStateCreateInfo* pCreateInfo)
6888{
6889 if(device == nullptr)
6890 {
6891 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6892 "vkCreateDynamicRasterState parameter, VkDevice device, is null pointer");
6893 return;
6894 }
6895
6896 if(pCreateInfo == nullptr)
6897 {
6898 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6899 "vkCreateDynamicRasterState parameter, const VkDynamicRsStateCreateInfo* pCreateInfo, is null pointer");
6900 return;
6901 }
6902 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6903 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
6904 {
6905 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6906 "vkCreateDynamicRasterState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
6907 return;
6908 }
6909}
6910
6911void PostCreateDynamicRasterState(
6912 VkDevice device,
6913 VkDynamicRsState* pState,
6914 VkResult result)
6915{
6916 if(device == nullptr)
6917 {
6918 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6919 "vkCreateDynamicRasterState parameter, VkDevice device, is null pointer");
6920 return;
6921 }
6922
6923 if(pState == nullptr)
6924 {
6925 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6926 "vkCreateDynamicRasterState parameter, VkDynamicRsState* pState, is null pointer");
6927 return;
6928 }
6929 if((*pState) == nullptr)
6930 {
6931 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6932 "vkCreateDynamicRasterState parameter, VkDynamicRsState* pState, is null pointer");
6933 return;
6934 }
6935
6936 if(result != VK_SUCCESS)
6937 {
6938 std::string reason = "vkCreateDynamicRasterState parameter, VkResult result, is " + EnumeratorString(result);
6939 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
6940 return;
6941 }
6942}
6943
6944VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(
6945 VkDevice device,
6946 const VkDynamicRsStateCreateInfo* pCreateInfo,
6947 VkDynamicRsState* pState)
6948{
6949 PreCreateDynamicRasterState(device, pCreateInfo);
6950 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicRasterState(device, pCreateInfo, pState);
6951
6952 PostCreateDynamicRasterState(device, pState, result);
6953
6954 return result;
6955}
6956
6957void PreCreateDynamicColorBlendState(
6958 VkDevice device,
6959 const VkDynamicCbStateCreateInfo* pCreateInfo)
6960{
6961 if(device == nullptr)
6962 {
6963 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6964 "vkCreateDynamicColorBlendState parameter, VkDevice device, is null pointer");
6965 return;
6966 }
6967
6968 if(pCreateInfo == nullptr)
6969 {
6970 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6971 "vkCreateDynamicColorBlendState parameter, const VkDynamicCbStateCreateInfo* pCreateInfo, is null pointer");
6972 return;
6973 }
6974 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
6975 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
6976 {
6977 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6978 "vkCreateDynamicColorBlendState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
6979 return;
6980 }
6981}
6982
6983void PostCreateDynamicColorBlendState(
6984 VkDevice device,
6985 VkDynamicCbState* pState,
6986 VkResult result)
6987{
6988 if(device == nullptr)
6989 {
6990 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6991 "vkCreateDynamicColorBlendState parameter, VkDevice device, is null pointer");
6992 return;
6993 }
6994
6995 if(pState == nullptr)
6996 {
6997 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
6998 "vkCreateDynamicColorBlendState parameter, VkDynamicCbState* pState, is null pointer");
6999 return;
7000 }
7001 if((*pState) == nullptr)
7002 {
7003 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7004 "vkCreateDynamicColorBlendState parameter, VkDynamicCbState* pState, is null pointer");
7005 return;
7006 }
7007
7008 if(result != VK_SUCCESS)
7009 {
7010 std::string reason = "vkCreateDynamicColorBlendState parameter, VkResult result, is " + EnumeratorString(result);
7011 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
7012 return;
7013 }
7014}
7015
7016VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(
7017 VkDevice device,
7018 const VkDynamicCbStateCreateInfo* pCreateInfo,
7019 VkDynamicCbState* pState)
7020{
7021 PreCreateDynamicColorBlendState(device, pCreateInfo);
7022 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicColorBlendState(device, pCreateInfo, pState);
7023
7024 PostCreateDynamicColorBlendState(device, pState, result);
7025
7026 return result;
7027}
7028
7029void PreCreateDynamicDepthStencilState(
7030 VkDevice device,
7031 const VkDynamicDsStateCreateInfo* pCreateInfo)
7032{
7033 if(device == nullptr)
7034 {
7035 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7036 "vkCreateDynamicDepthStencilState parameter, VkDevice device, is null pointer");
7037 return;
7038 }
7039
7040 if(pCreateInfo == nullptr)
7041 {
7042 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7043 "vkCreateDynamicDepthStencilState parameter, const VkDynamicDsStateCreateInfo* pCreateInfo, is null pointer");
7044 return;
7045 }
7046 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
7047 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
7048 {
7049 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7050 "vkCreateDynamicDepthStencilState parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
7051 return;
7052 }
7053}
7054
7055void PostCreateDynamicDepthStencilState(
7056 VkDevice device,
7057 VkDynamicDsState* pState,
7058 VkResult result)
7059{
7060 if(device == nullptr)
7061 {
7062 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7063 "vkCreateDynamicDepthStencilState parameter, VkDevice device, is null pointer");
7064 return;
7065 }
7066
7067 if(pState == nullptr)
7068 {
7069 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7070 "vkCreateDynamicDepthStencilState parameter, VkDynamicDsState* pState, is null pointer");
7071 return;
7072 }
7073 if((*pState) == nullptr)
7074 {
7075 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7076 "vkCreateDynamicDepthStencilState parameter, VkDynamicDsState* pState, is null pointer");
7077 return;
7078 }
7079
7080 if(result != VK_SUCCESS)
7081 {
7082 std::string reason = "vkCreateDynamicDepthStencilState parameter, VkResult result, is " + EnumeratorString(result);
7083 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
7084 return;
7085 }
7086}
7087
7088VK_LAYER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(
7089 VkDevice device,
7090 const VkDynamicDsStateCreateInfo* pCreateInfo,
7091 VkDynamicDsState* pState)
7092{
7093 PreCreateDynamicDepthStencilState(device, pCreateInfo);
7094 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateDynamicDepthStencilState(device, pCreateInfo, pState);
7095
7096 PostCreateDynamicDepthStencilState(device, pState, result);
7097
7098 return result;
7099}
7100
7101void PreCreateCommandBuffer(
7102 VkDevice device,
7103 const VkCmdBufferCreateInfo* pCreateInfo,
7104 VkCmdBuffer* pCmdBuffer)
7105{
7106 if(device == nullptr)
7107 {
7108 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7109 "vkCreateCommandBuffer parameter, VkDevice device, is null pointer");
7110 return;
7111 }
7112
7113 if(pCreateInfo == nullptr)
7114 {
7115 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7116 "vkCreateCommandBuffer parameter, const VkCmdBufferCreateInfo* pCreateInfo, is null pointer");
7117 return;
7118 }
7119 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
7120 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
7121 {
7122 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7123 "vkCreateCommandBuffer parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007124 return;
7125 }
7126
7127 if(pCmdBuffer == nullptr)
7128 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007129 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7130 "vkCreateCommandBuffer parameter, VkCmdBuffer* pCmdBuffer, is null pointer");
7131 return;
7132 }
7133 if((*pCmdBuffer) == nullptr)
7134 {
7135 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7136 "vkCreateCommandBuffer parameter, VkCmdBuffer* pCmdBuffer, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007137 return;
7138 }
7139}
7140
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007141void PostCreateCommandBuffer(
7142 VkDevice device,
7143 VkCmdBuffer* pCmdBuffer,
7144 VkResult result)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007145{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007146 if(device == nullptr)
7147 {
7148 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7149 "vkCreateCommandBuffer parameter, VkDevice device, is null pointer");
7150 return;
7151 }
7152
7153 if(pCmdBuffer == nullptr)
7154 {
7155 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7156 "vkCreateCommandBuffer parameter, VkCmdBuffer* pCmdBuffer, is null pointer");
7157 return;
7158 }
7159 if((*pCmdBuffer) == nullptr)
7160 {
7161 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7162 "vkCreateCommandBuffer parameter, VkCmdBuffer* pCmdBuffer, is null pointer");
7163 return;
7164 }
7165
7166 if(result != VK_SUCCESS)
7167 {
7168 std::string reason = "vkCreateCommandBuffer parameter, VkResult result, is " + EnumeratorString(result);
7169 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
7170 return;
7171 }
7172}
7173
7174VK_LAYER_EXPORT VkResult VKAPI vkCreateCommandBuffer(
7175 VkDevice device,
7176 const VkCmdBufferCreateInfo* pCreateInfo,
7177 VkCmdBuffer* pCmdBuffer)
7178{
7179 PreCreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
7180 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
7181
7182 PostCreateCommandBuffer(device, pCmdBuffer, result);
7183
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007184 return result;
7185}
7186
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007187void PreBeginCommandBuffer(
7188 VkCmdBuffer cmdBuffer,
7189 const VkCmdBufferBeginInfo* pBeginInfo)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007190{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007191 if(cmdBuffer == nullptr)
7192 {
7193 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7194 "vkBeginCommandBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7195 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007196 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007197
7198 if(pBeginInfo == nullptr)
7199 {
7200 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7201 "vkBeginCommandBuffer parameter, const VkCmdBufferBeginInfo* pBeginInfo, is null pointer");
7202 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007203 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007204 if(pBeginInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
7205 pBeginInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
7206 {
7207 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7208 "vkBeginCommandBuffer parameter, VkStructureType pBeginInfo->sType, is unrecognized enumerator");
7209 return;
7210 }
7211 if(!ValidateEnumerator((VkCmdBufferOptimizeFlagBits)pBeginInfo->flags))
7212 {
7213 std::string reason = "vkBeginCommandBuffer parameter, VkCmdBufferOptimizeFlags pBeginInfo->flags, is " + EnumeratorString((VkCmdBufferOptimizeFlagBits)pBeginInfo->flags);
7214 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
7215 return;
7216 }
7217}
7218
7219void PostBeginCommandBuffer(
7220 VkCmdBuffer cmdBuffer,
7221 VkResult result)
7222{
7223 if(cmdBuffer == nullptr)
7224 {
7225 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7226 "vkBeginCommandBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7227 return;
7228 }
7229
7230 if(result != VK_SUCCESS)
7231 {
7232 std::string reason = "vkBeginCommandBuffer parameter, VkResult result, is " + EnumeratorString(result);
7233 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
7234 return;
7235 }
7236}
7237
7238VK_LAYER_EXPORT VkResult VKAPI vkBeginCommandBuffer(
7239 VkCmdBuffer cmdBuffer,
7240 const VkCmdBufferBeginInfo* pBeginInfo)
7241{
7242 PreBeginCommandBuffer(cmdBuffer, pBeginInfo);
7243 VkResult result = get_dispatch_table(pc_device_table_map, cmdBuffer)->BeginCommandBuffer(cmdBuffer, pBeginInfo);
7244
7245 PostBeginCommandBuffer(cmdBuffer, result);
7246
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007247 return result;
7248}
7249
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007250void PreEndCommandBuffer(
7251 VkCmdBuffer cmdBuffer)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007252{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007253 if(cmdBuffer == nullptr)
7254 {
7255 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7256 "vkEndCommandBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7257 return;
7258 }
7259}
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007260
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007261void PostEndCommandBuffer(
7262 VkCmdBuffer cmdBuffer,
7263 VkResult result)
7264{
7265 if(cmdBuffer == nullptr)
7266 {
7267 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7268 "vkEndCommandBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7269 return;
7270 }
7271
7272 if(result != VK_SUCCESS)
7273 {
7274 std::string reason = "vkEndCommandBuffer parameter, VkResult result, is " + EnumeratorString(result);
7275 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
7276 return;
7277 }
7278}
7279
7280VK_LAYER_EXPORT VkResult VKAPI vkEndCommandBuffer(
7281 VkCmdBuffer cmdBuffer)
7282{
7283 PreEndCommandBuffer(cmdBuffer);
7284 VkResult result = get_dispatch_table(pc_device_table_map, cmdBuffer)->EndCommandBuffer(cmdBuffer);
7285
7286 PostEndCommandBuffer(cmdBuffer, result);
7287
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007288 return result;
7289}
7290
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007291void PreResetCommandBuffer(
7292 VkCmdBuffer cmdBuffer)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007293{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007294 if(cmdBuffer == nullptr)
7295 {
7296 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7297 "vkResetCommandBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7298 return;
7299 }
7300}
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007301
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007302void PostResetCommandBuffer(
7303 VkCmdBuffer cmdBuffer,
7304 VkResult result)
7305{
7306 if(cmdBuffer == nullptr)
7307 {
7308 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7309 "vkResetCommandBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7310 return;
7311 }
7312
7313 if(result != VK_SUCCESS)
7314 {
7315 std::string reason = "vkResetCommandBuffer parameter, VkResult result, is " + EnumeratorString(result);
7316 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
7317 return;
7318 }
7319}
7320
7321VK_LAYER_EXPORT VkResult VKAPI vkResetCommandBuffer(
7322 VkCmdBuffer cmdBuffer)
7323{
7324 PreResetCommandBuffer(cmdBuffer);
7325 VkResult result = get_dispatch_table(pc_device_table_map, cmdBuffer)->ResetCommandBuffer(cmdBuffer);
7326
7327 PostResetCommandBuffer(cmdBuffer, result);
7328
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007329 return result;
7330}
7331
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007332void PreCmdBindPipeline(
7333 VkCmdBuffer cmdBuffer)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007334{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007335 if(cmdBuffer == nullptr)
7336 {
7337 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7338 "vkCmdBindPipeline parameter, VkCmdBuffer cmdBuffer, is null pointer");
7339 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007340 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007341}
7342
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007343void PostCmdBindPipeline(
7344 VkCmdBuffer cmdBuffer,
7345 VkPipelineBindPoint pipelineBindPoint,
7346 VkPipeline pipeline)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007347{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007348 if(cmdBuffer == nullptr)
7349 {
7350 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7351 "vkCmdBindPipeline parameter, VkCmdBuffer cmdBuffer, is null pointer");
7352 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007353 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007354
7355 if(pipelineBindPoint < VK_PIPELINE_BIND_POINT_BEGIN_RANGE ||
7356 pipelineBindPoint > VK_PIPELINE_BIND_POINT_END_RANGE)
7357 {
7358 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7359 "vkCmdBindPipeline parameter, VkPipelineBindPoint pipelineBindPoint, is unrecognized enumerator");
7360 return;
7361 }
7362
7363 if(pipeline == nullptr)
7364 {
7365 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7366 "vkCmdBindPipeline parameter, VkPipeline pipeline, is null pointer");
7367 return;
7368 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007369}
7370
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007371VK_LAYER_EXPORT void VKAPI vkCmdBindPipeline(
7372 VkCmdBuffer cmdBuffer,
7373 VkPipelineBindPoint pipelineBindPoint,
7374 VkPipeline pipeline)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007375{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007376 PreCmdBindPipeline(cmdBuffer);
7377 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
7378
7379 PostCmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
7380}
7381
7382void PreCmdBindDynamicStateObject(
7383 VkCmdBuffer cmdBuffer)
7384{
7385 if(cmdBuffer == nullptr)
7386 {
7387 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7388 "vkCmdBindDynamicStateObject parameter, VkCmdBuffer cmdBuffer, is null pointer");
7389 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007390 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007391}
7392
7393void PostCmdBindDynamicStateObject(
7394 VkCmdBuffer cmdBuffer,
7395 VkStateBindPoint stateBindPoint,
7396 VkDynamicStateObject dynamicState)
7397{
7398 if(cmdBuffer == nullptr)
7399 {
7400 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7401 "vkCmdBindDynamicStateObject parameter, VkCmdBuffer cmdBuffer, is null pointer");
7402 return;
7403 }
7404
7405 if(stateBindPoint < VK_STATE_BIND_POINT_BEGIN_RANGE ||
7406 stateBindPoint > VK_STATE_BIND_POINT_END_RANGE)
7407 {
7408 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7409 "vkCmdBindDynamicStateObject parameter, VkStateBindPoint stateBindPoint, is unrecognized enumerator");
7410 return;
7411 }
7412
7413 if(dynamicState == nullptr)
7414 {
7415 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7416 "vkCmdBindDynamicStateObject parameter, VkDynamicStateObject dynamicState, is null pointer");
7417 return;
7418 }
7419}
7420
7421VK_LAYER_EXPORT void VKAPI vkCmdBindDynamicStateObject(
7422 VkCmdBuffer cmdBuffer,
7423 VkStateBindPoint stateBindPoint,
7424 VkDynamicStateObject dynamicState)
7425{
7426 PreCmdBindDynamicStateObject(cmdBuffer);
7427 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBindDynamicStateObject(cmdBuffer, stateBindPoint, dynamicState);
7428
7429 PostCmdBindDynamicStateObject(cmdBuffer, stateBindPoint, dynamicState);
7430}
7431
7432void PreCmdBindDescriptorSets(
7433 VkCmdBuffer cmdBuffer,
7434 const VkDescriptorSet* pDescriptorSets,
7435 const uint32_t* pDynamicOffsets)
7436{
7437 if(cmdBuffer == nullptr)
7438 {
7439 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7440 "vkCmdBindDescriptorSets parameter, VkCmdBuffer cmdBuffer, is null pointer");
7441 return;
7442 }
7443
7444 if(pDescriptorSets == nullptr)
7445 {
7446 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7447 "vkCmdBindDescriptorSets parameter, const VkDescriptorSet* pDescriptorSets, is null pointer");
7448 return;
7449 }
7450 if((*pDescriptorSets) == nullptr)
7451 {
7452 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7453 "vkCmdBindDescriptorSets parameter, const VkDescriptorSet* pDescriptorSets, is null pointer");
7454 return;
7455 }
7456
7457 if(pDynamicOffsets == nullptr)
7458 {
7459 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7460 "vkCmdBindDescriptorSets parameter, const uint32_t* pDynamicOffsets, is null pointer");
7461 return;
7462 }
7463}
7464
7465void PostCmdBindDescriptorSets(
7466 VkCmdBuffer cmdBuffer,
7467 VkPipelineBindPoint pipelineBindPoint,
7468 VkPipelineLayout layout,
7469 uint32_t firstSet,
7470 uint32_t setCount,
7471 uint32_t dynamicOffsetCount)
7472{
7473 if(cmdBuffer == nullptr)
7474 {
7475 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7476 "vkCmdBindDescriptorSets parameter, VkCmdBuffer cmdBuffer, is null pointer");
7477 return;
7478 }
7479
7480 if(pipelineBindPoint < VK_PIPELINE_BIND_POINT_BEGIN_RANGE ||
7481 pipelineBindPoint > VK_PIPELINE_BIND_POINT_END_RANGE)
7482 {
7483 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7484 "vkCmdBindDescriptorSets parameter, VkPipelineBindPoint pipelineBindPoint, is unrecognized enumerator");
7485 return;
7486 }
7487
7488 if(layout == nullptr)
7489 {
7490 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7491 "vkCmdBindDescriptorSets parameter, VkPipelineLayout layout, is null pointer");
7492 return;
7493 }
7494
7495
7496
7497}
7498
7499VK_LAYER_EXPORT void VKAPI vkCmdBindDescriptorSets(
7500 VkCmdBuffer cmdBuffer,
7501 VkPipelineBindPoint pipelineBindPoint,
7502 VkPipelineLayout layout,
7503 uint32_t firstSet,
7504 uint32_t setCount,
7505 const VkDescriptorSet* pDescriptorSets,
7506 uint32_t dynamicOffsetCount,
7507 const uint32_t* pDynamicOffsets)
7508{
7509 PreCmdBindDescriptorSets(cmdBuffer, pDescriptorSets, pDynamicOffsets);
7510 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
7511
7512 PostCmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, setCount, dynamicOffsetCount);
7513}
7514
7515void PreCmdBindIndexBuffer(
7516 VkCmdBuffer cmdBuffer)
7517{
7518 if(cmdBuffer == nullptr)
7519 {
7520 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7521 "vkCmdBindIndexBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7522 return;
7523 }
7524}
7525
7526void PostCmdBindIndexBuffer(
7527 VkCmdBuffer cmdBuffer,
7528 VkBuffer buffer,
7529 VkDeviceSize offset,
7530 VkIndexType indexType)
7531{
7532 if(cmdBuffer == nullptr)
7533 {
7534 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7535 "vkCmdBindIndexBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7536 return;
7537 }
7538
7539 if(buffer == nullptr)
7540 {
7541 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7542 "vkCmdBindIndexBuffer parameter, VkBuffer buffer, is null pointer");
7543 return;
7544 }
7545
7546
7547 if(indexType < VK_INDEX_TYPE_BEGIN_RANGE ||
7548 indexType > VK_INDEX_TYPE_END_RANGE)
7549 {
7550 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7551 "vkCmdBindIndexBuffer parameter, VkIndexType indexType, is unrecognized enumerator");
7552 return;
7553 }
7554}
7555
7556VK_LAYER_EXPORT void VKAPI vkCmdBindIndexBuffer(
7557 VkCmdBuffer cmdBuffer,
7558 VkBuffer buffer,
7559 VkDeviceSize offset,
7560 VkIndexType indexType)
7561{
7562 PreCmdBindIndexBuffer(cmdBuffer);
7563 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBindIndexBuffer(cmdBuffer, buffer, offset, indexType);
7564
7565 PostCmdBindIndexBuffer(cmdBuffer, buffer, offset, indexType);
7566}
7567
7568void PreCmdBindVertexBuffers(
7569 VkCmdBuffer cmdBuffer,
7570 const VkBuffer* pBuffers,
7571 const VkDeviceSize* pOffsets)
7572{
7573 if(cmdBuffer == nullptr)
7574 {
7575 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7576 "vkCmdBindVertexBuffers parameter, VkCmdBuffer cmdBuffer, is null pointer");
7577 return;
7578 }
7579
7580 if(pBuffers == nullptr)
7581 {
7582 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7583 "vkCmdBindVertexBuffers parameter, const VkBuffer* pBuffers, is null pointer");
7584 return;
7585 }
7586 if((*pBuffers) == nullptr)
7587 {
7588 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7589 "vkCmdBindVertexBuffers parameter, const VkBuffer* pBuffers, is null pointer");
7590 return;
7591 }
7592
7593 if(pOffsets == nullptr)
7594 {
7595 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7596 "vkCmdBindVertexBuffers parameter, const VkDeviceSize* pOffsets, is null pointer");
7597 return;
7598 }
7599}
7600
7601void PostCmdBindVertexBuffers(
7602 VkCmdBuffer cmdBuffer,
7603 uint32_t startBinding,
7604 uint32_t bindingCount)
7605{
7606 if(cmdBuffer == nullptr)
7607 {
7608 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7609 "vkCmdBindVertexBuffers parameter, VkCmdBuffer cmdBuffer, is null pointer");
7610 return;
7611 }
7612
7613
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007614}
7615
Courtney Goeltzenleuchter46962942015-04-16 13:38:46 -06007616VK_LAYER_EXPORT void VKAPI vkCmdBindVertexBuffers(
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007617 VkCmdBuffer cmdBuffer,
7618 uint32_t startBinding,
7619 uint32_t bindingCount,
7620 const VkBuffer* pBuffers,
7621 const VkDeviceSize* pOffsets)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007622{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007623 PreCmdBindVertexBuffers(cmdBuffer, pBuffers, pOffsets);
7624 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBindVertexBuffers(cmdBuffer, startBinding, bindingCount, pBuffers, pOffsets);
7625
7626 PostCmdBindVertexBuffers(cmdBuffer, startBinding, bindingCount);
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007627}
7628
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007629void PreCmdDraw(
7630 VkCmdBuffer cmdBuffer)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007631{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007632 if(cmdBuffer == nullptr)
7633 {
7634 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7635 "vkCmdDraw parameter, VkCmdBuffer cmdBuffer, is null pointer");
7636 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007637 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007638}
7639
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007640void PostCmdDraw(
7641 VkCmdBuffer cmdBuffer,
7642 uint32_t firstVertex,
7643 uint32_t vertexCount,
7644 uint32_t firstInstance,
7645 uint32_t instanceCount)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007646{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007647 if(cmdBuffer == nullptr)
7648 {
7649 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7650 "vkCmdDraw parameter, VkCmdBuffer cmdBuffer, is null pointer");
7651 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007652 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007653
7654
7655
7656
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007657}
7658
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007659VK_LAYER_EXPORT void VKAPI vkCmdDraw(
7660 VkCmdBuffer cmdBuffer,
7661 uint32_t firstVertex,
7662 uint32_t vertexCount,
7663 uint32_t firstInstance,
7664 uint32_t instanceCount)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007665{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007666 PreCmdDraw(cmdBuffer);
7667 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
7668
7669 PostCmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007670}
7671
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007672void PreCmdDrawIndexed(
7673 VkCmdBuffer cmdBuffer)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007674{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007675 if(cmdBuffer == nullptr)
7676 {
7677 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7678 "vkCmdDrawIndexed parameter, VkCmdBuffer cmdBuffer, is null pointer");
7679 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007680 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007681}
7682
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007683void PostCmdDrawIndexed(
7684 VkCmdBuffer cmdBuffer,
7685 uint32_t firstIndex,
7686 uint32_t indexCount,
7687 int32_t vertexOffset,
7688 uint32_t firstInstance,
7689 uint32_t instanceCount)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007690{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007691 if(cmdBuffer == nullptr)
7692 {
7693 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7694 "vkCmdDrawIndexed parameter, VkCmdBuffer cmdBuffer, is null pointer");
7695 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007696 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007697
7698
7699
7700
7701
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007702}
7703
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007704VK_LAYER_EXPORT void VKAPI vkCmdDrawIndexed(
7705 VkCmdBuffer cmdBuffer,
7706 uint32_t firstIndex,
7707 uint32_t indexCount,
7708 int32_t vertexOffset,
7709 uint32_t firstInstance,
7710 uint32_t instanceCount)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007711{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007712 PreCmdDrawIndexed(cmdBuffer);
7713 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
7714
7715 PostCmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
7716}
7717
7718void PreCmdDrawIndirect(
7719 VkCmdBuffer cmdBuffer)
7720{
7721 if(cmdBuffer == nullptr)
7722 {
7723 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7724 "vkCmdDrawIndirect parameter, VkCmdBuffer cmdBuffer, is null pointer");
7725 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007726 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007727}
7728
7729void PostCmdDrawIndirect(
7730 VkCmdBuffer cmdBuffer,
7731 VkBuffer buffer,
7732 VkDeviceSize offset,
7733 uint32_t count,
7734 uint32_t stride)
7735{
7736 if(cmdBuffer == nullptr)
7737 {
7738 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7739 "vkCmdDrawIndirect parameter, VkCmdBuffer cmdBuffer, is null pointer");
7740 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007741 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007742
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007743 if(buffer == nullptr)
7744 {
7745 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7746 "vkCmdDrawIndirect parameter, VkBuffer buffer, is null pointer");
7747 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007748 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007749
7750
7751
7752}
7753
7754VK_LAYER_EXPORT void VKAPI vkCmdDrawIndirect(
7755 VkCmdBuffer cmdBuffer,
7756 VkBuffer buffer,
7757 VkDeviceSize offset,
7758 uint32_t count,
7759 uint32_t stride)
7760{
7761 PreCmdDrawIndirect(cmdBuffer);
7762 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdDrawIndirect(cmdBuffer, buffer, offset, count, stride);
7763
7764 PostCmdDrawIndirect(cmdBuffer, buffer, offset, count, stride);
7765}
7766
7767void PreCmdDrawIndexedIndirect(
7768 VkCmdBuffer cmdBuffer)
7769{
7770 if(cmdBuffer == nullptr)
7771 {
7772 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7773 "vkCmdDrawIndexedIndirect parameter, VkCmdBuffer cmdBuffer, is null pointer");
7774 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007775 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007776}
7777
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007778void PostCmdDrawIndexedIndirect(
7779 VkCmdBuffer cmdBuffer,
7780 VkBuffer buffer,
7781 VkDeviceSize offset,
7782 uint32_t count,
7783 uint32_t stride)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007784{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007785 if(cmdBuffer == nullptr)
7786 {
7787 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7788 "vkCmdDrawIndexedIndirect parameter, VkCmdBuffer cmdBuffer, is null pointer");
7789 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007790 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007791
7792 if(buffer == nullptr)
7793 {
7794 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7795 "vkCmdDrawIndexedIndirect parameter, VkBuffer buffer, is null pointer");
7796 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007797 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007798
7799
7800
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007801}
7802
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007803VK_LAYER_EXPORT void VKAPI vkCmdDrawIndexedIndirect(
7804 VkCmdBuffer cmdBuffer,
7805 VkBuffer buffer,
7806 VkDeviceSize offset,
7807 uint32_t count,
7808 uint32_t stride)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007809{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007810 PreCmdDrawIndexedIndirect(cmdBuffer);
7811 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdDrawIndexedIndirect(cmdBuffer, buffer, offset, count, stride);
7812
7813 PostCmdDrawIndexedIndirect(cmdBuffer, buffer, offset, count, stride);
7814}
7815
7816void PreCmdDispatch(
7817 VkCmdBuffer cmdBuffer)
7818{
7819 if(cmdBuffer == nullptr)
7820 {
7821 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7822 "vkCmdDispatch parameter, VkCmdBuffer cmdBuffer, is null pointer");
7823 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007824 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007825}
7826
7827void PostCmdDispatch(
7828 VkCmdBuffer cmdBuffer,
7829 uint32_t x,
7830 uint32_t y,
7831 uint32_t z)
7832{
7833 if(cmdBuffer == nullptr)
7834 {
7835 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7836 "vkCmdDispatch parameter, VkCmdBuffer cmdBuffer, is null pointer");
7837 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007838 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007839
7840
7841
7842}
7843
7844VK_LAYER_EXPORT void VKAPI vkCmdDispatch(
7845 VkCmdBuffer cmdBuffer,
7846 uint32_t x,
7847 uint32_t y,
7848 uint32_t z)
7849{
7850 PreCmdDispatch(cmdBuffer);
7851 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdDispatch(cmdBuffer, x, y, z);
7852
7853 PostCmdDispatch(cmdBuffer, x, y, z);
7854}
7855
7856void PreCmdDispatchIndirect(
7857 VkCmdBuffer cmdBuffer)
7858{
7859 if(cmdBuffer == nullptr)
7860 {
7861 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7862 "vkCmdDispatchIndirect parameter, VkCmdBuffer cmdBuffer, is null pointer");
7863 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007864 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007865}
7866
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007867void PostCmdDispatchIndirect(
7868 VkCmdBuffer cmdBuffer,
7869 VkBuffer buffer,
7870 VkDeviceSize offset)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007871{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007872 if(cmdBuffer == nullptr)
7873 {
7874 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7875 "vkCmdDispatchIndirect parameter, VkCmdBuffer cmdBuffer, is null pointer");
7876 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007877 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007878
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007879 if(buffer == nullptr)
7880 {
7881 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7882 "vkCmdDispatchIndirect parameter, VkBuffer buffer, is null pointer");
7883 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007884 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007885
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007886}
7887
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007888VK_LAYER_EXPORT void VKAPI vkCmdDispatchIndirect(
7889 VkCmdBuffer cmdBuffer,
7890 VkBuffer buffer,
7891 VkDeviceSize offset)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007892{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007893 PreCmdDispatchIndirect(cmdBuffer);
7894 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdDispatchIndirect(cmdBuffer, buffer, offset);
7895
7896 PostCmdDispatchIndirect(cmdBuffer, buffer, offset);
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007897}
7898
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007899void PreCmdCopyBuffer(
7900 VkCmdBuffer cmdBuffer,
7901 const VkBufferCopy* pRegions)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007902{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007903 if(cmdBuffer == nullptr)
7904 {
7905 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7906 "vkCmdCopyBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7907 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06007908 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06007909
7910 if(pRegions == nullptr)
7911 {
7912 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7913 "vkCmdCopyBuffer parameter, const VkBufferCopy* pRegions, is null pointer");
7914 return;
7915 }
7916}
7917
7918void PostCmdCopyBuffer(
7919 VkCmdBuffer cmdBuffer,
7920 VkBuffer srcBuffer,
7921 VkBuffer destBuffer,
7922 uint32_t regionCount)
7923{
7924 if(cmdBuffer == nullptr)
7925 {
7926 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7927 "vkCmdCopyBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
7928 return;
7929 }
7930
7931 if(srcBuffer == nullptr)
7932 {
7933 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7934 "vkCmdCopyBuffer parameter, VkBuffer srcBuffer, is null pointer");
7935 return;
7936 }
7937
7938 if(destBuffer == nullptr)
7939 {
7940 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7941 "vkCmdCopyBuffer parameter, VkBuffer destBuffer, is null pointer");
7942 return;
7943 }
7944
7945}
7946
7947VK_LAYER_EXPORT void VKAPI vkCmdCopyBuffer(
7948 VkCmdBuffer cmdBuffer,
7949 VkBuffer srcBuffer,
7950 VkBuffer destBuffer,
7951 uint32_t regionCount,
7952 const VkBufferCopy* pRegions)
7953{
7954 PreCmdCopyBuffer(cmdBuffer, pRegions);
7955 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount, pRegions);
7956
7957 PostCmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount);
7958}
7959
7960void PreCmdCopyImage(
7961 VkCmdBuffer cmdBuffer,
7962 const VkImageCopy* pRegions)
7963{
7964 if(cmdBuffer == nullptr)
7965 {
7966 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7967 "vkCmdCopyImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
7968 return;
7969 }
7970
7971 if(pRegions == nullptr)
7972 {
7973 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7974 "vkCmdCopyImage parameter, const VkImageCopy* pRegions, is null pointer");
7975 return;
7976 }
7977 if(pRegions->srcSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
7978 pRegions->srcSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
7979 {
7980 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7981 "vkCmdCopyImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is unrecognized enumerator");
7982 return;
7983 }
7984 if(pRegions->destSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
7985 pRegions->destSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
7986 {
7987 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
7988 "vkCmdCopyImage parameter, VkImageAspect pRegions->destSubresource.aspect, is unrecognized enumerator");
7989 return;
7990 }
7991}
7992
7993void PostCmdCopyImage(
7994 VkCmdBuffer cmdBuffer,
7995 VkImage srcImage,
7996 VkImageLayout srcImageLayout,
7997 VkImage destImage,
7998 VkImageLayout destImageLayout,
7999 uint32_t regionCount)
8000{
8001 if(cmdBuffer == nullptr)
8002 {
8003 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8004 "vkCmdCopyImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8005 return;
8006 }
8007
8008 if(srcImage == nullptr)
8009 {
8010 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8011 "vkCmdCopyImage parameter, VkImage srcImage, is null pointer");
8012 return;
8013 }
8014
8015 if(srcImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8016 srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8017 {
8018 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8019 "vkCmdCopyImage parameter, VkImageLayout srcImageLayout, is unrecognized enumerator");
8020 return;
8021 }
8022
8023 if(destImage == nullptr)
8024 {
8025 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8026 "vkCmdCopyImage parameter, VkImage destImage, is null pointer");
8027 return;
8028 }
8029
8030 if(destImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8031 destImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8032 {
8033 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8034 "vkCmdCopyImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator");
8035 return;
8036 }
8037
8038}
8039
8040VK_LAYER_EXPORT void VKAPI vkCmdCopyImage(
8041 VkCmdBuffer cmdBuffer,
8042 VkImage srcImage,
8043 VkImageLayout srcImageLayout,
8044 VkImage destImage,
8045 VkImageLayout destImageLayout,
8046 uint32_t regionCount,
8047 const VkImageCopy* pRegions)
8048{
8049 PreCmdCopyImage(cmdBuffer, pRegions);
8050 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
8051
8052 PostCmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount);
8053}
8054
8055void PreCmdBlitImage(
8056 VkCmdBuffer cmdBuffer,
8057 const VkImageBlit* pRegions)
8058{
8059 if(cmdBuffer == nullptr)
8060 {
8061 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8062 "vkCmdBlitImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8063 return;
8064 }
8065
8066 if(pRegions == nullptr)
8067 {
8068 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8069 "vkCmdBlitImage parameter, const VkImageBlit* pRegions, is null pointer");
8070 return;
8071 }
8072 if(pRegions->srcSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8073 pRegions->srcSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
8074 {
8075 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8076 "vkCmdBlitImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is unrecognized enumerator");
8077 return;
8078 }
8079 if(pRegions->destSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8080 pRegions->destSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
8081 {
8082 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8083 "vkCmdBlitImage parameter, VkImageAspect pRegions->destSubresource.aspect, is unrecognized enumerator");
8084 return;
8085 }
8086}
8087
8088void PostCmdBlitImage(
8089 VkCmdBuffer cmdBuffer,
8090 VkImage srcImage,
8091 VkImageLayout srcImageLayout,
8092 VkImage destImage,
8093 VkImageLayout destImageLayout,
8094 uint32_t regionCount,
8095 VkTexFilter filter)
8096{
8097 if(cmdBuffer == nullptr)
8098 {
8099 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8100 "vkCmdBlitImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8101 return;
8102 }
8103
8104 if(srcImage == nullptr)
8105 {
8106 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8107 "vkCmdBlitImage parameter, VkImage srcImage, is null pointer");
8108 return;
8109 }
8110
8111 if(srcImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8112 srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8113 {
8114 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8115 "vkCmdBlitImage parameter, VkImageLayout srcImageLayout, is unrecognized enumerator");
8116 return;
8117 }
8118
8119 if(destImage == nullptr)
8120 {
8121 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8122 "vkCmdBlitImage parameter, VkImage destImage, is null pointer");
8123 return;
8124 }
8125
8126 if(destImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8127 destImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8128 {
8129 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8130 "vkCmdBlitImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator");
8131 return;
8132 }
8133
8134
8135 if(filter < VK_TEX_FILTER_BEGIN_RANGE ||
8136 filter > VK_TEX_FILTER_END_RANGE)
8137 {
8138 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8139 "vkCmdBlitImage parameter, VkTexFilter filter, is unrecognized enumerator");
8140 return;
8141 }
8142}
8143
8144VK_LAYER_EXPORT void VKAPI vkCmdBlitImage(
8145 VkCmdBuffer cmdBuffer,
8146 VkImage srcImage,
8147 VkImageLayout srcImageLayout,
8148 VkImage destImage,
8149 VkImageLayout destImageLayout,
8150 uint32_t regionCount,
8151 const VkImageBlit* pRegions,
8152 VkTexFilter filter)
8153{
8154 PreCmdBlitImage(cmdBuffer, pRegions);
8155 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
8156
8157 PostCmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, filter);
8158}
8159
8160void PreCmdCopyBufferToImage(
8161 VkCmdBuffer cmdBuffer,
8162 const VkBufferImageCopy* pRegions)
8163{
8164 if(cmdBuffer == nullptr)
8165 {
8166 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8167 "vkCmdCopyBufferToImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8168 return;
8169 }
8170
8171 if(pRegions == nullptr)
8172 {
8173 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8174 "vkCmdCopyBufferToImage parameter, const VkBufferImageCopy* pRegions, is null pointer");
8175 return;
8176 }
8177 if(pRegions->imageSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8178 pRegions->imageSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
8179 {
8180 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8181 "vkCmdCopyBufferToImage parameter, VkImageAspect pRegions->imageSubresource.aspect, is unrecognized enumerator");
8182 return;
8183 }
8184}
8185
8186void PostCmdCopyBufferToImage(
8187 VkCmdBuffer cmdBuffer,
8188 VkBuffer srcBuffer,
8189 VkImage destImage,
8190 VkImageLayout destImageLayout,
8191 uint32_t regionCount)
8192{
8193 if(cmdBuffer == nullptr)
8194 {
8195 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8196 "vkCmdCopyBufferToImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8197 return;
8198 }
8199
8200 if(srcBuffer == nullptr)
8201 {
8202 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8203 "vkCmdCopyBufferToImage parameter, VkBuffer srcBuffer, is null pointer");
8204 return;
8205 }
8206
8207 if(destImage == nullptr)
8208 {
8209 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8210 "vkCmdCopyBufferToImage parameter, VkImage destImage, is null pointer");
8211 return;
8212 }
8213
8214 if(destImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8215 destImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8216 {
8217 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8218 "vkCmdCopyBufferToImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator");
8219 return;
8220 }
8221
8222}
8223
8224VK_LAYER_EXPORT void VKAPI vkCmdCopyBufferToImage(
8225 VkCmdBuffer cmdBuffer,
8226 VkBuffer srcBuffer,
8227 VkImage destImage,
8228 VkImageLayout destImageLayout,
8229 uint32_t regionCount,
8230 const VkBufferImageCopy* pRegions)
8231{
8232 PreCmdCopyBufferToImage(cmdBuffer, pRegions);
8233 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount, pRegions);
8234
8235 PostCmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount);
8236}
8237
8238void PreCmdCopyImageToBuffer(
8239 VkCmdBuffer cmdBuffer,
8240 const VkBufferImageCopy* pRegions)
8241{
8242 if(cmdBuffer == nullptr)
8243 {
8244 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8245 "vkCmdCopyImageToBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
8246 return;
8247 }
8248
8249 if(pRegions == nullptr)
8250 {
8251 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8252 "vkCmdCopyImageToBuffer parameter, const VkBufferImageCopy* pRegions, is null pointer");
8253 return;
8254 }
8255 if(pRegions->imageSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8256 pRegions->imageSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
8257 {
8258 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8259 "vkCmdCopyImageToBuffer parameter, VkImageAspect pRegions->imageSubresource.aspect, is unrecognized enumerator");
8260 return;
8261 }
8262}
8263
8264void PostCmdCopyImageToBuffer(
8265 VkCmdBuffer cmdBuffer,
8266 VkImage srcImage,
8267 VkImageLayout srcImageLayout,
8268 VkBuffer destBuffer,
8269 uint32_t regionCount)
8270{
8271 if(cmdBuffer == nullptr)
8272 {
8273 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8274 "vkCmdCopyImageToBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
8275 return;
8276 }
8277
8278 if(srcImage == nullptr)
8279 {
8280 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8281 "vkCmdCopyImageToBuffer parameter, VkImage srcImage, is null pointer");
8282 return;
8283 }
8284
8285 if(srcImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8286 srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8287 {
8288 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8289 "vkCmdCopyImageToBuffer parameter, VkImageLayout srcImageLayout, is unrecognized enumerator");
8290 return;
8291 }
8292
8293 if(destBuffer == nullptr)
8294 {
8295 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8296 "vkCmdCopyImageToBuffer parameter, VkBuffer destBuffer, is null pointer");
8297 return;
8298 }
8299
8300}
8301
8302VK_LAYER_EXPORT void VKAPI vkCmdCopyImageToBuffer(
8303 VkCmdBuffer cmdBuffer,
8304 VkImage srcImage,
8305 VkImageLayout srcImageLayout,
8306 VkBuffer destBuffer,
8307 uint32_t regionCount,
8308 const VkBufferImageCopy* pRegions)
8309{
8310 PreCmdCopyImageToBuffer(cmdBuffer, pRegions);
8311 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions);
8312
8313 PostCmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount);
8314}
8315
8316void PreCmdUpdateBuffer(
8317 VkCmdBuffer cmdBuffer,
8318 const uint32_t* pData)
8319{
8320 if(cmdBuffer == nullptr)
8321 {
8322 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8323 "vkCmdUpdateBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
8324 return;
8325 }
8326
8327 if(pData == nullptr)
8328 {
8329 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8330 "vkCmdUpdateBuffer parameter, const uint32_t* pData, is null pointer");
8331 return;
8332 }
8333}
8334
8335void PostCmdUpdateBuffer(
8336 VkCmdBuffer cmdBuffer,
8337 VkBuffer destBuffer,
8338 VkDeviceSize destOffset,
8339 VkDeviceSize dataSize)
8340{
8341 if(cmdBuffer == nullptr)
8342 {
8343 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8344 "vkCmdUpdateBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
8345 return;
8346 }
8347
8348 if(destBuffer == nullptr)
8349 {
8350 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8351 "vkCmdUpdateBuffer parameter, VkBuffer destBuffer, is null pointer");
8352 return;
8353 }
8354
8355
8356}
8357
8358VK_LAYER_EXPORT void VKAPI vkCmdUpdateBuffer(
8359 VkCmdBuffer cmdBuffer,
8360 VkBuffer destBuffer,
8361 VkDeviceSize destOffset,
8362 VkDeviceSize dataSize,
8363 const uint32_t* pData)
8364{
8365 PreCmdUpdateBuffer(cmdBuffer, pData);
8366 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
8367
8368 PostCmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize);
8369}
8370
8371void PreCmdFillBuffer(
8372 VkCmdBuffer cmdBuffer)
8373{
8374 if(cmdBuffer == nullptr)
8375 {
8376 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8377 "vkCmdFillBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
8378 return;
8379 }
8380}
8381
8382void PostCmdFillBuffer(
8383 VkCmdBuffer cmdBuffer,
8384 VkBuffer destBuffer,
8385 VkDeviceSize destOffset,
8386 VkDeviceSize fillSize,
8387 uint32_t data)
8388{
8389 if(cmdBuffer == nullptr)
8390 {
8391 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8392 "vkCmdFillBuffer parameter, VkCmdBuffer cmdBuffer, is null pointer");
8393 return;
8394 }
8395
8396 if(destBuffer == nullptr)
8397 {
8398 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8399 "vkCmdFillBuffer parameter, VkBuffer destBuffer, is null pointer");
8400 return;
8401 }
8402
8403
8404
8405}
8406
8407VK_LAYER_EXPORT void VKAPI vkCmdFillBuffer(
8408 VkCmdBuffer cmdBuffer,
8409 VkBuffer destBuffer,
8410 VkDeviceSize destOffset,
8411 VkDeviceSize fillSize,
8412 uint32_t data)
8413{
8414 PreCmdFillBuffer(cmdBuffer);
8415 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
8416
8417 PostCmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
8418}
8419
8420void PreCmdClearColorImage(
8421 VkCmdBuffer cmdBuffer,
8422 const VkClearColor* pColor,
8423 const VkImageSubresourceRange* pRanges)
8424{
8425 if(cmdBuffer == nullptr)
8426 {
8427 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8428 "vkCmdClearColorImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8429 return;
8430 }
8431
8432 if(pColor == nullptr)
8433 {
8434 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8435 "vkCmdClearColorImage parameter, const VkClearColor* pColor, is null pointer");
8436 return;
8437 }
8438
8439 if(pRanges == nullptr)
8440 {
8441 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8442 "vkCmdClearColorImage parameter, const VkImageSubresourceRange* pRanges, is null pointer");
8443 return;
8444 }
8445 if(pRanges->aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8446 pRanges->aspect > VK_IMAGE_ASPECT_END_RANGE)
8447 {
8448 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8449 "vkCmdClearColorImage parameter, VkImageAspect pRanges->aspect, is unrecognized enumerator");
8450 return;
8451 }
8452}
8453
8454void PostCmdClearColorImage(
8455 VkCmdBuffer cmdBuffer,
8456 VkImage image,
8457 VkImageLayout imageLayout,
8458 uint32_t rangeCount)
8459{
8460 if(cmdBuffer == nullptr)
8461 {
8462 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8463 "vkCmdClearColorImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8464 return;
8465 }
8466
8467 if(image == nullptr)
8468 {
8469 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8470 "vkCmdClearColorImage parameter, VkImage image, is null pointer");
8471 return;
8472 }
8473
8474 if(imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8475 imageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8476 {
8477 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8478 "vkCmdClearColorImage parameter, VkImageLayout imageLayout, is unrecognized enumerator");
8479 return;
8480 }
8481
8482}
8483
8484VK_LAYER_EXPORT void VKAPI vkCmdClearColorImage(
8485 VkCmdBuffer cmdBuffer,
8486 VkImage image,
8487 VkImageLayout imageLayout,
8488 const VkClearColor* pColor,
8489 uint32_t rangeCount,
8490 const VkImageSubresourceRange* pRanges)
8491{
8492 PreCmdClearColorImage(cmdBuffer, pColor, pRanges);
8493 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
8494
8495 PostCmdClearColorImage(cmdBuffer, image, imageLayout, rangeCount);
8496}
8497
8498void PreCmdClearDepthStencil(
8499 VkCmdBuffer cmdBuffer,
8500 const VkImageSubresourceRange* pRanges)
8501{
8502 if(cmdBuffer == nullptr)
8503 {
8504 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8505 "vkCmdClearDepthStencil parameter, VkCmdBuffer cmdBuffer, is null pointer");
8506 return;
8507 }
8508
8509 if(pRanges == nullptr)
8510 {
8511 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8512 "vkCmdClearDepthStencil parameter, const VkImageSubresourceRange* pRanges, is null pointer");
8513 return;
8514 }
8515 if(pRanges->aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8516 pRanges->aspect > VK_IMAGE_ASPECT_END_RANGE)
8517 {
8518 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8519 "vkCmdClearDepthStencil parameter, VkImageAspect pRanges->aspect, is unrecognized enumerator");
8520 return;
8521 }
8522}
8523
8524void PostCmdClearDepthStencil(
8525 VkCmdBuffer cmdBuffer,
8526 VkImage image,
8527 VkImageLayout imageLayout,
8528 float depth,
8529 uint32_t stencil,
8530 uint32_t rangeCount)
8531{
8532 if(cmdBuffer == nullptr)
8533 {
8534 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8535 "vkCmdClearDepthStencil parameter, VkCmdBuffer cmdBuffer, is null pointer");
8536 return;
8537 }
8538
8539 if(image == nullptr)
8540 {
8541 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8542 "vkCmdClearDepthStencil parameter, VkImage image, is null pointer");
8543 return;
8544 }
8545
8546 if(imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8547 imageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8548 {
8549 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8550 "vkCmdClearDepthStencil parameter, VkImageLayout imageLayout, is unrecognized enumerator");
8551 return;
8552 }
8553
8554
8555
8556}
8557
8558VK_LAYER_EXPORT void VKAPI vkCmdClearDepthStencil(
8559 VkCmdBuffer cmdBuffer,
8560 VkImage image,
8561 VkImageLayout imageLayout,
8562 float depth,
8563 uint32_t stencil,
8564 uint32_t rangeCount,
8565 const VkImageSubresourceRange* pRanges)
8566{
8567 PreCmdClearDepthStencil(cmdBuffer, pRanges);
8568 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdClearDepthStencil(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
8569
8570 PostCmdClearDepthStencil(cmdBuffer, image, imageLayout, depth, stencil, rangeCount);
8571}
8572
8573void PreCmdResolveImage(
8574 VkCmdBuffer cmdBuffer,
8575 const VkImageResolve* pRegions)
8576{
8577 if(cmdBuffer == nullptr)
8578 {
8579 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8580 "vkCmdResolveImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8581 return;
8582 }
8583
8584 if(pRegions == nullptr)
8585 {
8586 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8587 "vkCmdResolveImage parameter, const VkImageResolve* pRegions, is null pointer");
8588 return;
8589 }
8590 if(pRegions->srcSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8591 pRegions->srcSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
8592 {
8593 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8594 "vkCmdResolveImage parameter, VkImageAspect pRegions->srcSubresource.aspect, is unrecognized enumerator");
8595 return;
8596 }
8597 if(pRegions->destSubresource.aspect < VK_IMAGE_ASPECT_BEGIN_RANGE ||
8598 pRegions->destSubresource.aspect > VK_IMAGE_ASPECT_END_RANGE)
8599 {
8600 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8601 "vkCmdResolveImage parameter, VkImageAspect pRegions->destSubresource.aspect, is unrecognized enumerator");
8602 return;
8603 }
8604}
8605
8606void PostCmdResolveImage(
8607 VkCmdBuffer cmdBuffer,
8608 VkImage srcImage,
8609 VkImageLayout srcImageLayout,
8610 VkImage destImage,
8611 VkImageLayout destImageLayout,
8612 uint32_t regionCount)
8613{
8614 if(cmdBuffer == nullptr)
8615 {
8616 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8617 "vkCmdResolveImage parameter, VkCmdBuffer cmdBuffer, is null pointer");
8618 return;
8619 }
8620
8621 if(srcImage == nullptr)
8622 {
8623 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8624 "vkCmdResolveImage parameter, VkImage srcImage, is null pointer");
8625 return;
8626 }
8627
8628 if(srcImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8629 srcImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8630 {
8631 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8632 "vkCmdResolveImage parameter, VkImageLayout srcImageLayout, is unrecognized enumerator");
8633 return;
8634 }
8635
8636 if(destImage == nullptr)
8637 {
8638 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8639 "vkCmdResolveImage parameter, VkImage destImage, is null pointer");
8640 return;
8641 }
8642
8643 if(destImageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
8644 destImageLayout > VK_IMAGE_LAYOUT_END_RANGE)
8645 {
8646 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8647 "vkCmdResolveImage parameter, VkImageLayout destImageLayout, is unrecognized enumerator");
8648 return;
8649 }
8650
8651}
8652
8653VK_LAYER_EXPORT void VKAPI vkCmdResolveImage(
8654 VkCmdBuffer cmdBuffer,
8655 VkImage srcImage,
8656 VkImageLayout srcImageLayout,
8657 VkImage destImage,
8658 VkImageLayout destImageLayout,
8659 uint32_t regionCount,
8660 const VkImageResolve* pRegions)
8661{
8662 PreCmdResolveImage(cmdBuffer, pRegions);
8663 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
8664
8665 PostCmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount);
8666}
8667
8668void PreCmdSetEvent(
8669 VkCmdBuffer cmdBuffer)
8670{
8671 if(cmdBuffer == nullptr)
8672 {
8673 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8674 "vkCmdSetEvent parameter, VkCmdBuffer cmdBuffer, is null pointer");
8675 return;
8676 }
8677}
8678
8679void PostCmdSetEvent(
8680 VkCmdBuffer cmdBuffer,
8681 VkEvent event,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008682 VkPipelineStageFlags stageMask)
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008683{
8684 if(cmdBuffer == nullptr)
8685 {
8686 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8687 "vkCmdSetEvent parameter, VkCmdBuffer cmdBuffer, is null pointer");
8688 return;
8689 }
8690
8691 if(event == nullptr)
8692 {
8693 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8694 "vkCmdSetEvent parameter, VkEvent event, is null pointer");
8695 return;
8696 }
8697
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008698}
8699
8700VK_LAYER_EXPORT void VKAPI vkCmdSetEvent(
8701 VkCmdBuffer cmdBuffer,
8702 VkEvent event,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008703 VkPipelineStageFlags stageMask)
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008704{
8705 PreCmdSetEvent(cmdBuffer);
Tony Barbourc2e987e2015-06-29 16:20:35 -06008706 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetEvent(cmdBuffer, event, stageMask);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008707
Tony Barbourc2e987e2015-06-29 16:20:35 -06008708 PostCmdSetEvent(cmdBuffer, event, stageMask);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008709}
8710
8711void PreCmdResetEvent(
8712 VkCmdBuffer cmdBuffer)
8713{
8714 if(cmdBuffer == nullptr)
8715 {
8716 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8717 "vkCmdResetEvent parameter, VkCmdBuffer cmdBuffer, is null pointer");
8718 return;
8719 }
8720}
8721
8722void PostCmdResetEvent(
8723 VkCmdBuffer cmdBuffer,
8724 VkEvent event,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008725 VkPipelineStageFlags stageMask)
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008726{
8727 if(cmdBuffer == nullptr)
8728 {
8729 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8730 "vkCmdResetEvent parameter, VkCmdBuffer cmdBuffer, is null pointer");
8731 return;
8732 }
8733
8734 if(event == nullptr)
8735 {
8736 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8737 "vkCmdResetEvent parameter, VkEvent event, is null pointer");
8738 return;
8739 }
8740
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008741}
8742
8743VK_LAYER_EXPORT void VKAPI vkCmdResetEvent(
8744 VkCmdBuffer cmdBuffer,
8745 VkEvent event,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008746 VkPipelineStageFlags stageMask)
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008747{
8748 PreCmdResetEvent(cmdBuffer);
Tony Barbourc2e987e2015-06-29 16:20:35 -06008749 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdResetEvent(cmdBuffer, event, stageMask);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008750
Tony Barbourc2e987e2015-06-29 16:20:35 -06008751 PostCmdResetEvent(cmdBuffer, event, stageMask);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008752}
8753
8754void PreCmdWaitEvents(
8755 VkCmdBuffer cmdBuffer,
8756 const VkEvent* pEvents,
8757 const void** ppMemBarriers)
8758{
8759 if(cmdBuffer == nullptr)
8760 {
8761 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8762 "vkCmdWaitEvents parameter, VkCmdBuffer cmdBuffer, is null pointer");
8763 return;
8764 }
8765
8766 if(pEvents == nullptr)
8767 {
8768 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8769 "vkCmdWaitEvents parameter, const VkEvent* pEvents, is null pointer");
8770 return;
8771 }
8772 if((*pEvents) == nullptr)
8773 {
8774 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8775 "vkCmdWaitEvents parameter, const VkEvent* pEvents, is null pointer");
8776 return;
8777 }
8778
8779 if(ppMemBarriers == nullptr)
8780 {
8781 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8782 "vkCmdWaitEvents parameter, const void** ppMemBarriers, is null pointer");
8783 return;
8784 }
8785}
8786
8787void PostCmdWaitEvents(
8788 VkCmdBuffer cmdBuffer,
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008789 uint32_t eventCount,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008790 VkPipelineStageFlags sourceStageMask,
8791 VkPipelineStageFlags destStageMask,
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008792 uint32_t memBarrierCount)
8793{
8794 if(cmdBuffer == nullptr)
8795 {
8796 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8797 "vkCmdWaitEvents parameter, VkCmdBuffer cmdBuffer, is null pointer");
8798 return;
8799 }
8800
Tony Barbourc2e987e2015-06-29 16:20:35 -06008801
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008802
8803
8804}
8805
8806VK_LAYER_EXPORT void VKAPI vkCmdWaitEvents(
8807 VkCmdBuffer cmdBuffer,
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008808 uint32_t eventCount,
8809 const VkEvent* pEvents,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008810 VkPipelineStageFlags sourceStageMask,
8811 VkPipelineStageFlags destStageMask,
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008812 uint32_t memBarrierCount,
8813 const void** ppMemBarriers)
8814{
8815 PreCmdWaitEvents(cmdBuffer, pEvents, ppMemBarriers);
Tony Barbourc2e987e2015-06-29 16:20:35 -06008816 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWaitEvents(cmdBuffer, eventCount, pEvents, sourceStageMask, destStageMask, memBarrierCount, ppMemBarriers);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008817
Tony Barbourc2e987e2015-06-29 16:20:35 -06008818 PostCmdWaitEvents(cmdBuffer, eventCount, sourceStageMask, destStageMask, memBarrierCount);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008819}
8820
8821void PreCmdPipelineBarrier(
8822 VkCmdBuffer cmdBuffer,
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008823 const void** ppMemBarriers)
8824{
8825 if(cmdBuffer == nullptr)
8826 {
8827 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8828 "vkCmdPipelineBarrier parameter, VkCmdBuffer cmdBuffer, is null pointer");
8829 return;
8830 }
8831
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008832 if(ppMemBarriers == nullptr)
8833 {
8834 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8835 "vkCmdPipelineBarrier parameter, const void** ppMemBarriers, is null pointer");
8836 return;
8837 }
8838}
8839
8840void PostCmdPipelineBarrier(
8841 VkCmdBuffer cmdBuffer,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008842 VkPipelineStageFlags sourceStageMask,
8843 VkPipelineStageFlags destStageMask,
8844 bool32_t byRegion,
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008845 uint32_t memBarrierCount)
8846{
8847 if(cmdBuffer == nullptr)
8848 {
8849 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8850 "vkCmdPipelineBarrier parameter, VkCmdBuffer cmdBuffer, is null pointer");
8851 return;
8852 }
8853
Tony Barbourc2e987e2015-06-29 16:20:35 -06008854
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008855
8856
8857}
8858
8859VK_LAYER_EXPORT void VKAPI vkCmdPipelineBarrier(
8860 VkCmdBuffer cmdBuffer,
Tony Barbourc2e987e2015-06-29 16:20:35 -06008861 VkPipelineStageFlags sourceStageMask,
8862 VkPipelineStageFlags destStageMask,
8863 bool32_t byRegion,
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008864 uint32_t memBarrierCount,
8865 const void** ppMemBarriers)
8866{
Tony Barbourc2e987e2015-06-29 16:20:35 -06008867 PreCmdPipelineBarrier(cmdBuffer, ppMemBarriers);
8868 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdPipelineBarrier(cmdBuffer, sourceStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008869
Tony Barbourc2e987e2015-06-29 16:20:35 -06008870 PostCmdPipelineBarrier(cmdBuffer, sourceStageMask, destStageMask, byRegion, memBarrierCount);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06008871}
8872
8873void PreCmdBeginQuery(
8874 VkCmdBuffer cmdBuffer)
8875{
8876 if(cmdBuffer == nullptr)
8877 {
8878 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8879 "vkCmdBeginQuery parameter, VkCmdBuffer cmdBuffer, is null pointer");
8880 return;
8881 }
8882}
8883
8884void PostCmdBeginQuery(
8885 VkCmdBuffer cmdBuffer,
8886 VkQueryPool queryPool,
8887 uint32_t slot,
8888 VkQueryControlFlags flags)
8889{
8890 if(cmdBuffer == nullptr)
8891 {
8892 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8893 "vkCmdBeginQuery parameter, VkCmdBuffer cmdBuffer, is null pointer");
8894 return;
8895 }
8896
8897 if(queryPool == nullptr)
8898 {
8899 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8900 "vkCmdBeginQuery parameter, VkQueryPool queryPool, is null pointer");
8901 return;
8902 }
8903
8904
8905 if(!ValidateEnumerator((VkQueryControlFlagBits)flags))
8906 {
8907 std::string reason = "vkCmdBeginQuery parameter, VkQueryControlFlags flags, is " + EnumeratorString((VkQueryControlFlagBits)flags);
8908 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
8909 return;
8910 }
8911}
8912
8913VK_LAYER_EXPORT void VKAPI vkCmdBeginQuery(
8914 VkCmdBuffer cmdBuffer,
8915 VkQueryPool queryPool,
8916 uint32_t slot,
8917 VkQueryControlFlags flags)
8918{
8919 PreCmdBeginQuery(cmdBuffer);
8920 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBeginQuery(cmdBuffer, queryPool, slot, flags);
8921
8922 PostCmdBeginQuery(cmdBuffer, queryPool, slot, flags);
8923}
8924
8925void PreCmdEndQuery(
8926 VkCmdBuffer cmdBuffer)
8927{
8928 if(cmdBuffer == nullptr)
8929 {
8930 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8931 "vkCmdEndQuery parameter, VkCmdBuffer cmdBuffer, is null pointer");
8932 return;
8933 }
8934}
8935
8936void PostCmdEndQuery(
8937 VkCmdBuffer cmdBuffer,
8938 VkQueryPool queryPool,
8939 uint32_t slot)
8940{
8941 if(cmdBuffer == nullptr)
8942 {
8943 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8944 "vkCmdEndQuery parameter, VkCmdBuffer cmdBuffer, is null pointer");
8945 return;
8946 }
8947
8948 if(queryPool == nullptr)
8949 {
8950 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8951 "vkCmdEndQuery parameter, VkQueryPool queryPool, is null pointer");
8952 return;
8953 }
8954
8955}
8956
8957VK_LAYER_EXPORT void VKAPI vkCmdEndQuery(
8958 VkCmdBuffer cmdBuffer,
8959 VkQueryPool queryPool,
8960 uint32_t slot)
8961{
8962 PreCmdEndQuery(cmdBuffer);
8963 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdEndQuery(cmdBuffer, queryPool, slot);
8964
8965 PostCmdEndQuery(cmdBuffer, queryPool, slot);
8966}
8967
8968void PreCmdResetQueryPool(
8969 VkCmdBuffer cmdBuffer)
8970{
8971 if(cmdBuffer == nullptr)
8972 {
8973 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8974 "vkCmdResetQueryPool parameter, VkCmdBuffer cmdBuffer, is null pointer");
8975 return;
8976 }
8977}
8978
8979void PostCmdResetQueryPool(
8980 VkCmdBuffer cmdBuffer,
8981 VkQueryPool queryPool,
8982 uint32_t startQuery,
8983 uint32_t queryCount)
8984{
8985 if(cmdBuffer == nullptr)
8986 {
8987 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8988 "vkCmdResetQueryPool parameter, VkCmdBuffer cmdBuffer, is null pointer");
8989 return;
8990 }
8991
8992 if(queryPool == nullptr)
8993 {
8994 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
8995 "vkCmdResetQueryPool parameter, VkQueryPool queryPool, is null pointer");
8996 return;
8997 }
8998
8999
9000}
9001
9002VK_LAYER_EXPORT void VKAPI vkCmdResetQueryPool(
9003 VkCmdBuffer cmdBuffer,
9004 VkQueryPool queryPool,
9005 uint32_t startQuery,
9006 uint32_t queryCount)
9007{
9008 PreCmdResetQueryPool(cmdBuffer);
9009 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
9010
9011 PostCmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
9012}
9013
9014void PreCmdWriteTimestamp(
9015 VkCmdBuffer cmdBuffer)
9016{
9017 if(cmdBuffer == nullptr)
9018 {
9019 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9020 "vkCmdWriteTimestamp parameter, VkCmdBuffer cmdBuffer, is null pointer");
9021 return;
9022 }
9023}
9024
9025void PostCmdWriteTimestamp(
9026 VkCmdBuffer cmdBuffer,
9027 VkTimestampType timestampType,
9028 VkBuffer destBuffer,
9029 VkDeviceSize destOffset)
9030{
9031 if(cmdBuffer == nullptr)
9032 {
9033 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9034 "vkCmdWriteTimestamp parameter, VkCmdBuffer cmdBuffer, is null pointer");
9035 return;
9036 }
9037
9038 if(timestampType < VK_TIMESTAMP_TYPE_BEGIN_RANGE ||
9039 timestampType > VK_TIMESTAMP_TYPE_END_RANGE)
9040 {
9041 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9042 "vkCmdWriteTimestamp parameter, VkTimestampType timestampType, is unrecognized enumerator");
9043 return;
9044 }
9045
9046 if(destBuffer == nullptr)
9047 {
9048 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9049 "vkCmdWriteTimestamp parameter, VkBuffer destBuffer, is null pointer");
9050 return;
9051 }
9052
9053}
9054
9055VK_LAYER_EXPORT void VKAPI vkCmdWriteTimestamp(
9056 VkCmdBuffer cmdBuffer,
9057 VkTimestampType timestampType,
9058 VkBuffer destBuffer,
9059 VkDeviceSize destOffset)
9060{
9061 PreCmdWriteTimestamp(cmdBuffer);
9062 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdWriteTimestamp(cmdBuffer, timestampType, destBuffer, destOffset);
9063
9064 PostCmdWriteTimestamp(cmdBuffer, timestampType, destBuffer, destOffset);
9065}
9066
9067void PreCmdCopyQueryPoolResults(
9068 VkCmdBuffer cmdBuffer)
9069{
9070 if(cmdBuffer == nullptr)
9071 {
9072 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9073 "vkCmdCopyQueryPoolResults parameter, VkCmdBuffer cmdBuffer, is null pointer");
9074 return;
9075 }
9076}
9077
9078void PostCmdCopyQueryPoolResults(
9079 VkCmdBuffer cmdBuffer,
9080 VkQueryPool queryPool,
9081 uint32_t startQuery,
9082 uint32_t queryCount,
9083 VkBuffer destBuffer,
9084 VkDeviceSize destOffset,
9085 VkDeviceSize destStride,
9086 VkQueryResultFlags flags)
9087{
9088 if(cmdBuffer == nullptr)
9089 {
9090 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9091 "vkCmdCopyQueryPoolResults parameter, VkCmdBuffer cmdBuffer, is null pointer");
9092 return;
9093 }
9094
9095 if(queryPool == nullptr)
9096 {
9097 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9098 "vkCmdCopyQueryPoolResults parameter, VkQueryPool queryPool, is null pointer");
9099 return;
9100 }
9101
9102
9103
9104 if(destBuffer == nullptr)
9105 {
9106 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9107 "vkCmdCopyQueryPoolResults parameter, VkBuffer destBuffer, is null pointer");
9108 return;
9109 }
9110
9111
9112
9113 if(!ValidateEnumerator((VkQueryResultFlagBits)flags))
9114 {
9115 std::string reason = "vkCmdCopyQueryPoolResults parameter, VkQueryResultFlags flags, is " + EnumeratorString((VkQueryResultFlagBits)flags);
9116 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
9117 return;
9118 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009119}
9120
Jeremy Hayescf469132015-04-17 10:36:53 -06009121VK_LAYER_EXPORT void VKAPI vkCmdCopyQueryPoolResults(
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009122 VkCmdBuffer cmdBuffer,
9123 VkQueryPool queryPool,
9124 uint32_t startQuery,
9125 uint32_t queryCount,
9126 VkBuffer destBuffer,
9127 VkDeviceSize destOffset,
9128 VkDeviceSize destStride,
9129 VkQueryResultFlags flags)
Jeremy Hayescf469132015-04-17 10:36:53 -06009130{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009131 PreCmdCopyQueryPoolResults(cmdBuffer);
9132 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
9133
9134 PostCmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
Jeremy Hayescf469132015-04-17 10:36:53 -06009135}
9136
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009137void PreCreateFramebuffer(
9138 VkDevice device,
9139 const VkFramebufferCreateInfo* pCreateInfo)
9140{
9141 if(device == nullptr)
9142 {
9143 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9144 "vkCreateFramebuffer parameter, VkDevice device, is null pointer");
9145 return;
9146 }
9147
9148 if(pCreateInfo == nullptr)
9149 {
9150 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9151 "vkCreateFramebuffer parameter, const VkFramebufferCreateInfo* pCreateInfo, is null pointer");
9152 return;
9153 }
9154 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
9155 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
9156 {
9157 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9158 "vkCreateFramebuffer parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
9159 return;
9160 }
9161 if(pCreateInfo->pColorAttachments == nullptr)
9162 {
9163 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9164 "vkCreateFramebuffer parameter, const VkColorAttachmentBindInfo* pCreateInfo->pColorAttachments, is null pointer");
9165 return;
9166 }
9167 if(pCreateInfo->pColorAttachments->view == nullptr)
9168 {
9169 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9170 "vkCreateFramebuffer parameter, VkColorAttachmentView pCreateInfo->pColorAttachments->view, is null pointer");
9171 return;
9172 }
9173 if(pCreateInfo->pColorAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
9174 pCreateInfo->pColorAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE)
9175 {
9176 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9177 "vkCreateFramebuffer parameter, VkImageLayout pCreateInfo->pColorAttachments->layout, is unrecognized enumerator");
9178 return;
9179 }
9180 if(pCreateInfo->pDepthStencilAttachment == nullptr)
9181 {
9182 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9183 "vkCreateFramebuffer parameter, const VkDepthStencilBindInfo* pCreateInfo->pDepthStencilAttachment, is null pointer");
9184 return;
9185 }
9186 if(pCreateInfo->pDepthStencilAttachment->view == nullptr)
9187 {
9188 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9189 "vkCreateFramebuffer parameter, VkDepthStencilView pCreateInfo->pDepthStencilAttachment->view, is null pointer");
9190 return;
9191 }
9192 if(pCreateInfo->pDepthStencilAttachment->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
9193 pCreateInfo->pDepthStencilAttachment->layout > VK_IMAGE_LAYOUT_END_RANGE)
9194 {
9195 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9196 "vkCreateFramebuffer parameter, VkImageLayout pCreateInfo->pDepthStencilAttachment->layout, is unrecognized enumerator");
9197 return;
9198 }
9199}
9200
9201void PostCreateFramebuffer(
9202 VkDevice device,
9203 VkFramebuffer* pFramebuffer,
9204 VkResult result)
9205{
9206 if(device == nullptr)
9207 {
9208 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9209 "vkCreateFramebuffer parameter, VkDevice device, is null pointer");
9210 return;
9211 }
9212
9213 if(pFramebuffer == nullptr)
9214 {
9215 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9216 "vkCreateFramebuffer parameter, VkFramebuffer* pFramebuffer, is null pointer");
9217 return;
9218 }
9219 if((*pFramebuffer) == nullptr)
9220 {
9221 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9222 "vkCreateFramebuffer parameter, VkFramebuffer* pFramebuffer, is null pointer");
9223 return;
9224 }
9225
9226 if(result != VK_SUCCESS)
9227 {
9228 std::string reason = "vkCreateFramebuffer parameter, VkResult result, is " + EnumeratorString(result);
9229 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
9230 return;
9231 }
9232}
9233
9234VK_LAYER_EXPORT VkResult VKAPI vkCreateFramebuffer(
9235 VkDevice device,
9236 const VkFramebufferCreateInfo* pCreateInfo,
9237 VkFramebuffer* pFramebuffer)
9238{
9239 PreCreateFramebuffer(device, pCreateInfo);
9240 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateFramebuffer(device, pCreateInfo, pFramebuffer);
9241
9242 PostCreateFramebuffer(device, pFramebuffer, result);
9243
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009244 return result;
9245}
9246
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009247void PreCreateRenderPass(
9248 VkDevice device,
9249 const VkRenderPassCreateInfo* pCreateInfo)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009250{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009251 if(device == nullptr)
9252 {
9253 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9254 "vkCreateRenderPass parameter, VkDevice device, is null pointer");
9255 return;
9256 }
9257
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009258 if(pCreateInfo == nullptr)
9259 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009260 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9261 "vkCreateRenderPass parameter, const VkRenderPassCreateInfo* pCreateInfo, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009262 return;
9263 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009264 if(pCreateInfo->sType < VK_STRUCTURE_TYPE_BEGIN_RANGE ||
9265 pCreateInfo->sType > VK_STRUCTURE_TYPE_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009266 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009267 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9268 "vkCreateRenderPass parameter, VkStructureType pCreateInfo->sType, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009269 return;
9270 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009271 if(pCreateInfo->pColorFormats == nullptr)
9272 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009273 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9274 "vkCreateRenderPass parameter, const VkFormat* pCreateInfo->pColorFormats, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009275 return;
9276 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009277 if((*pCreateInfo->pColorFormats) < VK_FORMAT_BEGIN_RANGE ||
9278 (*pCreateInfo->pColorFormats) > VK_FORMAT_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009279 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009280 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9281 "vkCreateRenderPass parameter, const VkFormat* pCreateInfo->pColorFormats, is unrecognized enumerator");
9282 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009283 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009284 if(pCreateInfo->pColorLayouts == nullptr)
9285 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009286 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9287 "vkCreateRenderPass parameter, const VkImageLayout* pCreateInfo->pColorLayouts, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009288 return;
9289 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009290 if((*pCreateInfo->pColorLayouts) < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
9291 (*pCreateInfo->pColorLayouts) > VK_IMAGE_LAYOUT_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009292 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009293 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9294 "vkCreateRenderPass parameter, const VkImageLayout* pCreateInfo->pColorLayouts, is unrecognized enumerator");
9295 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009296 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009297 if(pCreateInfo->pColorLoadOps == nullptr)
9298 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009299 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9300 "vkCreateRenderPass parameter, const VkAttachmentLoadOp* pCreateInfo->pColorLoadOps, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009301 return;
9302 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009303 if((*pCreateInfo->pColorLoadOps) < VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE ||
9304 (*pCreateInfo->pColorLoadOps) > VK_ATTACHMENT_LOAD_OP_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009305 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009306 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9307 "vkCreateRenderPass parameter, const VkAttachmentLoadOp* pCreateInfo->pColorLoadOps, is unrecognized enumerator");
9308 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009309 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009310 if(pCreateInfo->pColorStoreOps == nullptr)
9311 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009312 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9313 "vkCreateRenderPass parameter, const VkAttachmentStoreOp* pCreateInfo->pColorStoreOps, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009314 return;
9315 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009316 if((*pCreateInfo->pColorStoreOps) < VK_ATTACHMENT_STORE_OP_BEGIN_RANGE ||
9317 (*pCreateInfo->pColorStoreOps) > VK_ATTACHMENT_STORE_OP_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009318 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009319 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9320 "vkCreateRenderPass parameter, const VkAttachmentStoreOp* pCreateInfo->pColorStoreOps, is unrecognized enumerator");
9321 return;
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009322 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009323 if(pCreateInfo->pColorLoadClearValues == nullptr)
9324 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009325 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9326 "vkCreateRenderPass parameter, const VkClearColor* pCreateInfo->pColorLoadClearValues, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009327 return;
9328 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009329 if(pCreateInfo->depthStencilFormat < VK_FORMAT_BEGIN_RANGE ||
9330 pCreateInfo->depthStencilFormat > VK_FORMAT_END_RANGE)
Jeremy Hayes6b7060b2015-04-07 09:49:05 -06009331 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009332 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9333 "vkCreateRenderPass parameter, VkFormat pCreateInfo->depthStencilFormat, is unrecognized enumerator");
Jeremy Hayes6b7060b2015-04-07 09:49:05 -06009334 return;
9335 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009336 if(pCreateInfo->depthStencilLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
9337 pCreateInfo->depthStencilLayout > VK_IMAGE_LAYOUT_END_RANGE)
Jeremy Hayes6b7060b2015-04-07 09:49:05 -06009338 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009339 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9340 "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->depthStencilLayout, is unrecognized enumerator");
Jeremy Hayes6b7060b2015-04-07 09:49:05 -06009341 return;
9342 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009343 if(pCreateInfo->depthLoadOp < VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE ||
9344 pCreateInfo->depthLoadOp > VK_ATTACHMENT_LOAD_OP_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009345 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009346 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9347 "vkCreateRenderPass parameter, VkAttachmentLoadOp pCreateInfo->depthLoadOp, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009348 return;
9349 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009350 if(pCreateInfo->depthStoreOp < VK_ATTACHMENT_STORE_OP_BEGIN_RANGE ||
9351 pCreateInfo->depthStoreOp > VK_ATTACHMENT_STORE_OP_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009352 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009353 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9354 "vkCreateRenderPass parameter, VkAttachmentStoreOp pCreateInfo->depthStoreOp, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009355 return;
9356 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009357 if(pCreateInfo->stencilLoadOp < VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE ||
9358 pCreateInfo->stencilLoadOp > VK_ATTACHMENT_LOAD_OP_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009359 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009360 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9361 "vkCreateRenderPass parameter, VkAttachmentLoadOp pCreateInfo->stencilLoadOp, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009362 return;
9363 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009364 if(pCreateInfo->stencilStoreOp < VK_ATTACHMENT_STORE_OP_BEGIN_RANGE ||
9365 pCreateInfo->stencilStoreOp > VK_ATTACHMENT_STORE_OP_END_RANGE)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009366 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009367 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9368 "vkCreateRenderPass parameter, VkAttachmentStoreOp pCreateInfo->stencilStoreOp, is unrecognized enumerator");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009369 return;
9370 }
9371}
9372
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009373void PostCreateRenderPass(
9374 VkDevice device,
9375 VkRenderPass* pRenderPass,
9376 VkResult result)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009377{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009378 if(device == nullptr)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009379 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009380 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9381 "vkCreateRenderPass parameter, VkDevice device, is null pointer");
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009382 return;
9383 }
9384
9385 if(pRenderPass == nullptr)
9386 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009387 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9388 "vkCreateRenderPass parameter, VkRenderPass* pRenderPass, is null pointer");
9389 return;
9390 }
9391 if((*pRenderPass) == nullptr)
9392 {
9393 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9394 "vkCreateRenderPass parameter, VkRenderPass* pRenderPass, is null pointer");
9395 return;
9396 }
9397
9398 if(result != VK_SUCCESS)
9399 {
9400 std::string reason = "vkCreateRenderPass parameter, VkResult result, is " + EnumeratorString(result);
9401 log_msg(mdd(device), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK", reason.c_str());
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009402 return;
9403 }
9404}
9405
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009406VK_LAYER_EXPORT VkResult VKAPI vkCreateRenderPass(
9407 VkDevice device,
9408 const VkRenderPassCreateInfo* pCreateInfo,
9409 VkRenderPass* pRenderPass)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009410{
9411 PreCreateRenderPass(device, pCreateInfo);
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009412 VkResult result = get_dispatch_table(pc_device_table_map, device)->CreateRenderPass(device, pCreateInfo, pRenderPass);
9413
9414 PostCreateRenderPass(device, pRenderPass, result);
9415
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009416 return result;
9417}
9418
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009419void PreCmdBeginRenderPass(
9420 VkCmdBuffer cmdBuffer,
9421 const VkRenderPassBegin* pRenderPassBegin)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009422{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009423 if(cmdBuffer == nullptr)
9424 {
9425 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9426 "vkCmdBeginRenderPass parameter, VkCmdBuffer cmdBuffer, is null pointer");
Jon Ashburn6f8cd632015-06-01 09:37:38 -06009427 return;
Jon Ashburnf0615e22015-05-25 14:11:37 -06009428 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009429
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009430 if(pRenderPassBegin == nullptr)
9431 {
9432 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9433 "vkCmdBeginRenderPass parameter, const VkRenderPassBegin* pRenderPassBegin, is null pointer");
Jon Ashburn6f8cd632015-06-01 09:37:38 -06009434 return;
Jon Ashburnf0615e22015-05-25 14:11:37 -06009435 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009436 if(pRenderPassBegin->renderPass == nullptr)
9437 {
9438 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9439 "vkCmdBeginRenderPass parameter, VkRenderPass pRenderPassBegin->renderPass, is null pointer");
9440 return;
Jon Ashburnf0615e22015-05-25 14:11:37 -06009441 }
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009442 if(pRenderPassBegin->framebuffer == nullptr)
9443 {
9444 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9445 "vkCmdBeginRenderPass parameter, VkFramebuffer pRenderPassBegin->framebuffer, is null pointer");
9446 return;
Jon Ashburnf0615e22015-05-25 14:11:37 -06009447 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009448}
9449
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009450void PostCmdBeginRenderPass(
9451 VkCmdBuffer cmdBuffer)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009452{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009453 if(cmdBuffer == nullptr)
9454 {
9455 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9456 "vkCmdBeginRenderPass parameter, VkCmdBuffer cmdBuffer, is null pointer");
9457 return;
9458 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009459}
9460
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009461VK_LAYER_EXPORT void VKAPI vkCmdBeginRenderPass(
9462 VkCmdBuffer cmdBuffer,
9463 const VkRenderPassBegin* pRenderPassBegin)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009464{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009465 PreCmdBeginRenderPass(cmdBuffer, pRenderPassBegin);
9466 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdBeginRenderPass(cmdBuffer, pRenderPassBegin);
9467
9468 PostCmdBeginRenderPass(cmdBuffer);
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009469}
9470
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009471void PreCmdEndRenderPass(
9472 VkCmdBuffer cmdBuffer)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009473{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009474 if(cmdBuffer == nullptr)
9475 {
9476 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9477 "vkCmdEndRenderPass parameter, VkCmdBuffer cmdBuffer, is null pointer");
9478 return;
9479 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009480}
9481
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009482void PostCmdEndRenderPass(
9483 VkCmdBuffer cmdBuffer,
9484 VkRenderPass renderPass)
Chia-I Wu5b66aa52015-04-16 22:02:10 +08009485{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009486 if(cmdBuffer == nullptr)
9487 {
9488 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9489 "vkCmdEndRenderPass parameter, VkCmdBuffer cmdBuffer, is null pointer");
9490 return;
9491 }
9492
9493 if(renderPass == nullptr)
9494 {
9495 log_msg(mdd(cmdBuffer), VK_DBG_REPORT_WARN_BIT, (VkObjectType)0, NULL, 0, 1, "PARAMCHECK",
9496 "vkCmdEndRenderPass parameter, VkRenderPass renderPass, is null pointer");
9497 return;
9498 }
Chia-I Wu5b66aa52015-04-16 22:02:10 +08009499}
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009500
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009501VK_LAYER_EXPORT void VKAPI vkCmdEndRenderPass(
9502 VkCmdBuffer cmdBuffer,
9503 VkRenderPass renderPass)
Jon Ashburn79b78ac2015-05-05 14:22:52 -06009504{
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009505 PreCmdEndRenderPass(cmdBuffer);
9506 get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdEndRenderPass(cmdBuffer, renderPass);
Jon Ashburn79b78ac2015-05-05 14:22:52 -06009507
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009508 PostCmdEndRenderPass(cmdBuffer, renderPass);
Jon Ashburn79b78ac2015-05-05 14:22:52 -06009509}
9510
Jon Ashburn1245cec2015-05-18 13:20:15 -06009511VK_LAYER_EXPORT void* VKAPI vkGetDeviceProcAddr(VkDevice device, const char* funcName)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009512{
Mark Lobodzinski3723c512015-05-26 10:58:40 -05009513 if (device == NULL) {
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009514 return NULL;
Mark Lobodzinski3723c512015-05-26 10:58:40 -05009515 }
9516
Jon Ashburn4f2575f2015-05-28 16:25:02 -06009517 /* loader uses this to force layer initialization; device object is wrapped */
9518 if (!strcmp(funcName, "vkGetDeviceProcAddr")) {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009519 initDeviceTable(pc_device_table_map, (const VkBaseLayerObject *) device);
Jon Ashburn4f2575f2015-05-28 16:25:02 -06009520 return (void*) vkGetDeviceProcAddr;
9521 }
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009522
Courtney Goeltzenleuchterbe637992015-06-25 18:01:43 -06009523 if (!strcmp(funcName, "vkCreateDevice"))
9524 return (void*) vkCreateDevice;
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009525 if (!strcmp(funcName, "vkDestroyDevice"))
9526 return (void*) vkDestroyDevice;
9527 if (!strcmp(funcName, "vkGetDeviceQueue"))
9528 return (void*) vkGetDeviceQueue;
9529 if (!strcmp(funcName, "vkQueueSubmit"))
9530 return (void*) vkQueueSubmit;
9531 if (!strcmp(funcName, "vkQueueWaitIdle"))
9532 return (void*) vkQueueWaitIdle;
9533 if (!strcmp(funcName, "vkDeviceWaitIdle"))
9534 return (void*) vkDeviceWaitIdle;
9535 if (!strcmp(funcName, "vkAllocMemory"))
9536 return (void*) vkAllocMemory;
9537 if (!strcmp(funcName, "vkFreeMemory"))
9538 return (void*) vkFreeMemory;
9539 if (!strcmp(funcName, "vkMapMemory"))
9540 return (void*) vkMapMemory;
9541 if (!strcmp(funcName, "vkUnmapMemory"))
9542 return (void*) vkUnmapMemory;
9543 if (!strcmp(funcName, "vkFlushMappedMemoryRanges"))
9544 return (void*) vkFlushMappedMemoryRanges;
9545 if (!strcmp(funcName, "vkInvalidateMappedMemoryRanges"))
9546 return (void*) vkInvalidateMappedMemoryRanges;
9547 if (!strcmp(funcName, "vkDestroyObject"))
9548 return (void*) vkDestroyObject;
9549 if (!strcmp(funcName, "vkGetObjectMemoryRequirements"))
9550 return (void*) vkGetObjectMemoryRequirements;
9551 if (!strcmp(funcName, "vkCreateFence"))
9552 return (void*) vkCreateFence;
9553 if (!strcmp(funcName, "vkResetFences"))
9554 return (void*) vkResetFences;
9555 if (!strcmp(funcName, "vkGetFenceStatus"))
9556 return (void*) vkGetFenceStatus;
9557 if (!strcmp(funcName, "vkWaitForFences"))
9558 return (void*) vkWaitForFences;
9559 if (!strcmp(funcName, "vkCreateSemaphore"))
9560 return (void*) vkCreateSemaphore;
9561 if (!strcmp(funcName, "vkQueueSignalSemaphore"))
9562 return (void*) vkQueueSignalSemaphore;
9563 if (!strcmp(funcName, "vkQueueWaitSemaphore"))
9564 return (void*) vkQueueWaitSemaphore;
9565 if (!strcmp(funcName, "vkCreateEvent"))
9566 return (void*) vkCreateEvent;
9567 if (!strcmp(funcName, "vkGetEventStatus"))
9568 return (void*) vkGetEventStatus;
9569 if (!strcmp(funcName, "vkSetEvent"))
9570 return (void*) vkSetEvent;
9571 if (!strcmp(funcName, "vkResetEvent"))
9572 return (void*) vkResetEvent;
9573 if (!strcmp(funcName, "vkCreateQueryPool"))
9574 return (void*) vkCreateQueryPool;
9575 if (!strcmp(funcName, "vkGetQueryPoolResults"))
9576 return (void*) vkGetQueryPoolResults;
9577 if (!strcmp(funcName, "vkCreateBuffer"))
9578 return (void*) vkCreateBuffer;
9579 if (!strcmp(funcName, "vkCreateBufferView"))
9580 return (void*) vkCreateBufferView;
9581 if (!strcmp(funcName, "vkCreateImage"))
9582 return (void*) vkCreateImage;
9583 if (!strcmp(funcName, "vkGetImageSubresourceLayout"))
9584 return (void*) vkGetImageSubresourceLayout;
9585 if (!strcmp(funcName, "vkCreateImageView"))
9586 return (void*) vkCreateImageView;
9587 if (!strcmp(funcName, "vkCreateColorAttachmentView"))
9588 return (void*) vkCreateColorAttachmentView;
9589 if (!strcmp(funcName, "vkCreateDepthStencilView"))
9590 return (void*) vkCreateDepthStencilView;
9591 if (!strcmp(funcName, "vkCreateShader"))
9592 return (void*) vkCreateShader;
9593 if (!strcmp(funcName, "vkCreateGraphicsPipeline"))
9594 return (void*) vkCreateGraphicsPipeline;
9595 if (!strcmp(funcName, "vkCreateGraphicsPipelineDerivative"))
9596 return (void*) vkCreateGraphicsPipelineDerivative;
9597 if (!strcmp(funcName, "vkCreateComputePipeline"))
9598 return (void*) vkCreateComputePipeline;
9599 if (!strcmp(funcName, "vkStorePipeline"))
9600 return (void*) vkStorePipeline;
9601 if (!strcmp(funcName, "vkLoadPipeline"))
9602 return (void*) vkLoadPipeline;
9603 if (!strcmp(funcName, "vkLoadPipelineDerivative"))
9604 return (void*) vkLoadPipelineDerivative;
9605 if (!strcmp(funcName, "vkCreatePipelineLayout"))
9606 return (void*) vkCreatePipelineLayout;
9607 if (!strcmp(funcName, "vkCreateSampler"))
9608 return (void*) vkCreateSampler;
9609 if (!strcmp(funcName, "vkCreateDescriptorSetLayout"))
9610 return (void*) vkCreateDescriptorSetLayout;
9611 if (!strcmp(funcName, "vkCreateDescriptorPool"))
9612 return (void*) vkCreateDescriptorPool;
9613 if (!strcmp(funcName, "vkResetDescriptorPool"))
9614 return (void*) vkResetDescriptorPool;
9615 if (!strcmp(funcName, "vkAllocDescriptorSets"))
9616 return (void*) vkAllocDescriptorSets;
9617 if (!strcmp(funcName, "vkCreateDynamicViewportState"))
9618 return (void*) vkCreateDynamicViewportState;
9619 if (!strcmp(funcName, "vkCreateDynamicRasterState"))
9620 return (void*) vkCreateDynamicRasterState;
9621 if (!strcmp(funcName, "vkCreateDynamicColorBlendState"))
9622 return (void*) vkCreateDynamicColorBlendState;
9623 if (!strcmp(funcName, "vkCreateDynamicDepthStencilState"))
9624 return (void*) vkCreateDynamicDepthStencilState;
9625 if (!strcmp(funcName, "vkCreateCommandBuffer"))
9626 return (void*) vkCreateCommandBuffer;
9627 if (!strcmp(funcName, "vkBeginCommandBuffer"))
9628 return (void*) vkBeginCommandBuffer;
9629 if (!strcmp(funcName, "vkEndCommandBuffer"))
9630 return (void*) vkEndCommandBuffer;
9631 if (!strcmp(funcName, "vkResetCommandBuffer"))
9632 return (void*) vkResetCommandBuffer;
9633 if (!strcmp(funcName, "vkCmdBindPipeline"))
9634 return (void*) vkCmdBindPipeline;
9635 if (!strcmp(funcName, "vkCmdBindDynamicStateObject"))
9636 return (void*) vkCmdBindDynamicStateObject;
9637 if (!strcmp(funcName, "vkCmdBindDescriptorSets"))
9638 return (void*) vkCmdBindDescriptorSets;
9639 if (!strcmp(funcName, "vkCmdBindVertexBuffers"))
9640 return (void*) vkCmdBindVertexBuffers;
9641 if (!strcmp(funcName, "vkCmdBindIndexBuffer"))
9642 return (void*) vkCmdBindIndexBuffer;
9643 if (!strcmp(funcName, "vkCmdDraw"))
9644 return (void*) vkCmdDraw;
9645 if (!strcmp(funcName, "vkCmdDrawIndexed"))
9646 return (void*) vkCmdDrawIndexed;
9647 if (!strcmp(funcName, "vkCmdDrawIndirect"))
9648 return (void*) vkCmdDrawIndirect;
9649 if (!strcmp(funcName, "vkCmdDrawIndexedIndirect"))
9650 return (void*) vkCmdDrawIndexedIndirect;
9651 if (!strcmp(funcName, "vkCmdDispatch"))
9652 return (void*) vkCmdDispatch;
9653 if (!strcmp(funcName, "vkCmdDispatchIndirect"))
9654 return (void*) vkCmdDispatchIndirect;
9655 if (!strcmp(funcName, "vkCmdCopyBuffer"))
9656 return (void*) vkCmdCopyBuffer;
9657 if (!strcmp(funcName, "vkCmdCopyImage"))
9658 return (void*) vkCmdCopyImage;
9659 if (!strcmp(funcName, "vkCmdBlitImage"))
9660 return (void*) vkCmdBlitImage;
9661 if (!strcmp(funcName, "vkCmdCopyBufferToImage"))
9662 return (void*) vkCmdCopyBufferToImage;
9663 if (!strcmp(funcName, "vkCmdCopyImageToBuffer"))
9664 return (void*) vkCmdCopyImageToBuffer;
9665 if (!strcmp(funcName, "vkCmdUpdateBuffer"))
9666 return (void*) vkCmdUpdateBuffer;
9667 if (!strcmp(funcName, "vkCmdFillBuffer"))
9668 return (void*) vkCmdFillBuffer;
9669 if (!strcmp(funcName, "vkCmdClearColorImage"))
9670 return (void*) vkCmdClearColorImage;
9671 if (!strcmp(funcName, "vkCmdClearDepthStencil"))
9672 return (void*) vkCmdClearDepthStencil;
9673 if (!strcmp(funcName, "vkCmdResolveImage"))
9674 return (void*) vkCmdResolveImage;
9675 if (!strcmp(funcName, "vkCmdSetEvent"))
9676 return (void*) vkCmdSetEvent;
9677 if (!strcmp(funcName, "vkCmdResetEvent"))
9678 return (void*) vkCmdResetEvent;
9679 if (!strcmp(funcName, "vkCmdWaitEvents"))
9680 return (void*) vkCmdWaitEvents;
9681 if (!strcmp(funcName, "vkCmdPipelineBarrier"))
9682 return (void*) vkCmdPipelineBarrier;
9683 if (!strcmp(funcName, "vkCmdBeginQuery"))
9684 return (void*) vkCmdBeginQuery;
9685 if (!strcmp(funcName, "vkCmdEndQuery"))
9686 return (void*) vkCmdEndQuery;
9687 if (!strcmp(funcName, "vkCmdResetQueryPool"))
9688 return (void*) vkCmdResetQueryPool;
9689 if (!strcmp(funcName, "vkCmdWriteTimestamp"))
9690 return (void*) vkCmdWriteTimestamp;
9691 if (!strcmp(funcName, "vkCmdCopyQueryPoolResults"))
9692 return (void*) vkCmdCopyQueryPoolResults;
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009693 if (!strcmp(funcName, "vkCreateFramebuffer"))
9694 return (void*) vkCreateFramebuffer;
9695 if (!strcmp(funcName, "vkCreateRenderPass"))
9696 return (void*) vkCreateRenderPass;
9697 if (!strcmp(funcName, "vkCmdBeginRenderPass"))
9698 return (void*) vkCmdBeginRenderPass;
9699 if (!strcmp(funcName, "vkCmdEndRenderPass"))
9700 return (void*) vkCmdEndRenderPass;
9701 if (!strcmp(funcName, "vkGetGlobalExtensionCount"))
9702 return (void*) vkGetGlobalExtensionCount;
9703 if (!strcmp(funcName, "vkGetGlobalExtensionProperties"))
9704 return (void*) vkGetGlobalExtensionProperties;
Jon Ashburn6f8cd632015-06-01 09:37:38 -06009705
Jon Ashburn6f8cd632015-06-01 09:37:38 -06009706 {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009707 if (get_dispatch_table(pc_device_table_map, device)->GetDeviceProcAddr == NULL)
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009708 return NULL;
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009709 return get_dispatch_table(pc_device_table_map, device)->GetDeviceProcAddr(device, funcName);
Jeremy Hayesc6cfa572015-04-06 13:46:11 -06009710 }
9711}
9712
Mark Lobodzinski3723c512015-05-26 10:58:40 -05009713VK_LAYER_EXPORT void* VKAPI vkGetInstanceProcAddr(VkInstance instance, const char* funcName)
Jon Ashburn79b78ac2015-05-05 14:22:52 -06009714{
Mark Lobodzinski3723c512015-05-26 10:58:40 -05009715 if (instance == NULL) {
Jon Ashburn79b78ac2015-05-05 14:22:52 -06009716 return NULL;
Mark Lobodzinski3723c512015-05-26 10:58:40 -05009717 }
9718
Jon Ashburn4f2575f2015-05-28 16:25:02 -06009719 /* loader uses this to force layer initialization; instance object is wrapped */
9720 if (!strcmp(funcName, "vkGetInstanceProcAddr")) {
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009721 initInstanceTable(pc_instance_table_map, (const VkBaseLayerObject *) instance);
9722 return (void *) vkGetInstanceProcAddr;
Jon Ashburn4f2575f2015-05-28 16:25:02 -06009723 }
Jon Ashburn79b78ac2015-05-05 14:22:52 -06009724
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009725 if (!strcmp(funcName, "vkCreateInstance"))
9726 return (void*) vkCreateInstance;
9727 if (!strcmp(funcName, "vkDestroyInstance"))
9728 return (void*) vkDestroyInstance;
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009729 if (!strcmp(funcName, "vkEnumeratePhysicalDevices"))
9730 return (void*) vkEnumeratePhysicalDevices;
9731 if (!strcmp(funcName, "vkGetPhysicalDeviceExtensionCount"))
9732 return (void*) vkGetPhysicalDeviceExtensionCount;
9733 if (!strcmp(funcName, "vkGetPhysicalDeviceExtensionProperties"))
9734 return (void*) vkGetPhysicalDeviceExtensionProperties;
9735 if (!strcmp(funcName, "vkGetPhysicalDeviceProperties"))
9736 return (void*) vkGetPhysicalDeviceProperties;
9737 if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures"))
9738 return (void*) vkGetPhysicalDeviceFeatures;
9739 if (!strcmp(funcName, "vkGetPhysicalDeviceFormatInfo"))
9740 return (void*) vkGetPhysicalDeviceFormatInfo;
9741 if (!strcmp(funcName, "vkGetPhysicalDeviceLimits"))
9742 return (void*) vkGetPhysicalDeviceLimits;
Courtney Goeltzenleuchter09f85042015-06-01 14:45:27 -06009743
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009744 layer_data *data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map);
9745 void* fptr = debug_report_get_instance_proc_addr(data->report_data, funcName);
9746 if(fptr)
Courtney Goeltzenleuchter09f85042015-06-01 14:45:27 -06009747 return fptr;
9748
Jeremy Hayesea53d6f2015-06-26 12:48:09 -06009749 {
9750 if (get_dispatch_table(pc_instance_table_map, instance)->GetInstanceProcAddr == NULL)
9751 return NULL;
9752 return get_dispatch_table(pc_instance_table_map, instance)->GetInstanceProcAddr(instance, funcName);
9753 }
Jon Ashburn79b78ac2015-05-05 14:22:52 -06009754}