[{"data":1,"prerenderedAt":19809},["ShallowReactive",2],{"$flTTP1ACxoY3JWxDGBY-XekRsZsxpvIpMBaq215gW9ag":3,"$fGGa3jm2fyiZgwLdx4RmmiEvaouuONKLYoKH9T7IQulI":263,"$fVXmxsMAt0Cq9cdnrx-JgTkSdmlwzezd-UAUuGn0Jr40":1866},[4,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,236,239,242,245,248,251,254,257,260],{"index":5,"title":6,"id":7,"appendix":8},0,"Preamble","preamble",false,{"index":10,"title":11,"id":12,"appendix":8},1,"Introduction","introduction",{"index":14,"title":15,"id":16,"appendix":8},2,"Fundamentals","fundamentals",{"index":18,"title":19,"id":20,"appendix":8},3,"Initialization","initialization",{"index":22,"title":23,"id":24,"appendix":8},4,"Devices and Queues","devsandqueues",{"index":26,"title":27,"id":28,"appendix":8},5,"Command Buffers","commandbuffers",{"index":30,"title":31,"id":32,"appendix":8},6,"Synchronization and Cache Control","synchronization",{"index":34,"title":35,"id":36,"appendix":8},7,"Render Pass","renderpass",{"index":38,"title":39,"id":40,"appendix":8},8,"Shaders","shaders",{"index":42,"title":43,"id":44,"appendix":8},9,"Pipelines","pipelines",{"index":46,"title":47,"id":48,"appendix":8},10,"Memory Allocation","memory",{"index":50,"title":51,"id":52,"appendix":8},11,"Resource Creation","resources",{"index":54,"title":55,"id":56,"appendix":8},12,"Images","images",{"index":58,"title":59,"id":60,"appendix":8},13,"Samplers","samplers",{"index":62,"title":63,"id":64,"appendix":8},14,"Resource Descriptors","descriptors",{"index":66,"title":67,"id":68,"appendix":8},15,"Descriptor Heaps","descriptorheaps",{"index":70,"title":71,"id":72,"appendix":8},16,"Shader Interfaces","interfaces",{"index":74,"title":75,"id":76,"appendix":8},17,"Image Operations","textures",{"index":78,"title":79,"id":80,"appendix":8},18,"Fragment Density Map Operations","fragmentdensitymapops",{"index":82,"title":83,"id":84,"appendix":8},19,"Tensor Operations","tensors",{"index":86,"title":87,"id":88,"appendix":8},20,"Queries","queries",{"index":90,"title":91,"id":92,"appendix":8},21,"Clear Commands","clears",{"index":94,"title":95,"id":96,"appendix":8},22,"Copy Commands","copies",{"index":98,"title":99,"id":100,"appendix":8},23,"Drawing Commands","drawing",{"index":102,"title":103,"id":104,"appendix":8},24,"Fixed-Function Vertex Processing","fxvertex",{"index":106,"title":107,"id":108,"appendix":8},25,"Tessellation","tessellation",{"index":110,"title":111,"id":112,"appendix":8},26,"Geometry Shading","geometry",{"index":114,"title":115,"id":116,"appendix":8},27,"Mesh Shading","mesh",{"index":118,"title":119,"id":120,"appendix":8},28,"Cluster Culling Shading","cluster-culling",{"index":122,"title":123,"id":124,"appendix":8},29,"Fixed-Function Vertex Post-Processing","vertexpostproc",{"index":126,"title":127,"id":128,"appendix":8},30,"Rasterization","primsrast",{"index":130,"title":131,"id":132,"appendix":8},31,"Fragment Operations","fragops",{"index":134,"title":135,"id":136,"appendix":8},32,"The Framebuffer","framebuffer",{"index":138,"title":139,"id":140,"appendix":8},33,"Dispatching Commands","dispatch",{"index":142,"title":143,"id":144,"appendix":8},34,"Device-Generated Commands","device-generated-commands",{"index":146,"title":147,"id":148,"appendix":8},35,"Sparse Resources","sparsememory",{"index":150,"title":151,"id":152,"appendix":8},36,"Window System Integration (WSI)","wsi",{"index":154,"title":155,"id":156,"appendix":8},37,"Deferred Host Operations","deferred-host-operations",{"index":158,"title":159,"id":160,"appendix":8},38,"Private Data","private-data",{"index":162,"title":163,"id":164,"appendix":8},39,"Acceleration Structures","acceleration-structure",{"index":166,"title":167,"id":168,"appendix":8},40,"Compressed triangle data","compressed-triangle-data",{"index":170,"title":171,"id":172,"appendix":8},41,"Micromap","micromap",{"index":174,"title":175,"id":176,"appendix":8},42,"Ray Traversal","ray-traversal",{"index":178,"title":179,"id":180,"appendix":8},43,"Ray Tracing","ray-tracing",{"index":182,"title":183,"id":184,"appendix":8},44,"Memory Decompression","memory-decompression",{"index":186,"title":187,"id":188,"appendix":8},45,"Video Coding","video-coding",{"index":190,"title":191,"id":192,"appendix":8},46,"Optical Flow","opticalflow",{"index":194,"title":195,"id":196,"appendix":8},47,"Execution Graphs","executiongraphs",{"index":198,"title":199,"id":200,"appendix":8},48,"External Compute Queues","external-compute-queues",{"index":202,"title":203,"id":204,"appendix":8},49,"Data graphs","graphs",{"index":206,"title":207,"id":208,"appendix":8},50,"Extending Vulkan","extendingvulkan",{"index":210,"title":211,"id":212,"appendix":8},51,"Features","features",{"index":214,"title":215,"id":216,"appendix":8},52,"Limits","limits",{"index":218,"title":219,"id":220,"appendix":8},53,"Formats","formats",{"index":222,"title":223,"id":224,"appendix":8},54,"Additional Capabilities","capabilities",{"index":226,"title":227,"id":228,"appendix":8},55,"Debugging","debugging",{"index":5,"title":230,"id":231,"appendix":232},"Vulkan Environment for SPIR-V","spirvenv",true,{"index":10,"title":234,"id":235,"appendix":232},"Memory Model","memory-model",{"index":14,"title":237,"id":238,"appendix":232},"Compressed Image Formats","compressed_image_formats",{"index":18,"title":240,"id":241,"appendix":232},"Core Revisions (Informative)","versions",{"index":22,"title":243,"id":244,"appendix":232},"Layers & Extensions (Informative)","extensions",{"index":26,"title":246,"id":247,"appendix":232},"Vulkan Roadmap Milestones","roadmap",{"index":30,"title":249,"id":250,"appendix":232},"Legacy and Superseded Functionality","legacy",{"index":34,"title":252,"id":253,"appendix":232},"API Boilerplate","boilerplate",{"index":38,"title":255,"id":256,"appendix":232},"Invariance","invariance",{"index":42,"title":258,"id":259,"appendix":232},"Lexicon","lexicon",{"index":46,"title":261,"id":262,"appendix":232},"Credits (Informative)","credits",[264,272,277,282,287,290,295,298,301,304,308,312,315,318,321,323,325,328,331,335,337,341,343,346,348,351,359,363,369,373,376,381,385,389,393,395,399,402,406,411,418,424,426,430,436,439,443,448,452,456,460,464,467,470,473,479,482,485,489,493,498,502,505,507,512,515,520,526,529,533,537,540,546,549,553,556,560,563,567,570,574,578,581,586,591,594,597,602,605,609,614,619,623,627,631,635,640,644,648,651,654,658,661,664,667,671,676,680,683,687,692,696,701,704,708,711,716,720,724,727,731,736,739,744,748,751,754,758,762,766,771,775,778,783,787,792,796,799,803,807,811,814,816,821,825,829,832,835,838,841,844,847,850,853,856,859,862,866,870,873,876,879,882,885,888,891,894,898,902,907,910,915,918,921,924,927,929,933,938,942,946,950,952,956,959,962,969,973,977,981,987,989,993,997,1000,1003,1007,1012,1017,1023,1027,1029,1033,1036,1041,1045,1050,1054,1058,1060,1063,1066,1068,1072,1075,1078,1082,1087,1091,1095,1097,1102,1106,1110,1112,1114,1117,1119,1122,1125,1129,1133,1135,1139,1142,1146,1149,1151,1154,1158,1160,1164,1167,1170,1173,1177,1180,1183,1186,1189,1191,1194,1198,1201,1203,1206,1208,1210,1212,1215,1219,1222,1225,1229,1233,1236,1239,1241,1244,1246,1248,1252,1256,1259,1262,1266,1269,1274,1279,1281,1285,1289,1292,1296,1299,1301,1305,1309,1311,1313,1318,1321,1325,1328,1331,1334,1337,1339,1342,1346,1349,1352,1356,1359,1363,1367,1370,1373,1376,1379,1382,1386,1389,1392,1394,1396,1401,1402,1405,1409,1412,1415,1418,1421,1424,1426,1430,1433,1436,1439,1443,1447,1449,1451,1454,1458,1460,1464,1467,1469,1472,1476,1480,1482,1486,1489,1492,1495,1498,1502,1507,1512,1516,1522,1526,1528,1532,1536,1539,1542,1546,1550,1554,1557,1560,1563,1567,1569,1574,1578,1580,1586,1589,1592,1595,1599,1602,1606,1611,1614,1617,1621,1623,1626,1628,1631,1633,1635,1638,1641,1644,1647,1650,1653,1655,1659,1663,1667,1671,1674,1677,1681,1684,1688,1692,1696,1698,1702,1706,1710,1713,1716,1719,1722,1725,1728,1731,1734,1737,1740,1743,1746,1749,1752,1755,1760,1763,1766,1769,1772,1776,1779,1783,1787,1790,1793,1796,1799,1802,1805,1809,1814,1817,1820,1823,1829,1833,1837,1841,1846,1850,1854,1857,1861],{"number":265,"type":266,"author":267,"provisional":232,"depends":268,"platform":269,"contact":270,"extension":271,"proposal":232},479,"device","AMD","VK_KHR_acceleration_structure+(VK_KHR_maintenance5,VK_VERSION_1_4)","provisional","Stu Smith @stu-s","VK_AMDX_dense_geometry_format",{"number":273,"type":266,"author":267,"provisional":232,"depends":274,"platform":269,"contact":275,"extension":276,"proposal":232},135,"((VK_KHR_synchronization2+VK_KHR_spirv_1_4+VK_EXT_extended_dynamic_state),VK_VERSION_1_3)+VK_KHR_maintenance5+VK_KHR_pipeline_library","Tobias Hector @tobski","VK_AMDX_shader_enqueue",{"number":278,"type":266,"author":267,"provisional":8,"depends":279,"contact":280,"extension":281,"proposal":232},477,"VK_KHR_get_physical_device_properties2,VK_VERSION_1_1","Stu Smith","VK_AMD_anti_lag",{"number":283,"type":266,"author":267,"provisional":8,"specialuse":284,"contact":285,"extension":286,"proposal":8},180,"devtools","Daniel Rakos @drakos-amd","VK_AMD_buffer_marker",{"number":288,"type":266,"author":267,"provisional":8,"depends":279,"contact":275,"extension":289,"proposal":8},230,"VK_AMD_device_coherent_memory",{"number":291,"type":266,"author":267,"provisional":8,"depends":292,"contact":293,"extension":294,"proposal":8},214,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain","Matthaeus G. Chajdas @anteru","VK_AMD_display_native_hdr",{"number":142,"type":266,"author":267,"promotedto":296,"provisional":8,"contact":285,"extension":297,"proposal":8},"VK_KHR_draw_indirect_count","VK_AMD_draw_indirect_count",{"number":110,"type":266,"author":267,"provisional":8,"contact":299,"extension":300,"proposal":8},"Dominik Witczak @dominikwitczakamd","VK_AMD_gcn_shader",{"number":154,"type":266,"author":267,"deprecatedby":302,"provisional":8,"contact":299,"extension":303,"proposal":8},"VK_KHR_shader_float16_int8","VK_AMD_gpu_shader_half_float",{"number":305,"type":266,"author":267,"deprecatedby":302,"provisional":8,"contact":306,"extension":307,"proposal":8},133,"Qun Lin @linqun","VK_AMD_gpu_shader_int16",{"number":309,"type":266,"author":267,"provisional":8,"contact":310,"extension":311,"proposal":8},190,"Martin Dinkov @mdinkov","VK_AMD_memory_overallocation_behavior",{"number":313,"type":266,"author":267,"provisional":8,"contact":293,"extension":314,"proposal":8},137,"VK_AMD_mixed_attachment_samples",{"number":150,"type":266,"author":267,"obsoletedby":316,"provisional":8,"contact":293,"extension":317,"proposal":8},"VK_KHR_maintenance1","VK_AMD_negative_viewport_height",{"number":319,"type":266,"author":267,"provisional":8,"contact":293,"extension":320,"proposal":8},184,"VK_AMD_pipeline_compiler_control",{"number":82,"type":266,"author":267,"provisional":8,"contact":285,"extension":322,"proposal":8},"VK_AMD_rasterization_order",{"number":158,"type":266,"author":267,"provisional":8,"contact":299,"extension":324,"proposal":8},"VK_AMD_shader_ballot",{"number":326,"type":266,"author":267,"provisional":8,"depends":279,"contact":310,"extension":327,"proposal":8},186,"VK_AMD_shader_core_properties",{"number":329,"type":266,"author":267,"provisional":8,"depends":327,"contact":293,"extension":330,"proposal":8},228,"VK_AMD_shader_core_properties2",{"number":332,"type":266,"author":333,"provisional":8,"depends":279,"contact":275,"extension":334,"proposal":232},322,"EXT","VK_AMD_shader_early_and_late_fragment_tests",{"number":94,"type":266,"author":267,"provisional":8,"contact":306,"extension":336,"proposal":8},"VK_AMD_shader_explicit_vertex_parameter",{"number":338,"type":266,"author":267,"provisional":8,"contact":339,"extension":340,"proposal":8},138,"Aaron Hagan @AaronHaganAMD","VK_AMD_shader_fragment_mask",{"number":194,"type":266,"author":267,"provisional":8,"contact":299,"extension":342,"proposal":8},"VK_AMD_shader_image_load_store_lod",{"number":178,"type":266,"author":267,"provisional":8,"specialuse":284,"contact":344,"extension":345,"proposal":8},"Jaakko Konttinen @jaakkoamd","VK_AMD_shader_info",{"number":90,"type":266,"author":267,"provisional":8,"contact":306,"extension":347,"proposal":8},"VK_AMD_shader_trinary_minmax",{"number":174,"type":266,"author":267,"provisional":8,"depends":279,"contact":349,"extension":350,"proposal":8},"Rex Xu @amdrexu","VK_AMD_texture_gather_bias_lod",{"number":352,"type":266,"author":353,"provisional":8,"depends":354,"platform":355,"specialuse":356,"contact":357,"extension":358,"proposal":232},469,"ANDROID","VK_ANDROID_external_memory_android_hardware_buffer","android","glemulation","Chris Forbes @chrisforbes","VK_ANDROID_external_format_resolve",{"number":360,"type":266,"author":353,"provisional":8,"depends":361,"platform":355,"contact":362,"extension":354,"proposal":8},130,"((VK_KHR_sampler_ycbcr_conversion+VK_KHR_external_memory+VK_KHR_dedicated_allocation),VK_VERSION_1_1)+VK_EXT_queue_family_foreign","Jesse Hall @critsec",{"number":364,"type":266,"author":365,"provisional":8,"depends":366,"contact":367,"extension":368,"proposal":8},508,"ARM","VK_VERSION_1_3+VK_KHR_maintenance5+VK_KHR_deferred_host_operations","Kevin Petit @kpet","VK_ARM_data_graph",{"number":370,"type":266,"author":365,"provisional":8,"depends":279,"contact":371,"extension":372,"proposal":8},610,"Jan-Harald Fredriksen @janharaldfredriksen-arm","VK_ARM_format_pack",{"number":374,"type":266,"author":365,"provisional":8,"depends":279,"specialuse":284,"contact":371,"extension":375,"proposal":232},606,"VK_ARM_performance_counters_by_region",{"number":377,"type":266,"author":365,"provisional":8,"depends":378,"contact":379,"extension":380,"proposal":232},597,"VK_EXT_opacity_micromap","Mathieu Robart @mathieurobart-arm","VK_ARM_pipeline_opacity_micromap",{"number":382,"type":266,"author":365,"promotedto":383,"provisional":8,"depends":279,"contact":371,"extension":384,"proposal":8},343,"VK_EXT_rasterization_order_attachment_access","VK_ARM_rasterization_order_attachment_access",{"number":386,"type":266,"author":365,"provisional":8,"depends":387,"contact":371,"extension":388,"proposal":232},425,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_ARM_render_pass_striped",{"number":390,"type":266,"author":365,"provisional":8,"depends":391,"contact":367,"extension":392,"proposal":8},418,"VK_ARM_shader_core_builtins","VK_ARM_scheduling_controls",{"number":394,"type":266,"author":365,"provisional":8,"depends":279,"contact":367,"extension":391,"proposal":8},498,{"number":396,"type":266,"author":365,"provisional":8,"depends":397,"contact":371,"extension":398,"proposal":8},416,"VK_VERSION_1_1","VK_ARM_shader_core_properties",{"number":400,"type":266,"author":365,"provisional":8,"depends":279,"specialuse":284,"contact":371,"extension":401,"proposal":232},608,"VK_ARM_shader_instrumentation",{"number":403,"type":266,"author":365,"provisional":8,"depends":404,"contact":367,"extension":405,"proposal":232},461,"VK_VERSION_1_3","VK_ARM_tensors",{"number":407,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":279,"ratified":408,"contact":409,"extension":410,"proposal":8},341,"vulkansc","Joshua Ashton @Joshua-Ashton","VK_EXT_4444_formats",{"number":412,"type":413,"author":333,"provisional":8,"depends":414,"ratified":415,"contact":416,"extension":417,"proposal":8},286,"instance","VK_EXT_direct_mode_display","vulkan","Drew DeVault sir@cmpwn.com","VK_EXT_acquire_drm_display",{"number":419,"type":413,"author":420,"provisional":8,"depends":414,"platform":421,"ratified":415,"contact":422,"extension":423,"proposal":8},90,"NV","xlib_xrandr","James Jones @cubanismo","VK_EXT_acquire_xlib_display",{"extension":425,"proposal":8},"VK_EXT_application_parameters",{"number":427,"type":266,"author":365,"provisional":8,"depends":279,"ratified":428,"contact":371,"extension":429,"proposal":8},68,"vulkan,vulkansc","VK_EXT_astc_decode_mode",{"number":431,"type":266,"author":333,"provisional":8,"depends":432,"ratified":415,"specialuse":433,"contact":434,"extension":435,"proposal":232},525,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_attachment_feedback_loop_layout","glemulation,d3demulation","Mike Blumenkrantz @zmike","VK_EXT_attachment_feedback_loop_dynamic_state",{"number":437,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":433,"contact":409,"extension":438,"proposal":232},340,"VK_EXT_attachment_feedback_loop_layout",{"number":440,"type":266,"author":420,"provisional":8,"depends":279,"ratified":428,"contact":441,"extension":442,"proposal":8},149,"Jeff Bolz @jeffbolznv","VK_EXT_blend_operation_advanced",{"number":444,"type":266,"author":333,"provisional":8,"depends":445,"ratified":415,"specialuse":433,"contact":446,"extension":447,"proposal":8},412,"VK_EXT_custom_border_color","Piers Daniell @pdaniell-nv","VK_EXT_border_color_swizzle",{"number":449,"type":266,"author":420,"deprecatedby":450,"provisional":8,"depends":279,"contact":441,"extension":451,"proposal":8},245,"VK_KHR_buffer_device_address","VK_EXT_buffer_device_address",{"number":453,"type":266,"author":333,"promotedto":454,"provisional":8,"depends":279,"contact":285,"extension":455,"proposal":232},185,"VK_KHR_calibrated_timestamps","VK_EXT_calibrated_timestamps",{"number":457,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"contact":458,"extension":459,"proposal":8},382,"Sharif Elcott @selcott","VK_EXT_color_write_enable",{"number":461,"type":266,"author":420,"provisional":8,"depends":279,"ratified":415,"contact":462,"extension":463,"proposal":8},82,"Vikram Kushwaha @vkushwaha","VK_EXT_conditional_rendering",{"number":465,"type":266,"author":420,"provisional":8,"depends":279,"ratified":428,"contact":446,"extension":466,"proposal":8},102,"VK_EXT_conservative_rasterization",{"number":468,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"specialuse":433,"contact":469,"extension":445,"proposal":8},288,"Liam Middlebrook @liam-middlebrook",{"number":471,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":434,"extension":472,"proposal":232},629,"VK_EXT_custom_resolve",{"number":98,"type":266,"author":474,"promotedto":475,"provisional":8,"depends":476,"specialuse":228,"contact":477,"extension":478,"proposal":8},"Baldur Karlsson","VK_EXT_debug_utils","VK_EXT_debug_report","Baldur Karlsson @baldurk","VK_EXT_debug_marker",{"number":54,"type":413,"author":480,"deprecatedby":475,"provisional":8,"specialuse":228,"contact":481,"extension":476,"proposal":8},"GOOGLE","Courtney Goeltzenleuchter @courtney-g",{"number":483,"type":413,"author":333,"provisional":8,"ratified":428,"specialuse":228,"contact":484,"extension":475,"proposal":8},129,"Mark Young @marky-lunarg",{"number":486,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":487,"contact":409,"extension":488,"proposal":232},284,"d3demulation","VK_EXT_depth_bias_control",{"number":490,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":491,"extension":492,"proposal":232},583,"Jules Blok @jules","VK_EXT_depth_clamp_control",{"number":494,"type":266,"author":333,"promotedto":495,"provisional":8,"depends":279,"ratified":415,"contact":496,"extension":497,"proposal":8},422,"VK_KHR_depth_clamp_zero_one","Graeme Leese @gnl21","VK_EXT_depth_clamp_zero_one",{"number":499,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":356,"contact":500,"extension":501,"proposal":8},356,"Shahbaz Youssefi @syoussefi","VK_EXT_depth_clip_control",{"number":503,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"specialuse":487,"contact":446,"extension":504,"proposal":8},103,"VK_EXT_depth_clip_enable",{"number":62,"type":266,"author":420,"provisional":8,"ratified":428,"contact":446,"extension":506,"proposal":8},"VK_EXT_depth_range_unrestricted",{"number":508,"type":266,"author":333,"deprecatedby":509,"provisional":8,"depends":510,"ratified":415,"contact":275,"extension":511,"proposal":232},317,"VK_EXT_descriptor_heap","((((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_buffer_device_address+VK_EXT_descriptor_indexing),VK_VERSION_1_2)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_EXT_descriptor_buffer",{"number":513,"type":266,"author":333,"provisional":8,"depends":514,"ratified":415,"contact":275,"extension":509,"proposal":232},136,"VK_KHR_maintenance5+(VK_KHR_buffer_device_address,VK_VERSION_1_2)",{"number":516,"type":266,"author":420,"promotedto":517,"provisional":8,"depends":518,"ratified":415,"contact":441,"extension":519,"proposal":8},162,"VK_VERSION_1_2","(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance3),VK_VERSION_1_1","VK_EXT_descriptor_indexing",{"number":521,"type":266,"author":333,"provisional":8,"depends":522,"ratified":415,"specialuse":523,"contact":524,"extension":525,"proposal":8},355,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_debug_utils","debugging,devtools","Ralph Potter gitlab:@r_potter","VK_EXT_device_address_binding_report",{"number":527,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":524,"extension":528,"proposal":232},342,"VK_EXT_device_fault",{"number":530,"type":266,"author":333,"provisional":8,"depends":531,"ratified":415,"contact":434,"extension":532,"proposal":232},573,"((VK_KHR_buffer_device_address,VK_VERSION_1_2)+VK_KHR_maintenance5),VK_VERSION_1_3","VK_EXT_device_generated_commands",{"number":534,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":284,"contact":535,"extension":536,"proposal":8},285,"Yiwei Zhang @zzyiwei","VK_EXT_device_memory_report",{"number":538,"type":413,"author":420,"provisional":8,"depends":539,"ratified":428,"contact":422,"extension":414,"proposal":8},89,"VK_KHR_display",{"number":541,"type":413,"author":333,"provisional":8,"depends":542,"platform":543,"ratified":415,"contact":544,"extension":545,"proposal":8},347,"VK_KHR_surface","directfb","Nicolas Caramelli @caramelli","VK_EXT_directfb_surface",{"number":547,"type":266,"author":420,"provisional":8,"depends":279,"ratified":428,"contact":446,"extension":548,"proposal":8},100,"VK_EXT_discard_rectangles",{"number":550,"type":266,"author":420,"provisional":8,"depends":551,"ratified":428,"contact":422,"extension":552,"proposal":8},92,"VK_EXT_display_surface_counter+VK_KHR_swapchain","VK_EXT_display_control",{"number":554,"type":413,"author":420,"provisional":8,"depends":539,"ratified":428,"contact":422,"extension":555,"proposal":8},91,"VK_EXT_display_surface_counter",{"number":557,"type":266,"author":333,"provisional":8,"depends":558,"ratified":415,"contact":446,"extension":559,"proposal":232},500,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_dynamic_rendering),VK_VERSION_1_3","VK_EXT_dynamic_rendering_unused_attachments",{"number":561,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":279,"ratified":428,"contact":446,"extension":562,"proposal":8},268,"VK_EXT_extended_dynamic_state",{"number":564,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":279,"ratified":428,"contact":565,"extension":566,"proposal":8},378,"Vikram Kushwaha @vkushwaha-nv","VK_EXT_extended_dynamic_state2",{"number":568,"type":266,"author":420,"provisional":8,"depends":279,"ratified":415,"contact":446,"extension":569,"proposal":232},456,"VK_EXT_extended_dynamic_state3",{"number":571,"type":266,"author":333,"provisional":8,"depends":572,"ratified":415,"contact":422,"extension":573,"proposal":232},454,"VK_KHR_external_memory,VK_VERSION_1_1","VK_EXT_external_memory_acquire_unmodified",{"number":575,"type":266,"author":333,"provisional":8,"depends":576,"ratified":428,"contact":422,"extension":577,"proposal":8},126,"VK_KHR_external_memory_fd","VK_EXT_external_memory_dma_buf",{"number":579,"type":266,"author":333,"provisional":8,"depends":572,"ratified":428,"contact":285,"extension":580,"proposal":8},179,"VK_EXT_external_memory_host",{"number":582,"type":266,"author":333,"provisional":8,"depends":572,"platform":583,"ratified":415,"contact":584,"extension":585,"proposal":232},603,"metal","Aitor Camacho Larrondo @aitor-lunarg","VK_EXT_external_memory_metal",{"number":587,"type":266,"author":588,"provisional":8,"ratified":428,"contact":589,"extension":590,"proposal":8},171,"QCOM","Matthew Netsch @mnetsch","VK_EXT_filter_cubic",{"number":592,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":589,"extension":593,"proposal":8},219,"VK_EXT_fragment_density_map",{"number":595,"type":266,"author":333,"provisional":8,"depends":593,"ratified":415,"contact":589,"extension":596,"proposal":8},333,"VK_EXT_fragment_density_map2",{"number":598,"type":266,"author":333,"provisional":8,"depends":599,"ratified":415,"contact":600,"extension":601,"proposal":232},620,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_fragment_density_map+(VK_KHR_create_renderpass2,VK_VERSION_1_2)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)","Connor Abbott @cwabbott0","VK_EXT_fragment_density_map_offset",{"number":603,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"contact":446,"extension":604,"proposal":8},252,"VK_EXT_fragment_shader_interlock",{"number":606,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":607,"extension":608,"proposal":232},376,"James Fitzpatrick @jamesfitzpatrick","VK_EXT_frame_boundary",{"number":610,"type":266,"author":333,"provisional":8,"depends":611,"platform":612,"ratified":415,"contact":422,"extension":613,"proposal":8},256,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_surface+VK_KHR_get_surface_capabilities2+VK_KHR_swapchain","win32","VK_EXT_full_screen_exclusive",{"number":615,"type":266,"author":333,"promotedto":616,"provisional":8,"contact":617,"extension":618,"proposal":8},175,"VK_KHR_global_priority","Andres Rodriguez @lostgoat","VK_EXT_global_priority",{"number":620,"type":266,"author":333,"promotedto":616,"provisional":8,"depends":621,"contact":535,"extension":622,"proposal":8},389,"VK_EXT_global_priority+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_global_priority_query",{"number":624,"type":266,"author":267,"provisional":8,"depends":625,"ratified":415,"contact":275,"extension":626,"proposal":232},321,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_pipeline_library","VK_EXT_graphics_pipeline_library",{"number":628,"type":266,"author":480,"provisional":8,"depends":629,"ratified":428,"contact":481,"extension":630,"proposal":8},106,"VK_KHR_swapchain","VK_EXT_hdr_metadata",{"number":632,"type":413,"author":333,"provisional":8,"depends":542,"ratified":428,"contact":633,"extension":634,"proposal":8},257,"Lisa Wu @chengtianww","VK_EXT_headless_surface",{"number":636,"type":266,"author":333,"promotedto":637,"provisional":8,"depends":638,"ratified":415,"contact":500,"extension":639,"proposal":232},271,"VK_VERSION_1_4","((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_copy_commands2+VK_KHR_format_feature_flags2),VK_VERSION_1_3","VK_EXT_host_image_copy",{"number":641,"type":266,"author":333,"promotedto":517,"provisional":8,"depends":279,"contact":642,"extension":643,"proposal":8},262,"Bas Nieuwenhuizen @BNieuwenhuizen","VK_EXT_host_query_reset",{"number":645,"type":266,"author":333,"provisional":8,"depends":646,"ratified":415,"specialuse":356,"contact":434,"extension":647,"proposal":8},394,"(VK_KHR_maintenance1+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","VK_EXT_image_2d_view_of_3d",{"number":649,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":371,"extension":650,"proposal":232},339,"VK_EXT_image_compression_control",{"number":652,"type":266,"author":333,"provisional":8,"depends":650,"ratified":415,"contact":371,"extension":653,"proposal":8},438,"VK_EXT_image_compression_control_swapchain",{"number":655,"type":266,"author":333,"provisional":8,"depends":656,"ratified":428,"contact":422,"extension":657,"proposal":8},159,"(((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+VK_KHR_image_format_list),VK_VERSION_1_2","VK_EXT_image_drm_format_modifier",{"number":659,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":279,"ratified":408,"contact":496,"extension":660,"proposal":8},336,"VK_EXT_image_robustness",{"number":662,"type":266,"author":333,"provisional":8,"depends":646,"ratified":415,"specialuse":487,"contact":434,"extension":663,"proposal":232},419,"VK_EXT_image_sliced_view_of_3d",{"number":665,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":409,"extension":666,"proposal":8},392,"VK_EXT_image_view_min_lod",{"number":668,"type":266,"author":333,"promotedto":669,"provisional":8,"depends":279,"contact":446,"extension":670,"proposal":8},266,"VK_KHR_index_type_uint8","VK_EXT_index_type_uint8",{"number":672,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":673,"contact":674,"extension":675,"proposal":8},139,"(VK_KHR_get_physical_device_properties2+VK_KHR_maintenance1),VK_VERSION_1_1","Daniel Rakos @aqnuep","VK_EXT_inline_uniform_block",{"number":677,"type":413,"author":333,"provisional":8,"ratified":428,"contact":678,"extension":679,"proposal":232},497,"Christophe Riccio @christophe","VK_EXT_layer_settings",{"number":681,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":356,"contact":500,"extension":682,"proposal":232},466,"VK_EXT_legacy_dithering",{"number":684,"type":266,"author":333,"provisional":8,"depends":685,"ratified":415,"specialuse":356,"contact":434,"extension":686,"proposal":232},496,"VK_EXT_vertex_input_dynamic_state","VK_EXT_legacy_vertex_attributes",{"number":688,"type":266,"author":333,"promotedto":689,"provisional":8,"depends":279,"specialuse":690,"contact":441,"extension":691,"proposal":8},260,"VK_KHR_line_rasterization","cadsupport","VK_EXT_line_rasterization",{"number":693,"type":266,"author":333,"promotedto":694,"provisional":8,"ratified":415,"contact":500,"extension":695,"proposal":8},401,"VK_KHR_load_store_op_none","VK_EXT_load_store_op_none",{"number":697,"type":266,"author":333,"provisional":8,"depends":698,"ratified":415,"contact":699,"extension":700,"proposal":232},273,"VK_KHR_map_memory2,VK_VERSION_1_4","Faith Ekstrand @gfxstrand","VK_EXT_map_memory_placed",{"number":702,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"contact":441,"extension":703,"proposal":8},238,"VK_EXT_memory_budget",{"number":705,"type":266,"author":333,"provisional":8,"depends":706,"ratified":415,"contact":565,"extension":707,"proposal":232},551,"VK_KHR_get_physical_device_properties2+VK_KHR_buffer_device_address","VK_EXT_memory_decompression",{"number":709,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":441,"extension":710,"proposal":8},239,"VK_EXT_memory_priority",{"number":712,"type":266,"author":333,"provisional":8,"depends":713,"ratified":415,"contact":714,"extension":715,"proposal":232},329,"VK_KHR_spirv_1_4,VK_VERSION_1_2","Christoph Kubisch @pixeljetstream","VK_EXT_mesh_shader",{"number":717,"type":266,"author":333,"provisional":8,"platform":583,"ratified":415,"contact":718,"extension":719,"proposal":232},312,"Bill Hollings @billhollings","VK_EXT_metal_objects",{"number":721,"type":413,"author":333,"provisional":8,"depends":542,"platform":583,"ratified":415,"contact":722,"extension":723,"proposal":8},218,"Dzmitry Malyshau @kvark","VK_EXT_metal_surface",{"number":725,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":434,"extension":726,"proposal":8},393,"VK_EXT_multi_draw",{"number":728,"type":266,"author":333,"provisional":8,"depends":729,"ratified":415,"contact":500,"extension":730,"proposal":232},377,"(VK_KHR_create_renderpass2+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_EXT_multisampled_render_to_single_sampled",{"number":732,"type":266,"author":333,"provisional":8,"depends":733,"ratified":415,"specialuse":487,"contact":734,"extension":735,"proposal":232},495,"VK_KHR_maintenance3,VK_VERSION_1_1","Joshua Ashton @Joshua-Ashton,Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_mutable_descriptor_type",{"number":737,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":446,"extension":738,"proposal":8},452,"VK_EXT_nested_command_buffer",{"number":740,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":741,"contact":742,"extension":743,"proposal":232},423,"d3demulation,glemulation","Georg Lehmann @DadSchoorse","VK_EXT_non_seamless_cube_map",{"number":745,"type":266,"author":333,"provisional":8,"depends":746,"ratified":415,"contact":747,"extension":378,"proposal":232},397,"VK_KHR_acceleration_structure+(VK_KHR_synchronization2,VK_VERSION_1_3)","Christoph Kubisch @pixeljetstream, Eric Werness",{"number":749,"type":266,"author":333,"provisional":8,"depends":710,"ratified":415,"contact":446,"extension":750,"proposal":8},413,"VK_EXT_pageable_device_local_memory",{"number":752,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"contact":293,"extension":753,"proposal":8},213,"VK_EXT_pci_bus_info",{"number":755,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":756,"extension":757,"proposal":8},354,"Simon Ser @emersion","VK_EXT_physical_device_drm",{"number":759,"type":266,"author":267,"promotedto":404,"provisional":8,"depends":279,"contact":760,"extension":761,"proposal":8},298,"Gregory Grebe @grgrebe_amd","VK_EXT_pipeline_creation_cache_control",{"number":763,"type":266,"author":480,"promotedto":404,"provisional":8,"specialuse":284,"contact":764,"extension":765,"proposal":8},193,"Jean-Francois Roy @jfroy","VK_EXT_pipeline_creation_feedback",{"number":767,"type":266,"author":333,"provisional":8,"depends":768,"ratified":415,"contact":769,"extension":770,"proposal":232},499,"VK_KHR_ray_tracing_pipeline+VK_KHR_pipeline_library","Hans-Kristian Arntzen @HansKristian-Work","VK_EXT_pipeline_library_group_handles",{"number":772,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":773,"extension":774,"proposal":8},373,"Mukund Keshava @mkeshavanv","VK_EXT_pipeline_properties",{"number":776,"type":266,"author":333,"promotedto":637,"provisional":8,"depends":279,"ratified":415,"contact":500,"extension":777,"proposal":232},467,"VK_EXT_pipeline_protected_access",{"number":779,"type":266,"author":780,"promotedto":637,"provisional":8,"depends":279,"ratified":415,"contact":781,"extension":782,"proposal":8},69,"IMG","Jarred Davies","VK_EXT_pipeline_robustness",{"number":784,"type":266,"author":420,"provisional":8,"ratified":428,"contact":785,"extension":786,"proposal":8},156,"Daniel Koch @dgkoch","VK_EXT_post_depth_coverage",{"number":788,"type":266,"author":333,"promotedto":789,"provisional":8,"depends":629,"ratified":415,"contact":790,"extension":791,"proposal":232},362,"VK_KHR_present_mode_fifo_latest_ready","Lionel Duc @nvlduc","VK_EXT_present_mode_fifo_latest_ready",{"number":793,"type":266,"author":333,"provisional":8,"depends":794,"ratified":415,"contact":790,"extension":795,"proposal":232},209,"VK_KHR_swapchain+VK_KHR_present_id2+VK_KHR_get_surface_capabilities2+VK_KHR_calibrated_timestamps","VK_EXT_present_timing",{"number":797,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":356,"contact":500,"extension":798,"proposal":8},357,"VK_EXT_primitive_topology_list_restart",{"number":800,"type":266,"author":333,"provisional":8,"depends":801,"ratified":415,"specialuse":356,"contact":500,"extension":802,"proposal":232},383,"VK_EXT_transform_feedback","VK_EXT_primitives_generated_query",{"number":804,"type":266,"author":420,"promotedto":404,"provisional":8,"depends":279,"contact":805,"extension":806,"proposal":8},296,"Matthew Rusch @mattruschnv","VK_EXT_private_data",{"number":808,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"specialuse":356,"contact":809,"extension":810,"proposal":8},255,"Jesse Hall @jessehall","VK_EXT_provoking_vertex",{"number":812,"type":266,"author":333,"provisional":8,"depends":572,"ratified":428,"contact":422,"extension":813,"proposal":8},127,"VK_EXT_queue_family_foreign",{"number":815,"type":266,"author":365,"provisional":8,"depends":279,"ratified":415,"contact":371,"extension":383,"proposal":232},464,{"number":817,"type":266,"author":333,"provisional":8,"depends":818,"ratified":415,"contact":819,"extension":820,"proposal":232},582,"VK_KHR_ray_tracing_pipeline","Eric Werness @ewerness-nv","VK_EXT_ray_tracing_invocation_reorder",{"number":822,"type":266,"author":333,"provisional":8,"depends":823,"ratified":415,"contact":371,"extension":824,"proposal":8},345,"VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1","VK_EXT_rgba10x6_formats",{"number":826,"type":266,"author":333,"promotedto":827,"provisional":8,"depends":279,"ratified":428,"contact":469,"extension":828,"proposal":8},287,"VK_KHR_robustness2","VK_EXT_robustness2",{"number":830,"type":266,"author":267,"provisional":8,"depends":279,"ratified":428,"contact":285,"extension":831,"proposal":8},144,"VK_EXT_sample_locations",{"number":833,"type":266,"author":420,"promotedto":517,"provisional":8,"depends":279,"contact":441,"extension":834,"proposal":8},131,"VK_EXT_sampler_filter_minmax",{"number":836,"type":266,"author":333,"promotedto":517,"provisional":8,"depends":279,"contact":275,"extension":837,"proposal":8},222,"VK_EXT_scalar_block_layout",{"number":839,"type":266,"author":333,"promotedto":517,"provisional":8,"contact":285,"extension":840,"proposal":8},247,"VK_EXT_separate_stencil_usage",{"number":842,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":441,"extension":843,"proposal":232},628,"VK_EXT_shader_64bit_indexing",{"number":845,"type":266,"author":420,"provisional":8,"depends":279,"ratified":428,"contact":565,"extension":846,"proposal":8},261,"VK_EXT_shader_atomic_float",{"number":848,"type":266,"author":333,"provisional":8,"depends":846,"ratified":415,"contact":699,"extension":849,"proposal":8},274,"VK_EXT_shader_atomic_float2",{"number":851,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":279,"ratified":408,"contact":441,"extension":852,"proposal":8},277,"VK_EXT_shader_demote_to_helper_invocation",{"number":854,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":367,"extension":855,"proposal":232},568,"VK_EXT_shader_float8",{"number":857,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"contact":275,"extension":858,"proposal":8},235,"VK_EXT_shader_image_atomic_int64",{"number":860,"type":266,"author":333,"provisional":8,"depends":517,"ratified":415,"contact":441,"extension":861,"proposal":232},636,"VK_EXT_shader_long_vector",{"number":863,"type":266,"author":333,"provisional":8,"depends":864,"ratified":415,"contact":769,"extension":865,"proposal":232},463,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_pipeline_creation_cache_control),VK_VERSION_1_3","VK_EXT_shader_module_identifier",{"number":867,"type":266,"author":333,"provisional":8,"depends":558,"ratified":415,"contact":868,"extension":869,"proposal":232},483,"Daniel Story @daniel-story","VK_EXT_shader_object",{"number":871,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":367,"extension":872,"proposal":232},565,"VK_EXT_shader_replicated_composites",{"number":874,"type":266,"author":333,"provisional":8,"ratified":428,"contact":299,"extension":875,"proposal":8},141,"VK_EXT_shader_stencil_export",{"number":877,"type":266,"author":420,"deprecatedby":517,"provisional":8,"contact":785,"extension":878,"proposal":8},65,"VK_EXT_shader_subgroup_ballot",{"number":880,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":441,"extension":881,"proposal":8},663,"VK_EXT_shader_subgroup_partitioned",{"number":883,"type":266,"author":420,"deprecatedby":397,"provisional":8,"contact":785,"extension":884,"proposal":8},66,"VK_EXT_shader_subgroup_vote",{"number":886,"type":266,"author":333,"provisional":8,"depends":404,"ratified":415,"contact":371,"extension":887,"proposal":232},396,"VK_EXT_shader_tile_image",{"number":889,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":446,"extension":890,"proposal":232},643,"VK_EXT_shader_uniform_buffer_unsized_array",{"number":892,"type":266,"author":420,"promotedto":517,"provisional":8,"contact":785,"extension":893,"proposal":8},163,"VK_EXT_shader_viewport_index_layer",{"number":895,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":397,"ratified":408,"contact":896,"extension":897,"proposal":8},226,"Neil Henning @sheredom","VK_EXT_subgroup_size_control",{"number":899,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":900,"extension":901,"proposal":232},459,"Ting Wei @catweiting","VK_EXT_subpass_merge_feedback",{"number":903,"type":413,"author":333,"promotedto":904,"provisional":8,"depends":905,"ratified":415,"contact":500,"extension":906,"proposal":232},275,"VK_KHR_surface_maintenance1","VK_KHR_surface+VK_KHR_get_surface_capabilities2","VK_EXT_surface_maintenance1",{"number":908,"type":413,"author":480,"provisional":8,"depends":542,"ratified":428,"contact":481,"extension":909,"proposal":8},105,"VK_EXT_swapchain_colorspace",{"number":911,"type":266,"author":333,"promotedto":912,"provisional":8,"depends":913,"ratified":415,"contact":500,"extension":914,"proposal":232},276,"VK_KHR_swapchain_maintenance1","VK_KHR_swapchain+VK_EXT_surface_maintenance1+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_EXT_swapchain_maintenance1",{"number":916,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":279,"ratified":408,"contact":441,"extension":917,"proposal":8},282,"VK_EXT_texel_buffer_alignment",{"number":919,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":371,"extension":920,"proposal":232},289,"VK_EXT_texture_compression_astc_3d",{"number":922,"type":266,"author":365,"promotedto":404,"provisional":8,"depends":279,"ratified":408,"contact":371,"extension":923,"proposal":8},67,"VK_EXT_texture_compression_astc_hdr",{"number":925,"type":266,"author":333,"promotedto":404,"provisional":8,"contact":275,"extension":926,"proposal":8},246,"VK_EXT_tooling_info",{"number":122,"type":266,"author":420,"provisional":8,"depends":279,"ratified":415,"specialuse":928,"contact":446,"extension":801,"proposal":8},"glemulation,d3demulation,devtools",{"number":930,"type":266,"author":480,"provisional":8,"ratified":415,"contact":931,"extension":932,"proposal":8},161,"Cort Stratton @cdwfs","VK_EXT_validation_cache",{"number":934,"type":413,"author":935,"deprecatedby":679,"provisional":8,"ratified":415,"specialuse":228,"contact":936,"extension":937,"proposal":8},248,"LUNARG","Karl Schultz @karl-lunarg","VK_EXT_validation_features",{"number":939,"type":413,"author":480,"deprecatedby":679,"provisional":8,"specialuse":228,"contact":940,"extension":941,"proposal":8},62,"Tobin Ehlis @tobine","VK_EXT_validation_flags",{"number":943,"type":266,"author":420,"promotedto":944,"provisional":8,"depends":279,"contact":462,"extension":945,"proposal":8},191,"VK_KHR_vertex_attribute_divisor","VK_EXT_vertex_attribute_divisor",{"number":947,"type":266,"author":333,"promotedto":948,"provisional":8,"depends":279,"contact":446,"extension":949,"proposal":8},609,"VK_KHR_maintenance9","VK_EXT_vertex_attribute_robustness",{"number":951,"type":266,"author":333,"provisional":8,"depends":279,"ratified":428,"contact":446,"extension":685,"proposal":8},353,{"number":953,"type":266,"author":333,"promotedto":404,"provisional":8,"depends":823,"ratified":408,"contact":954,"extension":955,"proposal":8},331,"Tony Zlatinski @tzlatinski","VK_EXT_ycbcr_2plane_444_formats",{"number":957,"type":266,"author":333,"provisional":8,"depends":823,"ratified":428,"contact":446,"extension":958,"proposal":8},253,"VK_EXT_ycbcr_image_arrays",{"number":960,"type":266,"author":333,"provisional":8,"depends":279,"ratified":415,"contact":434,"extension":961,"proposal":232},621,"VK_EXT_zero_initialize_device_memory",{"number":963,"type":266,"author":964,"provisional":8,"depends":965,"platform":966,"contact":967,"extension":968,"proposal":8},367,"FUCHSIA","VK_FUCHSIA_external_memory+(VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1)","fuchsia","John Rosasco @rosasco","VK_FUCHSIA_buffer_collection",{"number":970,"type":266,"author":964,"provisional":8,"depends":971,"platform":966,"contact":967,"extension":972,"proposal":8},365,"(VK_KHR_external_memory_capabilities+VK_KHR_external_memory),VK_VERSION_1_1","VK_FUCHSIA_external_memory",{"number":974,"type":266,"author":964,"provisional":8,"depends":975,"platform":966,"contact":967,"extension":976,"proposal":8},366,"VK_KHR_external_semaphore_capabilities+VK_KHR_external_semaphore","VK_FUCHSIA_external_semaphore",{"number":978,"type":413,"author":964,"provisional":8,"depends":542,"platform":966,"contact":979,"extension":980,"proposal":8},215,"Craig Stout @cdotstout","VK_FUCHSIA_imagepipe_surface",{"number":982,"type":266,"author":983,"provisional":8,"depends":984,"platform":985,"contact":764,"extension":986,"proposal":8},192,"GGP","VK_KHR_swapchain+VK_GGP_stream_descriptor_surface","ggp","VK_GGP_frame_token",{"number":206,"type":413,"author":983,"provisional":8,"depends":542,"platform":985,"contact":764,"extension":988,"proposal":8},"VK_GGP_stream_descriptor_surface",{"number":990,"type":266,"author":480,"provisional":8,"contact":991,"extension":992,"proposal":8},225,"Hai Nguyen @chaoticbob","VK_GOOGLE_decorate_string",{"number":994,"type":266,"author":480,"provisional":8,"depends":629,"contact":995,"extension":996,"proposal":8},93,"Ian Elliott @ianelliottus","VK_GOOGLE_display_timing",{"number":998,"type":266,"author":480,"provisional":8,"contact":991,"extension":999,"proposal":8},224,"VK_GOOGLE_hlsl_functionality1",{"number":1001,"type":413,"author":480,"provisional":8,"depends":542,"specialuse":356,"contact":500,"extension":1002,"proposal":232},434,"VK_GOOGLE_surfaceless_query",{"number":1004,"type":266,"author":480,"provisional":8,"contact":1005,"extension":1006,"proposal":8},290,"Kaye Mason @chaleur","VK_GOOGLE_user_type",{"number":1008,"type":266,"author":1009,"provisional":8,"depends":279,"contact":1010,"extension":1011,"proposal":232},405,"HUAWEI","Yuchang Wang @richard_Wang2","VK_HUAWEI_cluster_culling_shader",{"number":1013,"type":266,"author":1009,"provisional":8,"depends":1014,"contact":1015,"extension":1016,"proposal":8},591,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_swapchain+VK_EXT_hdr_metadata","Zehui Lin @bactlink","VK_HUAWEI_hdr_vivid",{"number":1018,"type":266,"author":1019,"provisional":8,"depends":1020,"contact":1021,"extension":1022,"proposal":232},371,"Huawei","VK_KHR_ray_tracing_pipeline+(VK_KHR_synchronization2,VK_VERSION_1_3)","Pan Gao @PanGao-h","VK_HUAWEI_invocation_mask",{"number":1024,"type":266,"author":1009,"provisional":8,"depends":1025,"contact":1021,"extension":1026,"proposal":8},370,"((VK_KHR_create_renderpass2,VK_VERSION_1_2)+VK_KHR_synchronization2),VK_VERSION_1_3","VK_HUAWEI_subpass_shading",{"number":70,"type":266,"author":780,"provisional":8,"contact":275,"extension":1028,"proposal":8},"VK_IMG_filter_cubic",{"number":226,"type":266,"author":780,"deprecatedby":1030,"provisional":8,"contact":1031,"extension":1032,"proposal":8},null,"Stuart Smith","VK_IMG_format_pvrtc",{"number":1034,"type":266,"author":780,"provisional":8,"depends":279,"specialuse":356,"contact":607,"extension":1035,"proposal":8},111,"VK_IMG_relaxed_line_rasterization",{"number":1037,"type":266,"author":1038,"provisional":8,"specialuse":284,"contact":1039,"extension":1040,"proposal":8},211,"INTEL","Lionel Landwerlin @llandwerlin","VK_INTEL_performance_query",{"number":1042,"type":266,"author":1038,"provisional":8,"depends":279,"contact":1043,"extension":1044,"proposal":8},210,"Ian Romanick @ianromanick","VK_INTEL_shader_integer_functions2",{"number":1046,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1048,"ratified":415,"contact":371,"extension":1049,"proposal":8},84,"KHR","(VK_KHR_get_physical_device_properties2+VK_KHR_storage_buffer_storage_class),VK_VERSION_1_1","VK_KHR_16bit_storage",{"number":1051,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":1048,"ratified":415,"contact":1052,"extension":1053,"proposal":8},178,"Alexander Galazin @alegal-arm","VK_KHR_8bit_storage",{"number":1055,"type":266,"author":1047,"provisional":8,"depends":1056,"ratified":415,"contact":785,"extension":1057,"proposal":8},151,"((VK_VERSION_1_1+VK_EXT_descriptor_indexing+VK_KHR_buffer_device_address),VK_VERSION_1_2)+VK_KHR_deferred_host_operations","VK_KHR_acceleration_structure",{"number":42,"type":413,"author":1047,"provisional":8,"depends":542,"platform":355,"ratified":415,"contact":362,"extension":1059,"proposal":8},"VK_KHR_android_surface",{"number":1061,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":275,"extension":1062,"proposal":8},158,"VK_KHR_bind_memory2",{"number":1064,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":1065,"ratified":415,"contact":441,"extension":450,"proposal":8},258,"(VK_KHR_get_physical_device_properties2+VK_KHR_device_group),VK_VERSION_1_1",{"number":1067,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":428,"contact":674,"extension":454,"proposal":8},544,{"number":1069,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":1070,"extension":1071,"proposal":232},512,"Jean-Noe Morissette @MagicPoncho","VK_KHR_compute_shader_derivatives",{"number":1073,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":367,"extension":1074,"proposal":232},507,"VK_KHR_cooperative_matrix",{"number":1076,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":279,"ratified":428,"contact":589,"extension":1077,"proposal":8},338,"VK_KHR_copy_commands2",{"number":1079,"type":266,"author":1047,"provisional":8,"depends":1080,"ratified":415,"contact":565,"extension":1081,"proposal":232},550,"(VK_KHR_get_physical_device_properties2+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_KHR_copy_memory_indirect",{"number":1083,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":1084,"ratified":415,"contact":1085,"extension":1086,"proposal":8},110,"(VK_KHR_multiview+VK_KHR_maintenance2),VK_VERSION_1_1","Tobias Hector @tobias","VK_KHR_create_renderpass2",{"number":1088,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1089,"ratified":415,"contact":422,"extension":1090,"proposal":8},128,"VK_KHR_get_memory_requirements2,VK_VERSION_1_1","VK_KHR_dedicated_allocation",{"number":1092,"type":266,"author":1047,"provisional":8,"ratified":415,"contact":1093,"extension":1094,"proposal":8},269,"Josh Barczak @jbarczak","VK_KHR_deferred_host_operations",{"number":1096,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":496,"extension":495,"proposal":8},605,{"number":1098,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":1099,"ratified":415,"contact":1100,"extension":1101,"proposal":8},200,"VK_KHR_create_renderpass2,VK_VERSION_1_2","Jan-Harald Fredriksen @janharald","VK_KHR_depth_stencil_resolve",{"number":1103,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":1104,"extension":1105,"proposal":8},86,"Markus Tavenrath @mtavenrath","VK_KHR_descriptor_update_template",{"number":1107,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1108,"ratified":415,"contact":441,"extension":1109,"proposal":8},61,"VK_KHR_device_group_creation","VK_KHR_device_group",{"number":1111,"type":413,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":441,"extension":1108,"proposal":8},71,{"number":18,"type":413,"author":1047,"provisional":8,"depends":542,"ratified":428,"contact":1113,"extension":539,"proposal":8},"James Jones @cubanismo,Norbert Nopper @FslNopper",{"number":22,"type":266,"author":1047,"provisional":8,"depends":1115,"ratified":428,"contact":422,"extension":1116,"proposal":8},"VK_KHR_swapchain+VK_KHR_display","VK_KHR_display_swapchain",{"number":1118,"type":266,"author":1047,"promotedto":517,"provisional":8,"ratified":415,"contact":446,"extension":296,"proposal":8},170,{"number":1120,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":279,"ratified":415,"contact":285,"extension":1121,"proposal":8},197,"VK_KHR_driver_properties",{"number":186,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":1123,"ratified":415,"contact":275,"extension":1124,"proposal":232},"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_depth_stencil_resolve),VK_VERSION_1_2","VK_KHR_dynamic_rendering",{"number":1126,"type":266,"author":267,"promotedto":637,"provisional":8,"depends":1127,"ratified":415,"contact":275,"extension":1128,"proposal":232},233,"VK_KHR_dynamic_rendering,VK_VERSION_1_3","VK_KHR_dynamic_rendering_local_read",{"number":1130,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1131,"ratified":415,"contact":362,"extension":1132,"proposal":8},114,"VK_KHR_external_fence_capabilities","VK_KHR_external_fence",{"number":1134,"type":413,"author":1047,"promotedto":397,"provisional":8,"depends":279,"ratified":415,"contact":362,"extension":1131,"proposal":8},113,{"number":1136,"type":266,"author":1047,"provisional":8,"depends":1137,"ratified":428,"contact":362,"extension":1138,"proposal":8},116,"VK_KHR_external_fence,VK_VERSION_1_1","VK_KHR_external_fence_fd",{"number":1140,"type":266,"author":1047,"provisional":8,"depends":1132,"platform":612,"ratified":415,"contact":362,"extension":1141,"proposal":8},115,"VK_KHR_external_fence_win32",{"number":1143,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1144,"ratified":415,"contact":422,"extension":1145,"proposal":8},73,"VK_KHR_external_memory_capabilities,VK_VERSION_1_1","VK_KHR_external_memory",{"number":1147,"type":413,"author":1047,"promotedto":397,"provisional":8,"depends":279,"ratified":415,"contact":422,"extension":1148,"proposal":8},72,"VK_KHR_external_memory_capabilities",{"number":1150,"type":266,"author":1047,"provisional":8,"depends":572,"ratified":428,"contact":422,"extension":576,"proposal":8},75,{"number":1152,"type":266,"author":1047,"provisional":8,"depends":572,"platform":612,"ratified":415,"contact":422,"extension":1153,"proposal":8},74,"VK_KHR_external_memory_win32",{"number":1155,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1156,"ratified":415,"contact":422,"extension":1157,"proposal":8},78,"VK_KHR_external_semaphore_capabilities","VK_KHR_external_semaphore",{"number":1159,"type":413,"author":1047,"promotedto":397,"provisional":8,"depends":279,"ratified":415,"contact":422,"extension":1156,"proposal":8},77,{"number":1161,"type":266,"author":1047,"provisional":8,"depends":1162,"ratified":428,"contact":422,"extension":1163,"proposal":8},80,"VK_KHR_external_semaphore,VK_VERSION_1_1","VK_KHR_external_semaphore_fd",{"number":1165,"type":266,"author":1047,"provisional":8,"depends":1157,"platform":612,"ratified":415,"contact":422,"extension":1166,"proposal":8},79,"VK_KHR_external_semaphore_win32",{"number":1168,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":279,"ratified":415,"contact":1039,"extension":1169,"proposal":8},361,"VK_KHR_format_feature_flags2",{"number":1171,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":280,"extension":1172,"proposal":232},323,"VK_KHR_fragment_shader_barycentric",{"number":1174,"type":266,"author":1047,"provisional":8,"depends":1175,"ratified":428,"contact":275,"extension":1176,"proposal":232},227,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_create_renderpass2),VK_VERSION_1_2","VK_KHR_fragment_shading_rate",{"number":1178,"type":413,"author":1047,"provisional":8,"depends":539,"ratified":428,"contact":422,"extension":1179,"proposal":8},122,"VK_KHR_get_display_properties2",{"number":1181,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":699,"extension":1182,"proposal":8},147,"VK_KHR_get_memory_requirements2",{"number":1184,"type":413,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":441,"extension":1185,"proposal":8},60,"VK_KHR_get_physical_device_properties2",{"number":1187,"type":413,"author":1047,"provisional":8,"depends":542,"ratified":428,"contact":422,"extension":1188,"proposal":8},120,"VK_KHR_get_surface_capabilities2",{"number":1190,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":279,"ratified":428,"contact":275,"extension":616,"proposal":8},189,{"number":1192,"type":266,"author":1047,"promotedto":517,"provisional":8,"ratified":415,"contact":699,"extension":1193,"proposal":8},148,"VK_KHR_image_format_list",{"number":1195,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":1196,"ratified":415,"contact":1085,"extension":1197,"proposal":8},109,"(((VK_KHR_get_physical_device_properties2+VK_KHR_maintenance2),VK_VERSION_1_1)+VK_KHR_image_format_list),VK_VERSION_1_2","VK_KHR_imageless_framebuffer",{"number":1199,"type":266,"author":1047,"provisional":8,"depends":629,"ratified":428,"contact":995,"extension":1200,"proposal":8},85,"VK_KHR_incremental_present",{"number":1202,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":279,"ratified":428,"contact":446,"extension":669,"proposal":8},534,{"number":1204,"type":266,"author":1047,"provisional":8,"depends":397,"ratified":415,"contact":500,"extension":1205,"proposal":232},505,"VK_KHR_internally_synchronized_queues",{"number":1207,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":279,"ratified":428,"contact":446,"extension":689,"proposal":8},535,{"number":1209,"type":266,"author":1047,"promotedto":637,"provisional":8,"ratified":415,"contact":500,"extension":694,"proposal":232},527,{"number":1211,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":446,"extension":316,"proposal":8},70,{"number":1213,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":434,"extension":1214,"proposal":232},631,"VK_KHR_maintenance10",{"number":1216,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":1217,"extension":1218,"proposal":8},118,"Michael Worcester @michaelworcester","VK_KHR_maintenance2",{"number":1220,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":279,"ratified":415,"contact":441,"extension":1221,"proposal":8},169,"VK_KHR_maintenance3",{"number":1223,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":397,"ratified":415,"contact":446,"extension":1224,"proposal":8},414,"VK_KHR_maintenance4",{"number":1226,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":1227,"ratified":415,"contact":270,"extension":1228,"proposal":232},471,"(VK_VERSION_1_1+VK_KHR_dynamic_rendering),VK_VERSION_1_3","VK_KHR_maintenance5",{"number":1230,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":397,"ratified":415,"contact":1231,"extension":1232,"proposal":232},546,"Jon Leech @oddhack","VK_KHR_maintenance6",{"number":1234,"type":266,"author":1047,"provisional":8,"depends":397,"ratified":415,"contact":434,"extension":1235,"proposal":232},563,"VK_KHR_maintenance7",{"number":1237,"type":266,"author":1047,"provisional":8,"depends":397,"ratified":415,"contact":434,"extension":1238,"proposal":232},575,"VK_KHR_maintenance8",{"number":1240,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":434,"extension":948,"proposal":232},585,{"number":1242,"type":266,"author":1047,"promotedto":637,"provisional":8,"ratified":415,"contact":699,"extension":1243,"proposal":232},272,"VK_KHR_map_memory2",{"number":222,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":279,"ratified":415,"contact":441,"extension":1245,"proposal":8},"VK_KHR_multiview",{"extension":1247,"proposal":8},"VK_KHR_object_refresh",{"number":1249,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":428,"specialuse":284,"contact":1250,"extension":1251,"proposal":8},117,"Alon Or-bach @alonorbach","VK_KHR_performance_query",{"number":1253,"type":266,"author":1047,"provisional":8,"depends":1254,"ratified":415,"contact":270,"extension":1255,"proposal":232},484,"VK_KHR_maintenance5,VK_VERSION_1_4","VK_KHR_pipeline_binary",{"number":1257,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"specialuse":284,"contact":699,"extension":1258,"proposal":8},270,"VK_KHR_pipeline_executable_properties",{"number":1260,"type":266,"author":1047,"provisional":8,"ratified":415,"contact":714,"extension":1261,"proposal":8},291,"VK_KHR_pipeline_library",{"number":1263,"type":413,"author":1047,"provisional":8,"ratified":415,"contact":1264,"extension":1265,"proposal":8},395,"Charles Giessen @charles-lunarg","VK_KHR_portability_enumeration",{"number":1267,"type":266,"author":1047,"provisional":232,"depends":279,"platform":269,"ratified":415,"contact":718,"extension":1268,"proposal":8},164,"VK_KHR_portability_subset",{"number":1270,"type":266,"author":1047,"provisional":8,"depends":1271,"ratified":415,"contact":1272,"extension":1273,"proposal":8},295,"VK_KHR_swapchain+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","Keith Packard @keithp","VK_KHR_present_id",{"number":1275,"type":266,"author":1047,"provisional":8,"depends":1276,"ratified":415,"contact":1277,"extension":1278,"proposal":232},480,"VK_KHR_get_surface_capabilities2+VK_KHR_surface+VK_KHR_swapchain","Daniel Stone","VK_KHR_present_id2",{"number":1280,"type":266,"author":1047,"provisional":8,"depends":629,"ratified":415,"contact":790,"extension":789,"proposal":232},622,{"number":1282,"type":266,"author":1047,"provisional":8,"depends":1283,"ratified":415,"contact":1272,"extension":1284,"proposal":8},249,"VK_KHR_swapchain+VK_KHR_present_id","VK_KHR_present_wait",{"number":1286,"type":266,"author":1047,"provisional":8,"depends":1287,"ratified":415,"contact":1277,"extension":1288,"proposal":232},481,"VK_KHR_get_surface_capabilities2+VK_KHR_surface+VK_KHR_swapchain+VK_KHR_present_id2","VK_KHR_present_wait2",{"number":1290,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":279,"ratified":415,"contact":441,"extension":1291,"proposal":8},81,"VK_KHR_push_descriptor",{"number":1293,"type":266,"author":1047,"provisional":8,"depends":1294,"ratified":415,"contact":785,"extension":1295,"proposal":8},349,"(VK_KHR_spirv_1_4,VK_VERSION_1_2)+VK_KHR_acceleration_structure","VK_KHR_ray_query",{"number":1297,"type":266,"author":1047,"provisional":8,"depends":1057,"ratified":415,"contact":785,"extension":1298,"proposal":8},387,"VK_KHR_ray_tracing_maintenance1",{"number":1300,"type":266,"author":1047,"provisional":8,"depends":1294,"ratified":415,"contact":785,"extension":818,"proposal":8},348,{"number":1302,"type":266,"author":1047,"provisional":8,"depends":1057,"ratified":415,"contact":1303,"extension":1304,"proposal":232},482,"Eric Werness","VK_KHR_ray_tracing_position_fetch",{"number":1306,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":1307,"extension":1308,"proposal":8},145,"John Kessenich @johnkslang","VK_KHR_relaxed_block_layout",{"number":1310,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":446,"extension":827,"proposal":8},613,{"number":66,"type":266,"author":1047,"promotedto":517,"provisional":8,"ratified":415,"contact":275,"extension":1312,"proposal":8},"VK_KHR_sampler_mirror_clamp_to_edge",{"number":1314,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1315,"ratified":415,"contact":1316,"extension":1317,"proposal":8},157,"(VK_KHR_maintenance1+VK_KHR_bind_memory2+VK_KHR_get_memory_requirements2+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","Andrew Garrard @fluppeteer","VK_KHR_sampler_ycbcr_conversion",{"number":1319,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":1175,"ratified":415,"contact":446,"extension":1320,"proposal":8},242,"VK_KHR_separate_depth_stencil_layouts",{"number":1322,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":279,"ratified":415,"contact":1323,"extension":1324,"proposal":8},181,"Aaron Hagan @ahagan","VK_KHR_shader_atomic_int64",{"number":1326,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":275,"extension":1327,"proposal":232},142,"VK_KHR_shader_bfloat16",{"number":1329,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":428,"contact":1323,"extension":1330,"proposal":8},182,"VK_KHR_shader_clock",{"number":1332,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":785,"extension":1333,"proposal":8},64,"VK_KHR_shader_draw_parameters",{"number":1335,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":279,"ratified":415,"contact":367,"extension":1336,"proposal":232},545,"VK_KHR_shader_expect_assume",{"number":1338,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":279,"ratified":415,"contact":1052,"extension":302,"proposal":8},83,{"number":1340,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":279,"ratified":415,"contact":1052,"extension":1341,"proposal":8},198,"VK_KHR_shader_float_controls",{"number":1343,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":1344,"ratified":415,"contact":496,"extension":1345,"proposal":232},529,"VK_VERSION_1_1+VK_KHR_shader_float_controls","VK_KHR_shader_float_controls2",{"number":1347,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":496,"extension":1348,"proposal":232},580,"VK_KHR_shader_fma",{"number":1350,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":279,"ratified":415,"contact":367,"extension":1351,"proposal":232},281,"VK_KHR_shader_integer_dot_product",{"number":1353,"type":266,"author":1047,"provisional":8,"depends":397,"ratified":415,"contact":1354,"extension":1355,"proposal":232},435,"Alan Baker @alan-baker","VK_KHR_shader_maximal_reconvergence",{"number":1357,"type":266,"author":1047,"promotedto":404,"provisional":8,"ratified":415,"contact":477,"extension":1358,"proposal":8},294,"VK_KHR_shader_non_semantic_info",{"number":1360,"type":266,"author":1047,"provisional":8,"depends":1361,"ratified":415,"contact":275,"extension":1362,"proposal":232},236,"((VK_VERSION_1_1+VK_KHR_vulkan_memory_model),VK_VERSION_1_2)+VK_KHR_shader_maximal_reconvergence","VK_KHR_shader_quad_control",{"number":1364,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":1365,"extension":1366,"proposal":232},559,"Nathan Gauër @Keenuts","VK_KHR_shader_relaxed_extended_instruction",{"number":1368,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":397,"ratified":415,"contact":896,"extension":1369,"proposal":8},176,"VK_KHR_shader_subgroup_extended_types",{"number":1371,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":279,"ratified":415,"contact":367,"extension":1372,"proposal":232},417,"VK_KHR_shader_subgroup_rotate",{"number":1374,"type":266,"author":1047,"provisional":8,"depends":397,"ratified":415,"contact":1354,"extension":1375,"proposal":8},324,"VK_KHR_shader_subgroup_uniform_control_flow",{"number":1377,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":279,"ratified":428,"contact":362,"extension":1378,"proposal":8},216,"VK_KHR_shader_terminate_invocation",{"number":1380,"type":266,"author":1047,"provisional":8,"depends":1185,"ratified":415,"contact":1354,"extension":1381,"proposal":232},388,"VK_KHR_shader_untyped_pointers",{"number":1383,"type":266,"author":1047,"provisional":8,"depends":1384,"ratified":428,"contact":1250,"extension":1385,"proposal":8},112,"VK_KHR_swapchain+VK_KHR_get_surface_capabilities2+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","VK_KHR_shared_presentable_image",{"number":1387,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":1344,"ratified":415,"contact":362,"extension":1388,"proposal":8},237,"VK_KHR_spirv_1_4",{"number":1390,"type":266,"author":1047,"promotedto":397,"provisional":8,"ratified":415,"contact":1052,"extension":1391,"proposal":8},132,"VK_KHR_storage_buffer_storage_class",{"number":10,"type":413,"author":1047,"provisional":8,"ratified":428,"contact":1393,"extension":542,"proposal":8},"James Jones @cubanismo,Ian Elliott @ianelliottus",{"number":1395,"type":413,"author":1047,"provisional":8,"depends":905,"ratified":415,"contact":500,"extension":904,"proposal":232},487,{"number":1397,"type":413,"author":1047,"provisional":8,"depends":1398,"ratified":415,"contact":1399,"extension":1400,"proposal":8},240,"VK_VERSION_1_1+VK_KHR_get_surface_capabilities2","Sandeep Shinde @sashinde","VK_KHR_surface_protected_capabilities",{"number":14,"type":266,"author":1047,"provisional":8,"depends":542,"ratified":428,"contact":1393,"extension":629,"proposal":8},{"number":1403,"type":266,"author":1047,"provisional":8,"depends":1404,"ratified":415,"contact":500,"extension":912,"proposal":232},488,"VK_KHR_swapchain+VK_KHR_surface_maintenance1+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)",{"number":1406,"type":266,"author":1047,"provisional":8,"depends":1407,"ratified":428,"contact":285,"extension":1408,"proposal":8},201,"VK_KHR_swapchain+(VK_KHR_maintenance2,VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2)","VK_KHR_swapchain_mutable_format",{"number":1410,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":279,"ratified":428,"contact":275,"extension":1411,"proposal":8},315,"VK_KHR_synchronization2",{"number":1413,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":279,"ratified":415,"contact":699,"extension":1414,"proposal":8},208,"VK_KHR_timeline_semaphore",{"number":1416,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":500,"extension":1417,"proposal":232},528,"VK_KHR_unified_image_layouts",{"number":1419,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":279,"ratified":415,"contact":496,"extension":1420,"proposal":8},254,"VK_KHR_uniform_buffer_standard_layout",{"number":1422,"type":266,"author":1047,"promotedto":397,"provisional":8,"depends":1048,"ratified":415,"contact":362,"extension":1423,"proposal":8},121,"VK_KHR_variable_pointers",{"number":1425,"type":266,"author":1047,"promotedto":637,"provisional":8,"depends":279,"ratified":428,"contact":500,"extension":944,"proposal":232},526,{"number":1427,"type":266,"author":1047,"provisional":8,"depends":1428,"ratified":415,"contact":674,"extension":1429,"proposal":232},513,"VK_KHR_video_decode_queue","VK_KHR_video_decode_av1",{"number":170,"type":266,"author":1047,"provisional":8,"depends":1428,"ratified":415,"contact":1431,"extension":1432,"proposal":232},"peter.fang@amd.com","VK_KHR_video_decode_h264",{"number":1434,"type":266,"author":1047,"provisional":8,"depends":1428,"ratified":415,"contact":1431,"extension":1435,"proposal":232},188,"VK_KHR_video_decode_h265",{"number":106,"type":266,"author":1047,"provisional":8,"depends":1437,"ratified":415,"contact":1438,"extension":1428,"proposal":232},"VK_KHR_video_queue+(VK_KHR_synchronization2,VK_VERSION_1_3)","jake.beju@amd.com",{"number":1440,"type":266,"author":1047,"provisional":8,"depends":1428,"ratified":415,"contact":1441,"extension":1442,"proposal":232},515,"Ahmed Abdelkhalek @aabdelkh","VK_KHR_video_decode_vp9",{"number":1444,"type":266,"author":1047,"provisional":8,"depends":1445,"ratified":415,"contact":674,"extension":1446,"proposal":232},514,"VK_KHR_video_encode_queue","VK_KHR_video_encode_av1",{"number":162,"type":266,"author":1047,"provisional":8,"depends":1445,"ratified":415,"contact":1441,"extension":1448,"proposal":232},"VK_KHR_video_encode_h264",{"number":166,"type":266,"author":1047,"provisional":8,"depends":1445,"ratified":415,"contact":1441,"extension":1450,"proposal":232},"VK_KHR_video_encode_h265",{"number":1452,"type":266,"author":1047,"provisional":8,"depends":1445,"ratified":415,"contact":1441,"extension":1453,"proposal":232},553,"VK_KHR_video_encode_intra_refresh",{"number":1455,"type":266,"author":1047,"provisional":8,"depends":1456,"ratified":415,"contact":1441,"extension":1457,"proposal":232},554,"VK_KHR_video_encode_queue+(VK_KHR_format_feature_flags2,VK_VERSION_1_3)","VK_KHR_video_encode_quantization_map",{"number":1459,"type":266,"author":1047,"provisional":8,"depends":1437,"ratified":415,"contact":1441,"extension":1445,"proposal":232},300,{"number":1461,"type":266,"author":1047,"provisional":8,"depends":1462,"ratified":415,"contact":674,"extension":1463,"proposal":232},516,"VK_KHR_video_queue","VK_KHR_video_maintenance1",{"number":1465,"type":266,"author":1047,"provisional":8,"depends":1462,"ratified":415,"contact":674,"extension":1466,"proposal":232},587,"VK_KHR_video_maintenance2",{"number":102,"type":266,"author":1047,"provisional":8,"depends":1468,"ratified":415,"contact":954,"extension":1462,"proposal":232},"(VK_VERSION_1_1+VK_KHR_synchronization2),VK_VERSION_1_3",{"number":1470,"type":266,"author":1047,"promotedto":517,"provisional":8,"depends":279,"ratified":415,"contact":441,"extension":1471,"proposal":8},212,"VK_KHR_vulkan_memory_model",{"number":34,"type":413,"author":1047,"provisional":8,"depends":542,"platform":1473,"ratified":415,"contact":1474,"extension":1475,"proposal":8},"wayland","Jesse Hall @critsec,Ian Elliott @ianelliottus","VK_KHR_wayland_surface",{"number":1477,"type":266,"author":1047,"provisional":8,"depends":1153,"platform":612,"ratified":415,"contact":1478,"extension":1479,"proposal":8},76,"Carsten Rohde @crohde","VK_KHR_win32_keyed_mutex",{"number":46,"type":413,"author":1047,"provisional":8,"depends":542,"platform":612,"ratified":415,"contact":1474,"extension":1481,"proposal":8},"VK_KHR_win32_surface",{"number":1483,"type":266,"author":1047,"provisional":8,"depends":279,"ratified":415,"contact":1484,"extension":1485,"proposal":8},337,"Caio Marcelo de Oliveira Filho @cmarcelo","VK_KHR_workgroup_memory_explicit_layout",{"number":30,"type":413,"author":1047,"provisional":8,"depends":542,"platform":1487,"ratified":415,"contact":1474,"extension":1488,"proposal":8},"xcb","VK_KHR_xcb_surface",{"number":26,"type":413,"author":1047,"provisional":8,"depends":542,"platform":1490,"ratified":415,"contact":1474,"extension":1491,"proposal":8},"xlib","VK_KHR_xlib_surface",{"number":1493,"type":266,"author":1047,"promotedto":404,"provisional":8,"depends":279,"ratified":415,"contact":1354,"extension":1494,"proposal":8},326,"VK_KHR_zero_initialize_workgroup_memory",{"number":1496,"type":413,"author":935,"provisional":8,"contact":1264,"extension":1497,"proposal":232},460,"VK_LUNARG_direct_driver_loading",{"number":1499,"type":266,"author":1500,"provisional":8,"depends":279,"specialuse":487,"contact":769,"extension":1501,"proposal":8},576,"MESA","VK_MESA_image_alignment_control",{"number":1503,"type":266,"author":1504,"provisional":8,"depends":279,"contact":1505,"extension":1506,"proposal":232},531,"MSFT","Jesse Natalie @jenatali","VK_MSFT_layered_driver",{"number":1508,"type":413,"author":1509,"deprecatedby":723,"provisional":8,"depends":542,"platform":1510,"contact":718,"extension":1511,"proposal":8},123,"MVK","ios","VK_MVK_ios_surface",{"number":1513,"type":413,"author":1509,"deprecatedby":723,"provisional":8,"depends":542,"platform":1514,"contact":718,"extension":1515,"proposal":8},124,"macos","VK_MVK_macos_surface",{"number":1517,"type":413,"author":1518,"provisional":8,"depends":542,"platform":1519,"contact":1520,"extension":1521,"proposal":8},63,"NN","vi","Mathias Heyer gitlab:@mheyer","VK_NN_vi_surface",{"number":126,"type":266,"author":1523,"provisional":8,"contact":1524,"extension":1525,"proposal":8},"NVX","Eric Werness @ewerness-nv,Liam Middlebrook @liam-middlebrook","VK_NVX_binary_import",{"number":130,"type":266,"author":1523,"provisional":8,"contact":819,"extension":1527,"proposal":8},"VK_NVX_image_view_handle",{"number":1529,"type":266,"author":1523,"provisional":8,"depends":1530,"contact":441,"extension":1531,"proposal":8},98,"VK_KHR_multiview,VK_VERSION_1_1","VK_NVX_multiview_per_view_attributes",{"number":1533,"type":266,"author":420,"provisional":8,"depends":414,"platform":612,"contact":1534,"extension":1535,"proposal":8},346,"Jeff Juliano @jjuliano","VK_NV_acquire_winrt_display",{"number":1537,"type":266,"author":420,"provisional":8,"contact":819,"extension":1538,"proposal":8},88,"VK_NV_clip_space_w_scaling",{"number":1540,"type":266,"author":420,"provisional":8,"depends":1057,"contact":462,"extension":1541,"proposal":232},570,"VK_NV_cluster_acceleration_structure",{"number":1543,"type":266,"author":420,"provisional":8,"depends":279,"contact":1544,"extension":1545,"proposal":8},560,"Lujin Wang @lujinwangnv","VK_NV_command_buffer_inheritance",{"number":1547,"type":266,"author":420,"provisional":8,"depends":279,"contact":1548,"extension":1549,"proposal":232},646,"Chris Lentini @clentini","VK_NV_compute_occupancy_priority",{"number":1551,"type":266,"author":420,"promotedto":1071,"provisional":8,"depends":279,"contact":1552,"extension":1553,"proposal":8},202,"Pat Brown @nvpbrown","VK_NV_compute_shader_derivatives",{"number":1555,"type":266,"author":420,"provisional":8,"depends":279,"contact":441,"extension":1556,"proposal":8},250,"VK_NV_cooperative_matrix",{"number":1558,"type":266,"author":420,"provisional":8,"depends":1074,"contact":441,"extension":1559,"proposal":232},594,"VK_NV_cooperative_matrix2",{"number":1561,"type":266,"author":420,"provisional":8,"depends":279,"contact":441,"extension":1562,"proposal":232},492,"VK_NV_cooperative_vector",{"number":1564,"type":266,"author":420,"promotedto":1081,"provisional":8,"depends":1565,"contact":565,"extension":1566,"proposal":8},427,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_NV_copy_memory_indirect",{"number":210,"type":266,"author":420,"provisional":8,"depends":279,"contact":785,"extension":1568,"proposal":8},"VK_NV_corner_sampled_image",{"number":1570,"type":266,"author":420,"provisional":8,"depends":1571,"contact":1572,"extension":1573,"proposal":8},251,"VK_NV_framebuffer_mixed_samples+(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)","Kedarnath Thangudu @kthangudu","VK_NV_coverage_reduction_mode",{"number":1575,"type":266,"author":420,"provisional":232,"depends":279,"platform":269,"contact":1576,"extension":1577,"proposal":8},308,"Tristan Lorach @tlorach","VK_NV_cuda_kernel_launch",{"number":114,"type":266,"author":420,"deprecatedby":1090,"provisional":8,"contact":441,"extension":1579,"proposal":8},"VK_NV_dedicated_allocation",{"number":1581,"type":266,"author":1582,"provisional":8,"depends":1583,"contact":1584,"extension":1585,"proposal":8},241,"NVIDIA","(VK_KHR_dedicated_allocation+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","Nuno Subtil @nsubtil","VK_NV_dedicated_allocation_image_aliasing",{"number":1587,"type":266,"author":420,"provisional":8,"depends":397,"contact":446,"extension":1588,"proposal":8},547,"VK_NV_descriptor_pool_overallocation",{"number":1590,"type":266,"author":1582,"provisional":8,"depends":279,"contact":1584,"extension":1591,"proposal":8},207,"VK_NV_device_diagnostic_checkpoints",{"number":1593,"type":266,"author":420,"provisional":8,"depends":279,"contact":1572,"extension":1594,"proposal":8},301,"VK_NV_device_diagnostics_config",{"number":1596,"type":266,"author":420,"provisional":8,"depends":1597,"contact":714,"extension":1598,"proposal":8},278,"(VK_VERSION_1_1+VK_KHR_buffer_device_address),VK_VERSION_1_2","VK_NV_device_generated_commands",{"number":1600,"type":266,"author":420,"provisional":8,"depends":1598,"contact":565,"extension":1601,"proposal":8},429,"VK_NV_device_generated_commands_compute",{"number":1603,"type":266,"author":420,"deprecatedby":1541,"provisional":232,"depends":378,"platform":269,"contact":1604,"extension":1605,"proposal":8},398,"Christoph Kubisch @pixeljetstream, Eric Werness @ewerness-nv","VK_NV_displacement_micromap",{"number":1607,"type":413,"author":420,"provisional":8,"depends":1608,"contact":1609,"extension":1610,"proposal":232},552,"VK_KHR_display+VK_KHR_get_display_properties2","Russell Chou @russellcnv","VK_NV_display_stereo",{"number":1612,"type":266,"author":420,"provisional":8,"depends":279,"contact":1609,"extension":1613,"proposal":8},493,"VK_NV_extended_sparse_address_space",{"number":1615,"type":266,"author":420,"provisional":8,"contact":1548,"extension":1616,"proposal":232},557,"VK_NV_external_compute_queue",{"number":1618,"type":266,"author":420,"deprecatedby":1145,"provisional":8,"depends":1619,"contact":422,"extension":1620,"proposal":8},57,"VK_NV_external_memory_capabilities","VK_NV_external_memory",{"number":1622,"type":413,"author":420,"deprecatedby":1148,"provisional":8,"contact":422,"extension":1619,"proposal":8},56,{"number":1624,"type":266,"author":420,"provisional":8,"depends":572,"contact":1478,"extension":1625,"proposal":8},372,"VK_NV_external_memory_rdma",{"extension":1627,"proposal":8},"VK_NV_external_memory_sci_buf",{"number":1629,"type":266,"author":420,"deprecatedby":1153,"provisional":8,"depends":1620,"platform":612,"contact":422,"extension":1630,"proposal":8},58,"VK_NV_external_memory_win32",{"extension":1632,"proposal":8},"VK_NV_external_sci_sync",{"extension":1634,"proposal":8},"VK_NV_external_sci_sync2",{"number":1636,"type":266,"author":420,"provisional":8,"contact":441,"extension":1637,"proposal":8},154,"VK_NV_fill_rectangle",{"number":1639,"type":266,"author":420,"provisional":8,"contact":441,"extension":1640,"proposal":8},150,"VK_NV_fragment_coverage_to_color",{"number":1642,"type":266,"author":420,"promotedto":1172,"provisional":8,"depends":279,"contact":1552,"extension":1643,"proposal":8},204,"VK_NV_fragment_shader_barycentric",{"number":1645,"type":266,"author":420,"provisional":8,"depends":1176,"contact":1552,"extension":1646,"proposal":8},327,"VK_NV_fragment_shading_rate_enums",{"number":1648,"type":266,"author":420,"provisional":8,"contact":441,"extension":1649,"proposal":8},153,"VK_NV_framebuffer_mixed_samples",{"number":1651,"type":266,"author":420,"provisional":8,"contact":785,"extension":1652,"proposal":8},96,"VK_NV_geometry_shader_passthrough",{"number":58,"type":266,"author":420,"deprecatedby":1030,"provisional":8,"contact":446,"extension":1654,"proposal":8},"VK_NV_glsl_shader",{"number":1656,"type":266,"author":420,"provisional":8,"depends":279,"contact":1657,"extension":1658,"proposal":8},279,"David Zhao Akeley @akeley98","VK_NV_inherited_viewport_scissor",{"number":1660,"type":266,"author":1582,"provisional":8,"depends":279,"contact":1661,"extension":1662,"proposal":8},431,"sourav parmar @souravpNV","VK_NV_linear_color_attachment",{"number":1664,"type":266,"author":420,"provisional":8,"contact":1665,"extension":1666,"proposal":8},311,"Charles Hansen @cshansen","VK_NV_low_latency",{"number":1668,"type":266,"author":420,"provisional":8,"depends":1669,"contact":1665,"extension":1670,"proposal":8},506,"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)+(VK_KHR_present_id,VK_KHR_present_id2)","VK_NV_low_latency2",{"number":1672,"type":266,"author":420,"promotedto":707,"provisional":8,"depends":1565,"contact":565,"extension":1673,"proposal":8},428,"VK_NV_memory_decompression",{"number":1675,"type":266,"author":420,"provisional":8,"depends":279,"contact":714,"extension":1676,"proposal":8},203,"VK_NV_mesh_shader",{"number":1678,"type":266,"author":420,"provisional":8,"depends":1679,"contact":1478,"extension":1680,"proposal":8},465,"((VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_KHR_format_feature_flags2+VK_KHR_synchronization2),VK_VERSION_1_3","VK_NV_optical_flow",{"number":1682,"type":266,"author":420,"provisional":8,"depends":1057,"contact":462,"extension":1683,"proposal":232},571,"VK_NV_partitioned_acceleration_structure",{"number":1685,"type":266,"author":420,"provisional":8,"depends":1686,"contact":446,"extension":1687,"proposal":8},517,"VK_KHR_maintenance6,VK_VERSION_1_4","VK_NV_per_stage_descriptor_set",{"number":1689,"type":266,"author":420,"provisional":8,"depends":611,"contact":1690,"extension":1691,"proposal":8},293,"Liya Li @liyli","VK_NV_present_barrier",{"number":1693,"type":266,"author":420,"provisional":8,"depends":279,"contact":1694,"extension":1695,"proposal":8},614,"Charles Hansen @chansen","VK_NV_present_metering",{"extension":1697,"proposal":8},"VK_NV_private_vendor_info",{"number":1699,"type":266,"author":420,"provisional":8,"contact":1700,"extension":1701,"proposal":232},581,"Vassili Nikolaev @vasnik1","VK_NV_push_constant_bank",{"number":1703,"type":266,"author":420,"provisional":8,"depends":279,"contact":1704,"extension":1705,"proposal":8},556,"Rodrigo Locatti @rlocatti","VK_NV_raw_access_chains",{"number":1707,"type":266,"author":420,"deprecatedby":818,"provisional":8,"depends":1708,"contact":819,"extension":1709,"proposal":8},166,"(VK_KHR_get_physical_device_properties2+VK_KHR_get_memory_requirements2),VK_VERSION_1_1","VK_NV_ray_tracing",{"number":1711,"type":266,"author":420,"promotedto":820,"provisional":8,"depends":818,"contact":819,"extension":1712,"proposal":8},491,"VK_NV_ray_tracing_invocation_reorder",{"number":1714,"type":266,"author":420,"provisional":8,"depends":818,"contact":462,"extension":1715,"proposal":232},430,"VK_NV_ray_tracing_linear_swept_spheres",{"number":1717,"type":266,"author":420,"provisional":8,"depends":818,"contact":1303,"extension":1718,"proposal":8},328,"VK_NV_ray_tracing_motion_blur",{"number":1720,"type":266,"author":420,"provisional":8,"depends":279,"contact":565,"extension":1721,"proposal":232},569,"VK_NV_ray_tracing_validation",{"number":1723,"type":266,"author":420,"provisional":8,"depends":279,"contact":1572,"extension":1724,"proposal":8},167,"VK_NV_representative_fragment_test",{"number":1726,"type":266,"author":420,"provisional":8,"contact":446,"extension":1727,"proposal":8},95,"VK_NV_sample_mask_override_coverage",{"number":1729,"type":266,"author":420,"provisional":8,"depends":279,"contact":1552,"extension":1730,"proposal":8},206,"VK_NV_scissor_exclusive",{"number":1732,"type":266,"author":420,"provisional":8,"depends":279,"contact":441,"extension":1733,"proposal":8},564,"VK_NV_shader_atomic_float16_vector",{"number":1735,"type":266,"author":420,"provisional":8,"depends":279,"contact":1552,"extension":1736,"proposal":8},205,"VK_NV_shader_image_footprint",{"number":1738,"type":266,"author":420,"provisional":8,"depends":397,"contact":785,"extension":1739,"proposal":8},155,"VK_NV_shader_sm_builtins",{"number":1741,"type":266,"author":420,"promotedto":881,"provisional":8,"depends":397,"contact":441,"extension":1742,"proposal":8},199,"VK_NV_shader_subgroup_partitioned",{"number":1744,"type":266,"author":420,"provisional":8,"depends":279,"contact":1552,"extension":1745,"proposal":8},165,"VK_NV_shading_rate_image",{"number":1747,"type":266,"author":420,"provisional":8,"contact":785,"extension":1748,"proposal":8},97,"VK_NV_viewport_array2",{"number":1750,"type":266,"author":420,"provisional":8,"contact":446,"extension":1751,"proposal":8},99,"VK_NV_viewport_swizzle",{"number":1753,"type":266,"author":420,"promotedto":1479,"provisional":8,"depends":1630,"platform":612,"contact":1478,"extension":1754,"proposal":8},59,"VK_NV_win32_keyed_mutex",{"number":1756,"type":266,"author":1009,"provisional":8,"depends":361,"platform":1757,"contact":1758,"extension":1759,"proposal":8},453,"ohos","Weilan Chen @wchen-h","VK_OHOS_external_memory",{"number":1761,"type":266,"author":1009,"provisional":8,"platform":1757,"contact":1758,"extension":1762,"proposal":8},589,"VK_OHOS_native_buffer",{"number":1764,"type":413,"author":1009,"provisional":8,"depends":542,"platform":1757,"contact":1758,"extension":1765,"proposal":8},588,"VK_OHOS_surface",{"number":1767,"type":266,"author":588,"provisional":8,"depends":1074,"contact":589,"extension":1768,"proposal":232},173,"VK_QCOM_cooperative_matrix_conversion",{"number":1770,"type":266,"author":588,"provisional":8,"depends":368,"contact":589,"extension":1771,"proposal":232},630,"VK_QCOM_data_graph_model",{"number":1773,"type":266,"author":588,"provisional":8,"depends":1774,"contact":589,"extension":1775,"proposal":8},522,"(VK_EXT_filter_cubic)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)","VK_QCOM_filter_cubic_clamp",{"number":1777,"type":266,"author":588,"provisional":8,"depends":590,"contact":589,"extension":1778,"proposal":8},520,"VK_QCOM_filter_cubic_weights",{"number":1780,"type":266,"author":588,"promotedto":601,"provisional":8,"depends":1781,"contact":589,"extension":1782,"proposal":8},426,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+VK_EXT_fragment_density_map","VK_QCOM_fragment_density_map_offset",{"number":1784,"type":266,"author":588,"provisional":8,"depends":1785,"contact":589,"extension":1786,"proposal":232},441,"VK_KHR_format_feature_flags2,VK_VERSION_1_3","VK_QCOM_image_processing",{"number":1788,"type":266,"author":588,"provisional":8,"depends":1786,"contact":589,"extension":1789,"proposal":8},519,"VK_QCOM_image_processing2",{"number":1791,"type":266,"author":588,"provisional":8,"depends":279,"contact":589,"extension":1792,"proposal":8},511,"VK_QCOM_multiview_per_view_render_areas",{"number":1794,"type":266,"author":588,"provisional":8,"depends":279,"contact":589,"extension":1795,"proposal":8},489,"VK_QCOM_multiview_per_view_viewports",{"number":1797,"type":266,"author":588,"promotedto":472,"provisional":8,"contact":589,"extension":1798,"proposal":8},172,"VK_QCOM_render_pass_shader_resolve",{"number":1800,"type":266,"author":588,"provisional":8,"contact":589,"extension":1801,"proposal":8},302,"VK_QCOM_render_pass_store_ops",{"number":1803,"type":266,"author":588,"provisional":8,"contact":589,"extension":1804,"proposal":8},283,"VK_QCOM_render_pass_transform",{"number":1806,"type":266,"author":588,"provisional":8,"depends":1807,"contact":589,"extension":1808,"proposal":8},334,"VK_KHR_copy_commands2,VK_VERSION_1_3","VK_QCOM_rotated_copy_commands",{"number":1810,"type":266,"author":588,"provisional":8,"depends":1811,"contact":1812,"extension":1813,"proposal":232},548,"(VK_KHR_get_memory_requirements2+VK_KHR_get_physical_device_properties2),VK_VERSION_1_1","Patrick Boyle @pboyleQCOM","VK_QCOM_tile_memory_heap",{"number":1815,"type":266,"author":588,"provisional":8,"depends":279,"contact":589,"extension":1816,"proposal":232},485,"VK_QCOM_tile_properties",{"number":1818,"type":266,"author":588,"provisional":8,"depends":1816,"contact":589,"extension":1819,"proposal":232},310,"VK_QCOM_tile_shading",{"number":1821,"type":266,"author":588,"provisional":8,"depends":279,"contact":589,"extension":1822,"proposal":8},521,"VK_QCOM_ycbcr_degamma",{"number":1824,"type":266,"author":1825,"provisional":8,"depends":361,"platform":1826,"contact":1827,"extension":1828,"proposal":8},530,"QNX","screen","Mike Gorchak @mgorchak-blackberry, Aaron Ruby @aruby-blackberry","VK_QNX_external_memory_screen_buffer",{"number":1830,"type":413,"author":1825,"provisional":8,"depends":542,"platform":1826,"contact":1831,"extension":1832,"proposal":8},379,"Mike Gorchak @mgorchak-blackberry","VK_QNX_screen_surface",{"number":1834,"type":266,"author":1835,"provisional":8,"depends":279,"contact":524,"extension":1836,"proposal":8},486,"SEC","VK_SEC_amigo_profiling",{"number":1838,"type":266,"author":1835,"provisional":8,"depends":279,"contact":1839,"extension":1840,"proposal":8},638,"Chris Hambacher @chambacher","VK_SEC_pipeline_cache_incremental_mode",{"number":1842,"type":413,"author":1835,"provisional":8,"depends":542,"platform":1843,"contact":1844,"extension":1845,"proposal":8},665,"ubm","Minji Choe @minjichoe","VK_SEC_ubm_surface",{"number":1847,"type":266,"author":1848,"provisional":8,"depends":279,"specialuse":487,"contact":769,"extension":1849,"proposal":8},421,"VALVE","VK_VALVE_descriptor_set_host_mapping",{"number":1851,"type":266,"author":1848,"provisional":8,"depends":1852,"contact":600,"extension":1853,"proposal":8},612,"(VK_KHR_maintenance5,VK_VERSION_1_4)+VK_EXT_fragment_density_map","VK_VALVE_fragment_density_map_layered",{"number":1855,"type":266,"author":1848,"promotedto":735,"provisional":8,"depends":1221,"specialuse":487,"contact":734,"extension":1856,"proposal":8},352,"VK_VALVE_mutable_descriptor_type",{"number":1858,"type":266,"author":1848,"provisional":8,"depends":1859,"contact":742,"extension":1860,"proposal":8},674,"(VK_KHR_get_physical_device_properties2,VK_VERSION_1_1)+(VK_KHR_shader_float16_int8,VK_VERSION_1_2)","VK_VALVE_shader_mixed_float_dot_product",{"number":1862,"type":266,"author":1848,"provisional":8,"depends":1863,"contact":1864,"extension":1865,"proposal":8},391,"VK_KHR_video_encode_queue+(VK_KHR_sampler_ycbcr_conversion,VK_VERSION_1_1)","Autumn Ashton @misyltoad","VK_VALVE_video_encode_rgb_conversion",{"title":1867,"description":1868,"body":1869,"_type":19808,"_id":1867},"VK_EXT_descriptor_heap.proposal","This document outlines a proposal to make the management of descriptor memory more explicit, allowing descriptors to be present in buffer memory, allowing the data and memory to be managed alongside other buffer objects.\nThis expands on true to solve a number of identified issues with that extension.",{"type":1870,"children":1871,"toc":19733},"root",[1872,1879,1886,1891,1985,1990,1996,2001,2024,2033,2046,2052,2057,2078,2085,2113,2134,2139,2145,2150,2879,2901,2909,2914,2919,2924,3179,3208,3213,3234,3255,3277,3293,3376,3398,3404,3425,3483,3502,3513,3517,3522,3726,3740,3757,3762,3775,3824,3919,3963,3968,3999,4011,4016,4043,4062,4068,4073,4121,4155,4168,4233,4245,4251,4256,4395,4422,4435,4471,4476,4506,4523,4541,4546,4571,4579,4587,6311,6359,6393,6478,6621,6633,6746,6751,6756,6764,6774,6785,6825,6830,6838,6843,6853,6888,6925,6941,6951,6978,6992,7002,7014,7019,7029,7048,7056,7066,7093,7101,7111,7131,7139,7149,7161,7171,7181,7191,7201,7211,7229,7237,7244,7257,7278,7284,7327,7333,7338,7396,7409,7414,7420,7425,7520,7541,7553,7559,7594,7600,7619,7771,7832,7901,7934,8001,8034,8040,8052,8071,8076,8109,8115,8158,8163,8202,8303,8345,8373,8395,8471,8507,8525,8530,8536,8541,8574,8672,8708,8736,8763,8795,8812,8816,8822,8827,8909,8921,8927,8932,9069,9111,9117,9122,9184,9204,9210,9215,9280,9321,9327,9332,9546,9865,9870,10609,10644,10650,10661,10751,10798,10804,10837,10895,10900,10905,10910,10939,10951,10985,10996,11009,11020,11032,11046,11058,11063,11068,12190,12202,13799,13805,13819,13824,13837,13849,13855,13997,14003,14178,14184,14214,14220,14616,14621,14641,14646,14901,14913,14921,14971,15007,15013,15033,15046,15051,15580,15585,15591,15645,15711,15719,15725,15730,15742,16740,16745,18661,18666,18672,18693,18750,18756,18778,18783,18799,18804,18946,18951,19019,19023,19178,19191,19197,19203,19222,19227,19232,19237,19250,19256,19261,19266,19271,19290,19302,19307,19312,19318,19323,19336,19353,19364,19370,19381,19387,19392,19408,19414,19419,19425,19441,19447,19460,19466,19471,19477,19482,19499,19504,19510,19515,19521,19526,19532,19537,19543,19548,19561,19579,19585,19609,19622,19635,19640,19646,19652,19668,19674,19679,19685,19697,19703,19708,19714,19727],{"type":1873,"tag":1874,"props":1875,"children":1876},"element","p",{},[1877],{"type":1878,"value":1868},"text",{"type":1873,"tag":1880,"props":1881,"children":1883},"h2",{"id":1882},"_problem_statement",[1884],{"type":1878,"value":1885},"Problem Statement",{"type":1873,"tag":1874,"props":1887,"children":1888},{},[1889],{"type":1878,"value":1890},"true simplified descriptor management, but several warts remained with that extension that would be useful to iron out:",{"type":1873,"tag":1892,"props":1893,"children":1894},"ul",{},[1895,1909,1935,1957,1975,1980],{"type":1873,"tag":1896,"props":1897,"children":1898},"li",{},[1899,1901],{"type":1878,"value":1900},"While buffer view creation is no longer required, image view creation is - meaning an additional object must be managed by applications.",{"type":1873,"tag":1892,"props":1902,"children":1903},{},[1904],{"type":1873,"tag":1896,"props":1905,"children":1906},{},[1907],{"type":1878,"value":1908},"Ideally, descriptors could be created directly from images to avoid this.",{"type":1873,"tag":1896,"props":1910,"children":1911},{},[1912,1914],{"type":1878,"value":1913},"There are several ways to provide constant data to shaders, and it is unclear which of those should be preferred in a given situation.",{"type":1873,"tag":1892,"props":1915,"children":1916},{},[1917,1930],{"type":1873,"tag":1896,"props":1918,"children":1919},{},[1920,1928],{"type":1873,"tag":1921,"props":1922,"children":1926},"a",{"href":1923,"rel":1924},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_inline_uniform_block",[1925],"nofollow",[1927],{"type":1878,"value":675},{"type":1878,"value":1929}," added one more (embedding constants in descriptor sets), but this method is not necessarily a universal fast path.",{"type":1873,"tag":1896,"props":1931,"children":1932},{},[1933],{"type":1878,"value":1934},"If a consistent fast path can be established, it would greatly simplify the developer experience and allow us to have definitive portable guidelines",{"type":1873,"tag":1896,"props":1936,"children":1937},{},[1938,1940],{"type":1878,"value":1939},"Consistency between vendors is low - multiple vendors have dedicated image and sampler heaps, but descriptor buffers were initially advertised as general purpose, and only reined in by usage bits.",{"type":1873,"tag":1892,"props":1941,"children":1942},{},[1943],{"type":1873,"tag":1896,"props":1944,"children":1945},{},[1946,1948,1955],{"type":1878,"value":1947},"This led to some dispute about how best to implement these - whether descriptor buffers should contain indexes (similar to ",{"type":1873,"tag":1921,"props":1949,"children":1952},{"href":1950,"rel":1951},"https://registry.khronos.org/OpenGL/extensions/ARB/ARB_bindless_texture.txt",[1925],[1953],{"type":1878,"value":1954},"GL_ARB_bindless_texture",{"type":1878,"value":1956},"), or if they should be real descriptors. Subsequently, performance portability is lower than ideal.",{"type":1873,"tag":1896,"props":1958,"children":1959},{},[1960,1962],{"type":1878,"value":1961},"Mixing buffers and images (or formatted buffers) in the same descriptor buffer in a flat array can lead to performance issues as these are typically of wildly different sizes.",{"type":1873,"tag":1892,"props":1963,"children":1964},{},[1965,1970],{"type":1873,"tag":1896,"props":1966,"children":1967},{},[1968],{"type":1878,"value":1969},"For example, reading two buffers from a tightly packed array may come from one cache line, whereas if they are padded to match image sizes, this could require two separate cache lines with significant wastage.",{"type":1873,"tag":1896,"props":1971,"children":1972},{},[1973],{"type":1878,"value":1974},"This is necessary for portability based on the base requirements of that extension.",{"type":1873,"tag":1896,"props":1976,"children":1977},{},[1978],{"type":1878,"value":1979},"Push constants are awkward to use, it would be nice to clean up this interface.",{"type":1873,"tag":1896,"props":1981,"children":1982},{},[1983],{"type":1878,"value":1984},"Pipeline layouts and descriptor set layouts are still used and are awkward to specify.",{"type":1873,"tag":1874,"props":1986,"children":1987},{},[1988],{"type":1878,"value":1989},"Many of the problems above intersect in non-trivial (and non-obvious) ways, but this proposal aims to solve all of these.",{"type":1873,"tag":1880,"props":1991,"children":1993},{"id":1992},"_solution_space",[1994],{"type":1878,"value":1995},"Solution Space",{"type":1873,"tag":1874,"props":1997,"children":1998},{},[1999],{"type":1878,"value":2000},"Any solution to this problem has to meet the following requirements:",{"type":1873,"tag":1892,"props":2002,"children":2003},{},[2004,2009,2014,2019],{"type":1873,"tag":1896,"props":2005,"children":2006},{},[2007],{"type":1878,"value":2008},"Be easy to understand and use",{"type":1873,"tag":1896,"props":2010,"children":2011},{},[2012],{"type":1878,"value":2013},"Have clear and consistent performance recommendations that are portable",{"type":1873,"tag":1896,"props":2015,"children":2016},{},[2017],{"type":1878,"value":2018},"Fully replace the functionality of true",{"type":1873,"tag":1896,"props":2020,"children":2021},{},[2022],{"type":1878,"value":2023},"Provide a clean way to support shaders using existing binding-based descriptors as well shaders using data driven and \"bindless\" models",{"type":1873,"tag":2025,"props":2026,"children":2027},"note",{},[2028],{"type":1873,"tag":1874,"props":2029,"children":2030},{},[2031],{"type":1878,"value":2032},"While this extension makes constant reference to true, VK_EXT_descriptor_heap does not depend on it; VK_EXT_descriptor_heap is intended as a full replacement for that extension in newer hardware.",{"type":1873,"tag":1874,"props":2034,"children":2035},{},[2036,2038,2044],{"type":1878,"value":2037},"Also of note is the excellent blog post by Faith Ekstrand on how implementations handle descriptors that you can find on her blog here: ",{"type":1873,"tag":1921,"props":2039,"children":2042},{"href":2040,"rel":2041},"https://www.gfxstrand.net/faith/blog/2022/08/descriptors-are-hard/",[1925],[2043],{"type":1878,"value":2040},{"type":1878,"value":2045},".\nIn this post, Faith enumerated the various types of implementation as \"Direct\", \"Heaps\", \"Buffers\" or \"Fixed HW bindings\".\nThis proposal aims to be portable across \"Direct\", \"Heap\", and \"Buffer\" implementations - leaving fixed hardware bindings behind.\nThere are several other bits of information in this post that have been used to inform the proposal here.",{"type":1873,"tag":1880,"props":2047,"children":2049},{"id":2048},"_proposal",[2050],{"type":1878,"value":2051},"Proposal",{"type":1873,"tag":1874,"props":2053,"children":2054},{},[2055],{"type":1878,"value":2056},"This proposal assumes, but does not require, an understanding of true; it is recommended that you read the background information in its proposal document before reading this.",{"type":1873,"tag":1874,"props":2058,"children":2059},{},[2060,2062,2068,2070,2076],{"type":1878,"value":2061},"This extension requires ",{"type":1873,"tag":1921,"props":2063,"children":2066},{"href":2064,"rel":2065},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_KHR_buffer_device_address",[1925],[2067],{"type":1878,"value":450},{"type":1878,"value":2069}," or Vulkan 1.2, and ",{"type":1873,"tag":1921,"props":2071,"children":2074},{"href":2072,"rel":2073},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_KHR_shader_untyped_pointers",[1925],[2075],{"type":1878,"value":1381},{"type":1878,"value":2077},".",{"type":1873,"tag":2079,"props":2080,"children":2082},"h3",{"id":2081},"_overview",[2083],{"type":1878,"value":2084},"Overview",{"type":1873,"tag":1874,"props":2086,"children":2087},{},[2088,2090,2096,2098,2104,2106,2111],{"type":1878,"value":2089},"This extension provides applications with the ability to ",{"type":1873,"tag":1921,"props":2091,"children":2093},{"href":2092},"/404#_getting_descriptors",[2094],{"type":1878,"value":2095},"get binary data representing shader resources from the implementation",{"type":1878,"value":2097},", and to put those binaries into specifically allocated regions of memory for use as a ",{"type":1873,"tag":1921,"props":2099,"children":2101},{"href":2100},"/404#_descriptor_heaps",[2102],{"type":1878,"value":2103},"_descriptor_heaps",{"type":1878,"value":2105},".\nThere are two distinct heaps - the sampler heap for samplers, and the resource heap for other resources.\nApplications can ",{"type":1873,"tag":1921,"props":2107,"children":2108},{"href":2100},[2109],{"type":1878,"value":2110},"bind addresses from buffers",{"type":1878,"value":2112}," allocated for descriptor heap usage to a command buffer during recording, for use with any dispatch or draw commands that execute shaders.",{"type":1873,"tag":1874,"props":2114,"children":2115},{},[2116,2118,2124,2126,2132],{"type":1878,"value":2117},"Heaps can be accessed directly as arrays of data in the shader, and this is intended to be used to implement ",{"type":1873,"tag":1921,"props":2119,"children":2121},{"href":2120},"/404#_hlsl_mapping",[2122],{"type":1878,"value":2123},"Shader Model 6.6 Resource Heaps in HLSL",{"type":1878,"value":2125},".\nFor shaders that access descriptors using static bindings (either DX12-style or Vulkan descriptor set bindings), ",{"type":1873,"tag":1921,"props":2127,"children":2129},{"href":2128},"/404#SetAndBindingDecorations",[2130],{"type":1878,"value":2131},"mappings are provided",{"type":1878,"value":2133}," that enable set and binding decorations to be mapped to offsets in the descriptor heap.\nBoth of these access methods can be used simultaneously in the same shaders.",{"type":1873,"tag":1874,"props":2135,"children":2136},{},[2137],{"type":1878,"value":2138},"This extension includes a new push interface for data, replacing both push constants and push descriptors.\nThe push data interface is a set amount of data (at least 256 bytes) that can be used to pass data to a shader.\nAll user pushed data goes through this interface, which includes both constants and data used for mapping resources with static bindings.\nPush descriptors, for example, are supported by putting indices in push data, while having the real descriptor in the bound heap; the mapping API can then be used to have this appear as any other statically bound shader resource.",{"type":1873,"tag":2079,"props":2140,"children":2142},{"id":2141},"_getting_descriptors",[2143],{"type":1878,"value":2144},"Getting Descriptors",{"type":1873,"tag":1874,"props":2146,"children":2147},{},[2148],{"type":1878,"value":2149},"The following APIs are provided for obtaining descriptors:",{"type":1873,"tag":2151,"props":2152,"children":2157},"pre",{"className":2153,"code":2154,"language":2155,"meta":2156,"style":2156},"language-c shiki shiki-themes github-light-default github-dark-default","typedef struct VkHostAddressRangeEXT {\n void* address;\n size_t size;\n} VkHostAddressRangeEXT;\n\ntypedef struct VkHostAddressRangeConstEXT {\n const void* address;\n size_t size;\n} VkHostAddressRangeConstEXT;\n\ntypedef struct VkDeviceAddressRangeEXT {\n VkDeviceAddress address;\n VkDeviceSize size;\n} VkDeviceAddressRangeEXT;\n\ntypedef struct VkTexelBufferDescriptorInfoEXT {\n VkStructureType sType;\n const void* pNext;\n VkFormat format;\n VkDeviceAddressRangeEXT addressRange;\n} VkTexelBufferDescriptorInfoEXT;\n\ntypedef struct VkImageDescriptorInfoEXT {\n VkStructureType sType;\n const void* pNext;\n const VkImageViewCreateInfo* pView;\n VkImageLayout layout;\n} VkImageDescriptorInfoEXT;\n\ntypedef union VkResourceDescriptorDataEXT {\n const VkImageDescriptorInfoEXT* pImage;\n const VkTexelBufferDescriptorInfoEXT* pTexelBuffer;\n const VkDeviceAddressRangeEXT* pAddressRange;\n const VkTensorViewCreateInfoARM* pTensorARM;\n} VkResourceDescriptorDataEXT;\n\ntypedef struct VkResourceDescriptorInfoEXT {\n VkStructureType sType;\n const void* pNext;\n VkDescriptorType type;\n VkResourceDescriptorDataEXT data;\n} VkResourceDescriptorInfoEXT;\n\nVkResult vkWriteSamplerDescriptorsEXT(\n VkDevice device,\n uint32_t samplerCount,\n const VkSamplerCreateInfo* pSamplers,\n const VkHostAddressRangeEXT* pDescriptors);\n\nVkResult vkWriteResourceDescriptorsEXT(\n VkDevice device,\n uint32_t resourceCount,\n const VkResourceDescriptorInfoEXT* pResources,\n const VkHostAddressRangeEXT* pDescriptors);\n","c","",[2158],{"type":1873,"tag":2159,"props":2160,"children":2161},"code",{"__ignoreMap":2156},[2162,2184,2197,2210,2218,2226,2242,2260,2271,2279,2286,2302,2310,2318,2326,2333,2349,2357,2373,2381,2389,2397,2404,2420,2427,2442,2464,2472,2480,2487,2504,2525,2546,2567,2588,2596,2603,2619,2626,2641,2649,2657,2665,2672,2691,2709,2726,2751,2777,2784,2800,2815,2831,2856],{"type":1873,"tag":2163,"props":2164,"children":2166},"span",{"class":2165,"line":10},"line",[2167,2173,2178],{"type":1873,"tag":2163,"props":2168,"children":2170},{"style":2169},"--shiki-default:#CF222E;--shiki-dark:#FF7B72",[2171],{"type":1878,"value":2172},"typedef",{"type":1873,"tag":2163,"props":2174,"children":2175},{"style":2169},[2176],{"type":1878,"value":2177}," struct",{"type":1873,"tag":2163,"props":2179,"children":2181},{"style":2180},"--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[2182],{"type":1878,"value":2183}," VkHostAddressRangeEXT {\n",{"type":1873,"tag":2163,"props":2185,"children":2186},{"class":2165,"line":14},[2187,2192],{"type":1873,"tag":2163,"props":2188,"children":2189},{"style":2169},[2190],{"type":1878,"value":2191}," void*",{"type":1873,"tag":2163,"props":2193,"children":2194},{"style":2180},[2195],{"type":1878,"value":2196}," address;\n",{"type":1873,"tag":2163,"props":2198,"children":2199},{"class":2165,"line":18},[2200,2205],{"type":1873,"tag":2163,"props":2201,"children":2202},{"style":2169},[2203],{"type":1878,"value":2204}," size_t",{"type":1873,"tag":2163,"props":2206,"children":2207},{"style":2180},[2208],{"type":1878,"value":2209}," size;\n",{"type":1873,"tag":2163,"props":2211,"children":2212},{"class":2165,"line":22},[2213],{"type":1873,"tag":2163,"props":2214,"children":2215},{"style":2180},[2216],{"type":1878,"value":2217},"} VkHostAddressRangeEXT;\n",{"type":1873,"tag":2163,"props":2219,"children":2220},{"class":2165,"line":26},[2221],{"type":1873,"tag":2163,"props":2222,"children":2223},{"emptyLinePlaceholder":232},[2224],{"type":1878,"value":2225},"\n",{"type":1873,"tag":2163,"props":2227,"children":2228},{"class":2165,"line":30},[2229,2233,2237],{"type":1873,"tag":2163,"props":2230,"children":2231},{"style":2169},[2232],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":2234,"children":2235},{"style":2169},[2236],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":2238,"children":2239},{"style":2180},[2240],{"type":1878,"value":2241}," VkHostAddressRangeConstEXT {\n",{"type":1873,"tag":2163,"props":2243,"children":2244},{"class":2165,"line":34},[2245,2250,2255],{"type":1873,"tag":2163,"props":2246,"children":2247},{"style":2169},[2248],{"type":1878,"value":2249}," const",{"type":1873,"tag":2163,"props":2251,"children":2252},{"style":2169},[2253],{"type":1878,"value":2254}," void*",{"type":1873,"tag":2163,"props":2256,"children":2257},{"style":2180},[2258],{"type":1878,"value":2259}," address;\n",{"type":1873,"tag":2163,"props":2261,"children":2262},{"class":2165,"line":38},[2263,2267],{"type":1873,"tag":2163,"props":2264,"children":2265},{"style":2169},[2266],{"type":1878,"value":2204},{"type":1873,"tag":2163,"props":2268,"children":2269},{"style":2180},[2270],{"type":1878,"value":2209},{"type":1873,"tag":2163,"props":2272,"children":2273},{"class":2165,"line":42},[2274],{"type":1873,"tag":2163,"props":2275,"children":2276},{"style":2180},[2277],{"type":1878,"value":2278},"} VkHostAddressRangeConstEXT;\n",{"type":1873,"tag":2163,"props":2280,"children":2281},{"class":2165,"line":46},[2282],{"type":1873,"tag":2163,"props":2283,"children":2284},{"emptyLinePlaceholder":232},[2285],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":2287,"children":2288},{"class":2165,"line":50},[2289,2293,2297],{"type":1873,"tag":2163,"props":2290,"children":2291},{"style":2169},[2292],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":2294,"children":2295},{"style":2169},[2296],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":2298,"children":2299},{"style":2180},[2300],{"type":1878,"value":2301}," VkDeviceAddressRangeEXT {\n",{"type":1873,"tag":2163,"props":2303,"children":2304},{"class":2165,"line":54},[2305],{"type":1873,"tag":2163,"props":2306,"children":2307},{"style":2180},[2308],{"type":1878,"value":2309}," VkDeviceAddress address;\n",{"type":1873,"tag":2163,"props":2311,"children":2312},{"class":2165,"line":58},[2313],{"type":1873,"tag":2163,"props":2314,"children":2315},{"style":2180},[2316],{"type":1878,"value":2317}," VkDeviceSize size;\n",{"type":1873,"tag":2163,"props":2319,"children":2320},{"class":2165,"line":62},[2321],{"type":1873,"tag":2163,"props":2322,"children":2323},{"style":2180},[2324],{"type":1878,"value":2325},"} VkDeviceAddressRangeEXT;\n",{"type":1873,"tag":2163,"props":2327,"children":2328},{"class":2165,"line":66},[2329],{"type":1873,"tag":2163,"props":2330,"children":2331},{"emptyLinePlaceholder":232},[2332],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":2334,"children":2335},{"class":2165,"line":70},[2336,2340,2344],{"type":1873,"tag":2163,"props":2337,"children":2338},{"style":2169},[2339],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":2341,"children":2342},{"style":2169},[2343],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":2345,"children":2346},{"style":2180},[2347],{"type":1878,"value":2348}," VkTexelBufferDescriptorInfoEXT {\n",{"type":1873,"tag":2163,"props":2350,"children":2351},{"class":2165,"line":74},[2352],{"type":1873,"tag":2163,"props":2353,"children":2354},{"style":2180},[2355],{"type":1878,"value":2356}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":2358,"children":2359},{"class":2165,"line":78},[2360,2364,2368],{"type":1873,"tag":2163,"props":2361,"children":2362},{"style":2169},[2363],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2365,"children":2366},{"style":2169},[2367],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":2369,"children":2370},{"style":2180},[2371],{"type":1878,"value":2372}," pNext;\n",{"type":1873,"tag":2163,"props":2374,"children":2375},{"class":2165,"line":82},[2376],{"type":1873,"tag":2163,"props":2377,"children":2378},{"style":2180},[2379],{"type":1878,"value":2380}," VkFormat format;\n",{"type":1873,"tag":2163,"props":2382,"children":2383},{"class":2165,"line":86},[2384],{"type":1873,"tag":2163,"props":2385,"children":2386},{"style":2180},[2387],{"type":1878,"value":2388}," VkDeviceAddressRangeEXT addressRange;\n",{"type":1873,"tag":2163,"props":2390,"children":2391},{"class":2165,"line":90},[2392],{"type":1873,"tag":2163,"props":2393,"children":2394},{"style":2180},[2395],{"type":1878,"value":2396},"} VkTexelBufferDescriptorInfoEXT;\n",{"type":1873,"tag":2163,"props":2398,"children":2399},{"class":2165,"line":94},[2400],{"type":1873,"tag":2163,"props":2401,"children":2402},{"emptyLinePlaceholder":232},[2403],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":2405,"children":2406},{"class":2165,"line":98},[2407,2411,2415],{"type":1873,"tag":2163,"props":2408,"children":2409},{"style":2169},[2410],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":2412,"children":2413},{"style":2169},[2414],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":2416,"children":2417},{"style":2180},[2418],{"type":1878,"value":2419}," VkImageDescriptorInfoEXT {\n",{"type":1873,"tag":2163,"props":2421,"children":2422},{"class":2165,"line":102},[2423],{"type":1873,"tag":2163,"props":2424,"children":2425},{"style":2180},[2426],{"type":1878,"value":2356},{"type":1873,"tag":2163,"props":2428,"children":2429},{"class":2165,"line":106},[2430,2434,2438],{"type":1873,"tag":2163,"props":2431,"children":2432},{"style":2169},[2433],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2435,"children":2436},{"style":2169},[2437],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":2439,"children":2440},{"style":2180},[2441],{"type":1878,"value":2372},{"type":1873,"tag":2163,"props":2443,"children":2444},{"class":2165,"line":110},[2445,2449,2454,2459],{"type":1873,"tag":2163,"props":2446,"children":2447},{"style":2169},[2448],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2450,"children":2451},{"style":2180},[2452],{"type":1878,"value":2453}," VkImageViewCreateInfo",{"type":1873,"tag":2163,"props":2455,"children":2456},{"style":2169},[2457],{"type":1878,"value":2458},"*",{"type":1873,"tag":2163,"props":2460,"children":2461},{"style":2180},[2462],{"type":1878,"value":2463}," pView;\n",{"type":1873,"tag":2163,"props":2465,"children":2466},{"class":2165,"line":114},[2467],{"type":1873,"tag":2163,"props":2468,"children":2469},{"style":2180},[2470],{"type":1878,"value":2471}," VkImageLayout layout;\n",{"type":1873,"tag":2163,"props":2473,"children":2474},{"class":2165,"line":118},[2475],{"type":1873,"tag":2163,"props":2476,"children":2477},{"style":2180},[2478],{"type":1878,"value":2479},"} VkImageDescriptorInfoEXT;\n",{"type":1873,"tag":2163,"props":2481,"children":2482},{"class":2165,"line":122},[2483],{"type":1873,"tag":2163,"props":2484,"children":2485},{"emptyLinePlaceholder":232},[2486],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":2488,"children":2489},{"class":2165,"line":126},[2490,2494,2499],{"type":1873,"tag":2163,"props":2491,"children":2492},{"style":2169},[2493],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":2495,"children":2496},{"style":2169},[2497],{"type":1878,"value":2498}," union",{"type":1873,"tag":2163,"props":2500,"children":2501},{"style":2180},[2502],{"type":1878,"value":2503}," VkResourceDescriptorDataEXT {\n",{"type":1873,"tag":2163,"props":2505,"children":2506},{"class":2165,"line":130},[2507,2511,2516,2520],{"type":1873,"tag":2163,"props":2508,"children":2509},{"style":2169},[2510],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2512,"children":2513},{"style":2180},[2514],{"type":1878,"value":2515}," VkImageDescriptorInfoEXT",{"type":1873,"tag":2163,"props":2517,"children":2518},{"style":2169},[2519],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2521,"children":2522},{"style":2180},[2523],{"type":1878,"value":2524}," pImage;\n",{"type":1873,"tag":2163,"props":2526,"children":2527},{"class":2165,"line":134},[2528,2532,2537,2541],{"type":1873,"tag":2163,"props":2529,"children":2530},{"style":2169},[2531],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2533,"children":2534},{"style":2180},[2535],{"type":1878,"value":2536}," VkTexelBufferDescriptorInfoEXT",{"type":1873,"tag":2163,"props":2538,"children":2539},{"style":2169},[2540],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2542,"children":2543},{"style":2180},[2544],{"type":1878,"value":2545}," pTexelBuffer;\n",{"type":1873,"tag":2163,"props":2547,"children":2548},{"class":2165,"line":138},[2549,2553,2558,2562],{"type":1873,"tag":2163,"props":2550,"children":2551},{"style":2169},[2552],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2554,"children":2555},{"style":2180},[2556],{"type":1878,"value":2557}," VkDeviceAddressRangeEXT",{"type":1873,"tag":2163,"props":2559,"children":2560},{"style":2169},[2561],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2563,"children":2564},{"style":2180},[2565],{"type":1878,"value":2566}," pAddressRange;\n",{"type":1873,"tag":2163,"props":2568,"children":2569},{"class":2165,"line":142},[2570,2574,2579,2583],{"type":1873,"tag":2163,"props":2571,"children":2572},{"style":2169},[2573],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2575,"children":2576},{"style":2180},[2577],{"type":1878,"value":2578}," VkTensorViewCreateInfoARM",{"type":1873,"tag":2163,"props":2580,"children":2581},{"style":2169},[2582],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2584,"children":2585},{"style":2180},[2586],{"type":1878,"value":2587}," pTensorARM;\n",{"type":1873,"tag":2163,"props":2589,"children":2590},{"class":2165,"line":146},[2591],{"type":1873,"tag":2163,"props":2592,"children":2593},{"style":2180},[2594],{"type":1878,"value":2595},"} VkResourceDescriptorDataEXT;\n",{"type":1873,"tag":2163,"props":2597,"children":2598},{"class":2165,"line":150},[2599],{"type":1873,"tag":2163,"props":2600,"children":2601},{"emptyLinePlaceholder":232},[2602],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":2604,"children":2605},{"class":2165,"line":154},[2606,2610,2614],{"type":1873,"tag":2163,"props":2607,"children":2608},{"style":2169},[2609],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":2611,"children":2612},{"style":2169},[2613],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":2615,"children":2616},{"style":2180},[2617],{"type":1878,"value":2618}," VkResourceDescriptorInfoEXT {\n",{"type":1873,"tag":2163,"props":2620,"children":2621},{"class":2165,"line":158},[2622],{"type":1873,"tag":2163,"props":2623,"children":2624},{"style":2180},[2625],{"type":1878,"value":2356},{"type":1873,"tag":2163,"props":2627,"children":2628},{"class":2165,"line":162},[2629,2633,2637],{"type":1873,"tag":2163,"props":2630,"children":2631},{"style":2169},[2632],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2634,"children":2635},{"style":2169},[2636],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":2638,"children":2639},{"style":2180},[2640],{"type":1878,"value":2372},{"type":1873,"tag":2163,"props":2642,"children":2643},{"class":2165,"line":166},[2644],{"type":1873,"tag":2163,"props":2645,"children":2646},{"style":2180},[2647],{"type":1878,"value":2648}," VkDescriptorType type;\n",{"type":1873,"tag":2163,"props":2650,"children":2651},{"class":2165,"line":170},[2652],{"type":1873,"tag":2163,"props":2653,"children":2654},{"style":2180},[2655],{"type":1878,"value":2656}," VkResourceDescriptorDataEXT data;\n",{"type":1873,"tag":2163,"props":2658,"children":2659},{"class":2165,"line":174},[2660],{"type":1873,"tag":2163,"props":2661,"children":2662},{"style":2180},[2663],{"type":1878,"value":2664},"} VkResourceDescriptorInfoEXT;\n",{"type":1873,"tag":2163,"props":2666,"children":2667},{"class":2165,"line":178},[2668],{"type":1873,"tag":2163,"props":2669,"children":2670},{"emptyLinePlaceholder":232},[2671],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":2673,"children":2674},{"class":2165,"line":182},[2675,2680,2686],{"type":1873,"tag":2163,"props":2676,"children":2677},{"style":2180},[2678],{"type":1878,"value":2679},"VkResult ",{"type":1873,"tag":2163,"props":2681,"children":2683},{"style":2682},"--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[2684],{"type":1878,"value":2685},"vkWriteSamplerDescriptorsEXT",{"type":1873,"tag":2163,"props":2687,"children":2688},{"style":2180},[2689],{"type":1878,"value":2690},"(\n",{"type":1873,"tag":2163,"props":2692,"children":2693},{"class":2165,"line":186},[2694,2699,2704],{"type":1873,"tag":2163,"props":2695,"children":2696},{"style":2180},[2697],{"type":1878,"value":2698}," VkDevice ",{"type":1873,"tag":2163,"props":2700,"children":2702},{"style":2701},"--shiki-default:#953800;--shiki-dark:#FFA657",[2703],{"type":1878,"value":266},{"type":1873,"tag":2163,"props":2705,"children":2706},{"style":2180},[2707],{"type":1878,"value":2708},",\n",{"type":1873,"tag":2163,"props":2710,"children":2711},{"class":2165,"line":190},[2712,2717,2722],{"type":1873,"tag":2163,"props":2713,"children":2714},{"style":2169},[2715],{"type":1878,"value":2716}," uint32_t",{"type":1873,"tag":2163,"props":2718,"children":2719},{"style":2701},[2720],{"type":1878,"value":2721}," samplerCount",{"type":1873,"tag":2163,"props":2723,"children":2724},{"style":2180},[2725],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":2727,"children":2728},{"class":2165,"line":194},[2729,2733,2738,2742,2747],{"type":1873,"tag":2163,"props":2730,"children":2731},{"style":2169},[2732],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2734,"children":2735},{"style":2180},[2736],{"type":1878,"value":2737}," VkSamplerCreateInfo",{"type":1873,"tag":2163,"props":2739,"children":2740},{"style":2169},[2741],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2743,"children":2744},{"style":2701},[2745],{"type":1878,"value":2746}," pSamplers",{"type":1873,"tag":2163,"props":2748,"children":2749},{"style":2180},[2750],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":2752,"children":2753},{"class":2165,"line":198},[2754,2758,2763,2767,2772],{"type":1873,"tag":2163,"props":2755,"children":2756},{"style":2169},[2757],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2759,"children":2760},{"style":2180},[2761],{"type":1878,"value":2762}," VkHostAddressRangeEXT",{"type":1873,"tag":2163,"props":2764,"children":2765},{"style":2169},[2766],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2768,"children":2769},{"style":2701},[2770],{"type":1878,"value":2771}," pDescriptors",{"type":1873,"tag":2163,"props":2773,"children":2774},{"style":2180},[2775],{"type":1878,"value":2776},");\n",{"type":1873,"tag":2163,"props":2778,"children":2779},{"class":2165,"line":202},[2780],{"type":1873,"tag":2163,"props":2781,"children":2782},{"emptyLinePlaceholder":232},[2783],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":2785,"children":2786},{"class":2165,"line":206},[2787,2791,2796],{"type":1873,"tag":2163,"props":2788,"children":2789},{"style":2180},[2790],{"type":1878,"value":2679},{"type":1873,"tag":2163,"props":2792,"children":2793},{"style":2682},[2794],{"type":1878,"value":2795},"vkWriteResourceDescriptorsEXT",{"type":1873,"tag":2163,"props":2797,"children":2798},{"style":2180},[2799],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":2801,"children":2802},{"class":2165,"line":210},[2803,2807,2811],{"type":1873,"tag":2163,"props":2804,"children":2805},{"style":2180},[2806],{"type":1878,"value":2698},{"type":1873,"tag":2163,"props":2808,"children":2809},{"style":2701},[2810],{"type":1878,"value":266},{"type":1873,"tag":2163,"props":2812,"children":2813},{"style":2180},[2814],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":2816,"children":2817},{"class":2165,"line":214},[2818,2822,2827],{"type":1873,"tag":2163,"props":2819,"children":2820},{"style":2169},[2821],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":2823,"children":2824},{"style":2701},[2825],{"type":1878,"value":2826}," resourceCount",{"type":1873,"tag":2163,"props":2828,"children":2829},{"style":2180},[2830],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":2832,"children":2833},{"class":2165,"line":218},[2834,2838,2843,2847,2852],{"type":1873,"tag":2163,"props":2835,"children":2836},{"style":2169},[2837],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2839,"children":2840},{"style":2180},[2841],{"type":1878,"value":2842}," VkResourceDescriptorInfoEXT",{"type":1873,"tag":2163,"props":2844,"children":2845},{"style":2169},[2846],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2848,"children":2849},{"style":2701},[2850],{"type":1878,"value":2851}," pResources",{"type":1873,"tag":2163,"props":2853,"children":2854},{"style":2180},[2855],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":2857,"children":2858},{"class":2165,"line":222},[2859,2863,2867,2871,2875],{"type":1873,"tag":2163,"props":2860,"children":2861},{"style":2169},[2862],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":2864,"children":2865},{"style":2180},[2866],{"type":1878,"value":2762},{"type":1873,"tag":2163,"props":2868,"children":2869},{"style":2169},[2870],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":2872,"children":2873},{"style":2701},[2874],{"type":1878,"value":2771},{"type":1873,"tag":2163,"props":2876,"children":2877},{"style":2180},[2878],{"type":1878,"value":2776},{"type":1873,"tag":1874,"props":2880,"children":2881},{},[2882,2884,2891,2893,2899],{"type":1878,"value":2883},"Unlike ",{"type":1873,"tag":1921,"props":2885,"children":2888},{"href":2886,"rel":2887},"https://docs.vulkan.org/spec/latest/descriptorsets.html#vkGetDescriptorEXT",[1925],[2889],{"type":1878,"value":2890},"vkGetDescriptorEXT",{"type":1878,"value":2892},", multiple descriptors can be written at once, allowing for more rapid execution.\nWhen implementing true, Virtual Machine (VM) implementations noted that this was a high frequency call with immediate return needed; which meant significant latency going through the VM to the native driver for each call and waiting for the result.\nAllowing this operation to be arrayed allows this call traffic to be significantly reduced.\nThe functions are also renamed to ",{"type":1873,"tag":2159,"props":2894,"children":2896},{"className":2895},[],[2897],{"type":1878,"value":2898},"vkWrite*",{"type":1878,"value":2900}," to reflect this change, and the expectation is that applications will write descriptors directly into memory used as a local heap.",{"type":1873,"tag":2025,"props":2902,"children":2903},{},[2904],{"type":1873,"tag":1874,"props":2905,"children":2906},{},[2907],{"type":1878,"value":2908},"Applications should aim to batch calls to write many descriptors at once, as unlike other get commands, the results cannot be easily done asynchronously to hide latency on virtual or remote implementations.",{"type":1873,"tag":1874,"props":2910,"children":2911},{},[2912],{"type":1878,"value":2913},"The other most notable change is that sampler objects and image view objects are no longer required - instead their create information is provided directly.\nThese objects no longer need to be managed, and applications are free to do with descriptor information whatever they want.",{"type":1873,"tag":2915,"props":2916,"children":2918},"anchor",{"id":2917},"valid-descriptor-types",[],{"type":1873,"tag":1874,"props":2920,"children":2921},{},[2922],{"type":1878,"value":2923},"The final glaring difference is that only a subset of descriptor types are supported for each function:",{"type":1873,"tag":1892,"props":2925,"children":2926},{},[2927,2937,3013,3058,3103,3143],{"type":1873,"tag":1896,"props":2928,"children":2929},{},[2930,2932],{"type":1878,"value":2931},"Sampler descriptors can be written with ",{"type":1873,"tag":2159,"props":2933,"children":2935},{"className":2934},[],[2936],{"type":1878,"value":2685},{"type":1873,"tag":1896,"props":2938,"children":2939},{},[2940,2942,2947,2949,2955,2957,2963,2965],{"type":1878,"value":2941},"Image descriptors can be written by ",{"type":1873,"tag":2159,"props":2943,"children":2945},{"className":2944},[],[2946],{"type":1878,"value":2795},{"type":1878,"value":2948}," using ",{"type":1873,"tag":2159,"props":2950,"children":2952},{"className":2951},[],[2953],{"type":1878,"value":2954},"VkResourceDescriptorDataEXT::pImage",{"type":1878,"value":2956},", with ",{"type":1873,"tag":2159,"props":2958,"children":2960},{"className":2959},[],[2961],{"type":1878,"value":2962},"VkResourceDescriptorInfoEXT::type",{"type":1878,"value":2964}," set to:",{"type":1873,"tag":1892,"props":2966,"children":2967},{},[2968,2977,2986,2995,3004],{"type":1873,"tag":1896,"props":2969,"children":2970},{},[2971],{"type":1873,"tag":2159,"props":2972,"children":2974},{"className":2973},[],[2975],{"type":1878,"value":2976},"VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE",{"type":1873,"tag":1896,"props":2978,"children":2979},{},[2980],{"type":1873,"tag":2159,"props":2981,"children":2983},{"className":2982},[],[2984],{"type":1878,"value":2985},"VK_DESCRIPTOR_TYPE_STORAGE_IMAGE",{"type":1873,"tag":1896,"props":2987,"children":2988},{},[2989],{"type":1873,"tag":2159,"props":2990,"children":2992},{"className":2991},[],[2993],{"type":1878,"value":2994},"VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT",{"type":1873,"tag":1896,"props":2996,"children":2997},{},[2998],{"type":1873,"tag":2159,"props":2999,"children":3001},{"className":3000},[],[3002],{"type":1878,"value":3003},"VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM",{"type":1873,"tag":1896,"props":3005,"children":3006},{},[3007],{"type":1873,"tag":2159,"props":3008,"children":3010},{"className":3009},[],[3011],{"type":1878,"value":3012},"VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM",{"type":1873,"tag":1896,"props":3014,"children":3015},{},[3016,3018,3023,3024,3030,3031,3036,3037],{"type":1878,"value":3017},"Texel buffer descriptors can be written by ",{"type":1873,"tag":2159,"props":3019,"children":3021},{"className":3020},[],[3022],{"type":1878,"value":2795},{"type":1878,"value":2948},{"type":1873,"tag":2159,"props":3025,"children":3027},{"className":3026},[],[3028],{"type":1878,"value":3029},"VkResourceDescriptorDataEXT::pTexelBuffer",{"type":1878,"value":2956},{"type":1873,"tag":2159,"props":3032,"children":3034},{"className":3033},[],[3035],{"type":1878,"value":2962},{"type":1878,"value":2964},{"type":1873,"tag":1892,"props":3038,"children":3039},{},[3040,3049],{"type":1873,"tag":1896,"props":3041,"children":3042},{},[3043],{"type":1873,"tag":2159,"props":3044,"children":3046},{"className":3045},[],[3047],{"type":1878,"value":3048},"VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER",{"type":1873,"tag":1896,"props":3050,"children":3051},{},[3052],{"type":1873,"tag":2159,"props":3053,"children":3055},{"className":3054},[],[3056],{"type":1878,"value":3057},"VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER",{"type":1873,"tag":1896,"props":3059,"children":3060},{},[3061,3063,3068,3069,3075,3076,3081,3082],{"type":1878,"value":3062},"Unformatted buffer descriptors can be written by ",{"type":1873,"tag":2159,"props":3064,"children":3066},{"className":3065},[],[3067],{"type":1878,"value":2795},{"type":1878,"value":2948},{"type":1873,"tag":2159,"props":3070,"children":3072},{"className":3071},[],[3073],{"type":1878,"value":3074},"VkResourceDescriptorDataEXT::pAddressRange",{"type":1878,"value":2956},{"type":1873,"tag":2159,"props":3077,"children":3079},{"className":3078},[],[3080],{"type":1878,"value":2962},{"type":1878,"value":2964},{"type":1873,"tag":1892,"props":3083,"children":3084},{},[3085,3094],{"type":1873,"tag":1896,"props":3086,"children":3087},{},[3088],{"type":1873,"tag":2159,"props":3089,"children":3091},{"className":3090},[],[3092],{"type":1878,"value":3093},"VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER",{"type":1873,"tag":1896,"props":3095,"children":3096},{},[3097],{"type":1873,"tag":2159,"props":3098,"children":3100},{"className":3099},[],[3101],{"type":1878,"value":3102},"VK_DESCRIPTOR_TYPE_STORAGE_BUFFER",{"type":1873,"tag":1896,"props":3104,"children":3105},{},[3106,3108,3113,3114,3119,3120,3125,3126],{"type":1878,"value":3107},"Acceleration structure descriptors can be written by ",{"type":1873,"tag":2159,"props":3109,"children":3111},{"className":3110},[],[3112],{"type":1878,"value":2795},{"type":1878,"value":2948},{"type":1873,"tag":2159,"props":3115,"children":3117},{"className":3116},[],[3118],{"type":1878,"value":3074},{"type":1878,"value":2956},{"type":1873,"tag":2159,"props":3121,"children":3123},{"className":3122},[],[3124],{"type":1878,"value":2962},{"type":1878,"value":2964},{"type":1873,"tag":1892,"props":3127,"children":3128},{},[3129,3138],{"type":1873,"tag":1896,"props":3130,"children":3131},{},[3132],{"type":1873,"tag":2159,"props":3133,"children":3135},{"className":3134},[],[3136],{"type":1878,"value":3137},"VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR",{"type":1873,"tag":1896,"props":3139,"children":3140},{},[3141],{"type":1878,"value":3142},"NOTE: While the device address range must be valid, the size of the range does not affect the resulting acceleration structure, and can be 0; if a non-zero range is provided, it will be validated, which can be useful for catching unintended errors.",{"type":1873,"tag":1896,"props":3144,"children":3145},{},[3146,3148,3153,3154,3160,3161,3166,3167],{"type":1878,"value":3147},"Tensor descriptors can be written by ",{"type":1873,"tag":2159,"props":3149,"children":3151},{"className":3150},[],[3152],{"type":1878,"value":2795},{"type":1878,"value":2948},{"type":1873,"tag":2159,"props":3155,"children":3157},{"className":3156},[],[3158],{"type":1878,"value":3159},"VkResourceDescriptorDataEXT::pTensorARM",{"type":1878,"value":2956},{"type":1873,"tag":2159,"props":3162,"children":3164},{"className":3163},[],[3165],{"type":1878,"value":2962},{"type":1878,"value":2964},{"type":1873,"tag":1892,"props":3168,"children":3169},{},[3170],{"type":1873,"tag":1896,"props":3171,"children":3172},{},[3173],{"type":1873,"tag":2159,"props":3174,"children":3176},{"className":3175},[],[3177],{"type":1878,"value":3178},"VK_DESCRIPTOR_TYPE_TENSOR_ARM",{"type":1873,"tag":1874,"props":3180,"children":3181},{},[3182,3184,3190,3192,3198,3200,3206],{"type":1878,"value":3183},"As sampler and resource heaps are separated, there is no way to create a combined image and sampler descriptor in this API; however, ",{"type":1873,"tag":1921,"props":3185,"children":3187},{"href":3186},"/404#DescriptorSet%20and%20Binding%20Decorations",[3188],{"type":1878,"value":3189},"mappings for combined shader declarations are available",{"type":1878,"value":3191},".\nCombined image samplers cannot be declared as part of a shader’s interface without ",{"type":1873,"tag":2159,"props":3193,"children":3195},{"className":3194},[],[3196],{"type":1878,"value":3197},"DescriptorSet",{"type":1878,"value":3199}," and ",{"type":1873,"tag":2159,"props":3201,"children":3203},{"className":3202},[],[3204],{"type":1878,"value":3205},"Binding",{"type":1878,"value":3207}," decorations.",{"type":1873,"tag":1874,"props":3209,"children":3210},{},[3211],{"type":1878,"value":3212},"Writing a descriptor via these functions results in a descriptor that functions identically to descriptors managed by other descriptor management functions using an object created with the create info structure.\nHowever, the actual bit values and size of a descriptor written with this extension may differ from those obtained by true.",{"type":1873,"tag":1874,"props":3214,"children":3215},{},[3216,3218,3224,3226,3232],{"type":1878,"value":3217},"Each descriptor is written to the memory at ",{"type":1873,"tag":2159,"props":3219,"children":3221},{"className":3220},[],[3222],{"type":1878,"value":3223},"pDescriptors[i].address",{"type":1878,"value":3225},".\n",{"type":1873,"tag":2159,"props":3227,"children":3229},{"className":3228},[],[3230],{"type":1878,"value":3231},"pDescriptors[i].size",{"type":1878,"value":3233}," must be greater than or equal to the size of the descriptor being written.",{"type":1873,"tag":1874,"props":3235,"children":3236},{},[3237,3239,3245,3247,3253],{"type":1878,"value":3238},"Descriptors created from a fully identical ",{"type":1873,"tag":2159,"props":3240,"children":3242},{"className":3241},[],[3243],{"type":1878,"value":3244},"Vk*DescriptorInfoEXT",{"type":1878,"value":3246}," structure on the same ",{"type":1873,"tag":2159,"props":3248,"children":3250},{"className":3249},[],[3251],{"type":1878,"value":3252},"VkDevice",{"type":1878,"value":3254}," will always return the same bit pattern.",{"type":1873,"tag":3256,"props":3257,"children":3259},"h4",{"id":3258},"_ycbcr_images_and_samplers",[3260,3262,3268,3270,3275],{"type":1878,"value":3261},"YC",{"type":1873,"tag":3263,"props":3264,"children":3265},"sub",{},[3266],{"type":1878,"value":3267},"B",{"type":1878,"value":3269},"C",{"type":1873,"tag":3263,"props":3271,"children":3272},{},[3273],{"type":1878,"value":3274},"R",{"type":1878,"value":3276}," Images and Samplers",{"type":1873,"tag":1874,"props":3278,"children":3279},{},[3280,3282,3286,3287,3291],{"type":1878,"value":3281},"When writing image descriptors for formats that can be used with YC",{"type":1873,"tag":3263,"props":3283,"children":3284},{},[3285],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":3288,"children":3289},{},[3290],{"type":1878,"value":3274},{"type":1878,"value":3292}," conversion, additional constraints apply to writing those descriptors to accommodate the fact that each such resource may require multiple descriptors.",{"type":1873,"tag":1874,"props":3294,"children":3295},{},[3296,3298,3303,3305,3311,3313,3319,3321,3326,3327,3333,3335,3341,3343,3349,3351,3357,3359,3365,3367,3374],{"type":1878,"value":3297},"For ",{"type":1873,"tag":2159,"props":3299,"children":3301},{"className":3300},[],[3302],{"type":1878,"value":2795},{"type":1878,"value":3304},", if ",{"type":1873,"tag":2159,"props":3306,"children":3308},{"className":3307},[],[3309],{"type":1878,"value":3310},"pResources[i]",{"type":1878,"value":3312}," has a ",{"type":1873,"tag":2159,"props":3314,"children":3316},{"className":3315},[],[3317],{"type":1878,"value":3318},"type",{"type":1878,"value":3320}," of ",{"type":1873,"tag":2159,"props":3322,"children":3324},{"className":3323},[],[3325],{"type":1878,"value":2976},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":3328,"children":3330},{"className":3329},[],[3331],{"type":1878,"value":3332},"VkSamplerYcbcrConversionInfo",{"type":1878,"value":3334}," is included in the ",{"type":1873,"tag":2159,"props":3336,"children":3338},{"className":3337},[],[3339],{"type":1878,"value":3340},"pNext",{"type":1878,"value":3342}," chain of ",{"type":1873,"tag":2159,"props":3344,"children":3346},{"className":3345},[],[3347],{"type":1878,"value":3348},"data.pImage→pView",{"type":1878,"value":3350},", ",{"type":1873,"tag":2159,"props":3352,"children":3354},{"className":3353},[],[3355],{"type":1878,"value":3356},"pDescriptors[i]→size",{"type":1878,"value":3358}," must be greater than or equal to the size of ",{"type":1873,"tag":2159,"props":3360,"children":3362},{"className":3361},[],[3363],{"type":1878,"value":3364},"imageDescriptorSize",{"type":1878,"value":3366}," multiplied by the value of ",{"type":1873,"tag":1921,"props":3368,"children":3371},{"href":3369,"rel":3370},"https://docs.vulkan.org/spec/latest/capabilities.html#VkSamplerYcbcrConversionImageFormatProperties",[1925],[3372],{"type":1878,"value":3373},"VkSamplerYcbcrConversionImageFormatProperties::combinedImageSamplerDescriptorCount",{"type":1878,"value":3375}," for the format of that image.",{"type":1873,"tag":1874,"props":3377,"children":3378},{},[3379,3380,3384,3385,3389,3391,3396],{"type":1878,"value":3261},{"type":1873,"tag":3263,"props":3381,"children":3382},{},[3383],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":3386,"children":3387},{},[3388],{"type":1878,"value":3274},{"type":1878,"value":3390}," samplers cannot be written by ",{"type":1873,"tag":2159,"props":3392,"children":3394},{"className":3393},[],[3395],{"type":1878,"value":2685},{"type":1878,"value":3397},", and instead must be embedded using the mapping APIs.",{"type":1873,"tag":3256,"props":3399,"children":3401},{"id":3400},"_fragment_density_maps_and_subsampled_images_and_samplers",[3402],{"type":1878,"value":3403},"Fragment Density Maps and Subsampled Images and Samplers",{"type":1873,"tag":1874,"props":3405,"children":3406},{},[3407,3409,3415,3417,3423],{"type":1878,"value":3408},"Render passes using fragment density maps may require that the color attachment images are in a subsampled format, specified by setting the ",{"type":1873,"tag":2159,"props":3410,"children":3412},{"className":3411},[],[3413],{"type":1878,"value":3414},"VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT",{"type":1878,"value":3416}," bit in ",{"type":1873,"tag":2159,"props":3418,"children":3420},{"className":3419},[],[3421],{"type":1878,"value":3422},"VkImageCreateInfo::flags",{"type":1878,"value":3424},".\nWhen writing image descriptors for such subsampled images, additional constraints apply to writing those descriptors to accommodate the fact that each such resource may require multiple descriptors.",{"type":1873,"tag":1874,"props":3426,"children":3427},{},[3428,3429,3434,3435,3441,3442,3447,3449,3455,3457,3462,3463,3468,3470,3475,3477,3482],{"type":1878,"value":3297},{"type":1873,"tag":2159,"props":3430,"children":3432},{"className":3431},[],[3433],{"type":1878,"value":2795},{"type":1878,"value":3350},{"type":1873,"tag":2159,"props":3436,"children":3438},{"className":3437},[],[3439],{"type":1878,"value":3440},"pDescriptors→size",{"type":1878,"value":3358},{"type":1873,"tag":2159,"props":3443,"children":3445},{"className":3444},[],[3446],{"type":1878,"value":3364},{"type":1878,"value":3448}," multiplied by the largest value of VkSubsampledImageFormatPropertiesEXT::subsampledImageDescriptorCount for the format of any element of ",{"type":1873,"tag":2159,"props":3450,"children":3452},{"className":3451},[],[3453],{"type":1878,"value":3454},"pImages",{"type":1878,"value":3456}," which has a ",{"type":1873,"tag":2159,"props":3458,"children":3460},{"className":3459},[],[3461],{"type":1878,"value":3318},{"type":1878,"value":3320},{"type":1873,"tag":2159,"props":3464,"children":3466},{"className":3465},[],[3467],{"type":1878,"value":2976},{"type":1878,"value":3469}," and was created with ",{"type":1873,"tag":2159,"props":3471,"children":3473},{"className":3472},[],[3474],{"type":1878,"value":3414},{"type":1878,"value":3476}," in ",{"type":1873,"tag":2159,"props":3478,"children":3480},{"className":3479},[],[3481],{"type":1878,"value":3422},{"type":1878,"value":2077},{"type":1873,"tag":1874,"props":3484,"children":3485},{},[3486,3488,3494,3495,3501],{"type":1878,"value":3487},"Subsampled images can only be sampled by subsampled samplers, specified by setting the ",{"type":1873,"tag":2159,"props":3489,"children":3491},{"className":3490},[],[3492],{"type":1878,"value":3493},"VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT",{"type":1878,"value":3416},{"type":1873,"tag":2159,"props":3496,"children":3498},{"className":3497},[],[3499],{"type":1878,"value":3500},"VkSamplerCreateInfo::flags",{"type":1878,"value":2077},{"type":1873,"tag":1874,"props":3503,"children":3504},{},[3505,3507,3512],{"type":1878,"value":3506},"Subsampled samplers cannot be written by ",{"type":1873,"tag":2159,"props":3508,"children":3510},{"className":3509},[],[3511],{"type":1878,"value":2685},{"type":1878,"value":3397},{"type":1873,"tag":2079,"props":3514,"children":3515},{"id":2103},[3516],{"type":1878,"value":67},{"type":1873,"tag":1874,"props":3518,"children":3519},{},[3520],{"type":1878,"value":3521},"Descriptors are sourced from heaps, which can be set with the following commands:",{"type":1873,"tag":2151,"props":3523,"children":3525},{"className":2153,"code":3524,"language":2155,"meta":2156,"style":2156},"typedef struct VkBindHeapInfoEXT {\n VkStructureType sType;\n const void* pNext;\n VkDeviceAddressRangeEXT heapRange;\n VkDeviceSize reservedRangeOffset;\n VkDeviceSize reservedRangeSize;\n} VkBindHeapInfoEXT;\n\nvoid vkCmdBindSamplerHeapEXT(\n VkCommandBuffer commandBuffer,\n const VkBindHeapInfoEXT* pBindInfo);\n\nvoid vkCmdBindResourceHeapEXT(\n VkCommandBuffer commandBuffer,\n const VkBindHeapInfoEXT* pBindInfo);\n",[3526],{"type":1873,"tag":2159,"props":3527,"children":3528},{"__ignoreMap":2156},[3529,3545,3552,3567,3575,3583,3591,3599,3606,3623,3640,3665,3672,3688,3703],{"type":1873,"tag":2163,"props":3530,"children":3531},{"class":2165,"line":10},[3532,3536,3540],{"type":1873,"tag":2163,"props":3533,"children":3534},{"style":2169},[3535],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":3537,"children":3538},{"style":2169},[3539],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":3541,"children":3542},{"style":2180},[3543],{"type":1878,"value":3544}," VkBindHeapInfoEXT {\n",{"type":1873,"tag":2163,"props":3546,"children":3547},{"class":2165,"line":14},[3548],{"type":1873,"tag":2163,"props":3549,"children":3550},{"style":2180},[3551],{"type":1878,"value":2356},{"type":1873,"tag":2163,"props":3553,"children":3554},{"class":2165,"line":18},[3555,3559,3563],{"type":1873,"tag":2163,"props":3556,"children":3557},{"style":2169},[3558],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":3560,"children":3561},{"style":2169},[3562],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":3564,"children":3565},{"style":2180},[3566],{"type":1878,"value":2372},{"type":1873,"tag":2163,"props":3568,"children":3569},{"class":2165,"line":22},[3570],{"type":1873,"tag":2163,"props":3571,"children":3572},{"style":2180},[3573],{"type":1878,"value":3574}," VkDeviceAddressRangeEXT heapRange;\n",{"type":1873,"tag":2163,"props":3576,"children":3577},{"class":2165,"line":26},[3578],{"type":1873,"tag":2163,"props":3579,"children":3580},{"style":2180},[3581],{"type":1878,"value":3582}," VkDeviceSize reservedRangeOffset;\n",{"type":1873,"tag":2163,"props":3584,"children":3585},{"class":2165,"line":30},[3586],{"type":1873,"tag":2163,"props":3587,"children":3588},{"style":2180},[3589],{"type":1878,"value":3590}," VkDeviceSize reservedRangeSize;\n",{"type":1873,"tag":2163,"props":3592,"children":3593},{"class":2165,"line":34},[3594],{"type":1873,"tag":2163,"props":3595,"children":3596},{"style":2180},[3597],{"type":1878,"value":3598},"} VkBindHeapInfoEXT;\n",{"type":1873,"tag":2163,"props":3600,"children":3601},{"class":2165,"line":38},[3602],{"type":1873,"tag":2163,"props":3603,"children":3604},{"emptyLinePlaceholder":232},[3605],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":3607,"children":3608},{"class":2165,"line":42},[3609,3614,3619],{"type":1873,"tag":2163,"props":3610,"children":3611},{"style":2169},[3612],{"type":1878,"value":3613},"void",{"type":1873,"tag":2163,"props":3615,"children":3616},{"style":2682},[3617],{"type":1878,"value":3618}," vkCmdBindSamplerHeapEXT",{"type":1873,"tag":2163,"props":3620,"children":3621},{"style":2180},[3622],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":3624,"children":3625},{"class":2165,"line":46},[3626,3631,3636],{"type":1873,"tag":2163,"props":3627,"children":3628},{"style":2180},[3629],{"type":1878,"value":3630}," VkCommandBuffer ",{"type":1873,"tag":2163,"props":3632,"children":3633},{"style":2701},[3634],{"type":1878,"value":3635},"commandBuffer",{"type":1873,"tag":2163,"props":3637,"children":3638},{"style":2180},[3639],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":3641,"children":3642},{"class":2165,"line":50},[3643,3647,3652,3656,3661],{"type":1873,"tag":2163,"props":3644,"children":3645},{"style":2169},[3646],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":3648,"children":3649},{"style":2180},[3650],{"type":1878,"value":3651}," VkBindHeapInfoEXT",{"type":1873,"tag":2163,"props":3653,"children":3654},{"style":2169},[3655],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":3657,"children":3658},{"style":2701},[3659],{"type":1878,"value":3660}," pBindInfo",{"type":1873,"tag":2163,"props":3662,"children":3663},{"style":2180},[3664],{"type":1878,"value":2776},{"type":1873,"tag":2163,"props":3666,"children":3667},{"class":2165,"line":54},[3668],{"type":1873,"tag":2163,"props":3669,"children":3670},{"emptyLinePlaceholder":232},[3671],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":3673,"children":3674},{"class":2165,"line":58},[3675,3679,3684],{"type":1873,"tag":2163,"props":3676,"children":3677},{"style":2169},[3678],{"type":1878,"value":3613},{"type":1873,"tag":2163,"props":3680,"children":3681},{"style":2682},[3682],{"type":1878,"value":3683}," vkCmdBindResourceHeapEXT",{"type":1873,"tag":2163,"props":3685,"children":3686},{"style":2180},[3687],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":3689,"children":3690},{"class":2165,"line":62},[3691,3695,3699],{"type":1873,"tag":2163,"props":3692,"children":3693},{"style":2180},[3694],{"type":1878,"value":3630},{"type":1873,"tag":2163,"props":3696,"children":3697},{"style":2701},[3698],{"type":1878,"value":3635},{"type":1873,"tag":2163,"props":3700,"children":3701},{"style":2180},[3702],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":3704,"children":3705},{"class":2165,"line":66},[3706,3710,3714,3718,3722],{"type":1873,"tag":2163,"props":3707,"children":3708},{"style":2169},[3709],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":3711,"children":3712},{"style":2180},[3713],{"type":1878,"value":3651},{"type":1873,"tag":2163,"props":3715,"children":3716},{"style":2169},[3717],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":3719,"children":3720},{"style":2701},[3721],{"type":1878,"value":3660},{"type":1873,"tag":2163,"props":3723,"children":3724},{"style":2180},[3725],{"type":1878,"value":2776},{"type":1873,"tag":1874,"props":3727,"children":3728},{},[3729,3731,3738],{"type":1878,"value":3730},"Rather than having \"generic\" looking descriptor buffers like true, there are explicitly two heaps - one for samplers, and one for other resources.\nThis approach makes code written against this extension more readily portable, as no querying is involved to figure this out.\nIf any applications want descriptor access from generic buffers, the portable method for doing so is to store indices in those generic buffers, leaving real descriptors in the heaps and doing an indirection (e.g. similar to ",{"type":1873,"tag":1921,"props":3732,"children":3735},{"href":3733,"rel":3734},"https://blog.traverseresearch.nl/bindless-rendering-setup-afeb678d77fc",[1925],[3736],{"type":1878,"value":3737},"Traverse’s bindless resource scheme",{"type":1878,"value":3739},").",{"type":1873,"tag":2025,"props":3741,"children":3742},{},[3743],{"type":1873,"tag":1874,"props":3744,"children":3745},{},[3746,3748,3755],{"type":1878,"value":3747},"There may be a high synchronization cost for binding a new heap on some implementations, or switching between heaps and descriptor sets - applications should generally stick to the same heap throughout the lifetime of the application, only swapping to a new heap if absolutely necessary.\nThis mirrors the advice given in true for ",{"type":1873,"tag":1921,"props":3749,"children":3752},{"href":3750,"rel":3751},"https://docs.vulkan.org/spec/latest/descriptorsets.html#vkCmdBindDescriptorBuffersEXT",[1925],[3753],{"type":1878,"value":3754},"vkCmdBindDescriptorBuffersEXT",{"type":1878,"value":3756},", or for heap bindings in DirectX® 12.\nThe implementation is wholly responsible for ensuring this synchronization is performed, including any initialization to the implementation reserved range.",{"type":1873,"tag":1874,"props":3758,"children":3759},{},[3760],{"type":1878,"value":3761},"Use of these commands is mutually exclusive with existing descriptor set or descriptor buffer state.\nCalling these commands will invalidate any and all descriptor set, descriptor buffer, and descriptor offset states.\nSimilarly, setting descriptor set or descriptor buffer state will immediately invalidate all descriptor heaps.\nAll accesses to descriptor heaps from other commands will use the last heap set in the command buffer by these commands.\nIf a heap is not set via one of these commands, its address is undefined.",{"type":1873,"tag":1874,"props":3763,"children":3764},{},[3765,3767,3773],{"type":1878,"value":3766},"Each of these commands takes a single ",{"type":1873,"tag":2159,"props":3768,"children":3770},{"className":3769},[],[3771],{"type":1878,"value":3772},"VkBindHeapInfoEXT",{"type":1878,"value":3774}," structure, which has the following parameters:",{"type":1873,"tag":1892,"props":3776,"children":3777},{},[3778,3789,3807],{"type":1873,"tag":1896,"props":3779,"children":3780},{},[3781,3787],{"type":1873,"tag":2159,"props":3782,"children":3784},{"className":3783},[],[3785],{"type":1878,"value":3786},"heapRange",{"type":1878,"value":3788}," is the total range of memory bound as the respective heap.",{"type":1873,"tag":1896,"props":3790,"children":3791},{},[3792,3798,3800,3805],{"type":1873,"tag":2159,"props":3793,"children":3795},{"className":3794},[],[3796],{"type":1878,"value":3797},"reservedRangeOffset",{"type":1878,"value":3799}," is an offset to the start of a range of bytes from the start of ",{"type":1873,"tag":2159,"props":3801,"children":3803},{"className":3802},[],[3804],{"type":1878,"value":3786},{"type":1878,"value":3806}," reserved for the implementation.",{"type":1873,"tag":1896,"props":3808,"children":3809},{},[3810,3816,3818,3823],{"type":1873,"tag":2159,"props":3811,"children":3813},{"className":3812},[],[3814],{"type":1878,"value":3815},"reservedRangeSize",{"type":1878,"value":3817}," is the size of a range of bytes from ",{"type":1873,"tag":2159,"props":3819,"children":3821},{"className":3820},[],[3822],{"type":1878,"value":3797},{"type":1878,"value":3806},{"type":1873,"tag":1874,"props":3825,"children":3826},{},[3827,3832,3834,3840,3842,3847,3849,3855,3856,3861,3863,3869,3871,3876,3878,3883,3884,3889,3890,3895,3896,3901,3903,3909,3911,3917],{"type":1873,"tag":2159,"props":3828,"children":3830},{"className":3829},[],[3831],{"type":1878,"value":3797},{"type":1878,"value":3833}," must be less than or equal to the ",{"type":1873,"tag":2159,"props":3835,"children":3837},{"className":3836},[],[3838],{"type":1878,"value":3839},"max*HeapSize",{"type":1878,"value":3841}," limit for the type of heap.\n",{"type":1873,"tag":2159,"props":3843,"children":3845},{"className":3844},[],[3846],{"type":1878,"value":3797},{"type":1878,"value":3848}," must be less than or equal to ",{"type":1873,"tag":2159,"props":3850,"children":3852},{"className":3851},[],[3853],{"type":1878,"value":3854},"heapRange.size",{"type":1878,"value":3225},{"type":1873,"tag":2159,"props":3857,"children":3859},{"className":3858},[],[3860],{"type":1878,"value":3815},{"type":1878,"value":3862}," must be greater than or equal to the ",{"type":1873,"tag":2159,"props":3864,"children":3866},{"className":3865},[],[3867],{"type":1878,"value":3868},"*HeapReservedRange",{"type":1878,"value":3870}," limit for the heap.\n",{"type":1873,"tag":2159,"props":3872,"children":3874},{"className":3873},[],[3875],{"type":1878,"value":3854},{"type":1878,"value":3877}," must be greater than or equal to the sum of ",{"type":1873,"tag":2159,"props":3879,"children":3881},{"className":3880},[],[3882],{"type":1878,"value":3797},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":3885,"children":3887},{"className":3886},[],[3888],{"type":1878,"value":3815},{"type":1878,"value":3225},{"type":1873,"tag":2159,"props":3891,"children":3893},{"className":3892},[],[3894],{"type":1878,"value":3854},{"type":1878,"value":3833},{"type":1873,"tag":2159,"props":3897,"children":3899},{"className":3898},[],[3900],{"type":1878,"value":3839},{"type":1878,"value":3902}," limits for the heap.\n",{"type":1873,"tag":2159,"props":3904,"children":3906},{"className":3905},[],[3907],{"type":1878,"value":3908},"heapRange.address",{"type":1878,"value":3910}," must be aligned to the ",{"type":1873,"tag":2159,"props":3912,"children":3914},{"className":3913},[],[3915],{"type":1878,"value":3916},"*HeapAlignment",{"type":1878,"value":3918}," limit for the heap.",{"type":1873,"tag":1874,"props":3920,"children":3921},{},[3922,3924,3929,3931,3936,3938,3944,3946,3953,3955,3961],{"type":1878,"value":3923},"In each heap range, bytes from ",{"type":1873,"tag":2159,"props":3925,"children":3927},{"className":3926},[],[3928],{"type":1878,"value":3797},{"type":1878,"value":3930}," up to ",{"type":1873,"tag":2159,"props":3932,"children":3934},{"className":3933},[],[3935],{"type":1878,"value":3815},{"type":1878,"value":3937}," must be fully backed by physical memory, and must not be accessed or modified by the application once bound.\nFor a sampler heap, if it is going to be used with pipelines or shaders that include embedded samplers, this range must be sized according to ",{"type":1873,"tag":2159,"props":3939,"children":3941},{"className":3940},[],[3942],{"type":1878,"value":3943},"minSamplerHeapReservedRangeWithEmbedded",{"type":1878,"value":3945}," for the sampler heap instead.\nApplications must not modify the memory or memory bindings for any bound reserved range until all command buffers with that bound range are freed or reset.\nThe implementation manages these bytes for internal descriptors needed to ensure correct operation of things like embedded samplers and fixed operations (e.g. ",{"type":1873,"tag":1921,"props":3947,"children":3950},{"href":3948,"rel":3949},"https://docs.vulkan.org/spec/latest/copies.html#vkCmdBlitImage",[1925],[3951],{"type":1878,"value":3952},"vkCmdBlitImage",{"type":1878,"value":3954},").\nApplications may reuse the same range of reserved bytes in multiple command buffers, but must not use a ",{"type":1873,"tag":3956,"props":3957,"children":3958},"em",{},[3959],{"type":1878,"value":3960},"partially",{"type":1878,"value":3962}," overlapping range of reserved bytes in multiple command buffers simultaneously - doing so will result in undefined behavior.\nBinding the sampler and resource heaps to overlapping address ranges is allowed, but the reserved ranges for each heap must not overlap with each other.",{"type":1873,"tag":1874,"props":3964,"children":3965},{},[3966],{"type":1878,"value":3967},"Buffers suitable to be used with these commands must be allocated with the following buffer usage flag:",{"type":1873,"tag":2151,"props":3969,"children":3971},{"className":2153,"code":3970,"language":2155,"meta":2156,"style":2156},"VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT = 0x08000000\n",[3972],{"type":1873,"tag":2159,"props":3973,"children":3974},{"__ignoreMap":2156},[3975],{"type":1873,"tag":2163,"props":3976,"children":3977},{"class":2165,"line":10},[3978,3983,3988,3993],{"type":1873,"tag":2163,"props":3979,"children":3980},{"style":2180},[3981],{"type":1878,"value":3982},"VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT ",{"type":1873,"tag":2163,"props":3984,"children":3985},{"style":2169},[3986],{"type":1878,"value":3987},"=",{"type":1873,"tag":2163,"props":3989,"children":3990},{"style":2169},[3991],{"type":1878,"value":3992}," 0x",{"type":1873,"tag":2163,"props":3994,"children":3996},{"style":3995},"--shiki-default:#0550AE;--shiki-dark:#79C0FF",[3997],{"type":1878,"value":3998},"08000000\n",{"type":1873,"tag":1874,"props":4000,"children":4001},{},[4002,4004,4010],{"type":1878,"value":4003},"This bit must be specified alongside ",{"type":1873,"tag":2159,"props":4005,"children":4007},{"className":4006},[],[4008],{"type":1878,"value":4009},"VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT",{"type":1878,"value":2077},{"type":1873,"tag":1874,"props":4012,"children":4013},{},[4014],{"type":1878,"value":4015},"There is also an equivalent v2 bit:",{"type":1873,"tag":2151,"props":4017,"children":4019},{"className":2153,"code":4018,"language":2155,"meta":2156,"style":2156},"VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT = 0x08000000\n",[4020],{"type":1873,"tag":2159,"props":4021,"children":4022},{"__ignoreMap":2156},[4023],{"type":1873,"tag":2163,"props":4024,"children":4025},{"class":2165,"line":10},[4026,4031,4035,4039],{"type":1873,"tag":2163,"props":4027,"children":4028},{"style":2180},[4029],{"type":1878,"value":4030},"VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT ",{"type":1873,"tag":2163,"props":4032,"children":4033},{"style":2169},[4034],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4036,"children":4037},{"style":2169},[4038],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4040,"children":4041},{"style":3995},[4042],{"type":1878,"value":3998},{"type":1873,"tag":1874,"props":4044,"children":4045},{},[4046,4048,4054,4055,4061],{"type":1878,"value":4047},"Implementations should make sure that the resulting device address for the buffer is aligned to the maximum of ",{"type":1873,"tag":2159,"props":4049,"children":4051},{"className":4050},[],[4052],{"type":1878,"value":4053},"samplerHeapAlignment",{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":4056,"children":4058},{"className":4057},[],[4059],{"type":1878,"value":4060},"resourceHeapAlignment",{"type":1878,"value":2077},{"type":1873,"tag":2079,"props":4063,"children":4065},{"id":4064},"_resource_bindings",[4066],{"type":1878,"value":4067},"Resource Bindings",{"type":1873,"tag":1874,"props":4069,"children":4070},{},[4071],{"type":1878,"value":4072},"To use descriptor heaps with a pipeline, a new flag is added:",{"type":1873,"tag":2151,"props":4074,"children":4076},{"className":2153,"code":4075,"language":2155,"meta":2156,"style":2156},"static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT = 0x1000000000ULL;\n",[4077],{"type":1873,"tag":2159,"props":4078,"children":4079},{"__ignoreMap":2156},[4080],{"type":1873,"tag":2163,"props":4081,"children":4082},{"class":2165,"line":10},[4083,4088,4093,4098,4102,4106,4111,4116],{"type":1873,"tag":2163,"props":4084,"children":4085},{"style":2169},[4086],{"type":1878,"value":4087},"static",{"type":1873,"tag":2163,"props":4089,"children":4090},{"style":2169},[4091],{"type":1878,"value":4092}," const",{"type":1873,"tag":2163,"props":4094,"children":4095},{"style":2180},[4096],{"type":1878,"value":4097}," VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT ",{"type":1873,"tag":2163,"props":4099,"children":4100},{"style":2169},[4101],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4103,"children":4104},{"style":2169},[4105],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4107,"children":4108},{"style":3995},[4109],{"type":1878,"value":4110},"1000000000",{"type":1873,"tag":2163,"props":4112,"children":4113},{"style":2169},[4114],{"type":1878,"value":4115},"ULL",{"type":1873,"tag":2163,"props":4117,"children":4118},{"style":2180},[4119],{"type":1878,"value":4120},";\n",{"type":1873,"tag":1874,"props":4122,"children":4123},{},[4124,4126,4132,4134,4139,4140,4145,4147,4153],{"type":1878,"value":4125},"When a pipeline is created with this flag, the pipeline layout must be ",{"type":1873,"tag":2159,"props":4127,"children":4129},{"className":4128},[],[4130],{"type":1878,"value":4131},"NULL",{"type":1878,"value":4133},", and resources used by its shaders will be sourced from a descriptor heap.\nShaders using heaps can access resources without ",{"type":1873,"tag":2159,"props":4135,"children":4137},{"className":4136},[],[4138],{"type":1878,"value":3205},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":4141,"children":4143},{"className":4142},[],[4144],{"type":1878,"value":3197},{"type":1878,"value":4146}," decorations, instead accessing the heaps directly as memory via new built-in pointers to the base of each heap - see ",{"type":1873,"tag":1921,"props":4148,"children":4150},{"href":4149},"/404#_spir_v_changes",[4151],{"type":1878,"value":4152},"_spir_v_changes",{"type":1878,"value":4154}," for more information.",{"type":1873,"tag":1874,"props":4156,"children":4157},{},[4158,4160,4166],{"type":1878,"value":4159},"When ",{"type":1873,"tag":1921,"props":4161,"children":4164},{"href":4162,"rel":4163},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_shader_object",[1925],[4165],{"type":1878,"value":869},{"type":1878,"value":4167}," is supported, a shader create flag is similarly provided:",{"type":1873,"tag":2151,"props":4169,"children":4171},{"className":2153,"code":4170,"language":2155,"meta":2156,"style":2156},"typedef enum VkShaderCreateFlagBitsEXT {\n ...\n VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT = 0x00000400,\n} VkShaderCreateFlagBitsEXT;\n",[4172],{"type":1873,"tag":2159,"props":4173,"children":4174},{"__ignoreMap":2156},[4175,4192,4200,4225],{"type":1873,"tag":2163,"props":4176,"children":4177},{"class":2165,"line":10},[4178,4182,4187],{"type":1873,"tag":2163,"props":4179,"children":4180},{"style":2169},[4181],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":4183,"children":4184},{"style":2169},[4185],{"type":1878,"value":4186}," enum",{"type":1873,"tag":2163,"props":4188,"children":4189},{"style":2180},[4190],{"type":1878,"value":4191}," VkShaderCreateFlagBitsEXT {\n",{"type":1873,"tag":2163,"props":4193,"children":4194},{"class":2165,"line":14},[4195],{"type":1873,"tag":2163,"props":4196,"children":4197},{"style":2180},[4198],{"type":1878,"value":4199}," ...\n",{"type":1873,"tag":2163,"props":4201,"children":4202},{"class":2165,"line":18},[4203,4208,4212,4216,4221],{"type":1873,"tag":2163,"props":4204,"children":4205},{"style":2180},[4206],{"type":1878,"value":4207}," VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT ",{"type":1873,"tag":2163,"props":4209,"children":4210},{"style":2169},[4211],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4213,"children":4214},{"style":2169},[4215],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4217,"children":4218},{"style":3995},[4219],{"type":1878,"value":4220},"00000400",{"type":1873,"tag":2163,"props":4222,"children":4223},{"style":2180},[4224],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4226,"children":4227},{"class":2165,"line":22},[4228],{"type":1873,"tag":2163,"props":4229,"children":4230},{"style":2180},[4231],{"type":1878,"value":4232},"} VkShaderCreateFlagBitsEXT;\n",{"type":1873,"tag":1874,"props":4234,"children":4235},{},[4236,4238,4243],{"type":1878,"value":4237},"This has the same effect as the pipeline flag - the pipeline layout must be ",{"type":1873,"tag":2159,"props":4239,"children":4241},{"className":4240},[],[4242],{"type":1878,"value":4131},{"type":1878,"value":4244}," and shader resources will be sourced from a descriptor heap.",{"type":1873,"tag":3256,"props":4246,"children":4248},{"id":4247},"_push_constants",[4249],{"type":1878,"value":4250},"Push Constants",{"type":1873,"tag":1874,"props":4252,"children":4253},{},[4254],{"type":1878,"value":4255},"Push constants can also now be used \"bindlessly\" via a new function:",{"type":1873,"tag":2151,"props":4257,"children":4259},{"className":2153,"code":4258,"language":2155,"meta":2156,"style":2156},"typedef struct VkPushDataInfoEXT {\n VkStructureType sType;\n const void* pNext;\n uint32_t offset;\n VkHostAddressRangeConstEXT data;\n} VkPushDataInfoEXT;\n\nvoid vkCmdPushDataEXT(\n VkCommandBuffer commandBuffer,\n const VkPushDataInfoEXT* pPushDataInfo);\n",[4260],{"type":1873,"tag":2159,"props":4261,"children":4262},{"__ignoreMap":2156},[4263,4279,4287,4303,4315,4323,4331,4338,4354,4370],{"type":1873,"tag":2163,"props":4264,"children":4265},{"class":2165,"line":10},[4266,4270,4274],{"type":1873,"tag":2163,"props":4267,"children":4268},{"style":2169},[4269],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":4271,"children":4272},{"style":2169},[4273],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":4275,"children":4276},{"style":2180},[4277],{"type":1878,"value":4278}," VkPushDataInfoEXT {\n",{"type":1873,"tag":2163,"props":4280,"children":4281},{"class":2165,"line":14},[4282],{"type":1873,"tag":2163,"props":4283,"children":4284},{"style":2180},[4285],{"type":1878,"value":4286}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":4288,"children":4289},{"class":2165,"line":18},[4290,4294,4298],{"type":1873,"tag":2163,"props":4291,"children":4292},{"style":2169},[4293],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":4295,"children":4296},{"style":2169},[4297],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":4299,"children":4300},{"style":2180},[4301],{"type":1878,"value":4302}," pNext;\n",{"type":1873,"tag":2163,"props":4304,"children":4305},{"class":2165,"line":22},[4306,4310],{"type":1873,"tag":2163,"props":4307,"children":4308},{"style":2169},[4309],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":4311,"children":4312},{"style":2180},[4313],{"type":1878,"value":4314}," offset;\n",{"type":1873,"tag":2163,"props":4316,"children":4317},{"class":2165,"line":26},[4318],{"type":1873,"tag":2163,"props":4319,"children":4320},{"style":2180},[4321],{"type":1878,"value":4322}," VkHostAddressRangeConstEXT data;\n",{"type":1873,"tag":2163,"props":4324,"children":4325},{"class":2165,"line":30},[4326],{"type":1873,"tag":2163,"props":4327,"children":4328},{"style":2180},[4329],{"type":1878,"value":4330},"} VkPushDataInfoEXT;\n",{"type":1873,"tag":2163,"props":4332,"children":4333},{"class":2165,"line":34},[4334],{"type":1873,"tag":2163,"props":4335,"children":4336},{"emptyLinePlaceholder":232},[4337],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":4339,"children":4340},{"class":2165,"line":38},[4341,4345,4350],{"type":1873,"tag":2163,"props":4342,"children":4343},{"style":2169},[4344],{"type":1878,"value":3613},{"type":1873,"tag":2163,"props":4346,"children":4347},{"style":2682},[4348],{"type":1878,"value":4349}," vkCmdPushDataEXT",{"type":1873,"tag":2163,"props":4351,"children":4352},{"style":2180},[4353],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":4355,"children":4356},{"class":2165,"line":42},[4357,4362,4366],{"type":1873,"tag":2163,"props":4358,"children":4359},{"style":2180},[4360],{"type":1878,"value":4361}," VkCommandBuffer ",{"type":1873,"tag":2163,"props":4363,"children":4364},{"style":2701},[4365],{"type":1878,"value":3635},{"type":1873,"tag":2163,"props":4367,"children":4368},{"style":2180},[4369],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4371,"children":4372},{"class":2165,"line":46},[4373,4377,4382,4386,4391],{"type":1873,"tag":2163,"props":4374,"children":4375},{"style":2169},[4376],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":4378,"children":4379},{"style":2180},[4380],{"type":1878,"value":4381}," VkPushDataInfoEXT",{"type":1873,"tag":2163,"props":4383,"children":4384},{"style":2169},[4385],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":4387,"children":4388},{"style":2701},[4389],{"type":1878,"value":4390}," pPushDataInfo",{"type":1873,"tag":2163,"props":4392,"children":4393},{"style":2180},[4394],{"type":1878,"value":2776},{"type":1873,"tag":1874,"props":4396,"children":4397},{},[4398,4400,4406,4407,4413,4415,4421],{"type":1878,"value":4399},"This command does not distinguish between data types, instead storing them all as a single blob of data.\n",{"type":1873,"tag":2159,"props":4401,"children":4403},{"className":4402},[],[4404],{"type":1878,"value":4405},"offset",{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":4408,"children":4410},{"className":4409},[],[4411],{"type":1878,"value":4412},"size",{"type":1878,"value":4414}," are both counted in bytes; their sum must be less than ",{"type":1873,"tag":2159,"props":4416,"children":4418},{"className":4417},[],[4419],{"type":1878,"value":4420},"maxPushDataSize",{"type":1878,"value":2077},{"type":1873,"tag":1874,"props":4423,"children":4424},{},[4425,4427,4433],{"type":1878,"value":4426},"Push constants in this data can be accessed in the same way as before via the ",{"type":1873,"tag":2159,"props":4428,"children":4430},{"className":4429},[],[4431],{"type":1878,"value":4432},"PushConstant",{"type":1878,"value":4434}," storage class, it is now simply unnecessary to construct a pipeline layout to do that.",{"type":1873,"tag":1874,"props":4436,"children":4437},{},[4438,4444,4446,4453,4454,4461,4463,4470],{"type":1873,"tag":2159,"props":4439,"children":4441},{"className":4440},[],[4442],{"type":1878,"value":4443},"vkCmdPushDataEXT",{"type":1878,"value":4445}," will invalidate, and be invalidated by, any state set by ",{"type":1873,"tag":1921,"props":4447,"children":4450},{"href":4448,"rel":4449},"https://docs.vulkan.org/spec/latest/descriptorsets.html#vkCmdPushConstants",[1925],[4451],{"type":1878,"value":4452},"vkCmdPushConstants",{"type":1878,"value":3350},{"type":1873,"tag":1921,"props":4455,"children":4458},{"href":4456,"rel":4457},"https://docs.vulkan.org/spec/latest/descriptorsets.html#vkCmdPushDescriptorSetKHR",[1925],[4459],{"type":1878,"value":4460},"vkCmdPushDescriptorSetKHR",{"type":1878,"value":4462},", or ",{"type":1873,"tag":1921,"props":4464,"children":4467},{"href":4465,"rel":4466},"https://docs.vulkan.org/spec/latest/descriptorsets.html#vkCmdPushDescriptorSetWithTemplateKHR",[1925],[4468],{"type":1878,"value":4469},"vkCmdPushDescriptorSetWithTemplateKHR",{"type":1878,"value":2077},{"type":1873,"tag":1874,"props":4472,"children":4473},{},[4474],{"type":1878,"value":4475},"Applications are advised to put device addresses into push data for larger amounts of data; implementations with pre-fetch paths will be able to pre-fetch these if they are statically referenced in the shader, providing an optimal path for larger data sets.",{"type":1873,"tag":2025,"props":4477,"children":4478},{},[4479],{"type":1873,"tag":1874,"props":4480,"children":4481},{},[4482,4484,4490,4491,4497,4499,4504],{"type":1878,"value":4483},"Device addresses in push data are intended as the replacement fast path for ",{"type":1873,"tag":2159,"props":4485,"children":4487},{"className":4486},[],[4488],{"type":1878,"value":4489},"VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC",{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":4492,"children":4494},{"className":4493},[],[4495],{"type":1878,"value":4496},"VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC",{"type":1878,"value":4498},".\nNote however that as they are not buffer descriptors and no size is provided, robust buffer access does not apply; out of bounds accesses are invalid.\nThese addresses can also be mapped to an existing buffer declaration in the shader using ",{"type":1873,"tag":1921,"props":4500,"children":4501},{"href":2128},[4502],{"type":1878,"value":4503},"SetAndBindingDecorations",{"type":1878,"value":4505},", which will be the preferred path for some implementations initially, though such implementations are expected to lean less on this mechanism over time.",{"type":1873,"tag":3256,"props":4507,"children":4508},{"id":4503},[4509,4510,4515,4516,4521],{"type":1878,"value":2156},{"type":1873,"tag":2159,"props":4511,"children":4513},{"className":4512},[],[4514],{"type":1878,"value":3197},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":4517,"children":4519},{"className":4518},[],[4520],{"type":1878,"value":3205},{"type":1878,"value":4522}," Decorations",{"type":1873,"tag":1874,"props":4524,"children":4525},{},[4526,4528,4533,4534,4539],{"type":1878,"value":4527},"Unlike true, this extension does not add direct support for descriptor set layouts, and instead includes functionality to allow mapping descriptors with ",{"type":1873,"tag":2159,"props":4529,"children":4531},{"className":4530},[],[4532],{"type":1878,"value":3197},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":4535,"children":4537},{"className":4536},[],[4538],{"type":1878,"value":3205},{"type":1878,"value":4540}," decorations to heap resources.",{"type":1873,"tag":1874,"props":4542,"children":4543},{},[4544],{"type":1878,"value":4545},"There are also several advantages to the mapping API that were not possible with descriptor set layouts:",{"type":1873,"tag":1892,"props":4547,"children":4548},{},[4549,4554,4559],{"type":1873,"tag":1896,"props":4550,"children":4551},{},[4552],{"type":1878,"value":4553},"Each shader stage can have an entirely independent set of mappings",{"type":1873,"tag":1896,"props":4555,"children":4556},{},[4557],{"type":1878,"value":4558},"Descriptor set and binding decorations are no longer limited, and instead can be used as arbitrary identifiers by an application",{"type":1873,"tag":1896,"props":4560,"children":4561},{},[4562,4564,4569],{"type":1878,"value":4563},"Direct mapping to HLSL’s pre-SM6.6 binding model is now possible, as illustrated in ",{"type":1873,"tag":1921,"props":4565,"children":4566},{"href":2120},[4567],{"type":1878,"value":4568},"_hlsl_mapping",{"type":1878,"value":4570}," later in the proposal",{"type":1873,"tag":2025,"props":4572,"children":4573},{},[4574],{"type":1873,"tag":1874,"props":4575,"children":4576},{},[4577],{"type":1878,"value":4578},"Applications can fully ignore the mappings; bindless interfaces are provided for all resource types. These mappings are primarily intended as an interface for mapping existing shader codebases which use bindings. The only exceptions to this are for embedded samplers and input attachments, which still require a binding in this extension.",{"type":1873,"tag":2025,"props":4580,"children":4581},{},[4582],{"type":1873,"tag":1874,"props":4583,"children":4584},{},[4585],{"type":1878,"value":4586},"Shaders compiled using this mapping can use both bindless resource access and static bindings.",{"type":1873,"tag":2151,"props":4588,"children":4590},{"className":2153,"code":4589,"language":2155,"meta":2156,"style":2156},"typedef enum VkDescriptorMappingSourceEXT {\n VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT = 0,\n VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT = 1,\n VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT = 2,\n VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT = 3,\n VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT = 4,\n VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT = 5,\n VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT = 6,\n VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT = 7,\n VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT = 8,\n VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT = 9,\n VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT = 10,\n} VkDescriptorMappingSourceEXT;\n\ntypedef VkSpirvResourceTypeFlagBitsEXT {\n VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT = 0x00000001,\n VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT = 0x00000002,\n VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT = 0x00000004,\n VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT = 0x00000008,\n VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT = 0x00000010,\n VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT = 0x00000020,\n VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT = 0x00000040,\n VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT = 0x00000080,\n VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT = 0x00000100,\n VK_SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM = 0x00000200,\n VK_SPIRV_RESOURCE_TYPE_ALL_EXT = 0x7FFFFFFF,\n} VkSpirvResourceTypeFlagBitsEXT;\n\ntypedef struct VkDescriptorMappingSourceConstantOffsetEXT {\n uint32_t heapOffset;\n uint32_t heapArrayStride;\n const VkSamplerCreateInfo* pEmbeddedSampler;\n uint32_t samplerHeapOffset;\n uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourceConstantOffsetEXT;\n\ntypedef struct VkDescriptorMappingSourcePushIndexEXT {\n uint32_t heapOffset;\n uint32_t pushOffset;\n uint32_t heapIndexStride;\n uint32_t heapArrayStride;\n const VkSamplerCreateInfo* pEmbeddedSampler;\n VkBool32 useCombinedImageSamplerIndex;\n uint32_t samplerHeapOffset;\n uint32_t samplerPushOffset;\n uint32_t samplerHeapIndexStride;\n uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourcePushIndexEXT;\n\ntypedef struct VkDescriptorMappingSourceIndirectIndexEXT {\n uint32_t heapOffset;\n uint32_t pushOffset;\n uint32_t addressOffset;\n uint32_t heapIndexStride;\n uint32_t heapArrayStride;\n const VkSamplerCreateInfo* pEmbeddedSampler;\n VkBool32 useCombinedImageSamplerIndex;\n uint32_t samplerHeapOffset;\n uint32_t samplerPushOffset;\n uint32_t samplerAddressOffset;\n uint32_t samplerHeapIndexStride;\n uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourceIndirectIndexEXT;\n\ntypedef struct VkDescriptorMappingSourceIndirectIndexArrayEXT {\n uint32_t heapOffset;\n uint32_t pushOffset;\n uint32_t addressOffset;\n uint32_t heapIndexStride;\n const VkSamplerCreateInfo* pEmbeddedSampler;\n VkBool32 useCombinedImageSamplerIndex;\n uint32_t samplerHeapOffset;\n uint32_t samplerPushOffset;\n uint32_t samplerAddressOffset;\n uint32_t samplerHeapIndexStride;\n} VkDescriptorMappingSourceIndirectIndexArrayEXT;\n\ntypedef struct VkDescriptorMappingSourceHeapDataEXT {\n uint32_t heapOffset;\n uint32_t pushOffset;\n} VkDescriptorMappingSourceHeapDataEXT;\n\ntypedef struct VkDescriptorMappingSourceShaderRecordIndexEXT {\n uint32_t heapOffset;\n uint32_t shaderRecordOffset;\n uint32_t heapIndexStride;\n uint32_t heapArrayStride;\n const VkSamplerCreateInfo* pEmbeddedSampler;\n VkBool32 useCombinedImageSamplerIndex;\n uint32_t samplerHeapOffset;\n uint32_t samplerShaderRecordOffset;\n uint32_t samplerHeapIndexStride;\n uint32_t samplerHeapArrayStride;\n} VkDescriptorMappingSourceShaderRecordIndexEXT;\n\ntypedef struct VkDescriptorMappingSourceIndirectAddressEXT {\n uint32_t pushOffset;\n uint32_t addressOffset;\n} VkDescriptorMappingSourceIndirectAddressEXT;\n\ntypedef union VkDescriptorMappingSourceDataEXT {\n VkDescriptorMappingSourceConstantOffsetEXT constantOffset;\n VkDescriptorMappingSourcePushIndexEXT pushIndex;\n VkDescriptorMappingSourceIndirectIndexEXT indirectIndex;\n VkDescriptorMappingSourceIndirectIndexArrayEXT indirectIndexArray;\n VkDescriptorMappingSourceHeapDataEXT heapData;\n uint32_t pushDataOffset;\n uint32_t pushAddressOffset;\n VkDescriptorMappingSourceIndirectAddressEXT indirectAddress;\n VkDescriptorMappingSourceShaderRecordIndexEXT shaderRecordIndex;\n uint32_t shaderRecordDataOffset;\n uint32_t shaderRecordAddressOffset;\n} VkDescriptorMappingSourceDataEXT;\n\ntypedef struct VkDescriptorSetAndBindingMappingEXT {\n VkStructureType sType;\n const void* pNext;\n uint32_t descriptorSet;\n uint32_t firstBinding;\n uint32_t bindingCount;\n VkSpirvResourceTypeFlagsEXT resourceMask;\n VkDescriptorMappingSourceEXT source;\n VkDescriptorMappingSourceDataEXT sourceData;\n} VkDescriptorSetAndBindingMappingEXT;\n\ntypedef struct VkShaderDescriptorSetAndBindingMappingInfoEXT {\n VkStructureType sType;\n const void* pNext;\n uint32_t mappingCount;\n const VkDescriptorSetAndBindingMappingEXT* pMappings;\n} VkShaderDescriptorSetAndBindingMappingInfoEXT;\n",[4591],{"type":1873,"tag":2159,"props":4592,"children":4593},{"__ignoreMap":2156},[4594,4610,4631,4652,4673,4694,4715,4736,4757,4778,4799,4820,4841,4849,4856,4868,4893,4918,4943,4968,4993,5018,5043,5068,5093,5118,5143,5151,5158,5174,5186,5198,5218,5230,5242,5250,5257,5273,5284,5296,5308,5319,5338,5346,5357,5369,5381,5392,5400,5407,5423,5434,5445,5457,5468,5479,5498,5505,5516,5527,5539,5550,5561,5569,5576,5592,5603,5614,5625,5636,5655,5662,5673,5684,5695,5706,5714,5721,5737,5748,5759,5767,5774,5790,5801,5813,5824,5836,5855,5862,5873,5885,5896,5907,5916,5923,5939,5950,5961,5969,5976,5993,6001,6009,6018,6026,6034,6047,6060,6068,6076,6088,6100,6108,6115,6131,6139,6155,6167,6180,6192,6200,6208,6216,6224,6232,6248,6255,6270,6282,6303],{"type":1873,"tag":2163,"props":4595,"children":4596},{"class":2165,"line":10},[4597,4601,4605],{"type":1873,"tag":2163,"props":4598,"children":4599},{"style":2169},[4600],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":4602,"children":4603},{"style":2169},[4604],{"type":1878,"value":4186},{"type":1873,"tag":2163,"props":4606,"children":4607},{"style":2180},[4608],{"type":1878,"value":4609}," VkDescriptorMappingSourceEXT {\n",{"type":1873,"tag":2163,"props":4611,"children":4612},{"class":2165,"line":14},[4613,4618,4622,4627],{"type":1873,"tag":2163,"props":4614,"children":4615},{"style":2180},[4616],{"type":1878,"value":4617}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT ",{"type":1873,"tag":2163,"props":4619,"children":4620},{"style":2169},[4621],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4623,"children":4624},{"style":3995},[4625],{"type":1878,"value":4626}," 0",{"type":1873,"tag":2163,"props":4628,"children":4629},{"style":2180},[4630],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4632,"children":4633},{"class":2165,"line":18},[4634,4639,4643,4648],{"type":1873,"tag":2163,"props":4635,"children":4636},{"style":2180},[4637],{"type":1878,"value":4638}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT ",{"type":1873,"tag":2163,"props":4640,"children":4641},{"style":2169},[4642],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4644,"children":4645},{"style":3995},[4646],{"type":1878,"value":4647}," 1",{"type":1873,"tag":2163,"props":4649,"children":4650},{"style":2180},[4651],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4653,"children":4654},{"class":2165,"line":22},[4655,4660,4664,4669],{"type":1873,"tag":2163,"props":4656,"children":4657},{"style":2180},[4658],{"type":1878,"value":4659}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT ",{"type":1873,"tag":2163,"props":4661,"children":4662},{"style":2169},[4663],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4665,"children":4666},{"style":3995},[4667],{"type":1878,"value":4668}," 2",{"type":1873,"tag":2163,"props":4670,"children":4671},{"style":2180},[4672],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4674,"children":4675},{"class":2165,"line":26},[4676,4681,4685,4690],{"type":1873,"tag":2163,"props":4677,"children":4678},{"style":2180},[4679],{"type":1878,"value":4680}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT ",{"type":1873,"tag":2163,"props":4682,"children":4683},{"style":2169},[4684],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4686,"children":4687},{"style":3995},[4688],{"type":1878,"value":4689}," 3",{"type":1873,"tag":2163,"props":4691,"children":4692},{"style":2180},[4693],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4695,"children":4696},{"class":2165,"line":30},[4697,4702,4706,4711],{"type":1873,"tag":2163,"props":4698,"children":4699},{"style":2180},[4700],{"type":1878,"value":4701}," VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT ",{"type":1873,"tag":2163,"props":4703,"children":4704},{"style":2169},[4705],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4707,"children":4708},{"style":3995},[4709],{"type":1878,"value":4710}," 4",{"type":1873,"tag":2163,"props":4712,"children":4713},{"style":2180},[4714],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4716,"children":4717},{"class":2165,"line":34},[4718,4723,4727,4732],{"type":1873,"tag":2163,"props":4719,"children":4720},{"style":2180},[4721],{"type":1878,"value":4722}," VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT ",{"type":1873,"tag":2163,"props":4724,"children":4725},{"style":2169},[4726],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4728,"children":4729},{"style":3995},[4730],{"type":1878,"value":4731}," 5",{"type":1873,"tag":2163,"props":4733,"children":4734},{"style":2180},[4735],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4737,"children":4738},{"class":2165,"line":38},[4739,4744,4748,4753],{"type":1873,"tag":2163,"props":4740,"children":4741},{"style":2180},[4742],{"type":1878,"value":4743}," VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT ",{"type":1873,"tag":2163,"props":4745,"children":4746},{"style":2169},[4747],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4749,"children":4750},{"style":3995},[4751],{"type":1878,"value":4752}," 6",{"type":1873,"tag":2163,"props":4754,"children":4755},{"style":2180},[4756],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4758,"children":4759},{"class":2165,"line":42},[4760,4765,4769,4774],{"type":1873,"tag":2163,"props":4761,"children":4762},{"style":2180},[4763],{"type":1878,"value":4764}," VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT ",{"type":1873,"tag":2163,"props":4766,"children":4767},{"style":2169},[4768],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4770,"children":4771},{"style":3995},[4772],{"type":1878,"value":4773}," 7",{"type":1873,"tag":2163,"props":4775,"children":4776},{"style":2180},[4777],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4779,"children":4780},{"class":2165,"line":46},[4781,4786,4790,4795],{"type":1873,"tag":2163,"props":4782,"children":4783},{"style":2180},[4784],{"type":1878,"value":4785}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT ",{"type":1873,"tag":2163,"props":4787,"children":4788},{"style":2169},[4789],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4791,"children":4792},{"style":3995},[4793],{"type":1878,"value":4794}," 8",{"type":1873,"tag":2163,"props":4796,"children":4797},{"style":2180},[4798],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4800,"children":4801},{"class":2165,"line":50},[4802,4807,4811,4816],{"type":1873,"tag":2163,"props":4803,"children":4804},{"style":2180},[4805],{"type":1878,"value":4806}," VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT ",{"type":1873,"tag":2163,"props":4808,"children":4809},{"style":2169},[4810],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4812,"children":4813},{"style":3995},[4814],{"type":1878,"value":4815}," 9",{"type":1873,"tag":2163,"props":4817,"children":4818},{"style":2180},[4819],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4821,"children":4822},{"class":2165,"line":54},[4823,4828,4832,4837],{"type":1873,"tag":2163,"props":4824,"children":4825},{"style":2180},[4826],{"type":1878,"value":4827}," VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT ",{"type":1873,"tag":2163,"props":4829,"children":4830},{"style":2169},[4831],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4833,"children":4834},{"style":3995},[4835],{"type":1878,"value":4836}," 10",{"type":1873,"tag":2163,"props":4838,"children":4839},{"style":2180},[4840],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4842,"children":4843},{"class":2165,"line":58},[4844],{"type":1873,"tag":2163,"props":4845,"children":4846},{"style":2180},[4847],{"type":1878,"value":4848},"} VkDescriptorMappingSourceEXT;\n",{"type":1873,"tag":2163,"props":4850,"children":4851},{"class":2165,"line":62},[4852],{"type":1873,"tag":2163,"props":4853,"children":4854},{"emptyLinePlaceholder":232},[4855],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":4857,"children":4858},{"class":2165,"line":66},[4859,4863],{"type":1873,"tag":2163,"props":4860,"children":4861},{"style":2169},[4862],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":4864,"children":4865},{"style":2180},[4866],{"type":1878,"value":4867}," VkSpirvResourceTypeFlagBitsEXT {\n",{"type":1873,"tag":2163,"props":4869,"children":4870},{"class":2165,"line":70},[4871,4876,4880,4884,4889],{"type":1873,"tag":2163,"props":4872,"children":4873},{"style":2180},[4874],{"type":1878,"value":4875}," VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT ",{"type":1873,"tag":2163,"props":4877,"children":4878},{"style":2169},[4879],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4881,"children":4882},{"style":2169},[4883],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4885,"children":4886},{"style":3995},[4887],{"type":1878,"value":4888},"00000001",{"type":1873,"tag":2163,"props":4890,"children":4891},{"style":2180},[4892],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4894,"children":4895},{"class":2165,"line":74},[4896,4901,4905,4909,4914],{"type":1873,"tag":2163,"props":4897,"children":4898},{"style":2180},[4899],{"type":1878,"value":4900}," VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT ",{"type":1873,"tag":2163,"props":4902,"children":4903},{"style":2169},[4904],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4906,"children":4907},{"style":2169},[4908],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4910,"children":4911},{"style":3995},[4912],{"type":1878,"value":4913},"00000002",{"type":1873,"tag":2163,"props":4915,"children":4916},{"style":2180},[4917],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4919,"children":4920},{"class":2165,"line":78},[4921,4926,4930,4934,4939],{"type":1873,"tag":2163,"props":4922,"children":4923},{"style":2180},[4924],{"type":1878,"value":4925}," VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT ",{"type":1873,"tag":2163,"props":4927,"children":4928},{"style":2169},[4929],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4931,"children":4932},{"style":2169},[4933],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4935,"children":4936},{"style":3995},[4937],{"type":1878,"value":4938},"00000004",{"type":1873,"tag":2163,"props":4940,"children":4941},{"style":2180},[4942],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4944,"children":4945},{"class":2165,"line":82},[4946,4951,4955,4959,4964],{"type":1873,"tag":2163,"props":4947,"children":4948},{"style":2180},[4949],{"type":1878,"value":4950}," VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT ",{"type":1873,"tag":2163,"props":4952,"children":4953},{"style":2169},[4954],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4956,"children":4957},{"style":2169},[4958],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4960,"children":4961},{"style":3995},[4962],{"type":1878,"value":4963},"00000008",{"type":1873,"tag":2163,"props":4965,"children":4966},{"style":2180},[4967],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4969,"children":4970},{"class":2165,"line":86},[4971,4976,4980,4984,4989],{"type":1873,"tag":2163,"props":4972,"children":4973},{"style":2180},[4974],{"type":1878,"value":4975}," VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT ",{"type":1873,"tag":2163,"props":4977,"children":4978},{"style":2169},[4979],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":4981,"children":4982},{"style":2169},[4983],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":4985,"children":4986},{"style":3995},[4987],{"type":1878,"value":4988},"00000010",{"type":1873,"tag":2163,"props":4990,"children":4991},{"style":2180},[4992],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":4994,"children":4995},{"class":2165,"line":90},[4996,5001,5005,5009,5014],{"type":1873,"tag":2163,"props":4997,"children":4998},{"style":2180},[4999],{"type":1878,"value":5000}," VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT ",{"type":1873,"tag":2163,"props":5002,"children":5003},{"style":2169},[5004],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":5006,"children":5007},{"style":2169},[5008],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":5010,"children":5011},{"style":3995},[5012],{"type":1878,"value":5013},"00000020",{"type":1873,"tag":2163,"props":5015,"children":5016},{"style":2180},[5017],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":5019,"children":5020},{"class":2165,"line":94},[5021,5026,5030,5034,5039],{"type":1873,"tag":2163,"props":5022,"children":5023},{"style":2180},[5024],{"type":1878,"value":5025}," VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT ",{"type":1873,"tag":2163,"props":5027,"children":5028},{"style":2169},[5029],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":5031,"children":5032},{"style":2169},[5033],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":5035,"children":5036},{"style":3995},[5037],{"type":1878,"value":5038},"00000040",{"type":1873,"tag":2163,"props":5040,"children":5041},{"style":2180},[5042],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":5044,"children":5045},{"class":2165,"line":98},[5046,5051,5055,5059,5064],{"type":1873,"tag":2163,"props":5047,"children":5048},{"style":2180},[5049],{"type":1878,"value":5050}," VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT ",{"type":1873,"tag":2163,"props":5052,"children":5053},{"style":2169},[5054],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":5056,"children":5057},{"style":2169},[5058],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":5060,"children":5061},{"style":3995},[5062],{"type":1878,"value":5063},"00000080",{"type":1873,"tag":2163,"props":5065,"children":5066},{"style":2180},[5067],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":5069,"children":5070},{"class":2165,"line":102},[5071,5076,5080,5084,5089],{"type":1873,"tag":2163,"props":5072,"children":5073},{"style":2180},[5074],{"type":1878,"value":5075}," VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT ",{"type":1873,"tag":2163,"props":5077,"children":5078},{"style":2169},[5079],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":5081,"children":5082},{"style":2169},[5083],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":5085,"children":5086},{"style":3995},[5087],{"type":1878,"value":5088},"00000100",{"type":1873,"tag":2163,"props":5090,"children":5091},{"style":2180},[5092],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":5094,"children":5095},{"class":2165,"line":106},[5096,5101,5105,5109,5114],{"type":1873,"tag":2163,"props":5097,"children":5098},{"style":2180},[5099],{"type":1878,"value":5100}," VK_SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM ",{"type":1873,"tag":2163,"props":5102,"children":5103},{"style":2169},[5104],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":5106,"children":5107},{"style":2169},[5108],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":5110,"children":5111},{"style":3995},[5112],{"type":1878,"value":5113},"00000200",{"type":1873,"tag":2163,"props":5115,"children":5116},{"style":2180},[5117],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":5119,"children":5120},{"class":2165,"line":110},[5121,5126,5130,5134,5139],{"type":1873,"tag":2163,"props":5122,"children":5123},{"style":2180},[5124],{"type":1878,"value":5125}," VK_SPIRV_RESOURCE_TYPE_ALL_EXT ",{"type":1873,"tag":2163,"props":5127,"children":5128},{"style":2169},[5129],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":5131,"children":5132},{"style":2169},[5133],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":5135,"children":5136},{"style":3995},[5137],{"type":1878,"value":5138},"7FFFFFFF",{"type":1873,"tag":2163,"props":5140,"children":5141},{"style":2180},[5142],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":5144,"children":5145},{"class":2165,"line":114},[5146],{"type":1873,"tag":2163,"props":5147,"children":5148},{"style":2180},[5149],{"type":1878,"value":5150},"} VkSpirvResourceTypeFlagBitsEXT;\n",{"type":1873,"tag":2163,"props":5152,"children":5153},{"class":2165,"line":118},[5154],{"type":1873,"tag":2163,"props":5155,"children":5156},{"emptyLinePlaceholder":232},[5157],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5159,"children":5160},{"class":2165,"line":122},[5161,5165,5169],{"type":1873,"tag":2163,"props":5162,"children":5163},{"style":2169},[5164],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5166,"children":5167},{"style":2169},[5168],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":5170,"children":5171},{"style":2180},[5172],{"type":1878,"value":5173}," VkDescriptorMappingSourceConstantOffsetEXT {\n",{"type":1873,"tag":2163,"props":5175,"children":5176},{"class":2165,"line":126},[5177,5181],{"type":1873,"tag":2163,"props":5178,"children":5179},{"style":2169},[5180],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5182,"children":5183},{"style":2180},[5184],{"type":1878,"value":5185}," heapOffset;\n",{"type":1873,"tag":2163,"props":5187,"children":5188},{"class":2165,"line":130},[5189,5193],{"type":1873,"tag":2163,"props":5190,"children":5191},{"style":2169},[5192],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5194,"children":5195},{"style":2180},[5196],{"type":1878,"value":5197}," heapArrayStride;\n",{"type":1873,"tag":2163,"props":5199,"children":5200},{"class":2165,"line":134},[5201,5205,5209,5213],{"type":1873,"tag":2163,"props":5202,"children":5203},{"style":2169},[5204],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":5206,"children":5207},{"style":2180},[5208],{"type":1878,"value":2737},{"type":1873,"tag":2163,"props":5210,"children":5211},{"style":2169},[5212],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":5214,"children":5215},{"style":2180},[5216],{"type":1878,"value":5217}," pEmbeddedSampler;\n",{"type":1873,"tag":2163,"props":5219,"children":5220},{"class":2165,"line":138},[5221,5225],{"type":1873,"tag":2163,"props":5222,"children":5223},{"style":2169},[5224],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5226,"children":5227},{"style":2180},[5228],{"type":1878,"value":5229}," samplerHeapOffset;\n",{"type":1873,"tag":2163,"props":5231,"children":5232},{"class":2165,"line":142},[5233,5237],{"type":1873,"tag":2163,"props":5234,"children":5235},{"style":2169},[5236],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5238,"children":5239},{"style":2180},[5240],{"type":1878,"value":5241}," samplerHeapArrayStride;\n",{"type":1873,"tag":2163,"props":5243,"children":5244},{"class":2165,"line":146},[5245],{"type":1873,"tag":2163,"props":5246,"children":5247},{"style":2180},[5248],{"type":1878,"value":5249},"} VkDescriptorMappingSourceConstantOffsetEXT;\n",{"type":1873,"tag":2163,"props":5251,"children":5252},{"class":2165,"line":150},[5253],{"type":1873,"tag":2163,"props":5254,"children":5255},{"emptyLinePlaceholder":232},[5256],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5258,"children":5259},{"class":2165,"line":154},[5260,5264,5268],{"type":1873,"tag":2163,"props":5261,"children":5262},{"style":2169},[5263],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5265,"children":5266},{"style":2169},[5267],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":5269,"children":5270},{"style":2180},[5271],{"type":1878,"value":5272}," VkDescriptorMappingSourcePushIndexEXT {\n",{"type":1873,"tag":2163,"props":5274,"children":5275},{"class":2165,"line":158},[5276,5280],{"type":1873,"tag":2163,"props":5277,"children":5278},{"style":2169},[5279],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5281,"children":5282},{"style":2180},[5283],{"type":1878,"value":5185},{"type":1873,"tag":2163,"props":5285,"children":5286},{"class":2165,"line":162},[5287,5291],{"type":1873,"tag":2163,"props":5288,"children":5289},{"style":2169},[5290],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5292,"children":5293},{"style":2180},[5294],{"type":1878,"value":5295}," pushOffset;\n",{"type":1873,"tag":2163,"props":5297,"children":5298},{"class":2165,"line":166},[5299,5303],{"type":1873,"tag":2163,"props":5300,"children":5301},{"style":2169},[5302],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5304,"children":5305},{"style":2180},[5306],{"type":1878,"value":5307}," heapIndexStride;\n",{"type":1873,"tag":2163,"props":5309,"children":5310},{"class":2165,"line":170},[5311,5315],{"type":1873,"tag":2163,"props":5312,"children":5313},{"style":2169},[5314],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5316,"children":5317},{"style":2180},[5318],{"type":1878,"value":5197},{"type":1873,"tag":2163,"props":5320,"children":5321},{"class":2165,"line":174},[5322,5326,5330,5334],{"type":1873,"tag":2163,"props":5323,"children":5324},{"style":2169},[5325],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":5327,"children":5328},{"style":2180},[5329],{"type":1878,"value":2737},{"type":1873,"tag":2163,"props":5331,"children":5332},{"style":2169},[5333],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":5335,"children":5336},{"style":2180},[5337],{"type":1878,"value":5217},{"type":1873,"tag":2163,"props":5339,"children":5340},{"class":2165,"line":178},[5341],{"type":1873,"tag":2163,"props":5342,"children":5343},{"style":2180},[5344],{"type":1878,"value":5345}," VkBool32 useCombinedImageSamplerIndex;\n",{"type":1873,"tag":2163,"props":5347,"children":5348},{"class":2165,"line":182},[5349,5353],{"type":1873,"tag":2163,"props":5350,"children":5351},{"style":2169},[5352],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5354,"children":5355},{"style":2180},[5356],{"type":1878,"value":5229},{"type":1873,"tag":2163,"props":5358,"children":5359},{"class":2165,"line":186},[5360,5364],{"type":1873,"tag":2163,"props":5361,"children":5362},{"style":2169},[5363],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5365,"children":5366},{"style":2180},[5367],{"type":1878,"value":5368}," samplerPushOffset;\n",{"type":1873,"tag":2163,"props":5370,"children":5371},{"class":2165,"line":190},[5372,5376],{"type":1873,"tag":2163,"props":5373,"children":5374},{"style":2169},[5375],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5377,"children":5378},{"style":2180},[5379],{"type":1878,"value":5380}," samplerHeapIndexStride;\n",{"type":1873,"tag":2163,"props":5382,"children":5383},{"class":2165,"line":194},[5384,5388],{"type":1873,"tag":2163,"props":5385,"children":5386},{"style":2169},[5387],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5389,"children":5390},{"style":2180},[5391],{"type":1878,"value":5241},{"type":1873,"tag":2163,"props":5393,"children":5394},{"class":2165,"line":198},[5395],{"type":1873,"tag":2163,"props":5396,"children":5397},{"style":2180},[5398],{"type":1878,"value":5399},"} VkDescriptorMappingSourcePushIndexEXT;\n",{"type":1873,"tag":2163,"props":5401,"children":5402},{"class":2165,"line":202},[5403],{"type":1873,"tag":2163,"props":5404,"children":5405},{"emptyLinePlaceholder":232},[5406],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5408,"children":5409},{"class":2165,"line":206},[5410,5414,5418],{"type":1873,"tag":2163,"props":5411,"children":5412},{"style":2169},[5413],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5415,"children":5416},{"style":2169},[5417],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":5419,"children":5420},{"style":2180},[5421],{"type":1878,"value":5422}," VkDescriptorMappingSourceIndirectIndexEXT {\n",{"type":1873,"tag":2163,"props":5424,"children":5425},{"class":2165,"line":210},[5426,5430],{"type":1873,"tag":2163,"props":5427,"children":5428},{"style":2169},[5429],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5431,"children":5432},{"style":2180},[5433],{"type":1878,"value":5185},{"type":1873,"tag":2163,"props":5435,"children":5436},{"class":2165,"line":214},[5437,5441],{"type":1873,"tag":2163,"props":5438,"children":5439},{"style":2169},[5440],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5442,"children":5443},{"style":2180},[5444],{"type":1878,"value":5295},{"type":1873,"tag":2163,"props":5446,"children":5447},{"class":2165,"line":218},[5448,5452],{"type":1873,"tag":2163,"props":5449,"children":5450},{"style":2169},[5451],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5453,"children":5454},{"style":2180},[5455],{"type":1878,"value":5456}," addressOffset;\n",{"type":1873,"tag":2163,"props":5458,"children":5459},{"class":2165,"line":222},[5460,5464],{"type":1873,"tag":2163,"props":5461,"children":5462},{"style":2169},[5463],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5465,"children":5466},{"style":2180},[5467],{"type":1878,"value":5307},{"type":1873,"tag":2163,"props":5469,"children":5470},{"class":2165,"line":226},[5471,5475],{"type":1873,"tag":2163,"props":5472,"children":5473},{"style":2169},[5474],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5476,"children":5477},{"style":2180},[5478],{"type":1878,"value":5197},{"type":1873,"tag":2163,"props":5480,"children":5481},{"class":2165,"line":1622},[5482,5486,5490,5494],{"type":1873,"tag":2163,"props":5483,"children":5484},{"style":2169},[5485],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":5487,"children":5488},{"style":2180},[5489],{"type":1878,"value":2737},{"type":1873,"tag":2163,"props":5491,"children":5492},{"style":2169},[5493],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":5495,"children":5496},{"style":2180},[5497],{"type":1878,"value":5217},{"type":1873,"tag":2163,"props":5499,"children":5500},{"class":2165,"line":1618},[5501],{"type":1873,"tag":2163,"props":5502,"children":5503},{"style":2180},[5504],{"type":1878,"value":5345},{"type":1873,"tag":2163,"props":5506,"children":5507},{"class":2165,"line":1629},[5508,5512],{"type":1873,"tag":2163,"props":5509,"children":5510},{"style":2169},[5511],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5513,"children":5514},{"style":2180},[5515],{"type":1878,"value":5229},{"type":1873,"tag":2163,"props":5517,"children":5518},{"class":2165,"line":1753},[5519,5523],{"type":1873,"tag":2163,"props":5520,"children":5521},{"style":2169},[5522],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5524,"children":5525},{"style":2180},[5526],{"type":1878,"value":5368},{"type":1873,"tag":2163,"props":5528,"children":5529},{"class":2165,"line":1184},[5530,5534],{"type":1873,"tag":2163,"props":5531,"children":5532},{"style":2169},[5533],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5535,"children":5536},{"style":2180},[5537],{"type":1878,"value":5538}," samplerAddressOffset;\n",{"type":1873,"tag":2163,"props":5540,"children":5541},{"class":2165,"line":1107},[5542,5546],{"type":1873,"tag":2163,"props":5543,"children":5544},{"style":2169},[5545],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5547,"children":5548},{"style":2180},[5549],{"type":1878,"value":5380},{"type":1873,"tag":2163,"props":5551,"children":5552},{"class":2165,"line":939},[5553,5557],{"type":1873,"tag":2163,"props":5554,"children":5555},{"style":2169},[5556],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5558,"children":5559},{"style":2180},[5560],{"type":1878,"value":5241},{"type":1873,"tag":2163,"props":5562,"children":5563},{"class":2165,"line":1517},[5564],{"type":1873,"tag":2163,"props":5565,"children":5566},{"style":2180},[5567],{"type":1878,"value":5568},"} VkDescriptorMappingSourceIndirectIndexEXT;\n",{"type":1873,"tag":2163,"props":5570,"children":5571},{"class":2165,"line":1332},[5572],{"type":1873,"tag":2163,"props":5573,"children":5574},{"emptyLinePlaceholder":232},[5575],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5577,"children":5578},{"class":2165,"line":877},[5579,5583,5587],{"type":1873,"tag":2163,"props":5580,"children":5581},{"style":2169},[5582],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5584,"children":5585},{"style":2169},[5586],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":5588,"children":5589},{"style":2180},[5590],{"type":1878,"value":5591}," VkDescriptorMappingSourceIndirectIndexArrayEXT {\n",{"type":1873,"tag":2163,"props":5593,"children":5594},{"class":2165,"line":883},[5595,5599],{"type":1873,"tag":2163,"props":5596,"children":5597},{"style":2169},[5598],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5600,"children":5601},{"style":2180},[5602],{"type":1878,"value":5185},{"type":1873,"tag":2163,"props":5604,"children":5605},{"class":2165,"line":922},[5606,5610],{"type":1873,"tag":2163,"props":5607,"children":5608},{"style":2169},[5609],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5611,"children":5612},{"style":2180},[5613],{"type":1878,"value":5295},{"type":1873,"tag":2163,"props":5615,"children":5616},{"class":2165,"line":427},[5617,5621],{"type":1873,"tag":2163,"props":5618,"children":5619},{"style":2169},[5620],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5622,"children":5623},{"style":2180},[5624],{"type":1878,"value":5456},{"type":1873,"tag":2163,"props":5626,"children":5627},{"class":2165,"line":779},[5628,5632],{"type":1873,"tag":2163,"props":5629,"children":5630},{"style":2169},[5631],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5633,"children":5634},{"style":2180},[5635],{"type":1878,"value":5307},{"type":1873,"tag":2163,"props":5637,"children":5638},{"class":2165,"line":1211},[5639,5643,5647,5651],{"type":1873,"tag":2163,"props":5640,"children":5641},{"style":2169},[5642],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":5644,"children":5645},{"style":2180},[5646],{"type":1878,"value":2737},{"type":1873,"tag":2163,"props":5648,"children":5649},{"style":2169},[5650],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":5652,"children":5653},{"style":2180},[5654],{"type":1878,"value":5217},{"type":1873,"tag":2163,"props":5656,"children":5657},{"class":2165,"line":1111},[5658],{"type":1873,"tag":2163,"props":5659,"children":5660},{"style":2180},[5661],{"type":1878,"value":5345},{"type":1873,"tag":2163,"props":5663,"children":5664},{"class":2165,"line":1147},[5665,5669],{"type":1873,"tag":2163,"props":5666,"children":5667},{"style":2169},[5668],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5670,"children":5671},{"style":2180},[5672],{"type":1878,"value":5229},{"type":1873,"tag":2163,"props":5674,"children":5675},{"class":2165,"line":1143},[5676,5680],{"type":1873,"tag":2163,"props":5677,"children":5678},{"style":2169},[5679],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5681,"children":5682},{"style":2180},[5683],{"type":1878,"value":5368},{"type":1873,"tag":2163,"props":5685,"children":5686},{"class":2165,"line":1152},[5687,5691],{"type":1873,"tag":2163,"props":5688,"children":5689},{"style":2169},[5690],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5692,"children":5693},{"style":2180},[5694],{"type":1878,"value":5538},{"type":1873,"tag":2163,"props":5696,"children":5697},{"class":2165,"line":1150},[5698,5702],{"type":1873,"tag":2163,"props":5699,"children":5700},{"style":2169},[5701],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5703,"children":5704},{"style":2180},[5705],{"type":1878,"value":5380},{"type":1873,"tag":2163,"props":5707,"children":5708},{"class":2165,"line":1477},[5709],{"type":1873,"tag":2163,"props":5710,"children":5711},{"style":2180},[5712],{"type":1878,"value":5713},"} VkDescriptorMappingSourceIndirectIndexArrayEXT;\n",{"type":1873,"tag":2163,"props":5715,"children":5716},{"class":2165,"line":1159},[5717],{"type":1873,"tag":2163,"props":5718,"children":5719},{"emptyLinePlaceholder":232},[5720],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5722,"children":5723},{"class":2165,"line":1155},[5724,5728,5732],{"type":1873,"tag":2163,"props":5725,"children":5726},{"style":2169},[5727],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5729,"children":5730},{"style":2169},[5731],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":5733,"children":5734},{"style":2180},[5735],{"type":1878,"value":5736}," VkDescriptorMappingSourceHeapDataEXT {\n",{"type":1873,"tag":2163,"props":5738,"children":5739},{"class":2165,"line":1165},[5740,5744],{"type":1873,"tag":2163,"props":5741,"children":5742},{"style":2169},[5743],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5745,"children":5746},{"style":2180},[5747],{"type":1878,"value":5185},{"type":1873,"tag":2163,"props":5749,"children":5750},{"class":2165,"line":1161},[5751,5755],{"type":1873,"tag":2163,"props":5752,"children":5753},{"style":2169},[5754],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5756,"children":5757},{"style":2180},[5758],{"type":1878,"value":5295},{"type":1873,"tag":2163,"props":5760,"children":5761},{"class":2165,"line":1290},[5762],{"type":1873,"tag":2163,"props":5763,"children":5764},{"style":2180},[5765],{"type":1878,"value":5766},"} VkDescriptorMappingSourceHeapDataEXT;\n",{"type":1873,"tag":2163,"props":5768,"children":5769},{"class":2165,"line":461},[5770],{"type":1873,"tag":2163,"props":5771,"children":5772},{"emptyLinePlaceholder":232},[5773],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5775,"children":5776},{"class":2165,"line":1338},[5777,5781,5785],{"type":1873,"tag":2163,"props":5778,"children":5779},{"style":2169},[5780],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5782,"children":5783},{"style":2169},[5784],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":5786,"children":5787},{"style":2180},[5788],{"type":1878,"value":5789}," VkDescriptorMappingSourceShaderRecordIndexEXT {\n",{"type":1873,"tag":2163,"props":5791,"children":5792},{"class":2165,"line":1046},[5793,5797],{"type":1873,"tag":2163,"props":5794,"children":5795},{"style":2169},[5796],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5798,"children":5799},{"style":2180},[5800],{"type":1878,"value":5185},{"type":1873,"tag":2163,"props":5802,"children":5803},{"class":2165,"line":1199},[5804,5808],{"type":1873,"tag":2163,"props":5805,"children":5806},{"style":2169},[5807],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5809,"children":5810},{"style":2180},[5811],{"type":1878,"value":5812}," shaderRecordOffset;\n",{"type":1873,"tag":2163,"props":5814,"children":5815},{"class":2165,"line":1103},[5816,5820],{"type":1873,"tag":2163,"props":5817,"children":5818},{"style":2169},[5819],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5821,"children":5822},{"style":2180},[5823],{"type":1878,"value":5307},{"type":1873,"tag":2163,"props":5825,"children":5827},{"class":2165,"line":5826},87,[5828,5832],{"type":1873,"tag":2163,"props":5829,"children":5830},{"style":2169},[5831],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5833,"children":5834},{"style":2180},[5835],{"type":1878,"value":5197},{"type":1873,"tag":2163,"props":5837,"children":5838},{"class":2165,"line":1537},[5839,5843,5847,5851],{"type":1873,"tag":2163,"props":5840,"children":5841},{"style":2169},[5842],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":5844,"children":5845},{"style":2180},[5846],{"type":1878,"value":2737},{"type":1873,"tag":2163,"props":5848,"children":5849},{"style":2169},[5850],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":5852,"children":5853},{"style":2180},[5854],{"type":1878,"value":5217},{"type":1873,"tag":2163,"props":5856,"children":5857},{"class":2165,"line":538},[5858],{"type":1873,"tag":2163,"props":5859,"children":5860},{"style":2180},[5861],{"type":1878,"value":5345},{"type":1873,"tag":2163,"props":5863,"children":5864},{"class":2165,"line":419},[5865,5869],{"type":1873,"tag":2163,"props":5866,"children":5867},{"style":2169},[5868],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5870,"children":5871},{"style":2180},[5872],{"type":1878,"value":5229},{"type":1873,"tag":2163,"props":5874,"children":5875},{"class":2165,"line":554},[5876,5880],{"type":1873,"tag":2163,"props":5877,"children":5878},{"style":2169},[5879],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5881,"children":5882},{"style":2180},[5883],{"type":1878,"value":5884}," samplerShaderRecordOffset;\n",{"type":1873,"tag":2163,"props":5886,"children":5887},{"class":2165,"line":550},[5888,5892],{"type":1873,"tag":2163,"props":5889,"children":5890},{"style":2169},[5891],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5893,"children":5894},{"style":2180},[5895],{"type":1878,"value":5380},{"type":1873,"tag":2163,"props":5897,"children":5898},{"class":2165,"line":994},[5899,5903],{"type":1873,"tag":2163,"props":5900,"children":5901},{"style":2169},[5902],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5904,"children":5905},{"style":2180},[5906],{"type":1878,"value":5241},{"type":1873,"tag":2163,"props":5908,"children":5910},{"class":2165,"line":5909},94,[5911],{"type":1873,"tag":2163,"props":5912,"children":5913},{"style":2180},[5914],{"type":1878,"value":5915},"} VkDescriptorMappingSourceShaderRecordIndexEXT;\n",{"type":1873,"tag":2163,"props":5917,"children":5918},{"class":2165,"line":1726},[5919],{"type":1873,"tag":2163,"props":5920,"children":5921},{"emptyLinePlaceholder":232},[5922],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5924,"children":5925},{"class":2165,"line":1651},[5926,5930,5934],{"type":1873,"tag":2163,"props":5927,"children":5928},{"style":2169},[5929],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5931,"children":5932},{"style":2169},[5933],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":5935,"children":5936},{"style":2180},[5937],{"type":1878,"value":5938}," VkDescriptorMappingSourceIndirectAddressEXT {\n",{"type":1873,"tag":2163,"props":5940,"children":5941},{"class":2165,"line":1747},[5942,5946],{"type":1873,"tag":2163,"props":5943,"children":5944},{"style":2169},[5945],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5947,"children":5948},{"style":2180},[5949],{"type":1878,"value":5295},{"type":1873,"tag":2163,"props":5951,"children":5952},{"class":2165,"line":1529},[5953,5957],{"type":1873,"tag":2163,"props":5954,"children":5955},{"style":2169},[5956],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":5958,"children":5959},{"style":2180},[5960],{"type":1878,"value":5456},{"type":1873,"tag":2163,"props":5962,"children":5963},{"class":2165,"line":1750},[5964],{"type":1873,"tag":2163,"props":5965,"children":5966},{"style":2180},[5967],{"type":1878,"value":5968},"} VkDescriptorMappingSourceIndirectAddressEXT;\n",{"type":1873,"tag":2163,"props":5970,"children":5971},{"class":2165,"line":547},[5972],{"type":1873,"tag":2163,"props":5973,"children":5974},{"emptyLinePlaceholder":232},[5975],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":5977,"children":5979},{"class":2165,"line":5978},101,[5980,5984,5988],{"type":1873,"tag":2163,"props":5981,"children":5982},{"style":2169},[5983],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":5985,"children":5986},{"style":2169},[5987],{"type":1878,"value":2498},{"type":1873,"tag":2163,"props":5989,"children":5990},{"style":2180},[5991],{"type":1878,"value":5992}," VkDescriptorMappingSourceDataEXT {\n",{"type":1873,"tag":2163,"props":5994,"children":5995},{"class":2165,"line":465},[5996],{"type":1873,"tag":2163,"props":5997,"children":5998},{"style":2180},[5999],{"type":1878,"value":6000}," VkDescriptorMappingSourceConstantOffsetEXT constantOffset;\n",{"type":1873,"tag":2163,"props":6002,"children":6003},{"class":2165,"line":503},[6004],{"type":1873,"tag":2163,"props":6005,"children":6006},{"style":2180},[6007],{"type":1878,"value":6008}," VkDescriptorMappingSourcePushIndexEXT pushIndex;\n",{"type":1873,"tag":2163,"props":6010,"children":6012},{"class":2165,"line":6011},104,[6013],{"type":1873,"tag":2163,"props":6014,"children":6015},{"style":2180},[6016],{"type":1878,"value":6017}," VkDescriptorMappingSourceIndirectIndexEXT indirectIndex;\n",{"type":1873,"tag":2163,"props":6019,"children":6020},{"class":2165,"line":908},[6021],{"type":1873,"tag":2163,"props":6022,"children":6023},{"style":2180},[6024],{"type":1878,"value":6025}," VkDescriptorMappingSourceIndirectIndexArrayEXT indirectIndexArray;\n",{"type":1873,"tag":2163,"props":6027,"children":6028},{"class":2165,"line":628},[6029],{"type":1873,"tag":2163,"props":6030,"children":6031},{"style":2180},[6032],{"type":1878,"value":6033}," VkDescriptorMappingSourceHeapDataEXT heapData;\n",{"type":1873,"tag":2163,"props":6035,"children":6037},{"class":2165,"line":6036},107,[6038,6042],{"type":1873,"tag":2163,"props":6039,"children":6040},{"style":2169},[6041],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6043,"children":6044},{"style":2180},[6045],{"type":1878,"value":6046}," pushDataOffset;\n",{"type":1873,"tag":2163,"props":6048,"children":6050},{"class":2165,"line":6049},108,[6051,6055],{"type":1873,"tag":2163,"props":6052,"children":6053},{"style":2169},[6054],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6056,"children":6057},{"style":2180},[6058],{"type":1878,"value":6059}," pushAddressOffset;\n",{"type":1873,"tag":2163,"props":6061,"children":6062},{"class":2165,"line":1195},[6063],{"type":1873,"tag":2163,"props":6064,"children":6065},{"style":2180},[6066],{"type":1878,"value":6067}," VkDescriptorMappingSourceIndirectAddressEXT indirectAddress;\n",{"type":1873,"tag":2163,"props":6069,"children":6070},{"class":2165,"line":1083},[6071],{"type":1873,"tag":2163,"props":6072,"children":6073},{"style":2180},[6074],{"type":1878,"value":6075}," VkDescriptorMappingSourceShaderRecordIndexEXT shaderRecordIndex;\n",{"type":1873,"tag":2163,"props":6077,"children":6078},{"class":2165,"line":1034},[6079,6083],{"type":1873,"tag":2163,"props":6080,"children":6081},{"style":2169},[6082],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6084,"children":6085},{"style":2180},[6086],{"type":1878,"value":6087}," shaderRecordDataOffset;\n",{"type":1873,"tag":2163,"props":6089,"children":6090},{"class":2165,"line":1383},[6091,6095],{"type":1873,"tag":2163,"props":6092,"children":6093},{"style":2169},[6094],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6096,"children":6097},{"style":2180},[6098],{"type":1878,"value":6099}," shaderRecordAddressOffset;\n",{"type":1873,"tag":2163,"props":6101,"children":6102},{"class":2165,"line":1134},[6103],{"type":1873,"tag":2163,"props":6104,"children":6105},{"style":2180},[6106],{"type":1878,"value":6107},"} VkDescriptorMappingSourceDataEXT;\n",{"type":1873,"tag":2163,"props":6109,"children":6110},{"class":2165,"line":1130},[6111],{"type":1873,"tag":2163,"props":6112,"children":6113},{"emptyLinePlaceholder":232},[6114],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":6116,"children":6117},{"class":2165,"line":1140},[6118,6122,6126],{"type":1873,"tag":2163,"props":6119,"children":6120},{"style":2169},[6121],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":6123,"children":6124},{"style":2169},[6125],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":6127,"children":6128},{"style":2180},[6129],{"type":1878,"value":6130}," VkDescriptorSetAndBindingMappingEXT {\n",{"type":1873,"tag":2163,"props":6132,"children":6133},{"class":2165,"line":1136},[6134],{"type":1873,"tag":2163,"props":6135,"children":6136},{"style":2180},[6137],{"type":1878,"value":6138}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":6140,"children":6141},{"class":2165,"line":1249},[6142,6146,6150],{"type":1873,"tag":2163,"props":6143,"children":6144},{"style":2169},[6145],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":6147,"children":6148},{"style":2169},[6149],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":6151,"children":6152},{"style":2180},[6153],{"type":1878,"value":6154}," pNext;\n",{"type":1873,"tag":2163,"props":6156,"children":6157},{"class":2165,"line":1216},[6158,6162],{"type":1873,"tag":2163,"props":6159,"children":6160},{"style":2169},[6161],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6163,"children":6164},{"style":2180},[6165],{"type":1878,"value":6166}," descriptorSet;\n",{"type":1873,"tag":2163,"props":6168,"children":6170},{"class":2165,"line":6169},119,[6171,6175],{"type":1873,"tag":2163,"props":6172,"children":6173},{"style":2169},[6174],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6176,"children":6177},{"style":2180},[6178],{"type":1878,"value":6179}," firstBinding;\n",{"type":1873,"tag":2163,"props":6181,"children":6182},{"class":2165,"line":1187},[6183,6187],{"type":1873,"tag":2163,"props":6184,"children":6185},{"style":2169},[6186],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6188,"children":6189},{"style":2180},[6190],{"type":1878,"value":6191}," bindingCount;\n",{"type":1873,"tag":2163,"props":6193,"children":6194},{"class":2165,"line":1422},[6195],{"type":1873,"tag":2163,"props":6196,"children":6197},{"style":2180},[6198],{"type":1878,"value":6199}," VkSpirvResourceTypeFlagsEXT resourceMask;\n",{"type":1873,"tag":2163,"props":6201,"children":6202},{"class":2165,"line":1178},[6203],{"type":1873,"tag":2163,"props":6204,"children":6205},{"style":2180},[6206],{"type":1878,"value":6207}," VkDescriptorMappingSourceEXT source;\n",{"type":1873,"tag":2163,"props":6209,"children":6210},{"class":2165,"line":1508},[6211],{"type":1873,"tag":2163,"props":6212,"children":6213},{"style":2180},[6214],{"type":1878,"value":6215}," VkDescriptorMappingSourceDataEXT sourceData;\n",{"type":1873,"tag":2163,"props":6217,"children":6218},{"class":2165,"line":1513},[6219],{"type":1873,"tag":2163,"props":6220,"children":6221},{"style":2180},[6222],{"type":1878,"value":6223},"} VkDescriptorSetAndBindingMappingEXT;\n",{"type":1873,"tag":2163,"props":6225,"children":6227},{"class":2165,"line":6226},125,[6228],{"type":1873,"tag":2163,"props":6229,"children":6230},{"emptyLinePlaceholder":232},[6231],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":6233,"children":6234},{"class":2165,"line":575},[6235,6239,6243],{"type":1873,"tag":2163,"props":6236,"children":6237},{"style":2169},[6238],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":6240,"children":6241},{"style":2169},[6242],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":6244,"children":6245},{"style":2180},[6246],{"type":1878,"value":6247}," VkShaderDescriptorSetAndBindingMappingInfoEXT {\n",{"type":1873,"tag":2163,"props":6249,"children":6250},{"class":2165,"line":812},[6251],{"type":1873,"tag":2163,"props":6252,"children":6253},{"style":2180},[6254],{"type":1878,"value":6138},{"type":1873,"tag":2163,"props":6256,"children":6257},{"class":2165,"line":1088},[6258,6262,6266],{"type":1873,"tag":2163,"props":6259,"children":6260},{"style":2169},[6261],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":6263,"children":6264},{"style":2169},[6265],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":6267,"children":6268},{"style":2180},[6269],{"type":1878,"value":6154},{"type":1873,"tag":2163,"props":6271,"children":6272},{"class":2165,"line":483},[6273,6277],{"type":1873,"tag":2163,"props":6274,"children":6275},{"style":2169},[6276],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":6278,"children":6279},{"style":2180},[6280],{"type":1878,"value":6281}," mappingCount;\n",{"type":1873,"tag":2163,"props":6283,"children":6284},{"class":2165,"line":360},[6285,6289,6294,6298],{"type":1873,"tag":2163,"props":6286,"children":6287},{"style":2169},[6288],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":6290,"children":6291},{"style":2180},[6292],{"type":1878,"value":6293}," VkDescriptorSetAndBindingMappingEXT",{"type":1873,"tag":2163,"props":6295,"children":6296},{"style":2169},[6297],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":6299,"children":6300},{"style":2180},[6301],{"type":1878,"value":6302}," pMappings;\n",{"type":1873,"tag":2163,"props":6304,"children":6305},{"class":2165,"line":833},[6306],{"type":1873,"tag":2163,"props":6307,"children":6308},{"style":2180},[6309],{"type":1878,"value":6310},"} VkShaderDescriptorSetAndBindingMappingInfoEXT;\n",{"type":1873,"tag":1874,"props":6312,"children":6313},{},[6314,6320,6322,6327,6328,6335,6337,6344,6346,6351,6352,6357],{"type":1873,"tag":2159,"props":6315,"children":6317},{"className":6316},[],[6318],{"type":1878,"value":6319},"VkShaderDescriptorSetAndBindingMappingInfoEXT",{"type":1878,"value":6321}," can be chained to the ",{"type":1873,"tag":2159,"props":6323,"children":6325},{"className":6324},[],[6326],{"type":1878,"value":3340},{"type":1878,"value":3342},{"type":1873,"tag":1921,"props":6329,"children":6332},{"href":6330,"rel":6331},"https://docs.vulkan.org/spec/latest/pipelines.html#VkPipelineShaderStageCreateInfo",[1925],[6333],{"type":1878,"value":6334},"VkPipelineShaderStageCreateInfo",{"type":1878,"value":6336}," or ",{"type":1873,"tag":1921,"props":6338,"children":6341},{"href":6339,"rel":6340},"https://docs.vulkan.org/spec/latest/shaders.html#VkShaderCreateInfoEXT",[1925],[6342],{"type":1878,"value":6343},"VkShaderCreateInfoEXT",{"type":1878,"value":6345}," to indicate where resources with ",{"type":1873,"tag":2159,"props":6347,"children":6349},{"className":6348},[],[6350],{"type":1878,"value":3197},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":6353,"children":6355},{"className":6354},[],[6356],{"type":1878,"value":3205},{"type":1878,"value":6358}," decorations should be sourced from for that shader.\nIf the shader declares any resource variables with set and binding values, this structure must specify mappings for them.",{"type":1873,"tag":1874,"props":6360,"children":6361},{},[6362,6364,6370,6372,6377,6379,6384,6386,6391],{"type":1878,"value":6363},"Elements of ",{"type":1873,"tag":2159,"props":6365,"children":6367},{"className":6366},[],[6368],{"type":1878,"value":6369},"pMappings",{"type":1878,"value":6371}," define for a single ",{"type":1873,"tag":2159,"props":6373,"children":6375},{"className":6374},[],[6376],{"type":1878,"value":3197},{"type":1878,"value":6378}," value and a range of ",{"type":1873,"tag":2159,"props":6380,"children":6382},{"className":6381},[],[6383],{"type":1878,"value":3205},{"type":1878,"value":6385}," values where the resources at those bindings are sourced from.\nEach element of ",{"type":1873,"tag":2159,"props":6387,"children":6389},{"className":6388},[],[6390],{"type":1878,"value":6369},{"type":1878,"value":6392}," must specify a unique set of bindings.\nEach entry specifies the following values:",{"type":1873,"tag":1892,"props":6394,"children":6395},{},[6396,6414,6439,6450,6461],{"type":1873,"tag":1896,"props":6397,"children":6398},{},[6399,6405,6407,6412],{"type":1873,"tag":2159,"props":6400,"children":6402},{"className":6401},[],[6403],{"type":1878,"value":6404},"descriptorSet",{"type":1878,"value":6406}," identifies the ",{"type":1873,"tag":2159,"props":6408,"children":6410},{"className":6409},[],[6411],{"type":1878,"value":3197},{"type":1878,"value":6413}," identifier that it refers to.",{"type":1873,"tag":1896,"props":6415,"children":6416},{},[6417,6423,6424,6430,6432,6437],{"type":1873,"tag":2159,"props":6418,"children":6420},{"className":6419},[],[6421],{"type":1878,"value":6422},"firstBinding",{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":6425,"children":6427},{"className":6426},[],[6428],{"type":1878,"value":6429},"bindingCount",{"type":1878,"value":6431}," define the range of ",{"type":1873,"tag":2159,"props":6433,"children":6435},{"className":6434},[],[6436],{"type":1878,"value":3205},{"type":1878,"value":6438}," values that the mapping refers to.",{"type":1873,"tag":1896,"props":6440,"children":6441},{},[6442,6448],{"type":1873,"tag":2159,"props":6443,"children":6445},{"className":6444},[],[6446],{"type":1878,"value":6447},"resourceMask",{"type":1878,"value":6449}," identifies the SPIR-V resource declarations that are mapped by this binding.",{"type":1873,"tag":1896,"props":6451,"children":6452},{},[6453,6459],{"type":1873,"tag":2159,"props":6454,"children":6456},{"className":6455},[],[6457],{"type":1878,"value":6458},"source",{"type":1878,"value":6460}," identifies how each resource is backed.",{"type":1873,"tag":1896,"props":6462,"children":6463},{},[6464,6470,6472,6477],{"type":1873,"tag":2159,"props":6465,"children":6467},{"className":6466},[],[6468],{"type":1878,"value":6469},"sourceData",{"type":1878,"value":6471}," is a union of values used to determine how each resource is backed, according to ",{"type":1873,"tag":2159,"props":6473,"children":6475},{"className":6474},[],[6476],{"type":1878,"value":6458},{"type":1878,"value":2077},{"type":1873,"tag":2025,"props":6479,"children":6480},{},[6481,6486,6587],{"type":1873,"tag":1874,"props":6482,"children":6483},{},[6484],{"type":1878,"value":6485},"The actual declarations present in the shader being mapped do not affect the\nmappings here.\nIf a binding is present here but missing in the shader, that is fine, and\ndeliberately allowed as it enables applications to reuse the same mappings\nacross multiple shaders.\nAdditionally, array declarations in the shader do not affect the way multiple\nbindings are mapped; each binding always calculates its own offsets from the\nbase.\nThis means that for instance, a shader declaring",{"type":1873,"tag":2151,"props":6487,"children":6491},{"className":6488,"code":6489,"language":6490,"meta":2156,"style":2156},"language-glsl shiki shiki-themes github-light-default github-dark-default","layout(binding = 0) uniform sampler2D foo[8];\nlayout(binding = 2) uniform sampler2D bar;\n","glsl",[6492],{"type":1873,"tag":2159,"props":6493,"children":6494},{"__ignoreMap":2156},[6495,6551],{"type":1873,"tag":2163,"props":6496,"children":6497},{"class":2165,"line":10},[6498,6503,6508,6512,6516,6521,6526,6531,6536,6541,6546],{"type":1873,"tag":2163,"props":6499,"children":6500},{"style":2682},[6501],{"type":1878,"value":6502},"layout",{"type":1873,"tag":2163,"props":6504,"children":6505},{"style":2180},[6506],{"type":1878,"value":6507},"(binding ",{"type":1873,"tag":2163,"props":6509,"children":6510},{"style":2169},[6511],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":6513,"children":6514},{"style":3995},[6515],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":6517,"children":6518},{"style":2180},[6519],{"type":1878,"value":6520},") ",{"type":1873,"tag":2163,"props":6522,"children":6523},{"style":2169},[6524],{"type":1878,"value":6525},"uniform",{"type":1873,"tag":2163,"props":6527,"children":6528},{"style":2169},[6529],{"type":1878,"value":6530}," sampler2D",{"type":1873,"tag":2163,"props":6532,"children":6533},{"style":2701},[6534],{"type":1878,"value":6535}," foo",{"type":1873,"tag":2163,"props":6537,"children":6538},{"style":2180},[6539],{"type":1878,"value":6540},"[",{"type":1873,"tag":2163,"props":6542,"children":6543},{"style":3995},[6544],{"type":1878,"value":6545},"8",{"type":1873,"tag":2163,"props":6547,"children":6548},{"style":2180},[6549],{"type":1878,"value":6550},"];\n",{"type":1873,"tag":2163,"props":6552,"children":6553},{"class":2165,"line":14},[6554,6558,6562,6566,6570,6574,6578,6582],{"type":1873,"tag":2163,"props":6555,"children":6556},{"style":2682},[6557],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":6559,"children":6560},{"style":2180},[6561],{"type":1878,"value":6507},{"type":1873,"tag":2163,"props":6563,"children":6564},{"style":2169},[6565],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":6567,"children":6568},{"style":3995},[6569],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":6571,"children":6572},{"style":2180},[6573],{"type":1878,"value":6520},{"type":1873,"tag":2163,"props":6575,"children":6576},{"style":2169},[6577],{"type":1878,"value":6525},{"type":1873,"tag":2163,"props":6579,"children":6580},{"style":2169},[6581],{"type":1878,"value":6530},{"type":1873,"tag":2163,"props":6583,"children":6584},{"style":2180},[6585],{"type":1878,"value":6586}," bar;\n",{"type":1873,"tag":1874,"props":6588,"children":6589},{},[6590,6592,6597,6599,6604,6606,6612,6613,6619],{"type":1878,"value":6591},"with a mapping declared with ",{"type":1873,"tag":2159,"props":6593,"children":6595},{"className":6594},[],[6596],{"type":1878,"value":6422},{"type":1878,"value":6598}," equal to 0 and ",{"type":1873,"tag":2159,"props":6600,"children":6602},{"className":6601},[],[6603],{"type":1878,"value":6429},{"type":1878,"value":6605},"\nequal to 3, would result in ",{"type":1873,"tag":2159,"props":6607,"children":6609},{"className":6608},[],[6610],{"type":1878,"value":6611},"foo[2]",{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":6614,"children":6616},{"className":6615},[],[6617],{"type":1878,"value":6618},"bar",{"type":1878,"value":6620}," being mapped to the same\nsource.",{"type":1873,"tag":1874,"props":6622,"children":6623},{},[6624,6626,6631],{"type":1878,"value":6625},"The types of shader resource declarations mapped by a binding are determined by the flags set in ",{"type":1873,"tag":2159,"props":6627,"children":6629},{"className":6628},[],[6630],{"type":1878,"value":6447},{"type":1878,"value":6632},", defined as follows:",{"type":1873,"tag":1892,"props":6634,"children":6635},{},[6636,6647,6658,6669,6680,6691,6702,6713,6724,6735],{"type":1873,"tag":1896,"props":6637,"children":6638},{},[6639,6645],{"type":1873,"tag":2159,"props":6640,"children":6642},{"className":6641},[],[6643],{"type":1878,"value":6644},"VK_SPIRV_RESOURCE_TYPE_ALL_EXT",{"type":1878,"value":6646}," indicates that all resource declarations are included.",{"type":1873,"tag":1896,"props":6648,"children":6649},{},[6650,6656],{"type":1873,"tag":2159,"props":6651,"children":6653},{"className":6652},[],[6654],{"type":1878,"value":6655},"VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT",{"type":1878,"value":6657}," specifies samplers.",{"type":1873,"tag":1896,"props":6659,"children":6660},{},[6661,6667],{"type":1873,"tag":2159,"props":6662,"children":6664},{"className":6663},[],[6665],{"type":1878,"value":6666},"VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT",{"type":1878,"value":6668}," specifies sampled images",{"type":1873,"tag":1896,"props":6670,"children":6671},{},[6672,6678],{"type":1873,"tag":2159,"props":6673,"children":6675},{"className":6674},[],[6676],{"type":1878,"value":6677},"VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT",{"type":1878,"value":6679}," specifies read-only storage images.",{"type":1873,"tag":1896,"props":6681,"children":6682},{},[6683,6689],{"type":1873,"tag":2159,"props":6684,"children":6686},{"className":6685},[],[6687],{"type":1878,"value":6688},"VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT",{"type":1878,"value":6690}," specifies writable storage images.",{"type":1873,"tag":1896,"props":6692,"children":6693},{},[6694,6700],{"type":1873,"tag":2159,"props":6695,"children":6697},{"className":6696},[],[6698],{"type":1878,"value":6699},"VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT",{"type":1878,"value":6701}," specifies combined sampled image variables",{"type":1873,"tag":1896,"props":6703,"children":6704},{},[6705,6711],{"type":1873,"tag":2159,"props":6706,"children":6708},{"className":6707},[],[6709],{"type":1878,"value":6710},"VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT",{"type":1878,"value":6712}," specifies uniform buffer blocks",{"type":1873,"tag":1896,"props":6714,"children":6715},{},[6716,6722],{"type":1873,"tag":2159,"props":6717,"children":6719},{"className":6718},[],[6720],{"type":1878,"value":6721},"VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT",{"type":1878,"value":6723}," specifies read-only storage buffer blocks",{"type":1873,"tag":1896,"props":6725,"children":6726},{},[6727,6733],{"type":1873,"tag":2159,"props":6728,"children":6730},{"className":6729},[],[6731],{"type":1878,"value":6732},"VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT",{"type":1878,"value":6734}," specifies writable storage buffer blocks",{"type":1873,"tag":1896,"props":6736,"children":6737},{},[6738,6744],{"type":1873,"tag":2159,"props":6739,"children":6741},{"className":6740},[],[6742],{"type":1878,"value":6743},"VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT",{"type":1878,"value":6745}," specifies acceleration structures",{"type":1873,"tag":1874,"props":6747,"children":6748},{},[6749],{"type":1878,"value":6750},"All resource types specified in the mask and present in the binding range will be mapped.",{"type":1873,"tag":1874,"props":6752,"children":6753},{},[6754],{"type":1878,"value":6755},"The various mapping types are described below.\nDetails of the exact nature of the mappings are provided in the specification, including equations for how to work out the actual descriptor offset for a mapping.",{"type":1873,"tag":2025,"props":6757,"children":6758},{},[6759],{"type":1873,"tag":1874,"props":6760,"children":6761},{},[6762],{"type":1878,"value":6763},"With the exception of embedded samplers and input attachments, most mappings can be performed equivalently by transforming the supplied SPIR-V outside of the API. If a desired mapping is not present in the API, it can be mapped outside of Vulkan using a custom SPIR-V tools pass.",{"type":1873,"tag":1874,"props":6765,"children":6766},{},[6767,6772],{"type":1873,"tag":2159,"props":6768,"children":6770},{"className":6769},[],[6771],{"type":1878,"value":6319},{"type":1878,"value":6773}," is ignored if the shader or pipeline is created with a pipeline layout or descriptor layouts.",{"type":1873,"tag":6775,"props":6776,"children":6778},"h6",{"id":6777},"vk_descriptor_mapping_source_heap_with_constant_offset_ext",[6779],{"type":1873,"tag":2159,"props":6780,"children":6782},{"className":6781},[],[6783],{"type":1878,"value":6784},"VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT",{"type":1873,"tag":1874,"props":6786,"children":6787},{},[6788,6790,6796,6798,6804,6806,6811,6812,6817,6818,6823],{"type":1878,"value":6789},"This is the simplest mapping available, it indicates that a resource is available in its appropriate descriptor heap at a supplied constant byte offset (",{"type":1873,"tag":2159,"props":6791,"children":6793},{"className":6792},[],[6794],{"type":1878,"value":6795},"heapOffset",{"type":1878,"value":6797},").\nIf an array of bindings are specified, each subsequent binding is offset by ",{"type":1873,"tag":2159,"props":6799,"children":6801},{"className":6800},[],[6802],{"type":1878,"value":6803},"heapArrayStride",{"type":1878,"value":6805},".\nIf a binding is itself an array, each subsequent shader index is offset by ",{"type":1873,"tag":2159,"props":6807,"children":6809},{"className":6808},[],[6810],{"type":1878,"value":6803},{"type":1878,"value":3225},{"type":1873,"tag":2159,"props":6813,"children":6815},{"className":6814},[],[6816],{"type":1878,"value":6795},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":6819,"children":6821},{"className":6820},[],[6822],{"type":1878,"value":6803},{"type":1878,"value":6824}," must both be aligned to the descriptor sizes used by each binding.",{"type":1873,"tag":1874,"props":6826,"children":6827},{},[6828],{"type":1878,"value":6829},"Accessing a resource binding in the shader with a shader binding equal to that specified here is equivalent to accessing a resource in its respective heap at the calculated offset directly.",{"type":1873,"tag":2025,"props":6831,"children":6832},{},[6833],{"type":1873,"tag":1874,"props":6834,"children":6835},{},[6836],{"type":1878,"value":6837},"Care should be taken when applying this to a range of bindings; how mappings are applied does not change based on whether any of the shader’s bindings are declared as arrays.\nIf a mapping range includes a binding X and X+1, and binding X is specified in the shader as an array, the second element of binding X’s array will alias with binding X+1.\nThis lack of variance is deliberate, such that the same mappings can be used consistently across a range of different shaders, without depending on what was declared in the shader.",{"type":1873,"tag":1874,"props":6839,"children":6840},{},[6841],{"type":1878,"value":6842},"The heap which is accessed by these mappings will depend on the type of resource accessed; samplers will come from the sampler heap, resources from the resource heap.",{"type":1873,"tag":6775,"props":6844,"children":6846},{"id":6845},"vk_descriptor_mapping_source_heap_with_push_index_ext",[6847],{"type":1873,"tag":2159,"props":6848,"children":6850},{"className":6849},[],[6851],{"type":1878,"value":6852},"VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT",{"type":1873,"tag":1874,"props":6854,"children":6855},{},[6856,6858,6863,6865,6871,6873,6879,6881,6886],{"type":1878,"value":6857},"This mapping functions similarly to the constant index, except that an index in push data is also provided to calculate the final offset.\nA constant ",{"type":1873,"tag":2159,"props":6859,"children":6861},{"className":6860},[],[6862],{"type":1878,"value":6795},{"type":1878,"value":6864}," is still supplied, but the ",{"type":1873,"tag":2159,"props":6866,"children":6868},{"className":6867},[],[6869],{"type":1878,"value":6870},"pushOffset",{"type":1878,"value":6872}," value indicates an offset into push data where an additional index will be sourced at shader execution time.\nThe index in push data is multiplied by ",{"type":1873,"tag":2159,"props":6874,"children":6876},{"className":6875},[],[6877],{"type":1878,"value":6878},"heapIndexStride",{"type":1878,"value":6880}," and added to ",{"type":1873,"tag":2159,"props":6882,"children":6884},{"className":6883},[],[6885],{"type":1878,"value":6795},{"type":1878,"value":6887}," and the calculated shader offset to calculate the final location of the descriptor.",{"type":1873,"tag":2025,"props":6889,"children":6890},{},[6891],{"type":1873,"tag":1874,"props":6892,"children":6893},{},[6894,6896,6901,6903,6908,6910,6915,6917,6923],{"type":1878,"value":6895},"This mapping can be used to emulate the descriptor set interface; by mapping all bindings for a ",{"type":1873,"tag":2159,"props":6897,"children":6899},{"className":6898},[],[6900],{"type":1878,"value":3197},{"type":1878,"value":6902}," to the same push index, but differing the ",{"type":1873,"tag":2159,"props":6904,"children":6906},{"className":6905},[],[6907],{"type":1878,"value":6795},{"type":1878,"value":6909}," for each ",{"type":1873,"tag":2159,"props":6911,"children":6913},{"className":6912},[],[6914],{"type":1878,"value":3205},{"type":1878,"value":6916},", the push index becomes the descriptor set offset. See ",{"type":1873,"tag":1921,"props":6918,"children":6920},{"href":6919},"/404#_example_simple_resource_bindings",[6921],{"type":1878,"value":6922},"_example_simple_resource_bindings",{"type":1878,"value":6924}," for an illustration of this.",{"type":1873,"tag":2025,"props":6926,"children":6927},{},[6928],{"type":1873,"tag":1874,"props":6929,"children":6930},{},[6931,6933,6939],{"type":1878,"value":6932},"This mapping can also be used to emulate push descriptors, by instead using a different push index for every push descriptor slot, and pushing the heap index corresponding to the push resource into push data.\nSee ",{"type":1873,"tag":1921,"props":6934,"children":6936},{"href":6935},"/404#_example_push_descriptors",[6937],{"type":1878,"value":6938},"_example_push_descriptors",{"type":1878,"value":6940}," for an illustration of how to do this.",{"type":1873,"tag":6775,"props":6942,"children":6944},{"id":6943},"vk_descriptor_mapping_source_heap_with_indirect_index_ext",[6945],{"type":1873,"tag":2159,"props":6946,"children":6948},{"className":6947},[],[6949],{"type":1878,"value":6950},"VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT",{"type":1873,"tag":1874,"props":6952,"children":6953},{},[6954,6956,6961,6963,6969,6971,6976],{"type":1878,"value":6955},"This mapping is another indirection beyond ",{"type":1873,"tag":2159,"props":6957,"children":6959},{"className":6958},[],[6960],{"type":1878,"value":6852},{"type":1878,"value":6962},", specifying the location of a heap index in device memory, rather than from push data.\nA device address is sourced from push data, indicating a base address for the memory location.\n",{"type":1873,"tag":2159,"props":6964,"children":6966},{"className":6965},[],[6967],{"type":1878,"value":6968},"addressOffset",{"type":1878,"value":6970}," is a static offset added to the device address in push data, at which a single additional index is read from for all bindings in this specific mapping.\nApplications can use ",{"type":1873,"tag":2159,"props":6972,"children":6974},{"className":6973},[],[6975],{"type":1878,"value":6968},{"type":1878,"value":6977}," to use a single address in push data for multiple mapping structures, as each can have independently set constant offsets.",{"type":1873,"tag":2025,"props":6979,"children":6980},{},[6981],{"type":1873,"tag":1874,"props":6982,"children":6983},{},[6984,6986,6991],{"type":1878,"value":6985},"This mapping can be used as a way to spill additional resource’s push data if not enough push data is available for the application’s use case, and is otherwise used similarly to ",{"type":1873,"tag":2159,"props":6987,"children":6989},{"className":6988},[],[6990],{"type":1878,"value":6852},{"type":1878,"value":2077},{"type":1873,"tag":6775,"props":6993,"children":6995},{"id":6994},"vk_descriptor_mapping_source_heap_with_indirect_index_array_ext",[6996],{"type":1873,"tag":2159,"props":6997,"children":6999},{"className":6998},[],[7000],{"type":1878,"value":7001},"VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT",{"type":1873,"tag":1874,"props":7003,"children":7004},{},[7005,7007,7012],{"type":1878,"value":7006},"This is similar to ",{"type":1873,"tag":2159,"props":7008,"children":7010},{"className":7009},[],[7011],{"type":1878,"value":6950},{"type":1878,"value":7013},", but a descriptor array at the specified binding is mapped to an array of indices in device memory, rather than bound as offsets from a single index.\nFor an array size of 1, there is no difference in behavior.",{"type":1873,"tag":1874,"props":7015,"children":7016},{},[7017],{"type":1878,"value":7018},"This can be particularly useful for managing samplers as push descriptors, where the number of samplers in the heap is tightly limited; it sacrifices space in the indirect memory to allow more flexible/compact use of heap memory.",{"type":1873,"tag":6775,"props":7020,"children":7022},{"id":7021},"vk_descriptor_mapping_source_resource_heap_data_ext",[7023],{"type":1873,"tag":2159,"props":7024,"children":7026},{"className":7025},[],[7027],{"type":1878,"value":7028},"VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT",{"type":1873,"tag":1874,"props":7030,"children":7031},{},[7032,7034,7039,7041,7046],{"type":1878,"value":7033},"This mapping enables an application to map data in the heap to a uniform buffer binding in the shader.\n",{"type":1873,"tag":2159,"props":7035,"children":7037},{"className":7036},[],[7038],{"type":1878,"value":6795},{"type":1878,"value":7040}," indicates the base offset into the resource heap where the constant data is sourced from, with ",{"type":1873,"tag":2159,"props":7042,"children":7044},{"className":7043},[],[7045],{"type":1878,"value":6870},{"type":1878,"value":7047}," indicating the location of an additional offset sourced from push data added to that at the point the shader is executed.\nAny shader resource mapped in this way will access memory directly in the heap instead of via a descriptor.\nThere are no robust access guarantees to resources specified in this way; applications must not access these resources at out of bounds locations.\nOther resources cannot be mapped with this mapping.",{"type":1873,"tag":2025,"props":7049,"children":7050},{},[7051],{"type":1873,"tag":1874,"props":7052,"children":7053},{},[7054],{"type":1878,"value":7055},"This mapping is similar in use to inline uniform blocks.",{"type":1873,"tag":6775,"props":7057,"children":7059},{"id":7058},"vk_descriptor_mapping_source_push_data_ext",[7060],{"type":1873,"tag":2159,"props":7061,"children":7063},{"className":7062},[],[7064],{"type":1878,"value":7065},"VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT",{"type":1873,"tag":1874,"props":7067,"children":7068},{},[7069,7071,7076,7078,7083,7085,7091],{"type":1878,"value":7070},"Similar to ",{"type":1873,"tag":2159,"props":7072,"children":7074},{"className":7073},[],[7075],{"type":1878,"value":7028},{"type":1878,"value":7077},", but this allows mapping to push data.\n",{"type":1873,"tag":2159,"props":7079,"children":7081},{"className":7080},[],[7082],{"type":1878,"value":6870},{"type":1878,"value":7084}," indicates the offset into push data where the start of the resource is mapped.\nThe shader resource declaration must not extend beyond ",{"type":1873,"tag":2159,"props":7086,"children":7088},{"className":7087},[],[7089],{"type":1878,"value":7090},"maxPushDataSize - pushOffset",{"type":1878,"value":7092},".\nThere are no robust access guarantees to resources specified in this way; applications must not access these resources at out of bounds locations.",{"type":1873,"tag":2025,"props":7094,"children":7095},{},[7096],{"type":1873,"tag":1874,"props":7097,"children":7098},{},[7099],{"type":1878,"value":7100},"This maps well to HLSL’s constant buffer interface when used with root constants, mapping constants in push data to a constant buffer declaration in the shader.",{"type":1873,"tag":6775,"props":7102,"children":7104},{"id":7103},"vk_descriptor_mapping_source_push_address_ext",[7105],{"type":1873,"tag":2159,"props":7106,"children":7108},{"className":7107},[],[7109],{"type":1878,"value":7110},"VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT",{"type":1873,"tag":1874,"props":7112,"children":7113},{},[7114,7116,7121,7123,7129],{"type":1878,"value":7115},"Again similar to ",{"type":1873,"tag":2159,"props":7117,"children":7119},{"className":7118},[],[7120],{"type":1878,"value":7028},{"type":1878,"value":7122},", this allows mapping a buffer or acceleration structure to an address sourced from push data.\n",{"type":1873,"tag":2159,"props":7124,"children":7126},{"className":7125},[],[7127],{"type":1878,"value":7128},"pushAddressOffset",{"type":1878,"value":7130}," indicates an offset into push data where an address is located.\nAccessing the shader resource will instead access memory via this address.\nThere are no robust access guarantees to resources specified in this way; applications must not access these resources at out of bounds locations.\nImages and samplers cannot be mapped with this mapping.",{"type":1873,"tag":2025,"props":7132,"children":7133},{},[7134],{"type":1873,"tag":1874,"props":7135,"children":7136},{},[7137],{"type":1878,"value":7138},"Using a push address (mapped or handled explicitly) can be a good way to pass additional constant data to a shader if the available push data space is insufficient.",{"type":1873,"tag":6775,"props":7140,"children":7142},{"id":7141},"vk_descriptor_mapping_source_heap_with_shader_record_index_ext",[7143],{"type":1873,"tag":2159,"props":7144,"children":7146},{"className":7145},[],[7147],{"type":1878,"value":7148},"VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT",{"type":1873,"tag":1874,"props":7150,"children":7151},{},[7152,7154,7159],{"type":1878,"value":7153},"This is identical to ",{"type":1873,"tag":2159,"props":7155,"children":7157},{"className":7156},[],[7158],{"type":1878,"value":6852},{"type":1878,"value":7160},", except that the offset into push data is replaced with an offset into shader record data.",{"type":1873,"tag":6775,"props":7162,"children":7164},{"id":7163},"vk_descriptor_mapping_source_shader_record_data_ext",[7165],{"type":1873,"tag":2159,"props":7166,"children":7168},{"className":7167},[],[7169],{"type":1878,"value":7170},"VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT",{"type":1873,"tag":1874,"props":7172,"children":7173},{},[7174,7175,7180],{"type":1878,"value":7153},{"type":1873,"tag":2159,"props":7176,"children":7178},{"className":7177},[],[7179],{"type":1878,"value":7065},{"type":1878,"value":7160},{"type":1873,"tag":6775,"props":7182,"children":7184},{"id":7183},"vk_descriptor_mapping_source_shader_record_address_ext",[7185],{"type":1873,"tag":2159,"props":7186,"children":7188},{"className":7187},[],[7189],{"type":1878,"value":7190},"VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT",{"type":1873,"tag":1874,"props":7192,"children":7193},{},[7194,7195,7200],{"type":1878,"value":7153},{"type":1873,"tag":2159,"props":7196,"children":7198},{"className":7197},[],[7199],{"type":1878,"value":7110},{"type":1878,"value":7160},{"type":1873,"tag":6775,"props":7202,"children":7204},{"id":7203},"vk_descriptor_mapping_source_indirect_address_ext",[7205],{"type":1873,"tag":2159,"props":7206,"children":7208},{"className":7207},[],[7209],{"type":1878,"value":7210},"VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT",{"type":1873,"tag":1874,"props":7212,"children":7213},{},[7214,7215,7220,7222,7227],{"type":1878,"value":7070},{"type":1873,"tag":2159,"props":7216,"children":7218},{"className":7217},[],[7219],{"type":1878,"value":7110},{"type":1878,"value":7221},", but using the indirection mechanism of ",{"type":1873,"tag":2159,"props":7223,"children":7225},{"className":7224},[],[7226],{"type":1878,"value":6950},{"type":1878,"value":7228},", this allows mapping a buffer or acceleration structure to an address in memory, with the address to the indirect memory in push data, alongside a constant offset.",{"type":1873,"tag":2025,"props":7230,"children":7231},{},[7232],{"type":1873,"tag":1874,"props":7233,"children":7234},{},[7235],{"type":1878,"value":7236},"This can be used as a further indirection from push addresses, which enables applications to update the mapped addresses by in device memory after the command is recorded.",{"type":1873,"tag":7238,"props":7239,"children":7241},"h5",{"id":7240},"_combined_image_samplers",[7242],{"type":1878,"value":7243},"Combined Image Samplers",{"type":1873,"tag":1874,"props":7245,"children":7246},{},[7247,7249,7255],{"type":1878,"value":7248},"If a binding identifies a combined image sampler, applicable mappings have additional data to specify how those are mapped.\nThe base parameters described in the mappings above apply to the image resource, whereas the sampler will be sourced using the ",{"type":1873,"tag":2159,"props":7250,"children":7252},{"className":7251},[],[7253],{"type":1878,"value":7254},"sampler*",{"type":1878,"value":7256}," equivalents only when mapping to a combined image sampler.\nA mapped independent sampler will always use the base parameters.",{"type":1873,"tag":1874,"props":7258,"children":7259},{},[7260,7262,7268,7270,7276],{"type":1878,"value":7261},"In addition, if a dynamic heap index would be supplied, applications can request the heap index be interpreted as a single combined image/sampler index by setting ",{"type":1873,"tag":2159,"props":7263,"children":7265},{"className":7264},[],[7266],{"type":1878,"value":7267},"useCombinedImageSamplerIndex",{"type":1878,"value":7269}," to ",{"type":1873,"tag":2159,"props":7271,"children":7273},{"className":7272},[],[7274],{"type":1878,"value":7275},"VK_TRUE",{"type":1878,"value":7277}," when mapping a combined image sampler.\nThis parameter indicates that the image and sampler index will be provided within a single 32-bit index value, with the sampler index in the 12 most significant bits, and the image index in the 20 least significant bits.\nSome implementations employ this strategy for descriptor set mappings to keep the number of bits down when using push descriptors, and this enables descriptor heaps to achieve parity when using combined image samplers.\nThe extracted indices will be used in the same manner as if the indices were provided separately; no additional sampler heap indices will be read.",{"type":1873,"tag":7238,"props":7279,"children":7281},{"id":7280},"_embedding_samplers",[7282],{"type":1878,"value":7283},"Embedding Samplers",{"type":1873,"tag":1874,"props":7285,"children":7286},{},[7287,7289,7295,7297,7302,7304,7310,7312,7318,7320,7325],{"type":1878,"value":7288},"An application can embed samplers into a shader by specifying ",{"type":1873,"tag":2159,"props":7290,"children":7292},{"className":7291},[],[7293],{"type":1878,"value":7294},"pEmbeddedSampler",{"type":1878,"value":7296}," for a sampler or combined sampler resource binding.\n",{"type":1873,"tag":2159,"props":7298,"children":7300},{"className":7299},[],[7301],{"type":1878,"value":7294},{"type":1878,"value":7303}," takes a ",{"type":1873,"tag":2159,"props":7305,"children":7307},{"className":7306},[],[7308],{"type":1878,"value":7309},"VkSamplerCreateInfo",{"type":1878,"value":7311}," structure specifying the parameters of the sampler to embed, overriding any other mapping parameters set for the sampler, and using that sampler directly.\nThere must be no more than ",{"type":1873,"tag":2159,"props":7313,"children":7315},{"className":7314},[],[7316],{"type":1878,"value":7317},"maxDescriptorHeapEmbeddedSamplers",{"type":1878,"value":7319}," unique samplers across all live shaders.\nWhen a shader uses any embedded samplers, the required implementation reservation for sampler heaps may be higher, according to the ",{"type":1873,"tag":2159,"props":7321,"children":7323},{"className":7322},[],[7324],{"type":1878,"value":3943},{"type":1878,"value":7326}," limit.",{"type":1873,"tag":2079,"props":7328,"children":7330},{"id":7329},"_synchronization",[7331],{"type":1878,"value":7332},"Synchronization",{"type":1873,"tag":1874,"props":7334,"children":7335},{},[7336],{"type":1878,"value":7337},"New access flag bits are added for synchronizing access to descriptor heaps:",{"type":1873,"tag":2151,"props":7339,"children":7341},{"className":2153,"code":7340,"language":2155,"meta":2156,"style":2156},"VK_ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT = 0x0200000000000000ULL\nVK_ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT = 0x0400000000000000ULL\n",[7342],{"type":1873,"tag":2159,"props":7343,"children":7344},{"__ignoreMap":2156},[7345,7371],{"type":1873,"tag":2163,"props":7346,"children":7347},{"class":2165,"line":10},[7348,7353,7357,7361,7366],{"type":1873,"tag":2163,"props":7349,"children":7350},{"style":2180},[7351],{"type":1878,"value":7352},"VK_ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT ",{"type":1873,"tag":2163,"props":7354,"children":7355},{"style":2169},[7356],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":7358,"children":7359},{"style":2169},[7360],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":7362,"children":7363},{"style":3995},[7364],{"type":1878,"value":7365},"0200000000000000",{"type":1873,"tag":2163,"props":7367,"children":7368},{"style":2169},[7369],{"type":1878,"value":7370},"ULL\n",{"type":1873,"tag":2163,"props":7372,"children":7373},{"class":2165,"line":14},[7374,7379,7383,7387,7392],{"type":1873,"tag":2163,"props":7375,"children":7376},{"style":2180},[7377],{"type":1878,"value":7378},"VK_ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT ",{"type":1873,"tag":2163,"props":7380,"children":7381},{"style":2169},[7382],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":7384,"children":7385},{"style":2169},[7386],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":7388,"children":7389},{"style":3995},[7390],{"type":1878,"value":7391},"0400000000000000",{"type":1873,"tag":2163,"props":7393,"children":7394},{"style":2169},[7395],{"type":1878,"value":7370},{"type":1873,"tag":1892,"props":7397,"children":7398},{},[7399,7404],{"type":1873,"tag":1896,"props":7400,"children":7401},{},[7402],{"type":1878,"value":7403},"VK_ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT specifies access to a sampler heap by shaders when accessing samplers.",{"type":1873,"tag":1896,"props":7405,"children":7406},{},[7407],{"type":1878,"value":7408},"VK_ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT specifies access to a resource heap by shaders when accessing resources.",{"type":1873,"tag":1874,"props":7410,"children":7411},{},[7412],{"type":1878,"value":7413},"These access flags specifies accesses to memory in each respective descriptor heap by shaders, and should be used to synchronize and updates to descriptor heap memory performed on a device.\nThese flags are valid in all shader stages, and invalid in any other pipeline stage.",{"type":1873,"tag":2079,"props":7415,"children":7417},{"id":7416},"_secondary_command_buffers",[7418],{"type":1878,"value":7419},"Secondary Command Buffers",{"type":1873,"tag":1874,"props":7421,"children":7422},{},[7423],{"type":1878,"value":7424},"A new structure is provided when using secondary command buffers to indicate\nthat the descriptor heap is unchanged between primary and secondary:",{"type":1873,"tag":2151,"props":7426,"children":7428},{"className":2153,"code":7427,"language":2155,"meta":2156,"style":2156},"typedef struct VkCommandBufferInheritanceDescriptorHeapInfoEXT {\n VkStructureType sType;\n const void* pNext;\n const VkBindHeapInfoEXT* pSamplerHeapBindInfo;\n const VkBindHeapInfoEXT* pResourceHeapBindInfo;\n} VkCommandBufferInheritanceDescriptorHeapInfoEXT;\n",[7429],{"type":1873,"tag":2159,"props":7430,"children":7431},{"__ignoreMap":2156},[7432,7448,7456,7472,7492,7512],{"type":1873,"tag":2163,"props":7433,"children":7434},{"class":2165,"line":10},[7435,7439,7443],{"type":1873,"tag":2163,"props":7436,"children":7437},{"style":2169},[7438],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":7440,"children":7441},{"style":2169},[7442],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":7444,"children":7445},{"style":2180},[7446],{"type":1878,"value":7447}," VkCommandBufferInheritanceDescriptorHeapInfoEXT {\n",{"type":1873,"tag":2163,"props":7449,"children":7450},{"class":2165,"line":14},[7451],{"type":1873,"tag":2163,"props":7452,"children":7453},{"style":2180},[7454],{"type":1878,"value":7455}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":7457,"children":7458},{"class":2165,"line":18},[7459,7463,7467],{"type":1873,"tag":2163,"props":7460,"children":7461},{"style":2169},[7462],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":7464,"children":7465},{"style":2169},[7466],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":7468,"children":7469},{"style":2180},[7470],{"type":1878,"value":7471}," pNext;\n",{"type":1873,"tag":2163,"props":7473,"children":7474},{"class":2165,"line":22},[7475,7479,7483,7487],{"type":1873,"tag":2163,"props":7476,"children":7477},{"style":2169},[7478],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":7480,"children":7481},{"style":2180},[7482],{"type":1878,"value":3651},{"type":1873,"tag":2163,"props":7484,"children":7485},{"style":2169},[7486],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":7488,"children":7489},{"style":2180},[7490],{"type":1878,"value":7491}," pSamplerHeapBindInfo;\n",{"type":1873,"tag":2163,"props":7493,"children":7494},{"class":2165,"line":26},[7495,7499,7503,7507],{"type":1873,"tag":2163,"props":7496,"children":7497},{"style":2169},[7498],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":7500,"children":7501},{"style":2180},[7502],{"type":1878,"value":3651},{"type":1873,"tag":2163,"props":7504,"children":7505},{"style":2169},[7506],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":7508,"children":7509},{"style":2180},[7510],{"type":1878,"value":7511}," pResourceHeapBindInfo;\n",{"type":1873,"tag":2163,"props":7513,"children":7514},{"class":2165,"line":30},[7515],{"type":1873,"tag":2163,"props":7516,"children":7517},{"style":2180},[7518],{"type":1878,"value":7519},"} VkCommandBufferInheritanceDescriptorHeapInfoEXT;\n",{"type":1873,"tag":1874,"props":7521,"children":7522},{},[7523,7525,7531,7533,7539],{"type":1878,"value":7524},"When this structure is provided, the values of each heap bind info must match\nthose bound in the primary command buffer, and ",{"type":1873,"tag":2159,"props":7526,"children":7528},{"className":7527},[],[7529],{"type":1878,"value":7530},"vkCmdBind*HeapEXT",{"type":1878,"value":7532}," commands\nmust not be called within the secondary command buffer.\nCommands recorded inside the secondary will inherit the heap bindings\nspecified, and the heap bindings in the primary will remain intact after\n",{"type":1873,"tag":2159,"props":7534,"children":7536},{"className":7535},[],[7537],{"type":1878,"value":7538},"vkCmdExecuteCommands",{"type":1878,"value":7540}," if all executed secondaries included this info.",{"type":1873,"tag":1874,"props":7542,"children":7543},{},[7544,7546,7551],{"type":1878,"value":7545},"If this inheritance info is not provided, heap bindings must be specified\ninside secondaries.\nBindings must be respecified in the primary command buffer after\n",{"type":1873,"tag":2159,"props":7547,"children":7549},{"className":7548},[],[7550],{"type":1878,"value":7538},{"type":1878,"value":7552}," if any executed secondary did not include this info.",{"type":1873,"tag":2079,"props":7554,"children":7556},{"id":7555},"_null_descriptors",[7557],{"type":1878,"value":7558},"Null Descriptors",{"type":1873,"tag":1874,"props":7560,"children":7561},{},[7562,7564,7570,7572,7578,7580,7586,7587,7592],{"type":1878,"value":7563},"When the ",{"type":1873,"tag":2159,"props":7565,"children":7567},{"className":7566},[],[7568],{"type":1878,"value":7569},"nullDescriptor",{"type":1878,"value":7571}," feature added by ",{"type":1873,"tag":1921,"props":7573,"children":7576},{"href":7574,"rel":7575},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_robustness2",[1925],[7577],{"type":1878,"value":828},{"type":1878,"value":7579}," is supported, null descriptors can be written by setting the corresponding element of ",{"type":1873,"tag":2159,"props":7581,"children":7583},{"className":7582},[],[7584],{"type":1878,"value":7585},"VkResourceDescriptorDataEXT",{"type":1878,"value":7269},{"type":1873,"tag":2159,"props":7588,"children":7590},{"className":7589},[],[7591],{"type":1878,"value":4131},{"type":1878,"value":7593}," when writing a resource descriptor.",{"type":1873,"tag":2079,"props":7595,"children":7597},{"id":7596},"_custom_border_color",[7598],{"type":1878,"value":7599},"Custom Border Color",{"type":1873,"tag":1874,"props":7601,"children":7602},{},[7603,7604,7610,7611,7617],{"type":1878,"value":7563},{"type":1873,"tag":2159,"props":7605,"children":7607},{"className":7606},[],[7608],{"type":1878,"value":7609},"customBorderColors",{"type":1878,"value":7571},{"type":1873,"tag":1921,"props":7612,"children":7615},{"href":7613,"rel":7614},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_custom_border_color",[1925],[7616],{"type":1878,"value":445},{"type":1878,"value":7618}," is used, applications using samplers with custom border colors must explicitly register and unregister border colors with the device:",{"type":1873,"tag":2151,"props":7620,"children":7622},{"className":2153,"code":7621,"language":2155,"meta":2156,"style":2156},"VkResult vkRegisterCustomBorderColorEXT(\n VkDevice device,\n const VkSamplerCustomBorderColorCreateInfoEXT* pBorderColor,\n VkBool32 requestIndex,\n uint32_t* pIndex);\n\nvoid vkUnregisterCustomBorderColorEXT(\n VkDevice device,\n uint32_t index);\n",[7623],{"type":1873,"tag":2159,"props":7624,"children":7625},{"__ignoreMap":2156},[7626,7642,7658,7683,7700,7717,7724,7740,7755],{"type":1873,"tag":2163,"props":7627,"children":7628},{"class":2165,"line":10},[7629,7633,7638],{"type":1873,"tag":2163,"props":7630,"children":7631},{"style":2180},[7632],{"type":1878,"value":2679},{"type":1873,"tag":2163,"props":7634,"children":7635},{"style":2682},[7636],{"type":1878,"value":7637},"vkRegisterCustomBorderColorEXT",{"type":1873,"tag":2163,"props":7639,"children":7640},{"style":2180},[7641],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":7643,"children":7644},{"class":2165,"line":14},[7645,7650,7654],{"type":1873,"tag":2163,"props":7646,"children":7647},{"style":2180},[7648],{"type":1878,"value":7649}," VkDevice ",{"type":1873,"tag":2163,"props":7651,"children":7652},{"style":2701},[7653],{"type":1878,"value":266},{"type":1873,"tag":2163,"props":7655,"children":7656},{"style":2180},[7657],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":7659,"children":7660},{"class":2165,"line":18},[7661,7665,7670,7674,7679],{"type":1873,"tag":2163,"props":7662,"children":7663},{"style":2169},[7664],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":7666,"children":7667},{"style":2180},[7668],{"type":1878,"value":7669}," VkSamplerCustomBorderColorCreateInfoEXT",{"type":1873,"tag":2163,"props":7671,"children":7672},{"style":2169},[7673],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":7675,"children":7676},{"style":2701},[7677],{"type":1878,"value":7678}," pBorderColor",{"type":1873,"tag":2163,"props":7680,"children":7681},{"style":2180},[7682],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":7684,"children":7685},{"class":2165,"line":22},[7686,7691,7696],{"type":1873,"tag":2163,"props":7687,"children":7688},{"style":2180},[7689],{"type":1878,"value":7690}," VkBool32 ",{"type":1873,"tag":2163,"props":7692,"children":7693},{"style":2701},[7694],{"type":1878,"value":7695},"requestIndex",{"type":1873,"tag":2163,"props":7697,"children":7698},{"style":2180},[7699],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":7701,"children":7702},{"class":2165,"line":26},[7703,7708,7713],{"type":1873,"tag":2163,"props":7704,"children":7705},{"style":2169},[7706],{"type":1878,"value":7707}," uint32_t*",{"type":1873,"tag":2163,"props":7709,"children":7710},{"style":2701},[7711],{"type":1878,"value":7712}," pIndex",{"type":1873,"tag":2163,"props":7714,"children":7715},{"style":2180},[7716],{"type":1878,"value":2776},{"type":1873,"tag":2163,"props":7718,"children":7719},{"class":2165,"line":30},[7720],{"type":1873,"tag":2163,"props":7721,"children":7722},{"emptyLinePlaceholder":232},[7723],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":7725,"children":7726},{"class":2165,"line":34},[7727,7731,7736],{"type":1873,"tag":2163,"props":7728,"children":7729},{"style":2169},[7730],{"type":1878,"value":3613},{"type":1873,"tag":2163,"props":7732,"children":7733},{"style":2682},[7734],{"type":1878,"value":7735}," vkUnregisterCustomBorderColorEXT",{"type":1873,"tag":2163,"props":7737,"children":7738},{"style":2180},[7739],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":7741,"children":7742},{"class":2165,"line":38},[7743,7747,7751],{"type":1873,"tag":2163,"props":7744,"children":7745},{"style":2180},[7746],{"type":1878,"value":7649},{"type":1873,"tag":2163,"props":7748,"children":7749},{"style":2701},[7750],{"type":1878,"value":266},{"type":1873,"tag":2163,"props":7752,"children":7753},{"style":2180},[7754],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":7756,"children":7757},{"class":2165,"line":42},[7758,7762,7767],{"type":1873,"tag":2163,"props":7759,"children":7760},{"style":2169},[7761],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":7763,"children":7764},{"style":2701},[7765],{"type":1878,"value":7766}," index",{"type":1873,"tag":2163,"props":7768,"children":7769},{"style":2180},[7770],{"type":1878,"value":2776},{"type":1873,"tag":1874,"props":7772,"children":7773},{},[7774,7776,7787,7789,7794,7796,7802,7803,7809,7811,7816,7818,7823,7825,7830],{"type":1878,"value":7775},"Up to ",{"type":1873,"tag":1921,"props":7777,"children":7780},{"href":7778,"rel":7779},"https://docs.vulkan.org/spec/latest/limits.html#VkPhysicalDeviceCustomBorderColorPropertiesEXT",[1925],[7781],{"type":1873,"tag":2159,"props":7782,"children":7784},{"className":7783},[],[7785],{"type":1878,"value":7786},"VkPhysicalDeviceCustomBorderColorPropertiesEXT::maxCustomBorderColorSamplers",{"type":1878,"value":7788}," border colors can be registered; if too many are already registered, ",{"type":1873,"tag":2159,"props":7790,"children":7792},{"className":7791},[],[7793],{"type":1878,"value":7637},{"type":1878,"value":7795}," will return ",{"type":1873,"tag":2159,"props":7797,"children":7799},{"className":7798},[],[7800],{"type":1878,"value":7801},"VK_ERROR_TOO_MANY_OBJECTS",{"type":1878,"value":3225},{"type":1873,"tag":2159,"props":7804,"children":7806},{"className":7805},[],[7807],{"type":1878,"value":7808},"vkUnregisterCustomBorderColorEXT",{"type":1878,"value":7810}," will remove one registration, freeing it up for a new registration.\n",{"type":1873,"tag":2159,"props":7812,"children":7814},{"className":7813},[],[7815],{"type":1878,"value":7637},{"type":1878,"value":7817}," is not subject to fragmentation - these functions will always correctly update the number of registrations, and ",{"type":1873,"tag":2159,"props":7819,"children":7821},{"className":7820},[],[7822],{"type":1878,"value":7637},{"type":1878,"value":7824}," will always succeed if there are free slots.\n",{"type":1873,"tag":2159,"props":7826,"children":7828},{"className":7827},[],[7829],{"type":1878,"value":7637},{"type":1878,"value":7831}," will not automatically de-duplicate identical custom border colors, but an application is free to use the same index for multiple samplers with the same border color.",{"type":1873,"tag":1874,"props":7833,"children":7834},{},[7835,7837,7842,7844,7849,7851,7857,7859,7864,7866,7872,7874,7880,7882,7887,7888,7893,7894,7899],{"type":1878,"value":7836},"If ",{"type":1873,"tag":2159,"props":7838,"children":7840},{"className":7839},[],[7841],{"type":1878,"value":7695},{"type":1878,"value":7843}," is ",{"type":1873,"tag":2159,"props":7845,"children":7847},{"className":7846},[],[7848],{"type":1878,"value":7275},{"type":1878,"value":7850},", the value of ",{"type":1873,"tag":2159,"props":7852,"children":7854},{"className":7853},[],[7855],{"type":1878,"value":7856},"pIndex",{"type":1878,"value":7858}," passed to ",{"type":1873,"tag":2159,"props":7860,"children":7862},{"className":7861},[],[7863],{"type":1878,"value":7637},{"type":1878,"value":7865}," will be checked; if it is free, ",{"type":1873,"tag":2159,"props":7867,"children":7869},{"className":7868},[],[7870],{"type":1878,"value":7871},"VK_SUCCESS",{"type":1878,"value":7873}," will be returned and the requested index will be registered, otherwise ",{"type":1873,"tag":2159,"props":7875,"children":7877},{"className":7876},[],[7878],{"type":1878,"value":7879},"VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS",{"type":1878,"value":7881}," will be returned.\nIn either case, if ",{"type":1873,"tag":2159,"props":7883,"children":7885},{"className":7884},[],[7886],{"type":1878,"value":7695},{"type":1878,"value":7843},{"type":1873,"tag":2159,"props":7889,"children":7891},{"className":7890},[],[7892],{"type":1878,"value":7275},{"type":1878,"value":7850},{"type":1873,"tag":2159,"props":7895,"children":7897},{"className":7896},[],[7898],{"type":1878,"value":7856},{"type":1878,"value":7900}," will be unmodified.\nFor implementations where no registration is necessary, the same index can be registered multiple times without raising an error.\nThis functionality is primarily for capture/replay to ensure the same values are used, but can also be used as a way to check if an index is still registered if the border color is known.",{"type":1873,"tag":1874,"props":7902,"children":7903},{},[7904,7906,7911,7913,7919,7921,7926,7927,7932],{"type":1878,"value":7905},"If registration is successful, the value of ",{"type":1873,"tag":2159,"props":7907,"children":7909},{"className":7908},[],[7910],{"type":1878,"value":7856},{"type":1878,"value":7912}," can be passed along with an identical ",{"type":1873,"tag":2159,"props":7914,"children":7916},{"className":7915},[],[7917],{"type":1878,"value":7918},"VkSamplerCustomBorderColorCreateInfoEXT",{"type":1878,"value":7920}," structure in the ",{"type":1873,"tag":2159,"props":7922,"children":7924},{"className":7923},[],[7925],{"type":1878,"value":3340},{"type":1878,"value":3342},{"type":1873,"tag":2159,"props":7928,"children":7930},{"className":7929},[],[7931],{"type":1878,"value":7309},{"type":1878,"value":7933}," when creating a sampler object or writing a sampler descriptor:",{"type":1873,"tag":2151,"props":7935,"children":7937},{"className":2153,"code":7936,"language":2155,"meta":2156,"style":2156},"typedef struct VkSamplerCustomBorderColorIndexCreateInfoEXT {\n VkStructureType sType;\n const void* pNext;\n uint32_t index;\n} VkSamplerCustomBorderColorIndexCreateInfoEXT;\n",[7938],{"type":1873,"tag":2159,"props":7939,"children":7940},{"__ignoreMap":2156},[7941,7957,7965,7981,7993],{"type":1873,"tag":2163,"props":7942,"children":7943},{"class":2165,"line":10},[7944,7948,7952],{"type":1873,"tag":2163,"props":7945,"children":7946},{"style":2169},[7947],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":7949,"children":7950},{"style":2169},[7951],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":7953,"children":7954},{"style":2180},[7955],{"type":1878,"value":7956}," VkSamplerCustomBorderColorIndexCreateInfoEXT {\n",{"type":1873,"tag":2163,"props":7958,"children":7959},{"class":2165,"line":14},[7960],{"type":1873,"tag":2163,"props":7961,"children":7962},{"style":2180},[7963],{"type":1878,"value":7964}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":7966,"children":7967},{"class":2165,"line":18},[7968,7972,7976],{"type":1873,"tag":2163,"props":7969,"children":7970},{"style":2169},[7971],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":7973,"children":7974},{"style":2169},[7975],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":7977,"children":7978},{"style":2180},[7979],{"type":1878,"value":7980}," pNext;\n",{"type":1873,"tag":2163,"props":7982,"children":7983},{"class":2165,"line":22},[7984,7988],{"type":1873,"tag":2163,"props":7985,"children":7986},{"style":2169},[7987],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":7989,"children":7990},{"style":2180},[7991],{"type":1878,"value":7992}," index;\n",{"type":1873,"tag":2163,"props":7994,"children":7995},{"class":2165,"line":26},[7996],{"type":1873,"tag":2163,"props":7997,"children":7998},{"style":2180},[7999],{"type":1878,"value":8000},"} VkSamplerCustomBorderColorIndexCreateInfoEXT;\n",{"type":1873,"tag":1874,"props":8002,"children":8003},{},[8004,8006,8011,8013,8018,8019,8024,8026,8032],{"type":1878,"value":8005},"Sampler objects created with a custom border color but without such an index implicitly register a border color when created, and unregister one when destroyed.\nWhen creating a sampler descriptor, ",{"type":1873,"tag":2159,"props":8007,"children":8009},{"className":8008},[],[8010],{"type":1878,"value":7918},{"type":1878,"value":8012}," must be present in the ",{"type":1873,"tag":2159,"props":8014,"children":8016},{"className":8015},[],[8017],{"type":1878,"value":3340},{"type":1878,"value":3342},{"type":1873,"tag":2159,"props":8020,"children":8022},{"className":8021},[],[8023],{"type":1878,"value":7309},{"type":1878,"value":8025}," if a custom border color is used, with the index registered to an identical ",{"type":1873,"tag":2159,"props":8027,"children":8029},{"className":8028},[],[8030],{"type":1878,"value":8031},"borderColor",{"type":1878,"value":8033}," by the time a command using that sampler descriptor is recorded.\nCustom border colors must not be used with embedded samplers.",{"type":1873,"tag":2079,"props":8035,"children":8037},{"id":8036},"_capture_and_replay",[8038],{"type":1878,"value":8039},"Capture and Replay",{"type":1873,"tag":1874,"props":8041,"children":8042},{},[8043,8044,8050],{"type":1878,"value":7563},{"type":1873,"tag":2159,"props":8045,"children":8047},{"className":8046},[],[8048],{"type":1878,"value":8049},"descriptorHeapCaptureReplay",{"type":1878,"value":8051}," feature is enabled, it is possible to recreate the same descriptors during replay by using data captured during the initial run.\nThere are no absolute guarantees that replay will succeed, as system updates, memory pressure, and other unforeseen circumstances may cause it to fail.\nImplementations are expected to provide a best effort to ensure captured descriptors can be replayed, but are not expected to work around exceptional circumstances, or across driver versions or devices.",{"type":1873,"tag":1874,"props":8053,"children":8054},{},[8055,8057,8062,8063,8069],{"type":1878,"value":8056},"For the best chance of success, applications should replay in a separate process, using the same system, driver, and device, without any updates since the replay.\nAdditionally, tools must capture some data from the implementation during capture to give the implementation the information to recreate identical descriptors during replay, should use an identically created ",{"type":1873,"tag":1921,"props":8058,"children":8060},{"href":8059},"%7Brepage%7DVkDevice.html",[8061],{"type":1878,"value":3252},{"type":1878,"value":3199},{"type":1873,"tag":1921,"props":8064,"children":8066},{"href":8065},"%7Brepage%7DVkInstance.html",[8067],{"type":1878,"value":8068},"VkInstance",{"type":1878,"value":8070},", and should create all captured descriptors before creating any others for use in the tool.",{"type":1873,"tag":3256,"props":8072,"children":8074},{"id":8073},"_samplers",[8075],{"type":1878,"value":59},{"type":1873,"tag":1874,"props":8077,"children":8078},{},[8079,8081,8086,8088,8093,8095,8100,8102,8107],{"type":1878,"value":8080},"For sampler descriptors, an identical ",{"type":1873,"tag":2159,"props":8082,"children":8084},{"className":8083},[],[8085],{"type":1878,"value":7309},{"type":1878,"value":8087}," structure is all that a capture replay tool needs to provide to try to create the same sampler descriptor.\nIf the sampler is using custom border colors however, this means the index must be the same; the index registered during capture can be be passed to ",{"type":1873,"tag":2159,"props":8089,"children":8091},{"className":8090},[],[8092],{"type":1878,"value":7637},{"type":1878,"value":8094}," with ",{"type":1873,"tag":2159,"props":8096,"children":8098},{"className":8097},[],[8099],{"type":1878,"value":7695},{"type":1878,"value":8101}," set to ",{"type":1873,"tag":2159,"props":8103,"children":8105},{"className":8104},[],[8106],{"type":1878,"value":7275},{"type":1878,"value":8108}," when replaying to try to get the same index.",{"type":1873,"tag":3256,"props":8110,"children":8112},{"id":8111},"_device_addresses",[8113],{"type":1878,"value":8114},"Device Addresses",{"type":1873,"tag":1874,"props":8116,"children":8117},{},[8118,8120,8126,8127,8133,8135,8142,8144,8149,8151,8156],{"type":1878,"value":8119},"For descriptors requiring a device address, again an identical ",{"type":1873,"tag":2159,"props":8121,"children":8123},{"className":8122},[],[8124],{"type":1878,"value":8125},"VkDeviceAddressRangeEXT",{"type":1878,"value":6336},{"type":1873,"tag":2159,"props":8128,"children":8130},{"className":8129},[],[8131],{"type":1878,"value":8132},"VkTexelBufferDescriptorInfoEXT",{"type":1878,"value":8134}," is required to try to create the same descriptor.\nTo try to get the same device address range for a buffer allocation, tools can use the ",{"type":1873,"tag":1921,"props":8136,"children":8139},{"href":8137,"rel":8138},"https://docs.vulkan.org/spec/latest/features.html#VkPhysicalDeviceBufferDeviceAddressFeatures",[1925],[8140],{"type":1878,"value":8141},"VkPhysicalDeviceBufferDeviceAddressFeatures::bufferDeviceAddressCaptureReplay",{"type":1878,"value":8143}," feature to recreate the buffer and any memory it is bound to with opaque capture data.\n",{"type":1873,"tag":1921,"props":8145,"children":8147},{"href":8137,"rel":8146},[1925],[8148],{"type":1878,"value":8141},{"type":1878,"value":8150}," must be supported if ",{"type":1873,"tag":2159,"props":8152,"children":8154},{"className":8153},[],[8155],{"type":1878,"value":8049},{"type":1878,"value":8157}," is supported.",{"type":1873,"tag":3256,"props":8159,"children":8161},{"id":8160},"_images",[8162],{"type":1878,"value":55},{"type":1873,"tag":1874,"props":8164,"children":8165},{},[8166,8168,8174,8176,8182,8184,8191,8193,8200],{"type":1878,"value":8167},"For image descriptors created using a ",{"type":1873,"tag":2159,"props":8169,"children":8171},{"className":8170},[],[8172],{"type":1878,"value":8173},"VkImage",{"type":1878,"value":8175}," an identical ",{"type":1873,"tag":2159,"props":8177,"children":8179},{"className":8178},[],[8180],{"type":1878,"value":8181},"VkImageDescriptorInfoEXT",{"type":1878,"value":8183},", other than the image itself, is required to try to create the same descriptor.\nFor replay, the image must be recreated using the same creation parameters, but with additional opaque data captured in the first run, similar to how buffers must recreated with opaque data to try to obtain the same device address.\nMemory bound to the image during replay must match the memory bound during capture, with memory objects recreated with identical parameters other than including the opaque capture data in ",{"type":1873,"tag":1921,"props":8185,"children":8188},{"href":8186,"rel":8187},"https://docs.vulkan.org/spec/latest/memory.html#VkDeviceMemoryOpaqueCaptureAddressInfo",[1925],[8189],{"type":1878,"value":8190},"VkDeviceMemoryOpaqueCaptureAddressInfo",{"type":1878,"value":8192}," which was initially captured with ",{"type":1873,"tag":1921,"props":8194,"children":8197},{"href":8195,"rel":8196},"https://docs.vulkan.org/spec/latest/memory.html#vkGetDeviceMemoryOpaqueCaptureAddress",[1925],[8198],{"type":1878,"value":8199},"vkGetDeviceMemoryOpaqueCaptureAddress",{"type":1878,"value":8201},".\nThis opaque data can be captured for multiple images with:",{"type":1873,"tag":2151,"props":8203,"children":8205},{"className":2153,"code":8204,"language":2155,"meta":2156,"style":2156},"VkResult vkGetImageOpaqueCaptureDataEXT(\n VkDevice device,\n uint32_t imageCount,\n const VkImage* pImages,\n VkHostAddressRangeEXT* pDatas);\n",[8206],{"type":1873,"tag":2159,"props":8207,"children":8208},{"__ignoreMap":2156},[8209,8225,8241,8257,8282],{"type":1873,"tag":2163,"props":8210,"children":8211},{"class":2165,"line":10},[8212,8216,8221],{"type":1873,"tag":2163,"props":8213,"children":8214},{"style":2180},[8215],{"type":1878,"value":2679},{"type":1873,"tag":2163,"props":8217,"children":8218},{"style":2682},[8219],{"type":1878,"value":8220},"vkGetImageOpaqueCaptureDataEXT",{"type":1873,"tag":2163,"props":8222,"children":8223},{"style":2180},[8224],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":8226,"children":8227},{"class":2165,"line":14},[8228,8233,8237],{"type":1873,"tag":2163,"props":8229,"children":8230},{"style":2180},[8231],{"type":1878,"value":8232}," VkDevice ",{"type":1873,"tag":2163,"props":8234,"children":8235},{"style":2701},[8236],{"type":1878,"value":266},{"type":1873,"tag":2163,"props":8238,"children":8239},{"style":2180},[8240],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8242,"children":8243},{"class":2165,"line":18},[8244,8248,8253],{"type":1873,"tag":2163,"props":8245,"children":8246},{"style":2169},[8247],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":8249,"children":8250},{"style":2701},[8251],{"type":1878,"value":8252}," imageCount",{"type":1873,"tag":2163,"props":8254,"children":8255},{"style":2180},[8256],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8258,"children":8259},{"class":2165,"line":22},[8260,8264,8269,8273,8278],{"type":1873,"tag":2163,"props":8261,"children":8262},{"style":2169},[8263],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":8265,"children":8266},{"style":2180},[8267],{"type":1878,"value":8268}," VkImage",{"type":1873,"tag":2163,"props":8270,"children":8271},{"style":2169},[8272],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":8274,"children":8275},{"style":2701},[8276],{"type":1878,"value":8277}," pImages",{"type":1873,"tag":2163,"props":8279,"children":8280},{"style":2180},[8281],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8283,"children":8284},{"class":2165,"line":26},[8285,8290,8294,8299],{"type":1873,"tag":2163,"props":8286,"children":8287},{"style":2180},[8288],{"type":1878,"value":8289}," VkHostAddressRangeEXT",{"type":1873,"tag":2163,"props":8291,"children":8292},{"style":2169},[8293],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":8295,"children":8296},{"style":2701},[8297],{"type":1878,"value":8298}," pDatas",{"type":1873,"tag":2163,"props":8300,"children":8301},{"style":2180},[8302],{"type":1878,"value":2776},{"type":1873,"tag":1874,"props":8304,"children":8305},{},[8306,8308,8313,8315,8321,8323,8329,8331,8337,8338,8343],{"type":1878,"value":8307},"Where the ",{"type":1873,"tag":2159,"props":8309,"children":8311},{"className":8310},[],[8312],{"type":1878,"value":4412},{"type":1878,"value":8314}," of each element of ",{"type":1873,"tag":2159,"props":8316,"children":8318},{"className":8317},[],[8319],{"type":1878,"value":8320},"pDatas",{"type":1878,"value":8322}," must be equal to ",{"type":1873,"tag":2159,"props":8324,"children":8326},{"className":8325},[],[8327],{"type":1878,"value":8328},"imageCaptureReplayOpaqueDataSize",{"type":1878,"value":8330},", and the opaque capture data to be stored for replay is written to the ",{"type":1873,"tag":2159,"props":8332,"children":8334},{"className":8333},[],[8335],{"type":1878,"value":8336},"address",{"type":1878,"value":8314},{"type":1873,"tag":2159,"props":8339,"children":8341},{"className":8340},[],[8342],{"type":1878,"value":8320},{"type":1878,"value":8344},".\nIn order for this function to be valid, each image must be created with the following creation flag:",{"type":1873,"tag":2151,"props":8346,"children":8348},{"className":2153,"code":8347,"language":2155,"meta":2156,"style":2156},"VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT = 0x00010000\n",[8349],{"type":1873,"tag":2159,"props":8350,"children":8351},{"__ignoreMap":2156},[8352],{"type":1873,"tag":2163,"props":8353,"children":8354},{"class":2165,"line":10},[8355,8360,8364,8368],{"type":1873,"tag":2163,"props":8356,"children":8357},{"style":2180},[8358],{"type":1878,"value":8359},"VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT ",{"type":1873,"tag":2163,"props":8361,"children":8362},{"style":2169},[8363],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":8365,"children":8366},{"style":2169},[8367],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":8369,"children":8370},{"style":3995},[8371],{"type":1878,"value":8372},"00010000\n",{"type":1873,"tag":1874,"props":8374,"children":8375},{},[8376,8378,8384,8386,8393],{"type":1878,"value":8377},"An image with this flag can be recreated from a previously captured image by passing ",{"type":1873,"tag":2159,"props":8379,"children":8381},{"className":8380},[],[8382],{"type":1878,"value":8383},"data",{"type":1878,"value":8385}," back into image creation by chaining the following structure to ",{"type":1873,"tag":1921,"props":8387,"children":8390},{"href":8388,"rel":8389},"https://docs.vulkan.org/spec/latest/resources.html#VkImageCreateInfo",[1925],[8391],{"type":1878,"value":8392},"VkImageCreateInfo",{"type":1878,"value":8394},", with all other creation parameters matching:",{"type":1873,"tag":2151,"props":8396,"children":8398},{"className":2153,"code":8397,"language":2155,"meta":2156,"style":2156},"typedef struct VkOpaqueCaptureDataCreateInfoEXT {\n VkStructureType sType;\n const void* pNext;\n const VkHostAddressRangeConstEXT* pData;\n} VkOpaqueCaptureDataCreateInfoEXT;\n",[8399],{"type":1873,"tag":2159,"props":8400,"children":8401},{"__ignoreMap":2156},[8402,8418,8426,8442,8463],{"type":1873,"tag":2163,"props":8403,"children":8404},{"class":2165,"line":10},[8405,8409,8413],{"type":1873,"tag":2163,"props":8406,"children":8407},{"style":2169},[8408],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":8410,"children":8411},{"style":2169},[8412],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":8414,"children":8415},{"style":2180},[8416],{"type":1878,"value":8417}," VkOpaqueCaptureDataCreateInfoEXT {\n",{"type":1873,"tag":2163,"props":8419,"children":8420},{"class":2165,"line":14},[8421],{"type":1873,"tag":2163,"props":8422,"children":8423},{"style":2180},[8424],{"type":1878,"value":8425}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":8427,"children":8428},{"class":2165,"line":18},[8429,8433,8437],{"type":1873,"tag":2163,"props":8430,"children":8431},{"style":2169},[8432],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":8434,"children":8435},{"style":2169},[8436],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":8438,"children":8439},{"style":2180},[8440],{"type":1878,"value":8441}," pNext;\n",{"type":1873,"tag":2163,"props":8443,"children":8444},{"class":2165,"line":22},[8445,8449,8454,8458],{"type":1873,"tag":2163,"props":8446,"children":8447},{"style":2169},[8448],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":8450,"children":8451},{"style":2180},[8452],{"type":1878,"value":8453}," VkHostAddressRangeConstEXT",{"type":1873,"tag":2163,"props":8455,"children":8456},{"style":2169},[8457],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":8459,"children":8460},{"style":2180},[8461],{"type":1878,"value":8462}," pData;\n",{"type":1873,"tag":2163,"props":8464,"children":8465},{"class":2165,"line":26},[8466],{"type":1873,"tag":2163,"props":8467,"children":8468},{"style":2180},[8469],{"type":1878,"value":8470},"} VkOpaqueCaptureDataCreateInfoEXT;\n",{"type":1873,"tag":1874,"props":8472,"children":8473},{},[8474,8476,8483,8485,8490,8492,8497,8499,8505],{"type":1878,"value":8475},"If the implementation is unable to recreate an identical image from this opaque data that would result in the same descriptors, ",{"type":1873,"tag":1921,"props":8477,"children":8480},{"href":8478,"rel":8479},"https://docs.vulkan.org/spec/latest/resources.html#vkCreateImage",[1925],[8481],{"type":1878,"value":8482},"vkCreateImage",{"type":1878,"value":8484}," must return ",{"type":1873,"tag":2159,"props":8486,"children":8488},{"className":8487},[],[8489],{"type":1878,"value":7879},{"type":1878,"value":8491},".\nImplementations may return ",{"type":1873,"tag":2159,"props":8493,"children":8495},{"className":8494},[],[8496],{"type":1878,"value":7879},{"type":1878,"value":8498}," when writing an image descriptor if the image was created with ",{"type":1873,"tag":2159,"props":8500,"children":8502},{"className":8501},[],[8503],{"type":1878,"value":8504},"VkOpaqueCaptureDataCreateInfoEXT",{"type":1878,"value":8506}," and the implementation cannot recreate the same descriptor.",{"type":1873,"tag":1874,"props":8508,"children":8509},{},[8510,8511,8517,8518,8523],{"type":1878,"value":7836},{"type":1873,"tag":2159,"props":8512,"children":8514},{"className":8513},[],[8515],{"type":1878,"value":8516},"pData",{"type":1878,"value":7843},{"type":1873,"tag":2159,"props":8519,"children":8521},{"className":8520},[],[8522],{"type":1878,"value":4131},{"type":1878,"value":8524},", or if this structure is not present, image creation will proceed without matching previously captured data.",{"type":1873,"tag":1874,"props":8526,"children":8527},{},[8528],{"type":1878,"value":8529},"If an implementation recreates all the resources necessary for replaying a descriptor without error, the descriptor bits must be an exact match for those created during capture.",{"type":1873,"tag":3256,"props":8531,"children":8533},{"id":8532},"_tensors",[8534],{"type":1878,"value":8535},"Tensors",{"type":1873,"tag":1874,"props":8537,"children":8538},{},[8539],{"type":1878,"value":8540},"Tensors can be captured and replayed similarly to images.",{"type":1873,"tag":1874,"props":8542,"children":8543},{},[8544,8546,8552,8553,8559,8561,8566,8567,8572],{"type":1878,"value":8545},"For tensor descriptors created using a ",{"type":1873,"tag":2159,"props":8547,"children":8549},{"className":8548},[],[8550],{"type":1878,"value":8551},"VkTensorARM",{"type":1878,"value":8175},{"type":1873,"tag":2159,"props":8554,"children":8556},{"className":8555},[],[8557],{"type":1878,"value":8558},"VkTensorViewCreateInfoARM",{"type":1878,"value":8560},", other than the tensor itself, is required to try to create the same descriptor.\nFor replay, the tensor must be recreated using the same creation parameters, but with additional opaque data captured in the first run in the same way as for images.\nMemory bound to the tensor during replay must match the memory bound during capture, with memory objects recreated with identical parameters other than including the opaque capture data in ",{"type":1873,"tag":1921,"props":8562,"children":8564},{"href":8186,"rel":8563},[1925],[8565],{"type":1878,"value":8190},{"type":1878,"value":8192},{"type":1873,"tag":1921,"props":8568,"children":8570},{"href":8195,"rel":8569},[1925],[8571],{"type":1878,"value":8199},{"type":1878,"value":8573},".\nThis opaque data can be captured for multiple tensors with:",{"type":1873,"tag":2151,"props":8575,"children":8577},{"className":2153,"code":8576,"language":2155,"meta":2156,"style":2156},"VkResult vkGetTensorOpaqueCaptureDataARM(\n VkDevice device,\n uint32_t tensorCount,\n const VkTensorARM* pTensors,\n VkHostAddressRangeEXT* pDatas);\n",[8578],{"type":1873,"tag":2159,"props":8579,"children":8580},{"__ignoreMap":2156},[8581,8597,8612,8628,8653],{"type":1873,"tag":2163,"props":8582,"children":8583},{"class":2165,"line":10},[8584,8588,8593],{"type":1873,"tag":2163,"props":8585,"children":8586},{"style":2180},[8587],{"type":1878,"value":2679},{"type":1873,"tag":2163,"props":8589,"children":8590},{"style":2682},[8591],{"type":1878,"value":8592},"vkGetTensorOpaqueCaptureDataARM",{"type":1873,"tag":2163,"props":8594,"children":8595},{"style":2180},[8596],{"type":1878,"value":2690},{"type":1873,"tag":2163,"props":8598,"children":8599},{"class":2165,"line":14},[8600,8604,8608],{"type":1873,"tag":2163,"props":8601,"children":8602},{"style":2180},[8603],{"type":1878,"value":8232},{"type":1873,"tag":2163,"props":8605,"children":8606},{"style":2701},[8607],{"type":1878,"value":266},{"type":1873,"tag":2163,"props":8609,"children":8610},{"style":2180},[8611],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8613,"children":8614},{"class":2165,"line":18},[8615,8619,8624],{"type":1873,"tag":2163,"props":8616,"children":8617},{"style":2169},[8618],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":8620,"children":8621},{"style":2701},[8622],{"type":1878,"value":8623}," tensorCount",{"type":1873,"tag":2163,"props":8625,"children":8626},{"style":2180},[8627],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8629,"children":8630},{"class":2165,"line":22},[8631,8635,8640,8644,8649],{"type":1873,"tag":2163,"props":8632,"children":8633},{"style":2169},[8634],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":8636,"children":8637},{"style":2180},[8638],{"type":1878,"value":8639}," VkTensorARM",{"type":1873,"tag":2163,"props":8641,"children":8642},{"style":2169},[8643],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":8645,"children":8646},{"style":2701},[8647],{"type":1878,"value":8648}," pTensors",{"type":1873,"tag":2163,"props":8650,"children":8651},{"style":2180},[8652],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8654,"children":8655},{"class":2165,"line":26},[8656,8660,8664,8668],{"type":1873,"tag":2163,"props":8657,"children":8658},{"style":2180},[8659],{"type":1878,"value":8289},{"type":1873,"tag":2163,"props":8661,"children":8662},{"style":2169},[8663],{"type":1878,"value":2458},{"type":1873,"tag":2163,"props":8665,"children":8666},{"style":2701},[8667],{"type":1878,"value":8298},{"type":1873,"tag":2163,"props":8669,"children":8670},{"style":2180},[8671],{"type":1878,"value":2776},{"type":1873,"tag":1874,"props":8673,"children":8674},{},[8675,8676,8681,8682,8687,8688,8694,8695,8700,8701,8706],{"type":1878,"value":8307},{"type":1873,"tag":2159,"props":8677,"children":8679},{"className":8678},[],[8680],{"type":1878,"value":4412},{"type":1878,"value":8314},{"type":1873,"tag":2159,"props":8683,"children":8685},{"className":8684},[],[8686],{"type":1878,"value":8320},{"type":1878,"value":8322},{"type":1873,"tag":2159,"props":8689,"children":8691},{"className":8690},[],[8692],{"type":1878,"value":8693},"tensorCaptureReplayOpaqueDataSize",{"type":1878,"value":8330},{"type":1873,"tag":2159,"props":8696,"children":8698},{"className":8697},[],[8699],{"type":1878,"value":8336},{"type":1878,"value":8314},{"type":1873,"tag":2159,"props":8702,"children":8704},{"className":8703},[],[8705],{"type":1878,"value":8320},{"type":1878,"value":8707},".\nIn order for this function to be valid, each tensor must be created with the following creation flag:",{"type":1873,"tag":2151,"props":8709,"children":8711},{"className":2153,"code":8710,"language":2155,"meta":2156,"style":2156},"VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM = 0x00000004\n",[8712],{"type":1873,"tag":2159,"props":8713,"children":8714},{"__ignoreMap":2156},[8715],{"type":1873,"tag":2163,"props":8716,"children":8717},{"class":2165,"line":10},[8718,8723,8727,8731],{"type":1873,"tag":2163,"props":8719,"children":8720},{"style":2180},[8721],{"type":1878,"value":8722},"VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM ",{"type":1873,"tag":2163,"props":8724,"children":8725},{"style":2169},[8726],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":8728,"children":8729},{"style":2169},[8730],{"type":1878,"value":3992},{"type":1873,"tag":2163,"props":8732,"children":8733},{"style":3995},[8734],{"type":1878,"value":8735},"00000004\n",{"type":1873,"tag":1874,"props":8737,"children":8738},{},[8739,8741,8746,8748,8753,8754,8761],{"type":1878,"value":8740},"A tensor with this flag can be recreated from a previously captured tensor by passing ",{"type":1873,"tag":2159,"props":8742,"children":8744},{"className":8743},[],[8745],{"type":1878,"value":8383},{"type":1878,"value":8747}," back into tensor creation by chaining ",{"type":1873,"tag":2159,"props":8749,"children":8751},{"className":8750},[],[8752],{"type":1878,"value":8504},{"type":1878,"value":7269},{"type":1873,"tag":1921,"props":8755,"children":8758},{"href":8756,"rel":8757},"https://docs.vulkan.org/spec/latest/resources.html#VkTensorCreateInfo",[1925],[8759],{"type":1878,"value":8760},"VkTensorCreateInfo",{"type":1878,"value":8762},", with all other creation parameters matching.",{"type":1873,"tag":1874,"props":8764,"children":8765},{},[8766,8768,8775,8776,8781,8782,8787,8789,8794],{"type":1878,"value":8767},"If the implementation is unable to recreate an identical tensor from this opaque data that would result in the same descriptors, ",{"type":1873,"tag":1921,"props":8769,"children":8772},{"href":8770,"rel":8771},"https://docs.vulkan.org/spec/latest/resources.html#vkCreateTensorARM",[1925],[8773],{"type":1878,"value":8774},"vkCreateTensorARM",{"type":1878,"value":8484},{"type":1873,"tag":2159,"props":8777,"children":8779},{"className":8778},[],[8780],{"type":1878,"value":7879},{"type":1878,"value":8491},{"type":1873,"tag":2159,"props":8783,"children":8785},{"className":8784},[],[8786],{"type":1878,"value":7879},{"type":1878,"value":8788}," when writing an tensor descriptor if the tensor was created with ",{"type":1873,"tag":2159,"props":8790,"children":8792},{"className":8791},[],[8793],{"type":1878,"value":8504},{"type":1878,"value":8506},{"type":1873,"tag":1874,"props":8796,"children":8797},{},[8798,8799,8804,8805,8810],{"type":1878,"value":7836},{"type":1873,"tag":2159,"props":8800,"children":8802},{"className":8801},[],[8803],{"type":1878,"value":8516},{"type":1878,"value":7843},{"type":1873,"tag":2159,"props":8806,"children":8808},{"className":8807},[],[8809],{"type":1878,"value":4131},{"type":1878,"value":8811},", or if this structure is not present, tensor creation will proceed without matching previously captured data.",{"type":1873,"tag":1874,"props":8813,"children":8814},{},[8815],{"type":1878,"value":8529},{"type":1873,"tag":2079,"props":8817,"children":8819},{"id":8818},"_interaction_with_vk_ext_device_generated_commands",[8820],{"type":1878,"value":8821},"Interaction with VK_EXT_device_generated_commands",{"type":1873,"tag":1874,"props":8823,"children":8824},{},[8825],{"type":1878,"value":8826},"The following additional command tokens are added when VK_EXT_device_generated_commands is supported:",{"type":1873,"tag":2151,"props":8828,"children":8830},{"className":2153,"code":8829,"language":2155,"meta":2156,"style":2156},"typedef enum VkIndirectCommandsTokenTypeEXT {\n /* ... */\n VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT = 1000135000,\n VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT = 1000135001,\n} VkIndirectCommandsTokenTypeEXT;\n",[8831],{"type":1873,"tag":2159,"props":8832,"children":8833},{"__ignoreMap":2156},[8834,8850,8859,8880,8901],{"type":1873,"tag":2163,"props":8835,"children":8836},{"class":2165,"line":10},[8837,8841,8845],{"type":1873,"tag":2163,"props":8838,"children":8839},{"style":2169},[8840],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":8842,"children":8843},{"style":2169},[8844],{"type":1878,"value":4186},{"type":1873,"tag":2163,"props":8846,"children":8847},{"style":2180},[8848],{"type":1878,"value":8849}," VkIndirectCommandsTokenTypeEXT {\n",{"type":1873,"tag":2163,"props":8851,"children":8852},{"class":2165,"line":14},[8853],{"type":1873,"tag":2163,"props":8854,"children":8856},{"style":8855},"--shiki-default:#6E7781;--shiki-dark:#8B949E",[8857],{"type":1878,"value":8858}," /* ... */\n",{"type":1873,"tag":2163,"props":8860,"children":8861},{"class":2165,"line":18},[8862,8867,8871,8876],{"type":1873,"tag":2163,"props":8863,"children":8864},{"style":2180},[8865],{"type":1878,"value":8866}," VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT ",{"type":1873,"tag":2163,"props":8868,"children":8869},{"style":2169},[8870],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":8872,"children":8873},{"style":3995},[8874],{"type":1878,"value":8875}," 1000135000",{"type":1873,"tag":2163,"props":8877,"children":8878},{"style":2180},[8879],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8881,"children":8882},{"class":2165,"line":22},[8883,8888,8892,8897],{"type":1873,"tag":2163,"props":8884,"children":8885},{"style":2180},[8886],{"type":1878,"value":8887}," VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT ",{"type":1873,"tag":2163,"props":8889,"children":8890},{"style":2169},[8891],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":8893,"children":8894},{"style":3995},[8895],{"type":1878,"value":8896}," 1000135001",{"type":1873,"tag":2163,"props":8898,"children":8899},{"style":2180},[8900],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8902,"children":8903},{"class":2165,"line":26},[8904],{"type":1873,"tag":2163,"props":8905,"children":8906},{"style":2180},[8907],{"type":1878,"value":8908},"} VkIndirectCommandsTokenTypeEXT;\n",{"type":1873,"tag":1874,"props":8910,"children":8911},{},[8912,8914,8919],{"type":1878,"value":8913},"These new tokens function similarly to the push constant and sequence index tokens, using the same token data structure, but the pipeline layout must be ",{"type":1873,"tag":2159,"props":8915,"children":8917},{"className":8916},[],[8918],{"type":1878,"value":4131},{"type":1878,"value":8920},", and the shader stage flags must be ALL_STAGES, enabling layout-free indirect push data.",{"type":1873,"tag":2079,"props":8922,"children":8924},{"id":8923},"_interaction_with_vk_nv_device_generated_commands",[8925],{"type":1878,"value":8926},"Interaction with VK_NV_device_generated_commands",{"type":1873,"tag":1874,"props":8928,"children":8929},{},[8930],{"type":1878,"value":8931},"The following additional command token is added when VK_NV_device_generated_commands is supported:",{"type":1873,"tag":2151,"props":8933,"children":8935},{"className":2153,"code":8934,"language":2155,"meta":2156,"style":2156},"typedef enum VkIndirectCommandsTokenTypeNV {\n /* ... */\n VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV = 1000135000,\n} VkIndirectCommandsTokenTypeNV;\n\ntypedef struct VkIndirectCommandsLayoutPushDataTokenNV {\n VkStructureType sType;\n const void* pNext;\n uint32_t pushDataOffset;\n uint32_t pushDataSize;\n} VkIndirectCommandsLayoutPushDataTokenNV;\n",[8936],{"type":1873,"tag":2159,"props":8937,"children":8938},{"__ignoreMap":2156},[8939,8955,8962,8982,8990,8997,9013,9021,9037,9049,9061],{"type":1873,"tag":2163,"props":8940,"children":8941},{"class":2165,"line":10},[8942,8946,8950],{"type":1873,"tag":2163,"props":8943,"children":8944},{"style":2169},[8945],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":8947,"children":8948},{"style":2169},[8949],{"type":1878,"value":4186},{"type":1873,"tag":2163,"props":8951,"children":8952},{"style":2180},[8953],{"type":1878,"value":8954}," VkIndirectCommandsTokenTypeNV {\n",{"type":1873,"tag":2163,"props":8956,"children":8957},{"class":2165,"line":14},[8958],{"type":1873,"tag":2163,"props":8959,"children":8960},{"style":8855},[8961],{"type":1878,"value":8858},{"type":1873,"tag":2163,"props":8963,"children":8964},{"class":2165,"line":18},[8965,8970,8974,8978],{"type":1873,"tag":2163,"props":8966,"children":8967},{"style":2180},[8968],{"type":1878,"value":8969}," VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV ",{"type":1873,"tag":2163,"props":8971,"children":8972},{"style":2169},[8973],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":8975,"children":8976},{"style":3995},[8977],{"type":1878,"value":8875},{"type":1873,"tag":2163,"props":8979,"children":8980},{"style":2180},[8981],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":8983,"children":8984},{"class":2165,"line":22},[8985],{"type":1873,"tag":2163,"props":8986,"children":8987},{"style":2180},[8988],{"type":1878,"value":8989},"} VkIndirectCommandsTokenTypeNV;\n",{"type":1873,"tag":2163,"props":8991,"children":8992},{"class":2165,"line":26},[8993],{"type":1873,"tag":2163,"props":8994,"children":8995},{"emptyLinePlaceholder":232},[8996],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":8998,"children":8999},{"class":2165,"line":30},[9000,9004,9008],{"type":1873,"tag":2163,"props":9001,"children":9002},{"style":2169},[9003],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":9005,"children":9006},{"style":2169},[9007],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":9009,"children":9010},{"style":2180},[9011],{"type":1878,"value":9012}," VkIndirectCommandsLayoutPushDataTokenNV {\n",{"type":1873,"tag":2163,"props":9014,"children":9015},{"class":2165,"line":34},[9016],{"type":1873,"tag":2163,"props":9017,"children":9018},{"style":2180},[9019],{"type":1878,"value":9020}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":9022,"children":9023},{"class":2165,"line":38},[9024,9028,9032],{"type":1873,"tag":2163,"props":9025,"children":9026},{"style":2169},[9027],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":9029,"children":9030},{"style":2169},[9031],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":9033,"children":9034},{"style":2180},[9035],{"type":1878,"value":9036}," pNext;\n",{"type":1873,"tag":2163,"props":9038,"children":9039},{"class":2165,"line":42},[9040,9044],{"type":1873,"tag":2163,"props":9041,"children":9042},{"style":2169},[9043],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":9045,"children":9046},{"style":2180},[9047],{"type":1878,"value":9048}," pushDataOffset;\n",{"type":1873,"tag":2163,"props":9050,"children":9051},{"class":2165,"line":46},[9052,9056],{"type":1873,"tag":2163,"props":9053,"children":9054},{"style":2169},[9055],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":9057,"children":9058},{"style":2180},[9059],{"type":1878,"value":9060}," pushDataSize;\n",{"type":1873,"tag":2163,"props":9062,"children":9063},{"class":2165,"line":50},[9064],{"type":1873,"tag":2163,"props":9065,"children":9066},{"style":2180},[9067],{"type":1878,"value":9068},"} VkIndirectCommandsLayoutPushDataTokenNV;\n",{"type":1873,"tag":1874,"props":9070,"children":9071},{},[9072,9074,9079,9080,9086,9088,9093,9094,9101,9103,9109],{"type":1878,"value":9073},"This new token functions similarly to the push constant token, but does not require a pipeline layout or shader stage flags, both of which are similarly absent from ",{"type":1873,"tag":2159,"props":9075,"children":9077},{"className":9076},[],[9078],{"type":1878,"value":4443},{"type":1878,"value":3225},{"type":1873,"tag":2159,"props":9081,"children":9083},{"className":9082},[],[9084],{"type":1878,"value":9085},"VkIndirectCommandsLayoutPushDataTokenNV",{"type":1878,"value":9087}," can be included in the ",{"type":1873,"tag":2159,"props":9089,"children":9091},{"className":9090},[],[9092],{"type":1878,"value":3340},{"type":1878,"value":3342},{"type":1873,"tag":1921,"props":9095,"children":9098},{"href":9096,"rel":9097},"https://docs.vulkan.org/spec/latest/device_generated_commands/generatedcommands.html#VkIndirectCommandsLayoutTokenNV",[1925],[9099],{"type":1878,"value":9100},"VkIndirectCommandsLayoutTokenNV",{"type":1878,"value":9102}," when the ",{"type":1873,"tag":2159,"props":9104,"children":9106},{"className":9105},[],[9107],{"type":1878,"value":9108},"VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV",{"type":1878,"value":9110}," token type is specified to enable the use of this token.",{"type":1873,"tag":2079,"props":9112,"children":9114},{"id":9113},"_interaction_with_vk_ext_fragment_density_map",[9115],{"type":1878,"value":9116},"Interaction with VK_EXT_fragment_density_map",{"type":1873,"tag":1874,"props":9118,"children":9119},{},[9120],{"type":1878,"value":9121},"The following structure is added when VK_EXT_fragment_density_map is supported:",{"type":1873,"tag":2151,"props":9123,"children":9125},{"className":2153,"code":9124,"language":2155,"meta":2156,"style":2156},"typedef struct VkSubsampledImageFormatPropertiesEXT {\n VkStructureType sType;\n void* pNext;\n uint32_t subsampledImageDescriptorCount;\n} VkSubsampledImageFormatPropertiesEXT;\n",[9126],{"type":1873,"tag":2159,"props":9127,"children":9128},{"__ignoreMap":2156},[9129,9145,9153,9164,9176],{"type":1873,"tag":2163,"props":9130,"children":9131},{"class":2165,"line":10},[9132,9136,9140],{"type":1873,"tag":2163,"props":9133,"children":9134},{"style":2169},[9135],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":9137,"children":9138},{"style":2169},[9139],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":9141,"children":9142},{"style":2180},[9143],{"type":1878,"value":9144}," VkSubsampledImageFormatPropertiesEXT {\n",{"type":1873,"tag":2163,"props":9146,"children":9147},{"class":2165,"line":14},[9148],{"type":1873,"tag":2163,"props":9149,"children":9150},{"style":2180},[9151],{"type":1878,"value":9152}," VkStructureType sType;\n",{"type":1873,"tag":2163,"props":9154,"children":9155},{"class":2165,"line":18},[9156,9160],{"type":1873,"tag":2163,"props":9157,"children":9158},{"style":2169},[9159],{"type":1878,"value":2191},{"type":1873,"tag":2163,"props":9161,"children":9162},{"style":2180},[9163],{"type":1878,"value":7471},{"type":1873,"tag":2163,"props":9165,"children":9166},{"class":2165,"line":22},[9167,9171],{"type":1873,"tag":2163,"props":9168,"children":9169},{"style":2169},[9170],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":9172,"children":9173},{"style":2180},[9174],{"type":1878,"value":9175}," subsampledImageDescriptorCount;\n",{"type":1873,"tag":2163,"props":9177,"children":9178},{"class":2165,"line":26},[9179],{"type":1873,"tag":2163,"props":9180,"children":9181},{"style":2180},[9182],{"type":1878,"value":9183},"} VkSubsampledImageFormatPropertiesEXT;\n",{"type":1873,"tag":1874,"props":9185,"children":9186},{},[9187,9189,9194,9195,9202],{"type":1878,"value":9188},"This structure can be included in the ",{"type":1873,"tag":2159,"props":9190,"children":9192},{"className":9191},[],[9193],{"type":1878,"value":3340},{"type":1878,"value":3342},{"type":1873,"tag":1921,"props":9196,"children":9199},{"href":9197,"rel":9198},"https://docs.vulkan.org/spec/latest/capabilities.html#VkImageFormatProperties2",[1925],[9200],{"type":1878,"value":9201},"VkImageFormatProperties2",{"type":1878,"value":9203}," to query the number of image descriptors required for subsampled images.",{"type":1873,"tag":2079,"props":9205,"children":9207},{"id":9206},"_device_features",[9208],{"type":1878,"value":9209},"Device Features",{"type":1873,"tag":1874,"props":9211,"children":9212},{},[9213],{"type":1878,"value":9214},"The following features are exposed:",{"type":1873,"tag":2151,"props":9216,"children":9218},{"className":2153,"code":9217,"language":2155,"meta":2156,"style":2156},"typedef struct VkPhysicalDeviceDescriptorHeapFeaturesEXT {\n VkStructureType sType;\n void* pNext;\n VkBool32 descriptorHeap;\n VkBool32 descriptorHeapCaptureReplay;\n} VkPhysicalDeviceDescriptorHeapFeaturesEXT;\n",[9219],{"type":1873,"tag":2159,"props":9220,"children":9221},{"__ignoreMap":2156},[9222,9238,9245,9256,9264,9272],{"type":1873,"tag":2163,"props":9223,"children":9224},{"class":2165,"line":10},[9225,9229,9233],{"type":1873,"tag":2163,"props":9226,"children":9227},{"style":2169},[9228],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":9230,"children":9231},{"style":2169},[9232],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":9234,"children":9235},{"style":2180},[9236],{"type":1878,"value":9237}," VkPhysicalDeviceDescriptorHeapFeaturesEXT {\n",{"type":1873,"tag":2163,"props":9239,"children":9240},{"class":2165,"line":14},[9241],{"type":1873,"tag":2163,"props":9242,"children":9243},{"style":2180},[9244],{"type":1878,"value":9152},{"type":1873,"tag":2163,"props":9246,"children":9247},{"class":2165,"line":18},[9248,9252],{"type":1873,"tag":2163,"props":9249,"children":9250},{"style":2169},[9251],{"type":1878,"value":2191},{"type":1873,"tag":2163,"props":9253,"children":9254},{"style":2180},[9255],{"type":1878,"value":7471},{"type":1873,"tag":2163,"props":9257,"children":9258},{"class":2165,"line":22},[9259],{"type":1873,"tag":2163,"props":9260,"children":9261},{"style":2180},[9262],{"type":1878,"value":9263}," VkBool32 descriptorHeap;\n",{"type":1873,"tag":2163,"props":9265,"children":9266},{"class":2165,"line":26},[9267],{"type":1873,"tag":2163,"props":9268,"children":9269},{"style":2180},[9270],{"type":1878,"value":9271}," VkBool32 descriptorHeapCaptureReplay;\n",{"type":1873,"tag":2163,"props":9273,"children":9274},{"class":2165,"line":30},[9275],{"type":1873,"tag":2163,"props":9276,"children":9277},{"style":2180},[9278],{"type":1878,"value":9279},"} VkPhysicalDeviceDescriptorHeapFeaturesEXT;\n",{"type":1873,"tag":1874,"props":9281,"children":9282},{},[9283,9285,9291,9293,9299,9301,9306,9308,9313,9314,9319],{"type":1878,"value":9284},"If the ",{"type":1873,"tag":2159,"props":9286,"children":9288},{"className":9287},[],[9289],{"type":1878,"value":9290},"descriptorHeap",{"type":1878,"value":9292}," feature is enabled, ",{"type":1873,"tag":1921,"props":9294,"children":9297},{"href":9295,"rel":9296},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_AMD_shader_fragment_mask",[1925],[9298],{"type":1878,"value":340},{"type":1878,"value":9300}," must not be enabled.\nThe ",{"type":1873,"tag":2159,"props":9302,"children":9304},{"className":9303},[],[9305],{"type":1878,"value":8049},{"type":1878,"value":9307}," feature is primarily for capture replay tools, and allows opaque image data to be captured and replayed, allowing the same descriptor handles to be used on replay.\nSupporting ",{"type":1873,"tag":2159,"props":9309,"children":9311},{"className":9310},[],[9312],{"type":1878,"value":8049},{"type":1878,"value":7843},{"type":1873,"tag":3956,"props":9315,"children":9316},{},[9317],{"type":1878,"value":9318},"strongly",{"type":1878,"value":9320}," recommended.",{"type":1873,"tag":2079,"props":9322,"children":9324},{"id":9323},"_device_properties",[9325],{"type":1878,"value":9326},"Device Properties",{"type":1873,"tag":1874,"props":9328,"children":9329},{},[9330],{"type":1878,"value":9331},"The following properties are exposed:",{"type":1873,"tag":2151,"props":9333,"children":9335},{"className":2153,"code":9334,"language":2155,"meta":2156,"style":2156},"typedef struct VkPhysicalDeviceDescriptorHeapPropertiesEXT {\n VkStructureType sType;\n void* pNext;\n VkDeviceSize samplerHeapAlignment;\n VkDeviceSize resourceHeapAlignment;\n VkDeviceSize maxSamplerHeapSize;\n VkDeviceSize maxResourceHeapSize;\n VkDeviceSize minSamplerHeapReservedRange;\n VkDeviceSize minSamplerHeapReservedRangeWithEmbedded;\n VkDeviceSize minResourceHeapReservedRange;\n VkDeviceSize samplerDescriptorSize;\n VkDeviceSize imageDescriptorSize;\n VkDeviceSize bufferDescriptorSize;\n VkDeviceSize samplerDescriptorAlignment;\n VkDeviceSize imageDescriptorAlignment;\n VkDeviceSize bufferDescriptorAlignment;\n VkDeviceSize maxPushDataSize;\n size_t imageCaptureReplayOpaqueDataSize;\n uint32_t maxDescriptorHeapEmbeddedSamplers;\n uint32_t samplerYcbcrConversionCount;\n VkBool32 sparseDescriptorHeaps;\n VkBool32 protectedDescriptorHeaps;\n} VkPhysicalDeviceDescriptorHeapPropertiesEXT;\n",[9336],{"type":1873,"tag":2159,"props":9337,"children":9338},{"__ignoreMap":2156},[9339,9355,9362,9374,9382,9390,9398,9406,9414,9422,9430,9438,9446,9454,9462,9470,9478,9486,9498,9510,9522,9530,9538],{"type":1873,"tag":2163,"props":9340,"children":9341},{"class":2165,"line":10},[9342,9346,9350],{"type":1873,"tag":2163,"props":9343,"children":9344},{"style":2169},[9345],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":9347,"children":9348},{"style":2169},[9349],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":9351,"children":9352},{"style":2180},[9353],{"type":1878,"value":9354}," VkPhysicalDeviceDescriptorHeapPropertiesEXT {\n",{"type":1873,"tag":2163,"props":9356,"children":9357},{"class":2165,"line":14},[9358],{"type":1873,"tag":2163,"props":9359,"children":9360},{"style":2180},[9361],{"type":1878,"value":7964},{"type":1873,"tag":2163,"props":9363,"children":9364},{"class":2165,"line":18},[9365,9369],{"type":1873,"tag":2163,"props":9366,"children":9367},{"style":2169},[9368],{"type":1878,"value":2191},{"type":1873,"tag":2163,"props":9370,"children":9371},{"style":2180},[9372],{"type":1878,"value":9373}," pNext;\n",{"type":1873,"tag":2163,"props":9375,"children":9376},{"class":2165,"line":22},[9377],{"type":1873,"tag":2163,"props":9378,"children":9379},{"style":2180},[9380],{"type":1878,"value":9381}," VkDeviceSize samplerHeapAlignment;\n",{"type":1873,"tag":2163,"props":9383,"children":9384},{"class":2165,"line":26},[9385],{"type":1873,"tag":2163,"props":9386,"children":9387},{"style":2180},[9388],{"type":1878,"value":9389}," VkDeviceSize resourceHeapAlignment;\n",{"type":1873,"tag":2163,"props":9391,"children":9392},{"class":2165,"line":30},[9393],{"type":1873,"tag":2163,"props":9394,"children":9395},{"style":2180},[9396],{"type":1878,"value":9397}," VkDeviceSize maxSamplerHeapSize;\n",{"type":1873,"tag":2163,"props":9399,"children":9400},{"class":2165,"line":34},[9401],{"type":1873,"tag":2163,"props":9402,"children":9403},{"style":2180},[9404],{"type":1878,"value":9405}," VkDeviceSize maxResourceHeapSize;\n",{"type":1873,"tag":2163,"props":9407,"children":9408},{"class":2165,"line":38},[9409],{"type":1873,"tag":2163,"props":9410,"children":9411},{"style":2180},[9412],{"type":1878,"value":9413}," VkDeviceSize minSamplerHeapReservedRange;\n",{"type":1873,"tag":2163,"props":9415,"children":9416},{"class":2165,"line":42},[9417],{"type":1873,"tag":2163,"props":9418,"children":9419},{"style":2180},[9420],{"type":1878,"value":9421}," VkDeviceSize minSamplerHeapReservedRangeWithEmbedded;\n",{"type":1873,"tag":2163,"props":9423,"children":9424},{"class":2165,"line":46},[9425],{"type":1873,"tag":2163,"props":9426,"children":9427},{"style":2180},[9428],{"type":1878,"value":9429}," VkDeviceSize minResourceHeapReservedRange;\n",{"type":1873,"tag":2163,"props":9431,"children":9432},{"class":2165,"line":50},[9433],{"type":1873,"tag":2163,"props":9434,"children":9435},{"style":2180},[9436],{"type":1878,"value":9437}," VkDeviceSize samplerDescriptorSize;\n",{"type":1873,"tag":2163,"props":9439,"children":9440},{"class":2165,"line":54},[9441],{"type":1873,"tag":2163,"props":9442,"children":9443},{"style":2180},[9444],{"type":1878,"value":9445}," VkDeviceSize imageDescriptorSize;\n",{"type":1873,"tag":2163,"props":9447,"children":9448},{"class":2165,"line":58},[9449],{"type":1873,"tag":2163,"props":9450,"children":9451},{"style":2180},[9452],{"type":1878,"value":9453}," VkDeviceSize bufferDescriptorSize;\n",{"type":1873,"tag":2163,"props":9455,"children":9456},{"class":2165,"line":62},[9457],{"type":1873,"tag":2163,"props":9458,"children":9459},{"style":2180},[9460],{"type":1878,"value":9461}," VkDeviceSize samplerDescriptorAlignment;\n",{"type":1873,"tag":2163,"props":9463,"children":9464},{"class":2165,"line":66},[9465],{"type":1873,"tag":2163,"props":9466,"children":9467},{"style":2180},[9468],{"type":1878,"value":9469}," VkDeviceSize imageDescriptorAlignment;\n",{"type":1873,"tag":2163,"props":9471,"children":9472},{"class":2165,"line":70},[9473],{"type":1873,"tag":2163,"props":9474,"children":9475},{"style":2180},[9476],{"type":1878,"value":9477}," VkDeviceSize bufferDescriptorAlignment;\n",{"type":1873,"tag":2163,"props":9479,"children":9480},{"class":2165,"line":74},[9481],{"type":1873,"tag":2163,"props":9482,"children":9483},{"style":2180},[9484],{"type":1878,"value":9485}," VkDeviceSize maxPushDataSize;\n",{"type":1873,"tag":2163,"props":9487,"children":9488},{"class":2165,"line":78},[9489,9493],{"type":1873,"tag":2163,"props":9490,"children":9491},{"style":2169},[9492],{"type":1878,"value":2204},{"type":1873,"tag":2163,"props":9494,"children":9495},{"style":2180},[9496],{"type":1878,"value":9497}," imageCaptureReplayOpaqueDataSize;\n",{"type":1873,"tag":2163,"props":9499,"children":9500},{"class":2165,"line":82},[9501,9505],{"type":1873,"tag":2163,"props":9502,"children":9503},{"style":2169},[9504],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":9506,"children":9507},{"style":2180},[9508],{"type":1878,"value":9509}," maxDescriptorHeapEmbeddedSamplers;\n",{"type":1873,"tag":2163,"props":9511,"children":9512},{"class":2165,"line":86},[9513,9517],{"type":1873,"tag":2163,"props":9514,"children":9515},{"style":2169},[9516],{"type":1878,"value":2716},{"type":1873,"tag":2163,"props":9518,"children":9519},{"style":2180},[9520],{"type":1878,"value":9521}," samplerYcbcrConversionCount;\n",{"type":1873,"tag":2163,"props":9523,"children":9524},{"class":2165,"line":90},[9525],{"type":1873,"tag":2163,"props":9526,"children":9527},{"style":2180},[9528],{"type":1878,"value":9529}," VkBool32 sparseDescriptorHeaps;\n",{"type":1873,"tag":2163,"props":9531,"children":9532},{"class":2165,"line":94},[9533],{"type":1873,"tag":2163,"props":9534,"children":9535},{"style":2180},[9536],{"type":1878,"value":9537}," VkBool32 protectedDescriptorHeaps;\n",{"type":1873,"tag":2163,"props":9539,"children":9540},{"class":2165,"line":98},[9541],{"type":1873,"tag":2163,"props":9542,"children":9543},{"style":2180},[9544],{"type":1878,"value":9545},"} VkPhysicalDeviceDescriptorHeapPropertiesEXT;\n",{"type":1873,"tag":1892,"props":9547,"children":9548},{},[9549,9573,9595,9619,9642,9653,9663,9674,9692,9708,9725,9742,9759,9776,9786,9796,9806,9828,9847],{"type":1873,"tag":1896,"props":9550,"children":9551},{},[9552,9557,9559,9564,9566,9571],{"type":1873,"tag":2159,"props":9553,"children":9555},{"className":9554},[],[9556],{"type":1878,"value":4053},{"type":1878,"value":9558}," specifies the required alignment of the ",{"type":1873,"tag":2159,"props":9560,"children":9562},{"className":9561},[],[9563],{"type":1878,"value":8336},{"type":1878,"value":9565}," member of ",{"type":1873,"tag":2159,"props":9567,"children":9569},{"className":9568},[],[9570],{"type":1878,"value":8125},{"type":1878,"value":9572}," for binding sampler heaps. It must be a power-of-two value.",{"type":1873,"tag":1896,"props":9574,"children":9575},{},[9576,9581,9582,9587,9588,9593],{"type":1873,"tag":2159,"props":9577,"children":9579},{"className":9578},[],[9580],{"type":1878,"value":4060},{"type":1878,"value":9558},{"type":1873,"tag":2159,"props":9583,"children":9585},{"className":9584},[],[9586],{"type":1878,"value":8336},{"type":1878,"value":9565},{"type":1873,"tag":2159,"props":9589,"children":9591},{"className":9590},[],[9592],{"type":1878,"value":8125},{"type":1878,"value":9594}," for binding resource heaps. It must be a power-of-two value.",{"type":1873,"tag":1896,"props":9596,"children":9597},{},[9598,9604,9606,9611,9612,9617],{"type":1873,"tag":2159,"props":9599,"children":9601},{"className":9600},[],[9602],{"type":1878,"value":9603},"maxSamplerHeapSize",{"type":1878,"value":9605}," specifies the maximum value of the ",{"type":1873,"tag":2159,"props":9607,"children":9609},{"className":9608},[],[9610],{"type":1878,"value":4412},{"type":1878,"value":9565},{"type":1873,"tag":2159,"props":9613,"children":9615},{"className":9614},[],[9616],{"type":1878,"value":8125},{"type":1878,"value":9618}," for binding sampler heaps, including the reservation.",{"type":1873,"tag":1896,"props":9620,"children":9621},{},[9622,9628,9629,9634,9635,9640],{"type":1873,"tag":2159,"props":9623,"children":9625},{"className":9624},[],[9626],{"type":1878,"value":9627},"maxResourceHeapSize",{"type":1878,"value":9605},{"type":1873,"tag":2159,"props":9630,"children":9632},{"className":9631},[],[9633],{"type":1878,"value":4412},{"type":1878,"value":9565},{"type":1873,"tag":2159,"props":9636,"children":9638},{"className":9637},[],[9639],{"type":1878,"value":8125},{"type":1878,"value":9641}," for binding resource heaps, including the reservation.",{"type":1873,"tag":1896,"props":9643,"children":9644},{},[9645,9651],{"type":1873,"tag":2159,"props":9646,"children":9648},{"className":9647},[],[9649],{"type":1878,"value":9650},"minSamplerHeapReservedRange",{"type":1878,"value":9652}," specifies the minimum amount of data that the implementation needs reserved in the sampler heap when embedded samplers are not used.",{"type":1873,"tag":1896,"props":9654,"children":9655},{},[9656,9661],{"type":1873,"tag":2159,"props":9657,"children":9659},{"className":9658},[],[9660],{"type":1878,"value":3943},{"type":1878,"value":9662}," specifies the minimum amount of data that the implementation needs reserved in the sampler heap when embedded samplers are used.",{"type":1873,"tag":1896,"props":9664,"children":9665},{},[9666,9672],{"type":1873,"tag":2159,"props":9667,"children":9669},{"className":9668},[],[9670],{"type":1878,"value":9671},"minResourceHeapReservedRange",{"type":1878,"value":9673}," specifies the minimum amount of data that the implementation needs reserved in the resource heap.",{"type":1873,"tag":1896,"props":9675,"children":9676},{},[9677,9683,9685,9690],{"type":1873,"tag":2159,"props":9678,"children":9680},{"className":9679},[],[9681],{"type":1878,"value":9682},"samplerDescriptorSize",{"type":1878,"value":9684}," specifies the size of descriptors returned by ",{"type":1873,"tag":2159,"props":9686,"children":9688},{"className":9687},[],[9689],{"type":1878,"value":2685},{"type":1878,"value":9691},". Must be a power-of-two value.",{"type":1873,"tag":1896,"props":9693,"children":9694},{},[9695,9700,9702,9707],{"type":1873,"tag":2159,"props":9696,"children":9698},{"className":9697},[],[9699],{"type":1878,"value":3364},{"type":1878,"value":9701}," specifies the maximum size of descriptors for an image or texel buffer written by ",{"type":1873,"tag":2159,"props":9703,"children":9705},{"className":9704},[],[9706],{"type":1878,"value":2795},{"type":1878,"value":9691},{"type":1873,"tag":1896,"props":9709,"children":9710},{},[9711,9717,9719,9724],{"type":1873,"tag":2159,"props":9712,"children":9714},{"className":9713},[],[9715],{"type":1878,"value":9716},"bufferDescriptorSize",{"type":1878,"value":9718}," specifies the maximum size of descriptors for an address range written by ",{"type":1873,"tag":2159,"props":9720,"children":9722},{"className":9721},[],[9723],{"type":1878,"value":2795},{"type":1878,"value":9691},{"type":1873,"tag":1896,"props":9726,"children":9727},{},[9728,9734,9736,9741],{"type":1873,"tag":2159,"props":9729,"children":9731},{"className":9730},[],[9732],{"type":1878,"value":9733},"samplerDescriptorAlignment",{"type":1878,"value":9735}," indicates the required alignment of sampler descriptors within a sampler heap. It must be a power-of-two value, and less than or equal to ",{"type":1873,"tag":2159,"props":9737,"children":9739},{"className":9738},[],[9740],{"type":1878,"value":9682},{"type":1878,"value":2077},{"type":1873,"tag":1896,"props":9743,"children":9744},{},[9745,9751,9753,9758],{"type":1873,"tag":2159,"props":9746,"children":9748},{"className":9747},[],[9749],{"type":1878,"value":9750},"imageDescriptorAlignment",{"type":1878,"value":9752}," indicates the required alignment of image and texel buffer descriptors within a resource heap. It must be a power-of-two value, and less than or equal to ",{"type":1873,"tag":2159,"props":9754,"children":9756},{"className":9755},[],[9757],{"type":1878,"value":3364},{"type":1878,"value":2077},{"type":1873,"tag":1896,"props":9760,"children":9761},{},[9762,9768,9770,9775],{"type":1873,"tag":2159,"props":9763,"children":9765},{"className":9764},[],[9766],{"type":1878,"value":9767},"bufferDescriptorAlignment",{"type":1878,"value":9769}," indicates the required alignment of unformatted buffers and acceleration structure descriptors within a resource heap. It must be a power-of-two value, and less than or equal to ",{"type":1873,"tag":2159,"props":9771,"children":9773},{"className":9772},[],[9774],{"type":1878,"value":9716},{"type":1878,"value":2077},{"type":1873,"tag":1896,"props":9777,"children":9778},{},[9779,9784],{"type":1873,"tag":2159,"props":9780,"children":9782},{"className":9781},[],[9783],{"type":1878,"value":4420},{"type":1878,"value":9785}," indicates the absolute maximum total size of all push data that the implementation can support.",{"type":1873,"tag":1896,"props":9787,"children":9788},{},[9789,9794],{"type":1873,"tag":2159,"props":9790,"children":9792},{"className":9791},[],[9793],{"type":1878,"value":8328},{"type":1878,"value":9795}," indicates the size of the opaque capture/replay data for an image.",{"type":1873,"tag":1896,"props":9797,"children":9798},{},[9799,9804],{"type":1873,"tag":2159,"props":9800,"children":9802},{"className":9801},[],[9803],{"type":1878,"value":7317},{"type":1878,"value":9805}," indicates the maximum number of unique embedded samplers across all pipelines.",{"type":1873,"tag":1896,"props":9807,"children":9808},{},[9809,9815,9817,9821,9822,9826],{"type":1873,"tag":2159,"props":9810,"children":9812},{"className":9811},[],[9813],{"type":1878,"value":9814},"samplerYcbcrConversionCount",{"type":1878,"value":9816}," indicates the number of sampler descriptors required for any sampler using YC",{"type":1873,"tag":3263,"props":9818,"children":9819},{},[9820],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":9823,"children":9824},{},[9825],{"type":1878,"value":3274},{"type":1878,"value":9827}," conversion.",{"type":1873,"tag":1896,"props":9829,"children":9830},{},[9831,9837,9839,9845],{"type":1873,"tag":2159,"props":9832,"children":9834},{"className":9833},[],[9835],{"type":1878,"value":9836},"sparseDescriptorHeaps",{"type":1878,"value":9838}," specifies whether descriptor heaps can be backed by sparse memory or not.\nIf this value is ",{"type":1873,"tag":2159,"props":9840,"children":9842},{"className":9841},[],[9843],{"type":1878,"value":9844},"VK_FALSE",{"type":1878,"value":9846},", buffers cannot be specified as both sparse and having descriptor heap usage.",{"type":1873,"tag":1896,"props":9848,"children":9849},{},[9850,9856,9858,9863],{"type":1873,"tag":2159,"props":9851,"children":9853},{"className":9852},[],[9854],{"type":1878,"value":9855},"protectedDescriptorHeaps",{"type":1878,"value":9857}," specifies whether descriptor heaps can be backed by protected memory or not.\nIf this value is ",{"type":1873,"tag":2159,"props":9859,"children":9861},{"className":9860},[],[9862],{"type":1878,"value":9844},{"type":1878,"value":9864},", buffers cannot be specified as both protected and having both descriptor heap usage.",{"type":1873,"tag":1874,"props":9866,"children":9867},{},[9868],{"type":1878,"value":9869},"These properties have the following required values:",{"type":1873,"tag":9871,"props":9872,"children":9878},"table",{"className":9873},[9874,9875,9876,9877],"tableblock","frame-all","grid-all","stretch",[9879,9900,9935],{"type":1873,"tag":9880,"props":9881,"children":9882},"colgroup",{},[9883,9888,9892,9896],{"type":1873,"tag":9884,"props":9885,"children":9887},"col",{"style":9886},"width: 23.8095%;",[],{"type":1873,"tag":9884,"props":9889,"children":9891},{"style":9890},"width: 47.619%;",[],{"type":1873,"tag":9884,"props":9893,"children":9895},{"style":9894},"width: 4.7619%;",[],{"type":1873,"tag":9884,"props":9897,"children":9899},{"style":9898},"width: 23.8096%;",[],{"type":1873,"tag":9901,"props":9902,"children":9903},"thead",{},[9904],{"type":1873,"tag":9905,"props":9906,"children":9907},"tr",{},[9908,9917,9923,9929],{"type":1873,"tag":9909,"props":9910,"children":9914},"th",{"className":9911},[9874,9912,9913],"halign-left","valign-top",[9915],{"type":1878,"value":9916},"Limit",{"type":1873,"tag":9909,"props":9918,"children":9920},{"className":9919},[9874,9912,9913],[9921],{"type":1878,"value":9922},"Requirement",{"type":1873,"tag":9909,"props":9924,"children":9926},{"className":9925},[9874,9912,9913],[9927],{"type":1878,"value":9928},"Type",{"type":1873,"tag":9909,"props":9930,"children":9932},{"className":9931},[9874,9912,9913],[9933],{"type":1878,"value":9934},"Derived from",{"type":1873,"tag":9936,"props":9937,"children":9938},"tbody",{},[9939,9982,10021,10067,10116,10157,10198,10245,10285,10325,10365,10404,10443,10482,10523,10564],{"type":1873,"tag":9905,"props":9940,"children":9941},{},[9942,9952,9962,9972],{"type":1873,"tag":9943,"props":9944,"children":9946},"td",{"className":9945},[9874,9912,9913],[9947],{"type":1873,"tag":1874,"props":9948,"children":9950},{"className":9949},[9874],[9951],{"type":1878,"value":4053},{"type":1873,"tag":9943,"props":9953,"children":9955},{"className":9954},[9874,9912,9913],[9956],{"type":1873,"tag":1874,"props":9957,"children":9959},{"className":9958},[9874],[9960],{"type":1878,"value":9961},"65536",{"type":1873,"tag":9943,"props":9963,"children":9965},{"className":9964},[9874,9912,9913],[9966],{"type":1873,"tag":1874,"props":9967,"children":9969},{"className":9968},[9874],[9970],{"type":1878,"value":9971},"max",{"type":1873,"tag":9943,"props":9973,"children":9975},{"className":9974},[9874,9912,9913],[9976],{"type":1873,"tag":1874,"props":9977,"children":9979},{"className":9978},[9874],[9980],{"type":1878,"value":9981},"Implementor request",{"type":1873,"tag":9905,"props":9983,"children":9984},{},[9985,9994,10003,10012],{"type":1873,"tag":9943,"props":9986,"children":9988},{"className":9987},[9874,9912,9913],[9989],{"type":1873,"tag":1874,"props":9990,"children":9992},{"className":9991},[9874],[9993],{"type":1878,"value":4060},{"type":1873,"tag":9943,"props":9995,"children":9997},{"className":9996},[9874,9912,9913],[9998],{"type":1873,"tag":1874,"props":9999,"children":10001},{"className":10000},[9874],[10002],{"type":1878,"value":9961},{"type":1873,"tag":9943,"props":10004,"children":10006},{"className":10005},[9874,9912,9913],[10007],{"type":1873,"tag":1874,"props":10008,"children":10010},{"className":10009},[9874],[10011],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10013,"children":10015},{"className":10014},[9874,9912,9913],[10016],{"type":1873,"tag":1874,"props":10017,"children":10019},{"className":10018},[9874],[10020],{"type":1878,"value":9981},{"type":1873,"tag":9905,"props":10022,"children":10023},{},[10024,10033,10047,10057],{"type":1873,"tag":9943,"props":10025,"children":10027},{"className":10026},[9874,9912,9913],[10028],{"type":1873,"tag":1874,"props":10029,"children":10031},{"className":10030},[9874],[10032],{"type":1878,"value":9603},{"type":1873,"tag":9943,"props":10034,"children":10036},{"className":10035},[9874,9912,9913],[10037],{"type":1873,"tag":1874,"props":10038,"children":10040},{"className":10039},[9874],[10041,10043,10045],{"type":1878,"value":10042},"max(",{"type":1878,"value":10044},"\n 4000 × samplerDescriptorSize + minSamplerHeapReservedRange,\n ",{"type":1878,"value":10046},"\n 2048 × samplerDescriptorSize\n + minSamplerHeapReservedRangeWithEmbedded)",{"type":1873,"tag":9943,"props":10048,"children":10050},{"className":10049},[9874,9912,9913],[10051],{"type":1873,"tag":1874,"props":10052,"children":10054},{"className":10053},[9874],[10055],{"type":1878,"value":10056},"min",{"type":1873,"tag":9943,"props":10058,"children":10060},{"className":10059},[9874,9912,9913],[10061],{"type":1873,"tag":1874,"props":10062,"children":10064},{"className":10063},[9874],[10065],{"type":1878,"value":10066},"DirectX 12 sampler heap limits + reserved ranges",{"type":1873,"tag":9905,"props":10068,"children":10069},{},[10070,10079,10097,10106],{"type":1873,"tag":9943,"props":10071,"children":10073},{"className":10072},[9874,9912,9913],[10074],{"type":1873,"tag":1874,"props":10075,"children":10077},{"className":10076},[9874],[10078],{"type":1878,"value":9627},{"type":1873,"tag":9943,"props":10080,"children":10082},{"className":10081},[9874,9912,9913],[10083],{"type":1873,"tag":1874,"props":10084,"children":10086},{"className":10085},[9874],[10087,10089,10095],{"type":1878,"value":10088},"(2",{"type":1873,"tag":10090,"props":10091,"children":10092},"superscript",{},[10093],{"type":1878,"value":10094},"20",{"type":1878,"value":10096}," - 2^15) × max(imageDescriptorSize,\n bufferDescriptorSize) + minResourceHeapReservedRange",{"type":1873,"tag":9943,"props":10098,"children":10100},{"className":10099},[9874,9912,9913],[10101],{"type":1873,"tag":1874,"props":10102,"children":10104},{"className":10103},[9874],[10105],{"type":1878,"value":10056},{"type":1873,"tag":9943,"props":10107,"children":10109},{"className":10108},[9874,9912,9913],[10110],{"type":1873,"tag":1874,"props":10111,"children":10113},{"className":10112},[9874],[10114],{"type":1878,"value":10115},"DirectX 12 resource heap limit + wiggle room + reserved range",{"type":1873,"tag":9905,"props":10117,"children":10118},{},[10119,10128,10138,10147],{"type":1873,"tag":9943,"props":10120,"children":10122},{"className":10121},[9874,9912,9913],[10123],{"type":1873,"tag":1874,"props":10124,"children":10126},{"className":10125},[9874],[10127],{"type":1878,"value":9650},{"type":1873,"tag":9943,"props":10129,"children":10131},{"className":10130},[9874,9912,9913],[10132],{"type":1873,"tag":1874,"props":10133,"children":10135},{"className":10134},[9874],[10136],{"type":1878,"value":10137},"96 × samplerDescriptorSize",{"type":1873,"tag":9943,"props":10139,"children":10141},{"className":10140},[9874,9912,9913],[10142],{"type":1873,"tag":1874,"props":10143,"children":10145},{"className":10144},[9874],[10146],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10148,"children":10150},{"className":10149},[9874,9912,9913],[10151],{"type":1873,"tag":1874,"props":10152,"children":10154},{"className":10153},[9874],[10155],{"type":1878,"value":10156},"Rounds heap size to power-of-two",{"type":1873,"tag":9905,"props":10158,"children":10159},{},[10160,10169,10179,10188],{"type":1873,"tag":9943,"props":10161,"children":10163},{"className":10162},[9874,9912,9913],[10164],{"type":1873,"tag":1874,"props":10165,"children":10167},{"className":10166},[9874],[10168],{"type":1878,"value":3943},{"type":1873,"tag":9943,"props":10170,"children":10172},{"className":10171},[9874,9912,9913],[10173],{"type":1873,"tag":1874,"props":10174,"children":10176},{"className":10175},[9874],[10177],{"type":1878,"value":10178},"2048 × samplerDescriptorSize",{"type":1873,"tag":9943,"props":10180,"children":10182},{"className":10181},[9874,9912,9913],[10183],{"type":1873,"tag":1874,"props":10184,"children":10186},{"className":10185},[9874],[10187],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10189,"children":10191},{"className":10190},[9874,9912,9913],[10192],{"type":1873,"tag":1874,"props":10193,"children":10195},{"className":10194},[9874],[10196],{"type":1878,"value":10197},"DirectX 12 static sampler count + reserved range",{"type":1873,"tag":9905,"props":10199,"children":10200},{},[10201,10210,10227,10236],{"type":1873,"tag":9943,"props":10202,"children":10204},{"className":10203},[9874,9912,9913],[10205],{"type":1873,"tag":1874,"props":10206,"children":10208},{"className":10207},[9874],[10209],{"type":1878,"value":9671},{"type":1873,"tag":9943,"props":10211,"children":10213},{"className":10212},[9874,9912,9913],[10214],{"type":1873,"tag":1874,"props":10215,"children":10217},{"className":10216},[9874],[10218,10220,10225],{"type":1878,"value":10219},"2",{"type":1873,"tag":10090,"props":10221,"children":10222},{},[10223],{"type":1878,"value":10224},"15",{"type":1878,"value":10226}," × max(imageDescriptorSize,bufferDescriptorSize)",{"type":1873,"tag":9943,"props":10228,"children":10230},{"className":10229},[9874,9912,9913],[10231],{"type":1873,"tag":1874,"props":10232,"children":10234},{"className":10233},[9874],[10235],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10237,"children":10239},{"className":10238},[9874,9912,9913],[10240],{"type":1873,"tag":1874,"props":10241,"children":10243},{"className":10242},[9874],[10244],{"type":1878,"value":10156},{"type":1873,"tag":9905,"props":10246,"children":10247},{},[10248,10257,10267,10276],{"type":1873,"tag":9943,"props":10249,"children":10251},{"className":10250},[9874,9912,9913],[10252],{"type":1873,"tag":1874,"props":10253,"children":10255},{"className":10254},[9874],[10256],{"type":1878,"value":9682},{"type":1873,"tag":9943,"props":10258,"children":10260},{"className":10259},[9874,9912,9913],[10261],{"type":1873,"tag":1874,"props":10262,"children":10264},{"className":10263},[9874],[10265],{"type":1878,"value":10266},"32",{"type":1873,"tag":9943,"props":10268,"children":10270},{"className":10269},[9874,9912,9913],[10271],{"type":1873,"tag":1874,"props":10272,"children":10274},{"className":10273},[9874],[10275],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10277,"children":10279},{"className":10278},[9874,9912,9913],[10280],{"type":1873,"tag":1874,"props":10281,"children":10283},{"className":10282},[9874],[10284],{"type":1878,"value":9981},{"type":1873,"tag":9905,"props":10286,"children":10287},{},[10288,10297,10307,10316],{"type":1873,"tag":9943,"props":10289,"children":10291},{"className":10290},[9874,9912,9913],[10292],{"type":1873,"tag":1874,"props":10293,"children":10295},{"className":10294},[9874],[10296],{"type":1878,"value":3364},{"type":1873,"tag":9943,"props":10298,"children":10300},{"className":10299},[9874,9912,9913],[10301],{"type":1873,"tag":1874,"props":10302,"children":10304},{"className":10303},[9874],[10305],{"type":1878,"value":10306},"64",{"type":1873,"tag":9943,"props":10308,"children":10310},{"className":10309},[9874,9912,9913],[10311],{"type":1873,"tag":1874,"props":10312,"children":10314},{"className":10313},[9874],[10315],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10317,"children":10319},{"className":10318},[9874,9912,9913],[10320],{"type":1873,"tag":1874,"props":10321,"children":10323},{"className":10322},[9874],[10324],{"type":1878,"value":9981},{"type":1873,"tag":9905,"props":10326,"children":10327},{},[10328,10337,10347,10356],{"type":1873,"tag":9943,"props":10329,"children":10331},{"className":10330},[9874,9912,9913],[10332],{"type":1873,"tag":1874,"props":10333,"children":10335},{"className":10334},[9874],[10336],{"type":1878,"value":9716},{"type":1873,"tag":9943,"props":10338,"children":10340},{"className":10339},[9874,9912,9913],[10341],{"type":1873,"tag":1874,"props":10342,"children":10344},{"className":10343},[9874],[10345],{"type":1878,"value":10346},"128",{"type":1873,"tag":9943,"props":10348,"children":10350},{"className":10349},[9874,9912,9913],[10351],{"type":1873,"tag":1874,"props":10352,"children":10354},{"className":10353},[9874],[10355],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10357,"children":10359},{"className":10358},[9874,9912,9913],[10360],{"type":1873,"tag":1874,"props":10361,"children":10363},{"className":10362},[9874],[10364],{"type":1878,"value":9981},{"type":1873,"tag":9905,"props":10366,"children":10367},{},[10368,10377,10386,10395],{"type":1873,"tag":9943,"props":10369,"children":10371},{"className":10370},[9874,9912,9913],[10372],{"type":1873,"tag":1874,"props":10373,"children":10375},{"className":10374},[9874],[10376],{"type":1878,"value":9733},{"type":1873,"tag":9943,"props":10378,"children":10380},{"className":10379},[9874,9912,9913],[10381],{"type":1873,"tag":1874,"props":10382,"children":10384},{"className":10383},[9874],[10385],{"type":1878,"value":10266},{"type":1873,"tag":9943,"props":10387,"children":10389},{"className":10388},[9874,9912,9913],[10390],{"type":1873,"tag":1874,"props":10391,"children":10393},{"className":10392},[9874],[10394],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10396,"children":10398},{"className":10397},[9874,9912,9913],[10399],{"type":1873,"tag":1874,"props":10400,"children":10402},{"className":10401},[9874],[10403],{"type":1878,"value":9682},{"type":1873,"tag":9905,"props":10405,"children":10406},{},[10407,10416,10425,10434],{"type":1873,"tag":9943,"props":10408,"children":10410},{"className":10409},[9874,9912,9913],[10411],{"type":1873,"tag":1874,"props":10412,"children":10414},{"className":10413},[9874],[10415],{"type":1878,"value":9750},{"type":1873,"tag":9943,"props":10417,"children":10419},{"className":10418},[9874,9912,9913],[10420],{"type":1873,"tag":1874,"props":10421,"children":10423},{"className":10422},[9874],[10424],{"type":1878,"value":10306},{"type":1873,"tag":9943,"props":10426,"children":10428},{"className":10427},[9874,9912,9913],[10429],{"type":1873,"tag":1874,"props":10430,"children":10432},{"className":10431},[9874],[10433],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10435,"children":10437},{"className":10436},[9874,9912,9913],[10438],{"type":1873,"tag":1874,"props":10439,"children":10441},{"className":10440},[9874],[10442],{"type":1878,"value":3364},{"type":1873,"tag":9905,"props":10444,"children":10445},{},[10446,10455,10464,10473],{"type":1873,"tag":9943,"props":10447,"children":10449},{"className":10448},[9874,9912,9913],[10450],{"type":1873,"tag":1874,"props":10451,"children":10453},{"className":10452},[9874],[10454],{"type":1878,"value":9767},{"type":1873,"tag":9943,"props":10456,"children":10458},{"className":10457},[9874,9912,9913],[10459],{"type":1873,"tag":1874,"props":10460,"children":10462},{"className":10461},[9874],[10463],{"type":1878,"value":10346},{"type":1873,"tag":9943,"props":10465,"children":10467},{"className":10466},[9874,9912,9913],[10468],{"type":1873,"tag":1874,"props":10469,"children":10471},{"className":10470},[9874],[10472],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10474,"children":10476},{"className":10475},[9874,9912,9913],[10477],{"type":1873,"tag":1874,"props":10478,"children":10480},{"className":10479},[9874],[10481],{"type":1878,"value":9716},{"type":1873,"tag":9905,"props":10483,"children":10484},{},[10485,10494,10504,10513],{"type":1873,"tag":9943,"props":10486,"children":10488},{"className":10487},[9874,9912,9913],[10489],{"type":1873,"tag":1874,"props":10490,"children":10492},{"className":10491},[9874],[10493],{"type":1878,"value":4420},{"type":1873,"tag":9943,"props":10495,"children":10497},{"className":10496},[9874,9912,9913],[10498],{"type":1873,"tag":1874,"props":10499,"children":10501},{"className":10500},[9874],[10502],{"type":1878,"value":10503},"256",{"type":1873,"tag":9943,"props":10505,"children":10507},{"className":10506},[9874,9912,9913],[10508],{"type":1873,"tag":1874,"props":10509,"children":10511},{"className":10510},[9874],[10512],{"type":1878,"value":10056},{"type":1873,"tag":9943,"props":10514,"children":10516},{"className":10515},[9874,9912,9913],[10517],{"type":1873,"tag":1874,"props":10518,"children":10520},{"className":10519},[9874],[10521],{"type":1878,"value":10522},"Matches DirectX 12 requirements for root parameters",{"type":1873,"tag":9905,"props":10524,"children":10525},{},[10526,10535,10545,10554],{"type":1873,"tag":9943,"props":10527,"children":10529},{"className":10528},[9874,9912,9913],[10530],{"type":1873,"tag":1874,"props":10531,"children":10533},{"className":10532},[9874],[10534],{"type":1878,"value":7317},{"type":1873,"tag":9943,"props":10536,"children":10538},{"className":10537},[9874,9912,9913],[10539],{"type":1873,"tag":1874,"props":10540,"children":10542},{"className":10541},[9874],[10543],{"type":1878,"value":10544},"2032",{"type":1873,"tag":9943,"props":10546,"children":10548},{"className":10547},[9874,9912,9913],[10549],{"type":1873,"tag":1874,"props":10550,"children":10552},{"className":10551},[9874],[10553],{"type":1878,"value":10056},{"type":1873,"tag":9943,"props":10555,"children":10557},{"className":10556},[9874,9912,9913],[10558],{"type":1873,"tag":1874,"props":10559,"children":10561},{"className":10560},[9874],[10562],{"type":1878,"value":10563},"DirectX 12 static sampler limit",{"type":1873,"tag":9905,"props":10565,"children":10566},{},[10567,10576,10586,10595],{"type":1873,"tag":9943,"props":10568,"children":10570},{"className":10569},[9874,9912,9913],[10571],{"type":1873,"tag":1874,"props":10572,"children":10574},{"className":10573},[9874],[10575],{"type":1878,"value":9814},{"type":1873,"tag":9943,"props":10577,"children":10579},{"className":10578},[9874,9912,9913],[10580],{"type":1873,"tag":1874,"props":10581,"children":10583},{"className":10582},[9874],[10584],{"type":1878,"value":10585},"3",{"type":1873,"tag":9943,"props":10587,"children":10589},{"className":10588},[9874,9912,9913],[10590],{"type":1873,"tag":1874,"props":10591,"children":10593},{"className":10592},[9874],[10594],{"type":1878,"value":9971},{"type":1873,"tag":9943,"props":10596,"children":10598},{"className":10597},[9874,9912,9913],[10599],{"type":1873,"tag":1874,"props":10600,"children":10602},{"className":10601},[9874],[10603,10607],{"type":1873,"tag":10604,"props":10605,"children":10606},"link",{"xl:href":3369},[],{"type":1878,"value":10608},"combinedImageSamplerDescriptorCount",{"type":1873,"tag":2025,"props":10610,"children":10611},{},[10612,10625],{"type":1873,"tag":1874,"props":10613,"children":10614},{},[10615,10617,10623],{"type":1878,"value":10616},"Several tools will need to consume additional descriptors in a way that is opaque to the application - implementations are strongly encouraged to provide larger usable sampler heap sizes, keeping minimum reserved ranges lower if necessary, such that tools and layers have headroom to reserve their own descriptors beyond the baseline requirements as presented to the application.\nReserving no more than 2",{"type":1873,"tag":10618,"props":10619,"children":10620},"sup",{},[10621],{"type":1878,"value":10622},"14",{"type":1878,"value":10624}," resources and 16 samplers is recommended, giving layers and tools space to add their own within the remaining limit.",{"type":1873,"tag":1874,"props":10626,"children":10627},{},[10628,10630,10635,10637,10643],{"type":1878,"value":10629},"Similarly, ",{"type":1873,"tag":2159,"props":10631,"children":10633},{"className":10632},[],[10634],{"type":1878,"value":4420},{"type":1878,"value":10636}," should be at least 512 to accommodate tooling data, which may be required by tools for debugging purposes (e.g. Validation layers will use additional push data for per-draw validation info).\nThis is similar to DirectX 12, which requires 128 DWORDS of root data for similar reasons, but only exposes 64 DWORDS to applications: ",{"type":1873,"tag":1921,"props":10638,"children":10641},{"href":10639,"rel":10640},"https://microsoft.github.io/DirectX-Specs/d3d/ResourceBinding.html#root-argument-limits",[1925],[10642],{"type":1878,"value":10639},{"type":1878,"value":2077},{"type":1873,"tag":3256,"props":10645,"children":10647},{"id":10646},"_tensor_properties",[10648],{"type":1878,"value":10649},"Tensor properties",{"type":1873,"tag":1874,"props":10651,"children":10652},{},[10653,10654,10659],{"type":1878,"value":9284},{"type":1873,"tag":2159,"props":10655,"children":10657},{"className":10656},[],[10658],{"type":1878,"value":405},{"type":1878,"value":10660}," extension is supported, the following additional properties are advertised for tensors:",{"type":1873,"tag":2151,"props":10662,"children":10664},{"className":2153,"code":10663,"language":2155,"meta":2156,"style":2156},"typedef struct VkPhysicalDeviceDescriptorHeapTensorPropertiesARM {\n VkStructureType sType;\n const void* pNext;\n size_t tensorDescriptorSize;\n size_t tensorDescriptorAlignment;\n size_t tensorCaptureReplayOpaqueDataSize;\n} VkPhysicalDeviceDescriptorHeapTensorPropertiesARM;\n",[10665],{"type":1873,"tag":2159,"props":10666,"children":10667},{"__ignoreMap":2156},[10668,10684,10691,10707,10719,10731,10743],{"type":1873,"tag":2163,"props":10669,"children":10670},{"class":2165,"line":10},[10671,10675,10679],{"type":1873,"tag":2163,"props":10672,"children":10673},{"style":2169},[10674],{"type":1878,"value":2172},{"type":1873,"tag":2163,"props":10676,"children":10677},{"style":2169},[10678],{"type":1878,"value":2177},{"type":1873,"tag":2163,"props":10680,"children":10681},{"style":2180},[10682],{"type":1878,"value":10683}," VkPhysicalDeviceDescriptorHeapTensorPropertiesARM {\n",{"type":1873,"tag":2163,"props":10685,"children":10686},{"class":2165,"line":14},[10687],{"type":1873,"tag":2163,"props":10688,"children":10689},{"style":2180},[10690],{"type":1878,"value":9152},{"type":1873,"tag":2163,"props":10692,"children":10693},{"class":2165,"line":18},[10694,10698,10702],{"type":1873,"tag":2163,"props":10695,"children":10696},{"style":2169},[10697],{"type":1878,"value":2249},{"type":1873,"tag":2163,"props":10699,"children":10700},{"style":2169},[10701],{"type":1878,"value":2254},{"type":1873,"tag":2163,"props":10703,"children":10704},{"style":2180},[10705],{"type":1878,"value":10706}," pNext;\n",{"type":1873,"tag":2163,"props":10708,"children":10709},{"class":2165,"line":22},[10710,10714],{"type":1873,"tag":2163,"props":10711,"children":10712},{"style":2169},[10713],{"type":1878,"value":2204},{"type":1873,"tag":2163,"props":10715,"children":10716},{"style":2180},[10717],{"type":1878,"value":10718}," tensorDescriptorSize;\n",{"type":1873,"tag":2163,"props":10720,"children":10721},{"class":2165,"line":26},[10722,10726],{"type":1873,"tag":2163,"props":10723,"children":10724},{"style":2169},[10725],{"type":1878,"value":2204},{"type":1873,"tag":2163,"props":10727,"children":10728},{"style":2180},[10729],{"type":1878,"value":10730}," tensorDescriptorAlignment;\n",{"type":1873,"tag":2163,"props":10732,"children":10733},{"class":2165,"line":30},[10734,10738],{"type":1873,"tag":2163,"props":10735,"children":10736},{"style":2169},[10737],{"type":1878,"value":2204},{"type":1873,"tag":2163,"props":10739,"children":10740},{"style":2180},[10741],{"type":1878,"value":10742}," tensorCaptureReplayOpaqueDataSize;\n",{"type":1873,"tag":2163,"props":10744,"children":10745},{"class":2165,"line":34},[10746],{"type":1873,"tag":2163,"props":10747,"children":10748},{"style":2180},[10749],{"type":1878,"value":10750},"} VkPhysicalDeviceDescriptorHeapTensorPropertiesARM;\n",{"type":1873,"tag":1892,"props":10752,"children":10753},{},[10754,10771,10788],{"type":1873,"tag":1896,"props":10755,"children":10756},{},[10757,10763,10765,10770],{"type":1873,"tag":2159,"props":10758,"children":10760},{"className":10759},[],[10761],{"type":1878,"value":10762},"tensorDescriptorSize",{"type":1878,"value":10764}," specifies the maximum size of descriptors for a tensor written by ",{"type":1873,"tag":2159,"props":10766,"children":10768},{"className":10767},[],[10769],{"type":1878,"value":2795},{"type":1878,"value":2077},{"type":1873,"tag":1896,"props":10772,"children":10773},{},[10774,10780,10782,10787],{"type":1873,"tag":2159,"props":10775,"children":10777},{"className":10776},[],[10778],{"type":1878,"value":10779},"tensorDescriptorAlignment",{"type":1878,"value":10781}," indicates the required alignment of tensor descriptors within a resource heap. It must be a power-of-two value, and less than or equal to ",{"type":1873,"tag":2159,"props":10783,"children":10785},{"className":10784},[],[10786],{"type":1878,"value":10762},{"type":1878,"value":2077},{"type":1873,"tag":1896,"props":10789,"children":10790},{},[10791,10796],{"type":1873,"tag":2159,"props":10792,"children":10794},{"className":10793},[],[10795],{"type":1878,"value":8693},{"type":1878,"value":10797}," indicates the size of the opaque capture/replay data for a tensor.",{"type":1873,"tag":2079,"props":10799,"children":10801},{"id":10800},"_tighter_bounds_on_descriptor_sizes",[10802],{"type":1878,"value":10803},"Tighter bounds on descriptor sizes",{"type":1873,"tag":1874,"props":10805,"children":10806},{},[10807,10809,10814,10815,10820,10822,10827,10829,10835],{"type":1878,"value":10808},"While the properties of this extension provide base sizes for each of the descriptor types (",{"type":1873,"tag":2159,"props":10810,"children":10812},{"className":10811},[],[10813],{"type":1878,"value":3364},{"type":1878,"value":3350},{"type":1873,"tag":2159,"props":10816,"children":10818},{"className":10817},[],[10819],{"type":1878,"value":9682},{"type":1878,"value":10821},", and ",{"type":1873,"tag":2159,"props":10823,"children":10825},{"className":10824},[],[10826],{"type":1878,"value":9716},{"type":1878,"value":10828},"), specific descriptor types may require less data than generally required for each heap.\n",{"type":1873,"tag":2159,"props":10830,"children":10832},{"className":10831},[],[10833],{"type":1878,"value":10834},"vkGetPhysicalDeviceDescriptorSizeEXT",{"type":1878,"value":10836}," provides the size in bytes of the specified descriptor type:",{"type":1873,"tag":2151,"props":10838,"children":10840},{"className":2153,"code":10839,"language":2155,"meta":2156,"style":2156},"VkDeviceSize vkGetPhysicalDeviceDescriptorSizeEXT (\n VkPhysicalDevice physicalDevice,\n VkDescriptorType descriptorType);\n",[10841],{"type":1873,"tag":2159,"props":10842,"children":10843},{"__ignoreMap":2156},[10844,10861,10878],{"type":1873,"tag":2163,"props":10845,"children":10846},{"class":2165,"line":10},[10847,10852,10856],{"type":1873,"tag":2163,"props":10848,"children":10849},{"style":2180},[10850],{"type":1878,"value":10851},"VkDeviceSize ",{"type":1873,"tag":2163,"props":10853,"children":10854},{"style":2682},[10855],{"type":1878,"value":10834},{"type":1873,"tag":2163,"props":10857,"children":10858},{"style":2180},[10859],{"type":1878,"value":10860}," (\n",{"type":1873,"tag":2163,"props":10862,"children":10863},{"class":2165,"line":14},[10864,10869,10874],{"type":1873,"tag":2163,"props":10865,"children":10866},{"style":2180},[10867],{"type":1878,"value":10868}," VkPhysicalDevice ",{"type":1873,"tag":2163,"props":10870,"children":10871},{"style":2701},[10872],{"type":1878,"value":10873},"physicalDevice",{"type":1873,"tag":2163,"props":10875,"children":10876},{"style":2180},[10877],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":10879,"children":10880},{"class":2165,"line":18},[10881,10886,10891],{"type":1873,"tag":2163,"props":10882,"children":10883},{"style":2180},[10884],{"type":1878,"value":10885}," VkDescriptorType ",{"type":1873,"tag":2163,"props":10887,"children":10888},{"style":2701},[10889],{"type":1878,"value":10890},"descriptorType",{"type":1873,"tag":2163,"props":10892,"children":10893},{"style":2180},[10894],{"type":1878,"value":2776},{"type":1873,"tag":1874,"props":10896,"children":10897},{},[10898],{"type":1878,"value":10899},"Where the size of a descriptor type differs from the base size for that descriptor type, the additional bytes are effectively unused - and can be freely set however an application pleases.\nThis can be particularly useful in emulation or for tooling, where packing multiple bits of data side-by-side can be used to emulate more complex features or add debugging information.",{"type":1873,"tag":1874,"props":10901,"children":10902},{},[10903],{"type":1878,"value":10904},"For example, when using the true extension, vkd3d-proton packs storage buffers and texel buffers together where possible to emulate atomic counters in HLSL, which can specify their counter payload in a separate address.\nThis function allows vkd3d-proton to do the same here, while providing applications with a much simpler set of base properties suitable for the majority of use cases.",{"type":1873,"tag":1874,"props":10906,"children":10907},{},[10908],{"type":1878,"value":10909},"No guarantees are made that any particular descriptor type will be smaller than the base descriptor sizes for the heap they are in, so this information is provided opportunistically for users of this extension that wish to take advantage of it.\nDescriptor sizes returned by this function must never be larger than the base descriptor size for the heap they can be used in.",{"type":1873,"tag":2025,"props":10911,"children":10912},{},[10913],{"type":1873,"tag":1874,"props":10914,"children":10915},{},[10916,10918,10923,10925,10930,10932,10938],{"type":1878,"value":10917},"Applications can already pack data side-by-side with descriptors by extending the effective stride to accommodate the extra data, either using strides provided in mappings, or user specified strides when directly accessing the heap.\n",{"type":1873,"tag":2159,"props":10919,"children":10921},{"className":10920},[],[10922],{"type":1878,"value":10834},{"type":1878,"value":10924}," is primarily useful in situations where an applications can do something better with a ",{"type":1873,"tag":3956,"props":10926,"children":10927},{},[10928],{"type":1878,"value":10929},"specific",{"type":1878,"value":10931}," type of descriptor, such as the vkd3d-proton use case mentioned above, rather than wanting to do something with all of them.\nIn general, applications can ignore this function and just use the base sizes provided by ",{"type":1873,"tag":2159,"props":10933,"children":10935},{"className":10934},[],[10936],{"type":1878,"value":10937},"VkPhysicalDeviceDescriptorHeapPropertiesEXT",{"type":1878,"value":2077},{"type":1873,"tag":1880,"props":10940,"children":10942},{"id":10941},"_interaction_with_vk_ext_debug_utils",[10943,10945],{"type":1878,"value":10944},"Interaction with ",{"type":1873,"tag":1921,"props":10946,"children":10949},{"href":10947,"rel":10948},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_debug_utils",[1925],[10950],{"type":1878,"value":475},{"type":1873,"tag":1874,"props":10952,"children":10953},{},[10954,10956,10963,10965,10970,10971,10976,10977,10983],{"type":1878,"value":10955},"As this extension allows the creation of descriptors without ever creating a sampler, image view, or buffer view object, in order to allow naming the resulting descriptors, ",{"type":1873,"tag":1921,"props":10957,"children":10960},{"href":10958,"rel":10959},"https://docs.vulkan.org/spec/latest/debugging.html#VkDebugUtilsObjectNameInfoEXT",[1925],[10961],{"type":1878,"value":10962},"VkDebugUtilsObjectNameInfoEXT",{"type":1878,"value":10964}," can now be included in the ",{"type":1873,"tag":2159,"props":10966,"children":10968},{"className":10967},[],[10969],{"type":1878,"value":3340},{"type":1878,"value":3342},{"type":1873,"tag":2159,"props":10972,"children":10974},{"className":10973},[],[10975],{"type":1878,"value":7309},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":10978,"children":10980},{"className":10979},[],[10981],{"type":1878,"value":10982},"VkResourceDescriptorInfoEXT",{"type":1878,"value":10984}," when either writing a descriptor or creating an embedded sampler, which associates a static name with the written descriptor.\nNote however that this is not necessarily a precise association - implementations may choose to simply associate the descriptor’s bit patterns with the provided name, which can result in multiple descriptors taking the same name if those descriptors' bits match.\nFor example, in some operations, whether an image uses an sRGB or linear encoding will not change the operation, so implementations may generate the same descriptor bits for image views with the format being the only difference.\nTools may choose to free labels if the underlying data becomes invalid (e.g. the address range or image is freed).",{"type":1873,"tag":1880,"props":10986,"children":10988},{"id":10987},"_interaction_with_vk_khr_pipeline_library",[10989,10990],{"type":1878,"value":10944},{"type":1873,"tag":1921,"props":10991,"children":10994},{"href":10992,"rel":10993},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_KHR_pipeline_library",[1925],[10995],{"type":1878,"value":1261},{"type":1873,"tag":1874,"props":10997,"children":10998},{},[10999,11001,11007],{"type":1878,"value":11000},"When linking multiple pipelines, all pipelines must either have all been compiled with ",{"type":1873,"tag":2159,"props":11002,"children":11004},{"className":11003},[],[11005],{"type":1878,"value":11006},"VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT",{"type":1878,"value":11008}," specified, or all without it.\nIntermediate linked pipelines do not need to be additionally created with this flag if they are only linking other pipelines which have it.",{"type":1873,"tag":1880,"props":11010,"children":11012},{"id":11011},"_interaction_with_vk_ext_graphics_pipeline_library",[11013,11014],{"type":1878,"value":10944},{"type":1873,"tag":1921,"props":11015,"children":11018},{"href":11016,"rel":11017},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_graphics_pipeline_library",[1925],[11019],{"type":1878,"value":626},{"type":1873,"tag":1874,"props":11021,"children":11022},{},[11023,11025,11030],{"type":1878,"value":11024},"When linking graphics pipeline libraries, if all pipelines were compiled with ",{"type":1873,"tag":2159,"props":11026,"children":11028},{"className":11027},[],[11029],{"type":1878,"value":11006},{"type":1878,"value":11031},", a pipeline layout must not be specified.\nThere is also no need for matching of any of the descriptor mappings between different libraries; the application is responsible for packing data into push constants and heaps, so the implementation does not need to, and cannot, optimize that packing.",{"type":1873,"tag":1880,"props":11033,"children":11035},{"id":11034},"_vkdescriptorsetlayout_mapping",[11036,11037,11044],{"type":1878,"value":2156},{"type":1873,"tag":1921,"props":11038,"children":11041},{"href":11039,"rel":11040},"https://docs.vulkan.org/spec/latest/resources.html#VkDescriptorSetLayout",[1925],[11042],{"type":1878,"value":11043},"VkDescriptorSetLayout",{"type":1878,"value":11045}," Mapping",{"type":1873,"tag":1874,"props":11047,"children":11048},{},[11049,11051,11056],{"type":1878,"value":11050},"Specifying a descriptor set layout is how, prior to this extension, applications were able to specify how to bind resources between the API and shader code.\nEverything that was previously possible with descriptor set layouts is possible with the new ",{"type":1873,"tag":2159,"props":11052,"children":11054},{"className":11053},[],[11055],{"type":1878,"value":6319},{"type":1878,"value":11057}," structure, but it becomes the application’s responsibility to layout descriptors in the heaps, rather than relying on the implementation to do it.\nThe below examples illustrate mapping descriptor set layout and pipeline layout creation to the new structure.",{"type":1873,"tag":2079,"props":11059,"children":11060},{"id":6922},[11061],{"type":1878,"value":11062},"Example: Simple Resource Bindings",{"type":1873,"tag":1874,"props":11064,"children":11065},{},[11066],{"type":1878,"value":11067},"The following descriptor set layout specifies three resources, one of which uses a number of the descriptor binding flags with a variable descriptor count:",{"type":1873,"tag":2151,"props":11069,"children":11071},{"className":2153,"code":11070,"language":2155,"meta":2156,"style":2156},"const uint32_t UniformBufferArrayCount = 12;\nconst uint32_t InlineBlockDescriptorSize = 256;\nVkDescriptorSetLayoutBinding bindings[4];\nVkDescriptorBindingFlags bindingFlags[4];\n\n// 12 uniform buffers available only to the vertex shader\nbindings[0].binding = 0;\nbindings[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;\nbindings[0].descriptorCount = UniformBufferArrayCount;\nbindings[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT;\nbindings[0].pImmutableSampler = NULL;\nbindingFlags[0] = 0;\n\n// A combined image sampler\nbindings[1].binding = 1;\nbindings[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;\nbindings[1].descriptorCount = 1;\nbindings[1].stageFlags = VK_SHADER_STAGE_ALL;\nbindings[1].pImmutableSampler = NULL;\nbindingFlags[1] = 0;\n\n// An inline uniform block\nbindings[2].binding = 2;\nbindings[2].descriptorType = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK;\nbindings[2].descriptorCount = InlineBlockSize;\nbindings[2].stageFlags = VK_SHADER_STAGE_ALL;\nbindings[2].pImmutableSampler = NULL;\nbindingFlags[2] = 0;\n\n// A storage buffer array with variable descriptor count and all the descriptor flags\nbindings[3].binding = 3;\nbindings[3].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;\nbindings[3].descriptorCount = UINT32_MAX;\nbindings[3].stageFlags = VK_SHADER_STAGE_ALL;\nbindings[3].pImmutableSampler = NULL;\nbindingFlags[3] = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT |\n VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT |\n VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT |\n VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT;\n\nVkDescriptorSetLayoutBindingFlagsCreateInfo dslFlagsInfo = {\n .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,\n .pNext = NULL,\n .bindingCount = 4,\n .pBindings = bindingFlags};\n\nVkDescriptorSetLayoutCreateInfo dslInfo = {\n .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,\n .pNext = dslFlagsInfo,\n .bindingCount = 4,\n .pBindings = bindings};\n",[11072],{"type":1873,"tag":2159,"props":11073,"children":11074},{"__ignoreMap":2156},[11075,11106,11135,11161,11186,11193,11201,11234,11263,11292,11321,11354,11386,11393,11401,11433,11461,11492,11520,11551,11582,11589,11597,11628,11656,11684,11711,11742,11773,11780,11788,11819,11847,11875,11902,11933,11966,11978,11990,11998,12005,12022,12039,12059,12079,12096,12103,12119,12136,12153,12173],{"type":1873,"tag":2163,"props":11076,"children":11077},{"class":2165,"line":10},[11078,11083,11088,11093,11097,11102],{"type":1873,"tag":2163,"props":11079,"children":11080},{"style":2169},[11081],{"type":1878,"value":11082},"const",{"type":1873,"tag":2163,"props":11084,"children":11085},{"style":2169},[11086],{"type":1878,"value":11087}," uint32_t",{"type":1873,"tag":2163,"props":11089,"children":11090},{"style":2180},[11091],{"type":1878,"value":11092}," UniformBufferArrayCount ",{"type":1873,"tag":2163,"props":11094,"children":11095},{"style":2169},[11096],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11098,"children":11099},{"style":3995},[11100],{"type":1878,"value":11101}," 12",{"type":1873,"tag":2163,"props":11103,"children":11104},{"style":2180},[11105],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11107,"children":11108},{"class":2165,"line":14},[11109,11113,11117,11122,11126,11131],{"type":1873,"tag":2163,"props":11110,"children":11111},{"style":2169},[11112],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":11114,"children":11115},{"style":2169},[11116],{"type":1878,"value":11087},{"type":1873,"tag":2163,"props":11118,"children":11119},{"style":2180},[11120],{"type":1878,"value":11121}," InlineBlockDescriptorSize ",{"type":1873,"tag":2163,"props":11123,"children":11124},{"style":2169},[11125],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11127,"children":11128},{"style":3995},[11129],{"type":1878,"value":11130}," 256",{"type":1873,"tag":2163,"props":11132,"children":11133},{"style":2180},[11134],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11136,"children":11137},{"class":2165,"line":18},[11138,11143,11148,11152,11157],{"type":1873,"tag":2163,"props":11139,"children":11140},{"style":2180},[11141],{"type":1878,"value":11142},"VkDescriptorSetLayoutBinding ",{"type":1873,"tag":2163,"props":11144,"children":11145},{"style":2701},[11146],{"type":1878,"value":11147},"bindings",{"type":1873,"tag":2163,"props":11149,"children":11150},{"style":2180},[11151],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11153,"children":11154},{"style":3995},[11155],{"type":1878,"value":11156},"4",{"type":1873,"tag":2163,"props":11158,"children":11159},{"style":2180},[11160],{"type":1878,"value":6550},{"type":1873,"tag":2163,"props":11162,"children":11163},{"class":2165,"line":22},[11164,11169,11174,11178,11182],{"type":1873,"tag":2163,"props":11165,"children":11166},{"style":2180},[11167],{"type":1878,"value":11168},"VkDescriptorBindingFlags ",{"type":1873,"tag":2163,"props":11170,"children":11171},{"style":2701},[11172],{"type":1878,"value":11173},"bindingFlags",{"type":1873,"tag":2163,"props":11175,"children":11176},{"style":2180},[11177],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11179,"children":11180},{"style":3995},[11181],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":11183,"children":11184},{"style":2180},[11185],{"type":1878,"value":6550},{"type":1873,"tag":2163,"props":11187,"children":11188},{"class":2165,"line":26},[11189],{"type":1873,"tag":2163,"props":11190,"children":11191},{"emptyLinePlaceholder":232},[11192],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":11194,"children":11195},{"class":2165,"line":30},[11196],{"type":1873,"tag":2163,"props":11197,"children":11198},{"style":8855},[11199],{"type":1878,"value":11200},"// 12 uniform buffers available only to the vertex shader\n",{"type":1873,"tag":2163,"props":11202,"children":11203},{"class":2165,"line":34},[11204,11208,11212,11217,11222,11226,11230],{"type":1873,"tag":2163,"props":11205,"children":11206},{"style":2701},[11207],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11209,"children":11210},{"style":2180},[11211],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11213,"children":11214},{"style":3995},[11215],{"type":1878,"value":11216},"0",{"type":1873,"tag":2163,"props":11218,"children":11219},{"style":2180},[11220],{"type":1878,"value":11221},"].binding ",{"type":1873,"tag":2163,"props":11223,"children":11224},{"style":2169},[11225],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11227,"children":11228},{"style":3995},[11229],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":11231,"children":11232},{"style":2180},[11233],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11235,"children":11236},{"class":2165,"line":38},[11237,11241,11245,11249,11254,11258],{"type":1873,"tag":2163,"props":11238,"children":11239},{"style":2701},[11240],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11242,"children":11243},{"style":2180},[11244],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11246,"children":11247},{"style":3995},[11248],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":11250,"children":11251},{"style":2180},[11252],{"type":1878,"value":11253},"].descriptorType ",{"type":1873,"tag":2163,"props":11255,"children":11256},{"style":2169},[11257],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11259,"children":11260},{"style":2180},[11261],{"type":1878,"value":11262}," VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;\n",{"type":1873,"tag":2163,"props":11264,"children":11265},{"class":2165,"line":42},[11266,11270,11274,11278,11283,11287],{"type":1873,"tag":2163,"props":11267,"children":11268},{"style":2701},[11269],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11271,"children":11272},{"style":2180},[11273],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11275,"children":11276},{"style":3995},[11277],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":11279,"children":11280},{"style":2180},[11281],{"type":1878,"value":11282},"].descriptorCount ",{"type":1873,"tag":2163,"props":11284,"children":11285},{"style":2169},[11286],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11288,"children":11289},{"style":2180},[11290],{"type":1878,"value":11291}," UniformBufferArrayCount;\n",{"type":1873,"tag":2163,"props":11293,"children":11294},{"class":2165,"line":46},[11295,11299,11303,11307,11312,11316],{"type":1873,"tag":2163,"props":11296,"children":11297},{"style":2701},[11298],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11300,"children":11301},{"style":2180},[11302],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11304,"children":11305},{"style":3995},[11306],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":11308,"children":11309},{"style":2180},[11310],{"type":1878,"value":11311},"].stageFlags ",{"type":1873,"tag":2163,"props":11313,"children":11314},{"style":2169},[11315],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11317,"children":11318},{"style":2180},[11319],{"type":1878,"value":11320}," VK_SHADER_STAGE_VERTEX_BIT;\n",{"type":1873,"tag":2163,"props":11322,"children":11323},{"class":2165,"line":50},[11324,11328,11332,11336,11341,11345,11350],{"type":1873,"tag":2163,"props":11325,"children":11326},{"style":2701},[11327],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11329,"children":11330},{"style":2180},[11331],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11333,"children":11334},{"style":3995},[11335],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":11337,"children":11338},{"style":2180},[11339],{"type":1878,"value":11340},"].pImmutableSampler ",{"type":1873,"tag":2163,"props":11342,"children":11343},{"style":2169},[11344],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11346,"children":11347},{"style":3995},[11348],{"type":1878,"value":11349}," NULL",{"type":1873,"tag":2163,"props":11351,"children":11352},{"style":2180},[11353],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11355,"children":11356},{"class":2165,"line":54},[11357,11361,11365,11369,11374,11378,11382],{"type":1873,"tag":2163,"props":11358,"children":11359},{"style":2701},[11360],{"type":1878,"value":11173},{"type":1873,"tag":2163,"props":11362,"children":11363},{"style":2180},[11364],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11366,"children":11367},{"style":3995},[11368],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":11370,"children":11371},{"style":2180},[11372],{"type":1878,"value":11373},"] ",{"type":1873,"tag":2163,"props":11375,"children":11376},{"style":2169},[11377],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11379,"children":11380},{"style":3995},[11381],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":11383,"children":11384},{"style":2180},[11385],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11387,"children":11388},{"class":2165,"line":58},[11389],{"type":1873,"tag":2163,"props":11390,"children":11391},{"emptyLinePlaceholder":232},[11392],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":11394,"children":11395},{"class":2165,"line":62},[11396],{"type":1873,"tag":2163,"props":11397,"children":11398},{"style":8855},[11399],{"type":1878,"value":11400},"// A combined image sampler\n",{"type":1873,"tag":2163,"props":11402,"children":11403},{"class":2165,"line":66},[11404,11408,11412,11417,11421,11425,11429],{"type":1873,"tag":2163,"props":11405,"children":11406},{"style":2701},[11407],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11409,"children":11410},{"style":2180},[11411],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11413,"children":11414},{"style":3995},[11415],{"type":1878,"value":11416},"1",{"type":1873,"tag":2163,"props":11418,"children":11419},{"style":2180},[11420],{"type":1878,"value":11221},{"type":1873,"tag":2163,"props":11422,"children":11423},{"style":2169},[11424],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11426,"children":11427},{"style":3995},[11428],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":11430,"children":11431},{"style":2180},[11432],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11434,"children":11435},{"class":2165,"line":70},[11436,11440,11444,11448,11452,11456],{"type":1873,"tag":2163,"props":11437,"children":11438},{"style":2701},[11439],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11441,"children":11442},{"style":2180},[11443],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11445,"children":11446},{"style":3995},[11447],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":11449,"children":11450},{"style":2180},[11451],{"type":1878,"value":11253},{"type":1873,"tag":2163,"props":11453,"children":11454},{"style":2169},[11455],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11457,"children":11458},{"style":2180},[11459],{"type":1878,"value":11460}," VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;\n",{"type":1873,"tag":2163,"props":11462,"children":11463},{"class":2165,"line":74},[11464,11468,11472,11476,11480,11484,11488],{"type":1873,"tag":2163,"props":11465,"children":11466},{"style":2701},[11467],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11469,"children":11470},{"style":2180},[11471],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11473,"children":11474},{"style":3995},[11475],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":11477,"children":11478},{"style":2180},[11479],{"type":1878,"value":11282},{"type":1873,"tag":2163,"props":11481,"children":11482},{"style":2169},[11483],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11485,"children":11486},{"style":3995},[11487],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":11489,"children":11490},{"style":2180},[11491],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11493,"children":11494},{"class":2165,"line":78},[11495,11499,11503,11507,11511,11515],{"type":1873,"tag":2163,"props":11496,"children":11497},{"style":2701},[11498],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11500,"children":11501},{"style":2180},[11502],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11504,"children":11505},{"style":3995},[11506],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":11508,"children":11509},{"style":2180},[11510],{"type":1878,"value":11311},{"type":1873,"tag":2163,"props":11512,"children":11513},{"style":2169},[11514],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11516,"children":11517},{"style":2180},[11518],{"type":1878,"value":11519}," VK_SHADER_STAGE_ALL;\n",{"type":1873,"tag":2163,"props":11521,"children":11522},{"class":2165,"line":82},[11523,11527,11531,11535,11539,11543,11547],{"type":1873,"tag":2163,"props":11524,"children":11525},{"style":2701},[11526],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11528,"children":11529},{"style":2180},[11530],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11532,"children":11533},{"style":3995},[11534],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":11536,"children":11537},{"style":2180},[11538],{"type":1878,"value":11340},{"type":1873,"tag":2163,"props":11540,"children":11541},{"style":2169},[11542],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11544,"children":11545},{"style":3995},[11546],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":11548,"children":11549},{"style":2180},[11550],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11552,"children":11553},{"class":2165,"line":86},[11554,11558,11562,11566,11570,11574,11578],{"type":1873,"tag":2163,"props":11555,"children":11556},{"style":2701},[11557],{"type":1878,"value":11173},{"type":1873,"tag":2163,"props":11559,"children":11560},{"style":2180},[11561],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11563,"children":11564},{"style":3995},[11565],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":11567,"children":11568},{"style":2180},[11569],{"type":1878,"value":11373},{"type":1873,"tag":2163,"props":11571,"children":11572},{"style":2169},[11573],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11575,"children":11576},{"style":3995},[11577],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":11579,"children":11580},{"style":2180},[11581],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11583,"children":11584},{"class":2165,"line":90},[11585],{"type":1873,"tag":2163,"props":11586,"children":11587},{"emptyLinePlaceholder":232},[11588],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":11590,"children":11591},{"class":2165,"line":94},[11592],{"type":1873,"tag":2163,"props":11593,"children":11594},{"style":8855},[11595],{"type":1878,"value":11596},"// An inline uniform block\n",{"type":1873,"tag":2163,"props":11598,"children":11599},{"class":2165,"line":98},[11600,11604,11608,11612,11616,11620,11624],{"type":1873,"tag":2163,"props":11601,"children":11602},{"style":2701},[11603],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11605,"children":11606},{"style":2180},[11607],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11609,"children":11610},{"style":3995},[11611],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":11613,"children":11614},{"style":2180},[11615],{"type":1878,"value":11221},{"type":1873,"tag":2163,"props":11617,"children":11618},{"style":2169},[11619],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11621,"children":11622},{"style":3995},[11623],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":11625,"children":11626},{"style":2180},[11627],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11629,"children":11630},{"class":2165,"line":102},[11631,11635,11639,11643,11647,11651],{"type":1873,"tag":2163,"props":11632,"children":11633},{"style":2701},[11634],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11636,"children":11637},{"style":2180},[11638],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11640,"children":11641},{"style":3995},[11642],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":11644,"children":11645},{"style":2180},[11646],{"type":1878,"value":11253},{"type":1873,"tag":2163,"props":11648,"children":11649},{"style":2169},[11650],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11652,"children":11653},{"style":2180},[11654],{"type":1878,"value":11655}," VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK;\n",{"type":1873,"tag":2163,"props":11657,"children":11658},{"class":2165,"line":106},[11659,11663,11667,11671,11675,11679],{"type":1873,"tag":2163,"props":11660,"children":11661},{"style":2701},[11662],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11664,"children":11665},{"style":2180},[11666],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11668,"children":11669},{"style":3995},[11670],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":11672,"children":11673},{"style":2180},[11674],{"type":1878,"value":11282},{"type":1873,"tag":2163,"props":11676,"children":11677},{"style":2169},[11678],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11680,"children":11681},{"style":2180},[11682],{"type":1878,"value":11683}," InlineBlockSize;\n",{"type":1873,"tag":2163,"props":11685,"children":11686},{"class":2165,"line":110},[11687,11691,11695,11699,11703,11707],{"type":1873,"tag":2163,"props":11688,"children":11689},{"style":2701},[11690],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11692,"children":11693},{"style":2180},[11694],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11696,"children":11697},{"style":3995},[11698],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":11700,"children":11701},{"style":2180},[11702],{"type":1878,"value":11311},{"type":1873,"tag":2163,"props":11704,"children":11705},{"style":2169},[11706],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11708,"children":11709},{"style":2180},[11710],{"type":1878,"value":11519},{"type":1873,"tag":2163,"props":11712,"children":11713},{"class":2165,"line":114},[11714,11718,11722,11726,11730,11734,11738],{"type":1873,"tag":2163,"props":11715,"children":11716},{"style":2701},[11717],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11719,"children":11720},{"style":2180},[11721],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11723,"children":11724},{"style":3995},[11725],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":11727,"children":11728},{"style":2180},[11729],{"type":1878,"value":11340},{"type":1873,"tag":2163,"props":11731,"children":11732},{"style":2169},[11733],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11735,"children":11736},{"style":3995},[11737],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":11739,"children":11740},{"style":2180},[11741],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11743,"children":11744},{"class":2165,"line":118},[11745,11749,11753,11757,11761,11765,11769],{"type":1873,"tag":2163,"props":11746,"children":11747},{"style":2701},[11748],{"type":1878,"value":11173},{"type":1873,"tag":2163,"props":11750,"children":11751},{"style":2180},[11752],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11754,"children":11755},{"style":3995},[11756],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":11758,"children":11759},{"style":2180},[11760],{"type":1878,"value":11373},{"type":1873,"tag":2163,"props":11762,"children":11763},{"style":2169},[11764],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11766,"children":11767},{"style":3995},[11768],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":11770,"children":11771},{"style":2180},[11772],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11774,"children":11775},{"class":2165,"line":122},[11776],{"type":1873,"tag":2163,"props":11777,"children":11778},{"emptyLinePlaceholder":232},[11779],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":11781,"children":11782},{"class":2165,"line":126},[11783],{"type":1873,"tag":2163,"props":11784,"children":11785},{"style":8855},[11786],{"type":1878,"value":11787},"// A storage buffer array with variable descriptor count and all the descriptor flags\n",{"type":1873,"tag":2163,"props":11789,"children":11790},{"class":2165,"line":130},[11791,11795,11799,11803,11807,11811,11815],{"type":1873,"tag":2163,"props":11792,"children":11793},{"style":2701},[11794],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11796,"children":11797},{"style":2180},[11798],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11800,"children":11801},{"style":3995},[11802],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":11804,"children":11805},{"style":2180},[11806],{"type":1878,"value":11221},{"type":1873,"tag":2163,"props":11808,"children":11809},{"style":2169},[11810],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11812,"children":11813},{"style":3995},[11814],{"type":1878,"value":4689},{"type":1873,"tag":2163,"props":11816,"children":11817},{"style":2180},[11818],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11820,"children":11821},{"class":2165,"line":134},[11822,11826,11830,11834,11838,11842],{"type":1873,"tag":2163,"props":11823,"children":11824},{"style":2701},[11825],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11827,"children":11828},{"style":2180},[11829],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11831,"children":11832},{"style":3995},[11833],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":11835,"children":11836},{"style":2180},[11837],{"type":1878,"value":11253},{"type":1873,"tag":2163,"props":11839,"children":11840},{"style":2169},[11841],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11843,"children":11844},{"style":2180},[11845],{"type":1878,"value":11846}," VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;\n",{"type":1873,"tag":2163,"props":11848,"children":11849},{"class":2165,"line":138},[11850,11854,11858,11862,11866,11870],{"type":1873,"tag":2163,"props":11851,"children":11852},{"style":2701},[11853],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11855,"children":11856},{"style":2180},[11857],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11859,"children":11860},{"style":3995},[11861],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":11863,"children":11864},{"style":2180},[11865],{"type":1878,"value":11282},{"type":1873,"tag":2163,"props":11867,"children":11868},{"style":2169},[11869],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11871,"children":11872},{"style":2180},[11873],{"type":1878,"value":11874}," UINT32_MAX;\n",{"type":1873,"tag":2163,"props":11876,"children":11877},{"class":2165,"line":142},[11878,11882,11886,11890,11894,11898],{"type":1873,"tag":2163,"props":11879,"children":11880},{"style":2701},[11881],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11883,"children":11884},{"style":2180},[11885],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11887,"children":11888},{"style":3995},[11889],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":11891,"children":11892},{"style":2180},[11893],{"type":1878,"value":11311},{"type":1873,"tag":2163,"props":11895,"children":11896},{"style":2169},[11897],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11899,"children":11900},{"style":2180},[11901],{"type":1878,"value":11519},{"type":1873,"tag":2163,"props":11903,"children":11904},{"class":2165,"line":146},[11905,11909,11913,11917,11921,11925,11929],{"type":1873,"tag":2163,"props":11906,"children":11907},{"style":2701},[11908],{"type":1878,"value":11147},{"type":1873,"tag":2163,"props":11910,"children":11911},{"style":2180},[11912],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11914,"children":11915},{"style":3995},[11916],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":11918,"children":11919},{"style":2180},[11920],{"type":1878,"value":11340},{"type":1873,"tag":2163,"props":11922,"children":11923},{"style":2169},[11924],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11926,"children":11927},{"style":3995},[11928],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":11930,"children":11931},{"style":2180},[11932],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":11934,"children":11935},{"class":2165,"line":150},[11936,11940,11944,11948,11952,11956,11961],{"type":1873,"tag":2163,"props":11937,"children":11938},{"style":2701},[11939],{"type":1878,"value":11173},{"type":1873,"tag":2163,"props":11941,"children":11942},{"style":2180},[11943],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":11945,"children":11946},{"style":3995},[11947],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":11949,"children":11950},{"style":2180},[11951],{"type":1878,"value":11373},{"type":1873,"tag":2163,"props":11953,"children":11954},{"style":2169},[11955],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":11957,"children":11958},{"style":2180},[11959],{"type":1878,"value":11960}," VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT ",{"type":1873,"tag":2163,"props":11962,"children":11963},{"style":2169},[11964],{"type":1878,"value":11965},"|\n",{"type":1873,"tag":2163,"props":11967,"children":11968},{"class":2165,"line":154},[11969,11974],{"type":1873,"tag":2163,"props":11970,"children":11971},{"style":2180},[11972],{"type":1878,"value":11973}," VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT ",{"type":1873,"tag":2163,"props":11975,"children":11976},{"style":2169},[11977],{"type":1878,"value":11965},{"type":1873,"tag":2163,"props":11979,"children":11980},{"class":2165,"line":158},[11981,11986],{"type":1873,"tag":2163,"props":11982,"children":11983},{"style":2180},[11984],{"type":1878,"value":11985}," VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT ",{"type":1873,"tag":2163,"props":11987,"children":11988},{"style":2169},[11989],{"type":1878,"value":11965},{"type":1873,"tag":2163,"props":11991,"children":11992},{"class":2165,"line":162},[11993],{"type":1873,"tag":2163,"props":11994,"children":11995},{"style":2180},[11996],{"type":1878,"value":11997}," VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT;\n",{"type":1873,"tag":2163,"props":11999,"children":12000},{"class":2165,"line":166},[12001],{"type":1873,"tag":2163,"props":12002,"children":12003},{"emptyLinePlaceholder":232},[12004],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12006,"children":12007},{"class":2165,"line":170},[12008,12013,12017],{"type":1873,"tag":2163,"props":12009,"children":12010},{"style":2180},[12011],{"type":1878,"value":12012},"VkDescriptorSetLayoutBindingFlagsCreateInfo dslFlagsInfo ",{"type":1873,"tag":2163,"props":12014,"children":12015},{"style":2169},[12016],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12018,"children":12019},{"style":2180},[12020],{"type":1878,"value":12021}," {\n",{"type":1873,"tag":2163,"props":12023,"children":12024},{"class":2165,"line":174},[12025,12030,12034],{"type":1873,"tag":2163,"props":12026,"children":12027},{"style":2180},[12028],{"type":1878,"value":12029}," .sType ",{"type":1873,"tag":2163,"props":12031,"children":12032},{"style":2169},[12033],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12035,"children":12036},{"style":2180},[12037],{"type":1878,"value":12038}," VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,\n",{"type":1873,"tag":2163,"props":12040,"children":12041},{"class":2165,"line":178},[12042,12047,12051,12055],{"type":1873,"tag":2163,"props":12043,"children":12044},{"style":2180},[12045],{"type":1878,"value":12046}," .pNext ",{"type":1873,"tag":2163,"props":12048,"children":12049},{"style":2169},[12050],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12052,"children":12053},{"style":3995},[12054],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":12056,"children":12057},{"style":2180},[12058],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":12060,"children":12061},{"class":2165,"line":182},[12062,12067,12071,12075],{"type":1873,"tag":2163,"props":12063,"children":12064},{"style":2180},[12065],{"type":1878,"value":12066}," .bindingCount ",{"type":1873,"tag":2163,"props":12068,"children":12069},{"style":2169},[12070],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12072,"children":12073},{"style":3995},[12074],{"type":1878,"value":4710},{"type":1873,"tag":2163,"props":12076,"children":12077},{"style":2180},[12078],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":12080,"children":12081},{"class":2165,"line":186},[12082,12087,12091],{"type":1873,"tag":2163,"props":12083,"children":12084},{"style":2180},[12085],{"type":1878,"value":12086}," .pBindings ",{"type":1873,"tag":2163,"props":12088,"children":12089},{"style":2169},[12090],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12092,"children":12093},{"style":2180},[12094],{"type":1878,"value":12095}," bindingFlags};\n",{"type":1873,"tag":2163,"props":12097,"children":12098},{"class":2165,"line":190},[12099],{"type":1873,"tag":2163,"props":12100,"children":12101},{"emptyLinePlaceholder":232},[12102],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12104,"children":12105},{"class":2165,"line":194},[12106,12111,12115],{"type":1873,"tag":2163,"props":12107,"children":12108},{"style":2180},[12109],{"type":1878,"value":12110},"VkDescriptorSetLayoutCreateInfo dslInfo ",{"type":1873,"tag":2163,"props":12112,"children":12113},{"style":2169},[12114],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12116,"children":12117},{"style":2180},[12118],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":12120,"children":12121},{"class":2165,"line":198},[12122,12127,12131],{"type":1873,"tag":2163,"props":12123,"children":12124},{"style":2180},[12125],{"type":1878,"value":12126}," .sType ",{"type":1873,"tag":2163,"props":12128,"children":12129},{"style":2169},[12130],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12132,"children":12133},{"style":2180},[12134],{"type":1878,"value":12135}," VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,\n",{"type":1873,"tag":2163,"props":12137,"children":12138},{"class":2165,"line":202},[12139,12144,12148],{"type":1873,"tag":2163,"props":12140,"children":12141},{"style":2180},[12142],{"type":1878,"value":12143}," .pNext ",{"type":1873,"tag":2163,"props":12145,"children":12146},{"style":2169},[12147],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12149,"children":12150},{"style":2180},[12151],{"type":1878,"value":12152}," dslFlagsInfo,\n",{"type":1873,"tag":2163,"props":12154,"children":12155},{"class":2165,"line":206},[12156,12161,12165,12169],{"type":1873,"tag":2163,"props":12157,"children":12158},{"style":2180},[12159],{"type":1878,"value":12160}," .bindingCount ",{"type":1873,"tag":2163,"props":12162,"children":12163},{"style":2169},[12164],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12166,"children":12167},{"style":3995},[12168],{"type":1878,"value":4710},{"type":1873,"tag":2163,"props":12170,"children":12171},{"style":2180},[12172],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":12174,"children":12175},{"class":2165,"line":210},[12176,12181,12185],{"type":1873,"tag":2163,"props":12177,"children":12178},{"style":2180},[12179],{"type":1878,"value":12180}," .pBindings ",{"type":1873,"tag":2163,"props":12182,"children":12183},{"style":2169},[12184],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12186,"children":12187},{"style":2180},[12188],{"type":1878,"value":12189}," bindings};\n",{"type":1873,"tag":1874,"props":12191,"children":12192},{},[12193,12195,12200],{"type":1878,"value":12194},"This would map straightforwardly to a ",{"type":1873,"tag":2159,"props":12196,"children":12198},{"className":12197},[],[12199],{"type":1878,"value":6319},{"type":1878,"value":12201}," as follows:",{"type":1873,"tag":2151,"props":12203,"children":12205},{"className":2153,"code":12204,"language":2155,"meta":2156,"style":2156},"const uint32_t UniformBufferArraySize = 12 * bufferDescriptorSize; // Size in bytes\nconst uint32_t InlineBlockDescriptorSize = 256; // Size in bytes\nVkDescriptorSetAndBindingMappingEXT mappings[4];\n\n// Setup values used by all mappings\nVkDescriptorSetAndBindingMappingEXT descriptorSet0Mapping = {\n .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\n .pNext = NULL,\n\n // Descriptor set value in the shader\n .descriptorSet = 0,\n\n // Binding count is always one for the legacy descriptor model - it counts the number of distinct bindings;\n // the array size is something only the application needs to consider when laying out the buffer\n .bindingCount = 1,\n\n // All resources are mapped for simplicity\n .resourceMask = VK_SPIRV_RESOURCE_TYPE_ALL_EXT;\n\n // Source used by all but inline uniform blocks\n .source = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT};\n\n// The push offset allows swapping descriptor sets by setting a push constant.\n// Without this, the heap would need to be switched to achieve the same, which can be expensive on some hardware.\n// The offset chosen here (128) is semi-arbitrary, but is chosen to avoid actual push constant data.\nconst uint32 DescriptorSetPushOffset = 128;\n\n// Copy the base data to all three mappings\nmappings[0] = descriptorSet0Mapping;\nmappings[1] = descriptorSet0Mapping;\nmappings[2] = descriptorSet0Mapping;\nmappings[3] = descriptorSet0Mapping;\n\n// 12 uniform buffers available only to the vertex shader\nmappings[0].firstBinding = 0;\nmappings[0].sourceData.pushIndex = {0};\nmappings[0].sourceData.pushIndex.heapOffset = 0;\nmappings[0].sourceData.pushIndex.heapIndexStride = 1; // Interpret push data as byte offset\nmappings[0].sourceData.pushIndex.heapArrayStride = bufferDescriptorSize;\nmappings[0].sourceData.pushIndex.pushOffset = DescriptorSetPushOffset;\n\n// A combined image sampler\n// Combined image samplers source image descriptors at `heapOffset` and sampler descriptors at `samplerHeapOffset`\n// Image is packed after the uniform buffers, sampler at an offset of 0 in the sampler heap\nmappings[1].firstBinding = 1;\nmappings[1].sourceData.pushIndex = {0};\nmappings[1].sourceData.pushIndex.heapOffset = UniformBufferArraySize;\nmappings[1].sourceData.pushIndex.heapIndexStride = 1;\nmappings[1].sourceData.pushIndex.samplerHeapOffset = 0;\nmappings[1].sourceData.pushIndex.samplerHeapIndexStride = 1;\nmappings[1].sourceData.pushIndex.pushOffset = DescriptorSetPushOffset;\n\n// An inline uniform block\n// Packed after the uniform buffers and image.\nmappings[2].firstBinding = 2;\nmappings[2].source = VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT; // Switch to heap data source\nmappings[2].sourceData.heapData = {0};\nmappings[2].sourceData.heapData.heapOffset = UniformBufferArraySize + imageDescriptorSize;\nmappings[2].sourceData.heapData.pushOffset = DescriptorSetPushOffset;\n\n// A storage buffer array with variable descriptor count and all the descriptor flags\n// Packed after the other resources\nmappings[3].firstBinding = 3;\nmappings[3].sourceData.pushIndex = {0};\nmappings[3].sourceData.pushIndex.heapOffset = UniformBufferArraySize + imageDescriptorSize + InlineBlockDescriptorSize;\nmappings[3].sourceData.pushIndex.heapIndexStride = 1;\nmappings[3].sourceData.pushIndex.heapArrayStride = bufferDescriptorSize;\nmappings[3].sourceData.pushIndex.pushOffset = DescriptorSetPushOffset;\n\nVkShaderDescriptorSetAndBindingMappingInfoEXT vertexShaderMappings = {\n .sType = VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT,\n .pNext = NULL,\n .mappingCount = 4,\n .pMappings = mappings};\n\n// It is not necessary to omit mappings from specific shaders, but for the sake of comparison,\n// as the uniform buffer array was only visible to the vertex shader before,\n// this can be done in the same way by omitting a particular mapping from a given shader.\n// Generally though, applications should feel free to use the same mappings for all shaders if they wish to.\nVkShaderDescriptorSetAndBindingMappingInfoEXT nonVertexMappings = {\n .sType = VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT,\n .pNext = NULL,\n .mappingCount = 3,\n .pMappings = &(mappings[1])};\n",[12206],{"type":1873,"tag":2159,"props":12207,"children":12208},{"__ignoreMap":2156},[12209,12248,12281,12306,12313,12321,12337,12353,12372,12379,12387,12407,12414,12422,12430,12449,12456,12464,12481,12488,12496,12513,12520,12528,12536,12544,12569,12576,12584,12613,12640,12667,12694,12701,12708,12740,12778,12810,12847,12876,12905,12912,12919,12927,12935,12966,13001,13029,13060,13092,13124,13151,13158,13165,13173,13204,13238,13274,13312,13340,13347,13354,13362,13393,13428,13473,13504,13531,13558,13565,13581,13597,13616,13636,13653,13660,13668,13676,13684,13692,13708,13723,13742,13761],{"type":1873,"tag":2163,"props":12210,"children":12211},{"class":2165,"line":10},[12212,12216,12220,12225,12229,12233,12238,12243],{"type":1873,"tag":2163,"props":12213,"children":12214},{"style":2169},[12215],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":12217,"children":12218},{"style":2169},[12219],{"type":1878,"value":11087},{"type":1873,"tag":2163,"props":12221,"children":12222},{"style":2180},[12223],{"type":1878,"value":12224}," UniformBufferArraySize ",{"type":1873,"tag":2163,"props":12226,"children":12227},{"style":2169},[12228],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12230,"children":12231},{"style":3995},[12232],{"type":1878,"value":11101},{"type":1873,"tag":2163,"props":12234,"children":12235},{"style":2169},[12236],{"type":1878,"value":12237}," *",{"type":1873,"tag":2163,"props":12239,"children":12240},{"style":2180},[12241],{"type":1878,"value":12242}," bufferDescriptorSize;",{"type":1873,"tag":2163,"props":12244,"children":12245},{"style":8855},[12246],{"type":1878,"value":12247}," // Size in bytes\n",{"type":1873,"tag":2163,"props":12249,"children":12250},{"class":2165,"line":14},[12251,12255,12259,12263,12267,12271,12276],{"type":1873,"tag":2163,"props":12252,"children":12253},{"style":2169},[12254],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":12256,"children":12257},{"style":2169},[12258],{"type":1878,"value":11087},{"type":1873,"tag":2163,"props":12260,"children":12261},{"style":2180},[12262],{"type":1878,"value":11121},{"type":1873,"tag":2163,"props":12264,"children":12265},{"style":2169},[12266],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12268,"children":12269},{"style":3995},[12270],{"type":1878,"value":11130},{"type":1873,"tag":2163,"props":12272,"children":12273},{"style":2180},[12274],{"type":1878,"value":12275},";",{"type":1873,"tag":2163,"props":12277,"children":12278},{"style":8855},[12279],{"type":1878,"value":12280}," // Size in bytes\n",{"type":1873,"tag":2163,"props":12282,"children":12283},{"class":2165,"line":18},[12284,12289,12294,12298,12302],{"type":1873,"tag":2163,"props":12285,"children":12286},{"style":2180},[12287],{"type":1878,"value":12288},"VkDescriptorSetAndBindingMappingEXT ",{"type":1873,"tag":2163,"props":12290,"children":12291},{"style":2701},[12292],{"type":1878,"value":12293},"mappings",{"type":1873,"tag":2163,"props":12295,"children":12296},{"style":2180},[12297],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12299,"children":12300},{"style":3995},[12301],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":12303,"children":12304},{"style":2180},[12305],{"type":1878,"value":6550},{"type":1873,"tag":2163,"props":12307,"children":12308},{"class":2165,"line":22},[12309],{"type":1873,"tag":2163,"props":12310,"children":12311},{"emptyLinePlaceholder":232},[12312],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12314,"children":12315},{"class":2165,"line":26},[12316],{"type":1873,"tag":2163,"props":12317,"children":12318},{"style":8855},[12319],{"type":1878,"value":12320},"// Setup values used by all mappings\n",{"type":1873,"tag":2163,"props":12322,"children":12323},{"class":2165,"line":30},[12324,12329,12333],{"type":1873,"tag":2163,"props":12325,"children":12326},{"style":2180},[12327],{"type":1878,"value":12328},"VkDescriptorSetAndBindingMappingEXT descriptorSet0Mapping ",{"type":1873,"tag":2163,"props":12330,"children":12331},{"style":2169},[12332],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12334,"children":12335},{"style":2180},[12336],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":12338,"children":12339},{"class":2165,"line":34},[12340,12344,12348],{"type":1873,"tag":2163,"props":12341,"children":12342},{"style":2180},[12343],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":12345,"children":12346},{"style":2169},[12347],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12349,"children":12350},{"style":2180},[12351],{"type":1878,"value":12352}," VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\n",{"type":1873,"tag":2163,"props":12354,"children":12355},{"class":2165,"line":38},[12356,12360,12364,12368],{"type":1873,"tag":2163,"props":12357,"children":12358},{"style":2180},[12359],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":12361,"children":12362},{"style":2169},[12363],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12365,"children":12366},{"style":3995},[12367],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":12369,"children":12370},{"style":2180},[12371],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":12373,"children":12374},{"class":2165,"line":42},[12375],{"type":1873,"tag":2163,"props":12376,"children":12377},{"emptyLinePlaceholder":232},[12378],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12380,"children":12381},{"class":2165,"line":46},[12382],{"type":1873,"tag":2163,"props":12383,"children":12384},{"style":8855},[12385],{"type":1878,"value":12386}," // Descriptor set value in the shader\n",{"type":1873,"tag":2163,"props":12388,"children":12389},{"class":2165,"line":50},[12390,12395,12399,12403],{"type":1873,"tag":2163,"props":12391,"children":12392},{"style":2180},[12393],{"type":1878,"value":12394}," .descriptorSet ",{"type":1873,"tag":2163,"props":12396,"children":12397},{"style":2169},[12398],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12400,"children":12401},{"style":3995},[12402],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":12404,"children":12405},{"style":2180},[12406],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":12408,"children":12409},{"class":2165,"line":54},[12410],{"type":1873,"tag":2163,"props":12411,"children":12412},{"emptyLinePlaceholder":232},[12413],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12415,"children":12416},{"class":2165,"line":58},[12417],{"type":1873,"tag":2163,"props":12418,"children":12419},{"style":8855},[12420],{"type":1878,"value":12421}," // Binding count is always one for the legacy descriptor model - it counts the number of distinct bindings;\n",{"type":1873,"tag":2163,"props":12423,"children":12424},{"class":2165,"line":62},[12425],{"type":1873,"tag":2163,"props":12426,"children":12427},{"style":8855},[12428],{"type":1878,"value":12429}," // the array size is something only the application needs to consider when laying out the buffer\n",{"type":1873,"tag":2163,"props":12431,"children":12432},{"class":2165,"line":66},[12433,12437,12441,12445],{"type":1873,"tag":2163,"props":12434,"children":12435},{"style":2180},[12436],{"type":1878,"value":12160},{"type":1873,"tag":2163,"props":12438,"children":12439},{"style":2169},[12440],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12442,"children":12443},{"style":3995},[12444],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":12446,"children":12447},{"style":2180},[12448],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":12450,"children":12451},{"class":2165,"line":70},[12452],{"type":1873,"tag":2163,"props":12453,"children":12454},{"emptyLinePlaceholder":232},[12455],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12457,"children":12458},{"class":2165,"line":74},[12459],{"type":1873,"tag":2163,"props":12460,"children":12461},{"style":8855},[12462],{"type":1878,"value":12463}," // All resources are mapped for simplicity\n",{"type":1873,"tag":2163,"props":12465,"children":12466},{"class":2165,"line":78},[12467,12472,12476],{"type":1873,"tag":2163,"props":12468,"children":12469},{"style":2180},[12470],{"type":1878,"value":12471}," .resourceMask ",{"type":1873,"tag":2163,"props":12473,"children":12474},{"style":2169},[12475],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12477,"children":12478},{"style":2180},[12479],{"type":1878,"value":12480}," VK_SPIRV_RESOURCE_TYPE_ALL_EXT;\n",{"type":1873,"tag":2163,"props":12482,"children":12483},{"class":2165,"line":82},[12484],{"type":1873,"tag":2163,"props":12485,"children":12486},{"emptyLinePlaceholder":232},[12487],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12489,"children":12490},{"class":2165,"line":86},[12491],{"type":1873,"tag":2163,"props":12492,"children":12493},{"style":8855},[12494],{"type":1878,"value":12495}," // Source used by all but inline uniform blocks\n",{"type":1873,"tag":2163,"props":12497,"children":12498},{"class":2165,"line":90},[12499,12504,12508],{"type":1873,"tag":2163,"props":12500,"children":12501},{"style":2180},[12502],{"type":1878,"value":12503}," .source ",{"type":1873,"tag":2163,"props":12505,"children":12506},{"style":2169},[12507],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12509,"children":12510},{"style":2180},[12511],{"type":1878,"value":12512}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT};\n",{"type":1873,"tag":2163,"props":12514,"children":12515},{"class":2165,"line":94},[12516],{"type":1873,"tag":2163,"props":12517,"children":12518},{"emptyLinePlaceholder":232},[12519],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12521,"children":12522},{"class":2165,"line":98},[12523],{"type":1873,"tag":2163,"props":12524,"children":12525},{"style":8855},[12526],{"type":1878,"value":12527},"// The push offset allows swapping descriptor sets by setting a push constant.\n",{"type":1873,"tag":2163,"props":12529,"children":12530},{"class":2165,"line":102},[12531],{"type":1873,"tag":2163,"props":12532,"children":12533},{"style":8855},[12534],{"type":1878,"value":12535},"// Without this, the heap would need to be switched to achieve the same, which can be expensive on some hardware.\n",{"type":1873,"tag":2163,"props":12537,"children":12538},{"class":2165,"line":106},[12539],{"type":1873,"tag":2163,"props":12540,"children":12541},{"style":8855},[12542],{"type":1878,"value":12543},"// The offset chosen here (128) is semi-arbitrary, but is chosen to avoid actual push constant data.\n",{"type":1873,"tag":2163,"props":12545,"children":12546},{"class":2165,"line":110},[12547,12551,12556,12560,12565],{"type":1873,"tag":2163,"props":12548,"children":12549},{"style":2169},[12550],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":12552,"children":12553},{"style":2180},[12554],{"type":1878,"value":12555}," uint32 DescriptorSetPushOffset ",{"type":1873,"tag":2163,"props":12557,"children":12558},{"style":2169},[12559],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12561,"children":12562},{"style":3995},[12563],{"type":1878,"value":12564}," 128",{"type":1873,"tag":2163,"props":12566,"children":12567},{"style":2180},[12568],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":12570,"children":12571},{"class":2165,"line":114},[12572],{"type":1873,"tag":2163,"props":12573,"children":12574},{"emptyLinePlaceholder":232},[12575],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12577,"children":12578},{"class":2165,"line":118},[12579],{"type":1873,"tag":2163,"props":12580,"children":12581},{"style":8855},[12582],{"type":1878,"value":12583},"// Copy the base data to all three mappings\n",{"type":1873,"tag":2163,"props":12585,"children":12586},{"class":2165,"line":122},[12587,12591,12595,12599,12604,12608],{"type":1873,"tag":2163,"props":12588,"children":12589},{"style":2701},[12590],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12592,"children":12593},{"style":2180},[12594],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12596,"children":12597},{"style":3995},[12598],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12600,"children":12601},{"style":2180},[12602],{"type":1878,"value":12603},"] ",{"type":1873,"tag":2163,"props":12605,"children":12606},{"style":2169},[12607],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12609,"children":12610},{"style":2180},[12611],{"type":1878,"value":12612}," descriptorSet0Mapping;\n",{"type":1873,"tag":2163,"props":12614,"children":12615},{"class":2165,"line":126},[12616,12620,12624,12628,12632,12636],{"type":1873,"tag":2163,"props":12617,"children":12618},{"style":2701},[12619],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12621,"children":12622},{"style":2180},[12623],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12625,"children":12626},{"style":3995},[12627],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":12629,"children":12630},{"style":2180},[12631],{"type":1878,"value":12603},{"type":1873,"tag":2163,"props":12633,"children":12634},{"style":2169},[12635],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12637,"children":12638},{"style":2180},[12639],{"type":1878,"value":12612},{"type":1873,"tag":2163,"props":12641,"children":12642},{"class":2165,"line":130},[12643,12647,12651,12655,12659,12663],{"type":1873,"tag":2163,"props":12644,"children":12645},{"style":2701},[12646],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12648,"children":12649},{"style":2180},[12650],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12652,"children":12653},{"style":3995},[12654],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":12656,"children":12657},{"style":2180},[12658],{"type":1878,"value":12603},{"type":1873,"tag":2163,"props":12660,"children":12661},{"style":2169},[12662],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12664,"children":12665},{"style":2180},[12666],{"type":1878,"value":12612},{"type":1873,"tag":2163,"props":12668,"children":12669},{"class":2165,"line":134},[12670,12674,12678,12682,12686,12690],{"type":1873,"tag":2163,"props":12671,"children":12672},{"style":2701},[12673],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12675,"children":12676},{"style":2180},[12677],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12679,"children":12680},{"style":3995},[12681],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":12683,"children":12684},{"style":2180},[12685],{"type":1878,"value":12603},{"type":1873,"tag":2163,"props":12687,"children":12688},{"style":2169},[12689],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12691,"children":12692},{"style":2180},[12693],{"type":1878,"value":12612},{"type":1873,"tag":2163,"props":12695,"children":12696},{"class":2165,"line":138},[12697],{"type":1873,"tag":2163,"props":12698,"children":12699},{"emptyLinePlaceholder":232},[12700],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12702,"children":12703},{"class":2165,"line":142},[12704],{"type":1873,"tag":2163,"props":12705,"children":12706},{"style":8855},[12707],{"type":1878,"value":11200},{"type":1873,"tag":2163,"props":12709,"children":12710},{"class":2165,"line":146},[12711,12715,12719,12723,12728,12732,12736],{"type":1873,"tag":2163,"props":12712,"children":12713},{"style":2701},[12714],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12716,"children":12717},{"style":2180},[12718],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12720,"children":12721},{"style":3995},[12722],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12724,"children":12725},{"style":2180},[12726],{"type":1878,"value":12727},"].firstBinding ",{"type":1873,"tag":2163,"props":12729,"children":12730},{"style":2169},[12731],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12733,"children":12734},{"style":3995},[12735],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":12737,"children":12738},{"style":2180},[12739],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":12741,"children":12742},{"class":2165,"line":150},[12743,12747,12751,12755,12760,12764,12769,12773],{"type":1873,"tag":2163,"props":12744,"children":12745},{"style":2701},[12746],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12748,"children":12749},{"style":2180},[12750],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12752,"children":12753},{"style":3995},[12754],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12756,"children":12757},{"style":2180},[12758],{"type":1878,"value":12759},"].sourceData.pushIndex ",{"type":1873,"tag":2163,"props":12761,"children":12762},{"style":2169},[12763],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12765,"children":12766},{"style":2180},[12767],{"type":1878,"value":12768}," {",{"type":1873,"tag":2163,"props":12770,"children":12771},{"style":3995},[12772],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12774,"children":12775},{"style":2180},[12776],{"type":1878,"value":12777},"};\n",{"type":1873,"tag":2163,"props":12779,"children":12780},{"class":2165,"line":154},[12781,12785,12789,12793,12798,12802,12806],{"type":1873,"tag":2163,"props":12782,"children":12783},{"style":2701},[12784],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12786,"children":12787},{"style":2180},[12788],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12790,"children":12791},{"style":3995},[12792],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12794,"children":12795},{"style":2180},[12796],{"type":1878,"value":12797},"].sourceData.pushIndex.heapOffset ",{"type":1873,"tag":2163,"props":12799,"children":12800},{"style":2169},[12801],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12803,"children":12804},{"style":3995},[12805],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":12807,"children":12808},{"style":2180},[12809],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":12811,"children":12812},{"class":2165,"line":158},[12813,12817,12821,12825,12830,12834,12838,12842],{"type":1873,"tag":2163,"props":12814,"children":12815},{"style":2701},[12816],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12818,"children":12819},{"style":2180},[12820],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12822,"children":12823},{"style":3995},[12824],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12826,"children":12827},{"style":2180},[12828],{"type":1878,"value":12829},"].sourceData.pushIndex.heapIndexStride ",{"type":1873,"tag":2163,"props":12831,"children":12832},{"style":2169},[12833],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12835,"children":12836},{"style":3995},[12837],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":12839,"children":12840},{"style":2180},[12841],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":12843,"children":12844},{"style":8855},[12845],{"type":1878,"value":12846}," // Interpret push data as byte offset\n",{"type":1873,"tag":2163,"props":12848,"children":12849},{"class":2165,"line":162},[12850,12854,12858,12862,12867,12871],{"type":1873,"tag":2163,"props":12851,"children":12852},{"style":2701},[12853],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12855,"children":12856},{"style":2180},[12857],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12859,"children":12860},{"style":3995},[12861],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12863,"children":12864},{"style":2180},[12865],{"type":1878,"value":12866},"].sourceData.pushIndex.heapArrayStride ",{"type":1873,"tag":2163,"props":12868,"children":12869},{"style":2169},[12870],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12872,"children":12873},{"style":2180},[12874],{"type":1878,"value":12875}," bufferDescriptorSize;\n",{"type":1873,"tag":2163,"props":12877,"children":12878},{"class":2165,"line":166},[12879,12883,12887,12891,12896,12900],{"type":1873,"tag":2163,"props":12880,"children":12881},{"style":2701},[12882],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12884,"children":12885},{"style":2180},[12886],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12888,"children":12889},{"style":3995},[12890],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12892,"children":12893},{"style":2180},[12894],{"type":1878,"value":12895},"].sourceData.pushIndex.pushOffset ",{"type":1873,"tag":2163,"props":12897,"children":12898},{"style":2169},[12899],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12901,"children":12902},{"style":2180},[12903],{"type":1878,"value":12904}," DescriptorSetPushOffset;\n",{"type":1873,"tag":2163,"props":12906,"children":12907},{"class":2165,"line":170},[12908],{"type":1873,"tag":2163,"props":12909,"children":12910},{"emptyLinePlaceholder":232},[12911],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":12913,"children":12914},{"class":2165,"line":174},[12915],{"type":1873,"tag":2163,"props":12916,"children":12917},{"style":8855},[12918],{"type":1878,"value":11400},{"type":1873,"tag":2163,"props":12920,"children":12921},{"class":2165,"line":178},[12922],{"type":1873,"tag":2163,"props":12923,"children":12924},{"style":8855},[12925],{"type":1878,"value":12926},"// Combined image samplers source image descriptors at `heapOffset` and sampler descriptors at `samplerHeapOffset`\n",{"type":1873,"tag":2163,"props":12928,"children":12929},{"class":2165,"line":182},[12930],{"type":1873,"tag":2163,"props":12931,"children":12932},{"style":8855},[12933],{"type":1878,"value":12934},"// Image is packed after the uniform buffers, sampler at an offset of 0 in the sampler heap\n",{"type":1873,"tag":2163,"props":12936,"children":12937},{"class":2165,"line":186},[12938,12942,12946,12950,12954,12958,12962],{"type":1873,"tag":2163,"props":12939,"children":12940},{"style":2701},[12941],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12943,"children":12944},{"style":2180},[12945],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12947,"children":12948},{"style":3995},[12949],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":12951,"children":12952},{"style":2180},[12953],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":12955,"children":12956},{"style":2169},[12957],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12959,"children":12960},{"style":3995},[12961],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":12963,"children":12964},{"style":2180},[12965],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":12967,"children":12968},{"class":2165,"line":190},[12969,12973,12977,12981,12985,12989,12993,12997],{"type":1873,"tag":2163,"props":12970,"children":12971},{"style":2701},[12972],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":12974,"children":12975},{"style":2180},[12976],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":12978,"children":12979},{"style":3995},[12980],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":12982,"children":12983},{"style":2180},[12984],{"type":1878,"value":12759},{"type":1873,"tag":2163,"props":12986,"children":12987},{"style":2169},[12988],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":12990,"children":12991},{"style":2180},[12992],{"type":1878,"value":12768},{"type":1873,"tag":2163,"props":12994,"children":12995},{"style":3995},[12996],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":12998,"children":12999},{"style":2180},[13000],{"type":1878,"value":12777},{"type":1873,"tag":2163,"props":13002,"children":13003},{"class":2165,"line":194},[13004,13008,13012,13016,13020,13024],{"type":1873,"tag":2163,"props":13005,"children":13006},{"style":2701},[13007],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13009,"children":13010},{"style":2180},[13011],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13013,"children":13014},{"style":3995},[13015],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13017,"children":13018},{"style":2180},[13019],{"type":1878,"value":12797},{"type":1873,"tag":2163,"props":13021,"children":13022},{"style":2169},[13023],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13025,"children":13026},{"style":2180},[13027],{"type":1878,"value":13028}," UniformBufferArraySize;\n",{"type":1873,"tag":2163,"props":13030,"children":13031},{"class":2165,"line":198},[13032,13036,13040,13044,13048,13052,13056],{"type":1873,"tag":2163,"props":13033,"children":13034},{"style":2701},[13035],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13037,"children":13038},{"style":2180},[13039],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13041,"children":13042},{"style":3995},[13043],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13045,"children":13046},{"style":2180},[13047],{"type":1878,"value":12829},{"type":1873,"tag":2163,"props":13049,"children":13050},{"style":2169},[13051],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13053,"children":13054},{"style":3995},[13055],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":13057,"children":13058},{"style":2180},[13059],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13061,"children":13062},{"class":2165,"line":202},[13063,13067,13071,13075,13080,13084,13088],{"type":1873,"tag":2163,"props":13064,"children":13065},{"style":2701},[13066],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13068,"children":13069},{"style":2180},[13070],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13072,"children":13073},{"style":3995},[13074],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13076,"children":13077},{"style":2180},[13078],{"type":1878,"value":13079},"].sourceData.pushIndex.samplerHeapOffset ",{"type":1873,"tag":2163,"props":13081,"children":13082},{"style":2169},[13083],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13085,"children":13086},{"style":3995},[13087],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":13089,"children":13090},{"style":2180},[13091],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13093,"children":13094},{"class":2165,"line":206},[13095,13099,13103,13107,13112,13116,13120],{"type":1873,"tag":2163,"props":13096,"children":13097},{"style":2701},[13098],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13100,"children":13101},{"style":2180},[13102],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13104,"children":13105},{"style":3995},[13106],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13108,"children":13109},{"style":2180},[13110],{"type":1878,"value":13111},"].sourceData.pushIndex.samplerHeapIndexStride ",{"type":1873,"tag":2163,"props":13113,"children":13114},{"style":2169},[13115],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13117,"children":13118},{"style":3995},[13119],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":13121,"children":13122},{"style":2180},[13123],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13125,"children":13126},{"class":2165,"line":210},[13127,13131,13135,13139,13143,13147],{"type":1873,"tag":2163,"props":13128,"children":13129},{"style":2701},[13130],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13132,"children":13133},{"style":2180},[13134],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13136,"children":13137},{"style":3995},[13138],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13140,"children":13141},{"style":2180},[13142],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":13144,"children":13145},{"style":2169},[13146],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13148,"children":13149},{"style":2180},[13150],{"type":1878,"value":12904},{"type":1873,"tag":2163,"props":13152,"children":13153},{"class":2165,"line":214},[13154],{"type":1873,"tag":2163,"props":13155,"children":13156},{"emptyLinePlaceholder":232},[13157],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":13159,"children":13160},{"class":2165,"line":218},[13161],{"type":1873,"tag":2163,"props":13162,"children":13163},{"style":8855},[13164],{"type":1878,"value":11596},{"type":1873,"tag":2163,"props":13166,"children":13167},{"class":2165,"line":222},[13168],{"type":1873,"tag":2163,"props":13169,"children":13170},{"style":8855},[13171],{"type":1878,"value":13172},"// Packed after the uniform buffers and image.\n",{"type":1873,"tag":2163,"props":13174,"children":13175},{"class":2165,"line":226},[13176,13180,13184,13188,13192,13196,13200],{"type":1873,"tag":2163,"props":13177,"children":13178},{"style":2701},[13179],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13181,"children":13182},{"style":2180},[13183],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13185,"children":13186},{"style":3995},[13187],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":13189,"children":13190},{"style":2180},[13191],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":13193,"children":13194},{"style":2169},[13195],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13197,"children":13198},{"style":3995},[13199],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":13201,"children":13202},{"style":2180},[13203],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13205,"children":13206},{"class":2165,"line":1622},[13207,13211,13215,13219,13224,13228,13233],{"type":1873,"tag":2163,"props":13208,"children":13209},{"style":2701},[13210],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13212,"children":13213},{"style":2180},[13214],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13216,"children":13217},{"style":3995},[13218],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":13220,"children":13221},{"style":2180},[13222],{"type":1878,"value":13223},"].source ",{"type":1873,"tag":2163,"props":13225,"children":13226},{"style":2169},[13227],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13229,"children":13230},{"style":2180},[13231],{"type":1878,"value":13232}," VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT;",{"type":1873,"tag":2163,"props":13234,"children":13235},{"style":8855},[13236],{"type":1878,"value":13237}," // Switch to heap data source\n",{"type":1873,"tag":2163,"props":13239,"children":13240},{"class":2165,"line":1618},[13241,13245,13249,13253,13258,13262,13266,13270],{"type":1873,"tag":2163,"props":13242,"children":13243},{"style":2701},[13244],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13246,"children":13247},{"style":2180},[13248],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13250,"children":13251},{"style":3995},[13252],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":13254,"children":13255},{"style":2180},[13256],{"type":1878,"value":13257},"].sourceData.heapData ",{"type":1873,"tag":2163,"props":13259,"children":13260},{"style":2169},[13261],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13263,"children":13264},{"style":2180},[13265],{"type":1878,"value":12768},{"type":1873,"tag":2163,"props":13267,"children":13268},{"style":3995},[13269],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":13271,"children":13272},{"style":2180},[13273],{"type":1878,"value":12777},{"type":1873,"tag":2163,"props":13275,"children":13276},{"class":2165,"line":1629},[13277,13281,13285,13289,13294,13298,13302,13307],{"type":1873,"tag":2163,"props":13278,"children":13279},{"style":2701},[13280],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13282,"children":13283},{"style":2180},[13284],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13286,"children":13287},{"style":3995},[13288],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":13290,"children":13291},{"style":2180},[13292],{"type":1878,"value":13293},"].sourceData.heapData.heapOffset ",{"type":1873,"tag":2163,"props":13295,"children":13296},{"style":2169},[13297],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13299,"children":13300},{"style":2180},[13301],{"type":1878,"value":12224},{"type":1873,"tag":2163,"props":13303,"children":13304},{"style":2169},[13305],{"type":1878,"value":13306},"+",{"type":1873,"tag":2163,"props":13308,"children":13309},{"style":2180},[13310],{"type":1878,"value":13311}," imageDescriptorSize;\n",{"type":1873,"tag":2163,"props":13313,"children":13314},{"class":2165,"line":1753},[13315,13319,13323,13327,13332,13336],{"type":1873,"tag":2163,"props":13316,"children":13317},{"style":2701},[13318],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13320,"children":13321},{"style":2180},[13322],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13324,"children":13325},{"style":3995},[13326],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":13328,"children":13329},{"style":2180},[13330],{"type":1878,"value":13331},"].sourceData.heapData.pushOffset ",{"type":1873,"tag":2163,"props":13333,"children":13334},{"style":2169},[13335],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13337,"children":13338},{"style":2180},[13339],{"type":1878,"value":12904},{"type":1873,"tag":2163,"props":13341,"children":13342},{"class":2165,"line":1184},[13343],{"type":1873,"tag":2163,"props":13344,"children":13345},{"emptyLinePlaceholder":232},[13346],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":13348,"children":13349},{"class":2165,"line":1107},[13350],{"type":1873,"tag":2163,"props":13351,"children":13352},{"style":8855},[13353],{"type":1878,"value":11787},{"type":1873,"tag":2163,"props":13355,"children":13356},{"class":2165,"line":939},[13357],{"type":1873,"tag":2163,"props":13358,"children":13359},{"style":8855},[13360],{"type":1878,"value":13361},"// Packed after the other resources\n",{"type":1873,"tag":2163,"props":13363,"children":13364},{"class":2165,"line":1517},[13365,13369,13373,13377,13381,13385,13389],{"type":1873,"tag":2163,"props":13366,"children":13367},{"style":2701},[13368],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13370,"children":13371},{"style":2180},[13372],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13374,"children":13375},{"style":3995},[13376],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":13378,"children":13379},{"style":2180},[13380],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":13382,"children":13383},{"style":2169},[13384],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13386,"children":13387},{"style":3995},[13388],{"type":1878,"value":4689},{"type":1873,"tag":2163,"props":13390,"children":13391},{"style":2180},[13392],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13394,"children":13395},{"class":2165,"line":1332},[13396,13400,13404,13408,13412,13416,13420,13424],{"type":1873,"tag":2163,"props":13397,"children":13398},{"style":2701},[13399],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13401,"children":13402},{"style":2180},[13403],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13405,"children":13406},{"style":3995},[13407],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":13409,"children":13410},{"style":2180},[13411],{"type":1878,"value":12759},{"type":1873,"tag":2163,"props":13413,"children":13414},{"style":2169},[13415],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13417,"children":13418},{"style":2180},[13419],{"type":1878,"value":12768},{"type":1873,"tag":2163,"props":13421,"children":13422},{"style":3995},[13423],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":13425,"children":13426},{"style":2180},[13427],{"type":1878,"value":12777},{"type":1873,"tag":2163,"props":13429,"children":13430},{"class":2165,"line":877},[13431,13435,13439,13443,13447,13451,13455,13459,13464,13468],{"type":1873,"tag":2163,"props":13432,"children":13433},{"style":2701},[13434],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13436,"children":13437},{"style":2180},[13438],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13440,"children":13441},{"style":3995},[13442],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":13444,"children":13445},{"style":2180},[13446],{"type":1878,"value":12797},{"type":1873,"tag":2163,"props":13448,"children":13449},{"style":2169},[13450],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13452,"children":13453},{"style":2180},[13454],{"type":1878,"value":12224},{"type":1873,"tag":2163,"props":13456,"children":13457},{"style":2169},[13458],{"type":1878,"value":13306},{"type":1873,"tag":2163,"props":13460,"children":13461},{"style":2180},[13462],{"type":1878,"value":13463}," imageDescriptorSize ",{"type":1873,"tag":2163,"props":13465,"children":13466},{"style":2169},[13467],{"type":1878,"value":13306},{"type":1873,"tag":2163,"props":13469,"children":13470},{"style":2180},[13471],{"type":1878,"value":13472}," InlineBlockDescriptorSize;\n",{"type":1873,"tag":2163,"props":13474,"children":13475},{"class":2165,"line":883},[13476,13480,13484,13488,13492,13496,13500],{"type":1873,"tag":2163,"props":13477,"children":13478},{"style":2701},[13479],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13481,"children":13482},{"style":2180},[13483],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13485,"children":13486},{"style":3995},[13487],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":13489,"children":13490},{"style":2180},[13491],{"type":1878,"value":12829},{"type":1873,"tag":2163,"props":13493,"children":13494},{"style":2169},[13495],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13497,"children":13498},{"style":3995},[13499],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":13501,"children":13502},{"style":2180},[13503],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13505,"children":13506},{"class":2165,"line":922},[13507,13511,13515,13519,13523,13527],{"type":1873,"tag":2163,"props":13508,"children":13509},{"style":2701},[13510],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13512,"children":13513},{"style":2180},[13514],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13516,"children":13517},{"style":3995},[13518],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":13520,"children":13521},{"style":2180},[13522],{"type":1878,"value":12866},{"type":1873,"tag":2163,"props":13524,"children":13525},{"style":2169},[13526],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13528,"children":13529},{"style":2180},[13530],{"type":1878,"value":12875},{"type":1873,"tag":2163,"props":13532,"children":13533},{"class":2165,"line":427},[13534,13538,13542,13546,13550,13554],{"type":1873,"tag":2163,"props":13535,"children":13536},{"style":2701},[13537],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13539,"children":13540},{"style":2180},[13541],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13543,"children":13544},{"style":3995},[13545],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":13547,"children":13548},{"style":2180},[13549],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":13551,"children":13552},{"style":2169},[13553],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13555,"children":13556},{"style":2180},[13557],{"type":1878,"value":12904},{"type":1873,"tag":2163,"props":13559,"children":13560},{"class":2165,"line":779},[13561],{"type":1873,"tag":2163,"props":13562,"children":13563},{"emptyLinePlaceholder":232},[13564],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":13566,"children":13567},{"class":2165,"line":1211},[13568,13573,13577],{"type":1873,"tag":2163,"props":13569,"children":13570},{"style":2180},[13571],{"type":1878,"value":13572},"VkShaderDescriptorSetAndBindingMappingInfoEXT vertexShaderMappings ",{"type":1873,"tag":2163,"props":13574,"children":13575},{"style":2169},[13576],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13578,"children":13579},{"style":2180},[13580],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":13582,"children":13583},{"class":2165,"line":1111},[13584,13588,13592],{"type":1873,"tag":2163,"props":13585,"children":13586},{"style":2180},[13587],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":13589,"children":13590},{"style":2169},[13591],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13593,"children":13594},{"style":2180},[13595],{"type":1878,"value":13596}," VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT,\n",{"type":1873,"tag":2163,"props":13598,"children":13599},{"class":2165,"line":1147},[13600,13604,13608,13612],{"type":1873,"tag":2163,"props":13601,"children":13602},{"style":2180},[13603],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":13605,"children":13606},{"style":2169},[13607],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13609,"children":13610},{"style":3995},[13611],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":13613,"children":13614},{"style":2180},[13615],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":13617,"children":13618},{"class":2165,"line":1143},[13619,13624,13628,13632],{"type":1873,"tag":2163,"props":13620,"children":13621},{"style":2180},[13622],{"type":1878,"value":13623}," .mappingCount ",{"type":1873,"tag":2163,"props":13625,"children":13626},{"style":2169},[13627],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13629,"children":13630},{"style":3995},[13631],{"type":1878,"value":4710},{"type":1873,"tag":2163,"props":13633,"children":13634},{"style":2180},[13635],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":13637,"children":13638},{"class":2165,"line":1152},[13639,13644,13648],{"type":1873,"tag":2163,"props":13640,"children":13641},{"style":2180},[13642],{"type":1878,"value":13643}," .pMappings ",{"type":1873,"tag":2163,"props":13645,"children":13646},{"style":2169},[13647],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13649,"children":13650},{"style":2180},[13651],{"type":1878,"value":13652}," mappings};\n",{"type":1873,"tag":2163,"props":13654,"children":13655},{"class":2165,"line":1150},[13656],{"type":1873,"tag":2163,"props":13657,"children":13658},{"emptyLinePlaceholder":232},[13659],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":13661,"children":13662},{"class":2165,"line":1477},[13663],{"type":1873,"tag":2163,"props":13664,"children":13665},{"style":8855},[13666],{"type":1878,"value":13667},"// It is not necessary to omit mappings from specific shaders, but for the sake of comparison,\n",{"type":1873,"tag":2163,"props":13669,"children":13670},{"class":2165,"line":1159},[13671],{"type":1873,"tag":2163,"props":13672,"children":13673},{"style":8855},[13674],{"type":1878,"value":13675},"// as the uniform buffer array was only visible to the vertex shader before,\n",{"type":1873,"tag":2163,"props":13677,"children":13678},{"class":2165,"line":1155},[13679],{"type":1873,"tag":2163,"props":13680,"children":13681},{"style":8855},[13682],{"type":1878,"value":13683},"// this can be done in the same way by omitting a particular mapping from a given shader.\n",{"type":1873,"tag":2163,"props":13685,"children":13686},{"class":2165,"line":1165},[13687],{"type":1873,"tag":2163,"props":13688,"children":13689},{"style":8855},[13690],{"type":1878,"value":13691},"// Generally though, applications should feel free to use the same mappings for all shaders if they wish to.\n",{"type":1873,"tag":2163,"props":13693,"children":13694},{"class":2165,"line":1161},[13695,13700,13704],{"type":1873,"tag":2163,"props":13696,"children":13697},{"style":2180},[13698],{"type":1878,"value":13699},"VkShaderDescriptorSetAndBindingMappingInfoEXT nonVertexMappings ",{"type":1873,"tag":2163,"props":13701,"children":13702},{"style":2169},[13703],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13705,"children":13706},{"style":2180},[13707],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":13709,"children":13710},{"class":2165,"line":1290},[13711,13715,13719],{"type":1873,"tag":2163,"props":13712,"children":13713},{"style":2180},[13714],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":13716,"children":13717},{"style":2169},[13718],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13720,"children":13721},{"style":2180},[13722],{"type":1878,"value":13596},{"type":1873,"tag":2163,"props":13724,"children":13725},{"class":2165,"line":461},[13726,13730,13734,13738],{"type":1873,"tag":2163,"props":13727,"children":13728},{"style":2180},[13729],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":13731,"children":13732},{"style":2169},[13733],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13735,"children":13736},{"style":3995},[13737],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":13739,"children":13740},{"style":2180},[13741],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":13743,"children":13744},{"class":2165,"line":1338},[13745,13749,13753,13757],{"type":1873,"tag":2163,"props":13746,"children":13747},{"style":2180},[13748],{"type":1878,"value":13623},{"type":1873,"tag":2163,"props":13750,"children":13751},{"style":2169},[13752],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13754,"children":13755},{"style":3995},[13756],{"type":1878,"value":4689},{"type":1873,"tag":2163,"props":13758,"children":13759},{"style":2180},[13760],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":13762,"children":13763},{"class":2165,"line":1046},[13764,13768,13772,13777,13782,13786,13790,13794],{"type":1873,"tag":2163,"props":13765,"children":13766},{"style":2180},[13767],{"type":1878,"value":13643},{"type":1873,"tag":2163,"props":13769,"children":13770},{"style":2169},[13771],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13773,"children":13774},{"style":2169},[13775],{"type":1878,"value":13776}," &",{"type":1873,"tag":2163,"props":13778,"children":13779},{"style":2180},[13780],{"type":1878,"value":13781},"(",{"type":1873,"tag":2163,"props":13783,"children":13784},{"style":2701},[13785],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13787,"children":13788},{"style":2180},[13789],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13791,"children":13792},{"style":3995},[13793],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13795,"children":13796},{"style":2180},[13797],{"type":1878,"value":13798},"])};\n",{"type":1873,"tag":2079,"props":13800,"children":13802},{"id":13801},"_example_push_constants",[13803],{"type":1878,"value":13804},"Example: Push Constants",{"type":1873,"tag":1874,"props":13806,"children":13807},{},[13808,13810,13817],{"type":1878,"value":13809},"With the existing descriptor set layout interface, applications need to specify the push constants they are using in each shader stage with ",{"type":1873,"tag":1921,"props":13811,"children":13814},{"href":13812,"rel":13813},"https://docs.vulkan.org/spec/latest/descriptorsets.html#VkPipelineLayoutCreateInfo",[1925],[13815],{"type":1878,"value":13816},"VkPipelineLayoutCreateInfo",{"type":1878,"value":13818},".\nHowever, there is no need for any specific matching here; the push data state in the command buffer is treated as an opaque blob of data, and the shader simply interprets that data as it describes.\nAs such, this example is empty - applications can simply delete any code related to pipeline layouts and just use the data as-is.",{"type":1873,"tag":2079,"props":13820,"children":13821},{"id":6938},[13822],{"type":1878,"value":13823},"Example: Push Descriptors",{"type":1873,"tag":1874,"props":13825,"children":13826},{},[13827,13829,13835],{"type":1878,"value":13828},"Emulating push descriptors is a little different with this extension, as the application is now responsible for ensuring that descriptors are initially populated into the descriptor heap, and cannot be simply pushed as descriptors, unlike in true.\nMany implementations would hide this detail from applications when a ",{"type":1873,"tag":2159,"props":13830,"children":13832},{"className":13831},[],[13833],{"type":1878,"value":13834},"VkImageView",{"type":1878,"value":13836}," was created; in order to remove the need to create an image view object, applications now take on this responsibility instead.\nThe simplest way to port from the prior API to this one then is to simply modify code where image views were created and destroyed to instead add and remove descriptors from the heap.\nThe value being pushed will then be an offset into the heap where that descriptor is stored.\nBy giving this responsibility to the application, more dynamic schemes can be used without the need to create and destroy image objects over and over again; applications can simply keep the descriptor around and copy its data into the heap as necessary.",{"type":1873,"tag":1874,"props":13838,"children":13839},{},[13840,13842,13847],{"type":1878,"value":13841},"In the ",{"type":1873,"tag":1921,"props":13843,"children":13844},{"href":6919},[13845],{"type":1878,"value":13846},"simple resource binding example",{"type":1878,"value":13848},", if the descriptors were instead specified as push descriptors originally, the following changes would be made to make this work:",{"type":1873,"tag":2079,"props":13850,"children":13852},{"id":13851},"source-the-descriptors-using-a-push-constant-as-the-index-into-the-heap-which-can-be-set-per-draw",[13853],{"type":1878,"value":13854},"Source the descriptors using a push constant as the index into the heap which can be set per-draw",{"type":1873,"tag":2151,"props":13856,"children":13858},{"className":2153,"code":13857,"language":2155,"meta":2156,"style":2156},"// Instead of updating the heap indices, each mapping uses a separate push index\nmappings[0].sourceData.pushIndex.pushOffset = 128;\nmappings[1].sourceData.pushIndex.pushOffset = 132;\nmappings[1].sourceData.pushIndex.samplerPushOffset = 132;\nmappings[2].sourceData.pushIndex.pushOffset = 136;\n",[13859],{"type":1873,"tag":2159,"props":13860,"children":13861},{"__ignoreMap":2156},[13862,13870,13901,13933,13965],{"type":1873,"tag":2163,"props":13863,"children":13864},{"class":2165,"line":10},[13865],{"type":1873,"tag":2163,"props":13866,"children":13867},{"style":8855},[13868],{"type":1878,"value":13869},"// Instead of updating the heap indices, each mapping uses a separate push index\n",{"type":1873,"tag":2163,"props":13871,"children":13872},{"class":2165,"line":14},[13873,13877,13881,13885,13889,13893,13897],{"type":1873,"tag":2163,"props":13874,"children":13875},{"style":2701},[13876],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13878,"children":13879},{"style":2180},[13880],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13882,"children":13883},{"style":3995},[13884],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":13886,"children":13887},{"style":2180},[13888],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":13890,"children":13891},{"style":2169},[13892],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13894,"children":13895},{"style":3995},[13896],{"type":1878,"value":12564},{"type":1873,"tag":2163,"props":13898,"children":13899},{"style":2180},[13900],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13902,"children":13903},{"class":2165,"line":18},[13904,13908,13912,13916,13920,13924,13929],{"type":1873,"tag":2163,"props":13905,"children":13906},{"style":2701},[13907],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13909,"children":13910},{"style":2180},[13911],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13913,"children":13914},{"style":3995},[13915],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13917,"children":13918},{"style":2180},[13919],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":13921,"children":13922},{"style":2169},[13923],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13925,"children":13926},{"style":3995},[13927],{"type":1878,"value":13928}," 132",{"type":1873,"tag":2163,"props":13930,"children":13931},{"style":2180},[13932],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13934,"children":13935},{"class":2165,"line":22},[13936,13940,13944,13948,13953,13957,13961],{"type":1873,"tag":2163,"props":13937,"children":13938},{"style":2701},[13939],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13941,"children":13942},{"style":2180},[13943],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13945,"children":13946},{"style":3995},[13947],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":13949,"children":13950},{"style":2180},[13951],{"type":1878,"value":13952},"].sourceData.pushIndex.samplerPushOffset ",{"type":1873,"tag":2163,"props":13954,"children":13955},{"style":2169},[13956],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13958,"children":13959},{"style":3995},[13960],{"type":1878,"value":13928},{"type":1873,"tag":2163,"props":13962,"children":13963},{"style":2180},[13964],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":13966,"children":13967},{"class":2165,"line":26},[13968,13972,13976,13980,13984,13988,13993],{"type":1873,"tag":2163,"props":13969,"children":13970},{"style":2701},[13971],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":13973,"children":13974},{"style":2180},[13975],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":13977,"children":13978},{"style":3995},[13979],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":13981,"children":13982},{"style":2180},[13983],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":13985,"children":13986},{"style":2169},[13987],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":13989,"children":13990},{"style":3995},[13991],{"type":1878,"value":13992}," 136",{"type":1873,"tag":2163,"props":13994,"children":13995},{"style":2180},[13996],{"type":1878,"value":4120},{"type":1873,"tag":2079,"props":13998,"children":14000},{"id":13999},"push-heap-indexes-into-push-data",[14001],{"type":1878,"value":14002},"Push heap indexes into push data",{"type":1873,"tag":2151,"props":14004,"children":14006},{"className":2153,"code":14005,"language":2155,"meta":2156,"style":2156},"uint32_t heapIndices[3] = {...};\n\nVkPushDataInfoEXT pushDataInfo = {\n .sType = VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT,\n .pNext = NULL,\n .offset = 128,\n .size = 12,\n .pData = heapIndices};\n\nvkCmdPushDataEXT(commandBuffer, pushDataInfo);\n",[14007],{"type":1873,"tag":2159,"props":14008,"children":14009},{"__ignoreMap":2156},[14010,14044,14051,14067,14083,14102,14122,14142,14159,14166],{"type":1873,"tag":2163,"props":14011,"children":14012},{"class":2165,"line":10},[14013,14018,14023,14027,14031,14035,14039],{"type":1873,"tag":2163,"props":14014,"children":14015},{"style":2169},[14016],{"type":1878,"value":14017},"uint32_t",{"type":1873,"tag":2163,"props":14019,"children":14020},{"style":2701},[14021],{"type":1878,"value":14022}," heapIndices",{"type":1873,"tag":2163,"props":14024,"children":14025},{"style":2180},[14026],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":14028,"children":14029},{"style":3995},[14030],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":14032,"children":14033},{"style":2180},[14034],{"type":1878,"value":12603},{"type":1873,"tag":2163,"props":14036,"children":14037},{"style":2169},[14038],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14040,"children":14041},{"style":2180},[14042],{"type":1878,"value":14043}," {...};\n",{"type":1873,"tag":2163,"props":14045,"children":14046},{"class":2165,"line":14},[14047],{"type":1873,"tag":2163,"props":14048,"children":14049},{"emptyLinePlaceholder":232},[14050],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":14052,"children":14053},{"class":2165,"line":18},[14054,14059,14063],{"type":1873,"tag":2163,"props":14055,"children":14056},{"style":2180},[14057],{"type":1878,"value":14058},"VkPushDataInfoEXT pushDataInfo ",{"type":1873,"tag":2163,"props":14060,"children":14061},{"style":2169},[14062],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14064,"children":14065},{"style":2180},[14066],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":14068,"children":14069},{"class":2165,"line":22},[14070,14074,14078],{"type":1873,"tag":2163,"props":14071,"children":14072},{"style":2180},[14073],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":14075,"children":14076},{"style":2169},[14077],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14079,"children":14080},{"style":2180},[14081],{"type":1878,"value":14082}," VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT,\n",{"type":1873,"tag":2163,"props":14084,"children":14085},{"class":2165,"line":26},[14086,14090,14094,14098],{"type":1873,"tag":2163,"props":14087,"children":14088},{"style":2180},[14089],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":14091,"children":14092},{"style":2169},[14093],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14095,"children":14096},{"style":3995},[14097],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":14099,"children":14100},{"style":2180},[14101],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14103,"children":14104},{"class":2165,"line":30},[14105,14110,14114,14118],{"type":1873,"tag":2163,"props":14106,"children":14107},{"style":2180},[14108],{"type":1878,"value":14109}," .offset ",{"type":1873,"tag":2163,"props":14111,"children":14112},{"style":2169},[14113],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14115,"children":14116},{"style":3995},[14117],{"type":1878,"value":12564},{"type":1873,"tag":2163,"props":14119,"children":14120},{"style":2180},[14121],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14123,"children":14124},{"class":2165,"line":34},[14125,14130,14134,14138],{"type":1873,"tag":2163,"props":14126,"children":14127},{"style":2180},[14128],{"type":1878,"value":14129}," .size ",{"type":1873,"tag":2163,"props":14131,"children":14132},{"style":2169},[14133],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14135,"children":14136},{"style":3995},[14137],{"type":1878,"value":11101},{"type":1873,"tag":2163,"props":14139,"children":14140},{"style":2180},[14141],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14143,"children":14144},{"class":2165,"line":38},[14145,14150,14154],{"type":1873,"tag":2163,"props":14146,"children":14147},{"style":2180},[14148],{"type":1878,"value":14149}," .pData ",{"type":1873,"tag":2163,"props":14151,"children":14152},{"style":2169},[14153],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14155,"children":14156},{"style":2180},[14157],{"type":1878,"value":14158}," heapIndices};\n",{"type":1873,"tag":2163,"props":14160,"children":14161},{"class":2165,"line":42},[14162],{"type":1873,"tag":2163,"props":14163,"children":14164},{"emptyLinePlaceholder":232},[14165],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":14167,"children":14168},{"class":2165,"line":46},[14169,14173],{"type":1873,"tag":2163,"props":14170,"children":14171},{"style":2682},[14172],{"type":1878,"value":4443},{"type":1873,"tag":2163,"props":14174,"children":14175},{"style":2180},[14176],{"type":1878,"value":14177},"(commandBuffer, pushDataInfo);\n",{"type":1873,"tag":2079,"props":14179,"children":14181},{"id":14180},"_example_immutable_samplers",[14182],{"type":1878,"value":14183},"Example: Immutable Samplers",{"type":1873,"tag":1874,"props":14185,"children":14186},{},[14187,14189,14193,14194,14198,14200,14205,14207,14212],{"type":1878,"value":14188},"This example specifies an embedded sampler for use with a YC",{"type":1873,"tag":3263,"props":14190,"children":14191},{},[14192],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":14195,"children":14196},{},[14197],{"type":1878,"value":3274},{"type":1878,"value":14199}," image, specified in the shader with ",{"type":1873,"tag":2159,"props":14201,"children":14203},{"className":14202},[],[14204],{"type":1878,"value":3197},{"type":1878,"value":14206}," of 1 and a ",{"type":1873,"tag":2159,"props":14208,"children":14210},{"className":14209},[],[14211],{"type":1878,"value":3205},{"type":1878,"value":14213}," of 15, using shader objects.",{"type":1873,"tag":2079,"props":14215,"children":14217},{"id":14216},"embedding-in-the-shader",[14218],{"type":1878,"value":14219},"Embedding in the shader",{"type":1873,"tag":2151,"props":14221,"children":14223},{"className":2153,"code":14222,"language":2155,"meta":2156,"style":2156},"// Index for the image\nconst uint32_t ImageOffset = ...;\n\nVkDescriptorSetAndBindingMappingEXT mapping = {\n .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\n .pNext = NULL,\n .descriptorSet = 1,\n .bindingCount = 1,\n .firstBinding = 15,\n .resourceMask = VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT;\n .source = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_INDEX_EXT };\n\nmapping.sourceData.constantOffset.heapOffset = ImageOffset;\nmapping.sourceData.constantOffset.pEmbeddedSampler = &ycbcrSamplerCreateInfo;\n\nVkShaderDescriptorSetAndBindingMappingInfoEXT setAndBindingMappingInfo = {\n .sType = VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT,\n .pNext = NULL,\n .mappingCount = 1,\n .pMappings = &mapping};\n\nVkShaderCreateInfoEXT shaderCreateInfo = {\n .sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,\n .pNext = &setAndBindingMappingInfo,\n ...};\n",[14224],{"type":1873,"tag":2159,"props":14225,"children":14226},{"__ignoreMap":2156},[14227,14235,14260,14267,14283,14298,14317,14336,14355,14376,14392,14408,14415,14432,14453,14460,14476,14491,14510,14529,14549,14556,14572,14588,14608],{"type":1873,"tag":2163,"props":14228,"children":14229},{"class":2165,"line":10},[14230],{"type":1873,"tag":2163,"props":14231,"children":14232},{"style":8855},[14233],{"type":1878,"value":14234},"// Index for the image\n",{"type":1873,"tag":2163,"props":14236,"children":14237},{"class":2165,"line":14},[14238,14242,14246,14251,14255],{"type":1873,"tag":2163,"props":14239,"children":14240},{"style":2169},[14241],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":14243,"children":14244},{"style":2169},[14245],{"type":1878,"value":11087},{"type":1873,"tag":2163,"props":14247,"children":14248},{"style":2180},[14249],{"type":1878,"value":14250}," ImageOffset ",{"type":1873,"tag":2163,"props":14252,"children":14253},{"style":2169},[14254],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14256,"children":14257},{"style":2180},[14258],{"type":1878,"value":14259}," ...;\n",{"type":1873,"tag":2163,"props":14261,"children":14262},{"class":2165,"line":18},[14263],{"type":1873,"tag":2163,"props":14264,"children":14265},{"emptyLinePlaceholder":232},[14266],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":14268,"children":14269},{"class":2165,"line":22},[14270,14275,14279],{"type":1873,"tag":2163,"props":14271,"children":14272},{"style":2180},[14273],{"type":1878,"value":14274},"VkDescriptorSetAndBindingMappingEXT mapping ",{"type":1873,"tag":2163,"props":14276,"children":14277},{"style":2169},[14278],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14280,"children":14281},{"style":2180},[14282],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":14284,"children":14285},{"class":2165,"line":26},[14286,14290,14294],{"type":1873,"tag":2163,"props":14287,"children":14288},{"style":2180},[14289],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":14291,"children":14292},{"style":2169},[14293],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14295,"children":14296},{"style":2180},[14297],{"type":1878,"value":12352},{"type":1873,"tag":2163,"props":14299,"children":14300},{"class":2165,"line":30},[14301,14305,14309,14313],{"type":1873,"tag":2163,"props":14302,"children":14303},{"style":2180},[14304],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":14306,"children":14307},{"style":2169},[14308],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14310,"children":14311},{"style":3995},[14312],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":14314,"children":14315},{"style":2180},[14316],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14318,"children":14319},{"class":2165,"line":34},[14320,14324,14328,14332],{"type":1873,"tag":2163,"props":14321,"children":14322},{"style":2180},[14323],{"type":1878,"value":12394},{"type":1873,"tag":2163,"props":14325,"children":14326},{"style":2169},[14327],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14329,"children":14330},{"style":3995},[14331],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":14333,"children":14334},{"style":2180},[14335],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14337,"children":14338},{"class":2165,"line":38},[14339,14343,14347,14351],{"type":1873,"tag":2163,"props":14340,"children":14341},{"style":2180},[14342],{"type":1878,"value":12160},{"type":1873,"tag":2163,"props":14344,"children":14345},{"style":2169},[14346],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14348,"children":14349},{"style":3995},[14350],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":14352,"children":14353},{"style":2180},[14354],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14356,"children":14357},{"class":2165,"line":42},[14358,14363,14367,14372],{"type":1873,"tag":2163,"props":14359,"children":14360},{"style":2180},[14361],{"type":1878,"value":14362}," .firstBinding ",{"type":1873,"tag":2163,"props":14364,"children":14365},{"style":2169},[14366],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14368,"children":14369},{"style":3995},[14370],{"type":1878,"value":14371}," 15",{"type":1873,"tag":2163,"props":14373,"children":14374},{"style":2180},[14375],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14377,"children":14378},{"class":2165,"line":46},[14379,14383,14387],{"type":1873,"tag":2163,"props":14380,"children":14381},{"style":2180},[14382],{"type":1878,"value":12471},{"type":1873,"tag":2163,"props":14384,"children":14385},{"style":2169},[14386],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14388,"children":14389},{"style":2180},[14390],{"type":1878,"value":14391}," VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT;\n",{"type":1873,"tag":2163,"props":14393,"children":14394},{"class":2165,"line":50},[14395,14399,14403],{"type":1873,"tag":2163,"props":14396,"children":14397},{"style":2180},[14398],{"type":1878,"value":12503},{"type":1873,"tag":2163,"props":14400,"children":14401},{"style":2169},[14402],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14404,"children":14405},{"style":2180},[14406],{"type":1878,"value":14407}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_INDEX_EXT };\n",{"type":1873,"tag":2163,"props":14409,"children":14410},{"class":2165,"line":54},[14411],{"type":1873,"tag":2163,"props":14412,"children":14413},{"emptyLinePlaceholder":232},[14414],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":14416,"children":14417},{"class":2165,"line":58},[14418,14423,14427],{"type":1873,"tag":2163,"props":14419,"children":14420},{"style":2180},[14421],{"type":1878,"value":14422},"mapping.sourceData.constantOffset.heapOffset ",{"type":1873,"tag":2163,"props":14424,"children":14425},{"style":2169},[14426],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14428,"children":14429},{"style":2180},[14430],{"type":1878,"value":14431}," ImageOffset;\n",{"type":1873,"tag":2163,"props":14433,"children":14434},{"class":2165,"line":62},[14435,14440,14444,14448],{"type":1873,"tag":2163,"props":14436,"children":14437},{"style":2180},[14438],{"type":1878,"value":14439},"mapping.sourceData.constantOffset.pEmbeddedSampler ",{"type":1873,"tag":2163,"props":14441,"children":14442},{"style":2169},[14443],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14445,"children":14446},{"style":2169},[14447],{"type":1878,"value":13776},{"type":1873,"tag":2163,"props":14449,"children":14450},{"style":2180},[14451],{"type":1878,"value":14452},"ycbcrSamplerCreateInfo;\n",{"type":1873,"tag":2163,"props":14454,"children":14455},{"class":2165,"line":66},[14456],{"type":1873,"tag":2163,"props":14457,"children":14458},{"emptyLinePlaceholder":232},[14459],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":14461,"children":14462},{"class":2165,"line":70},[14463,14468,14472],{"type":1873,"tag":2163,"props":14464,"children":14465},{"style":2180},[14466],{"type":1878,"value":14467},"VkShaderDescriptorSetAndBindingMappingInfoEXT setAndBindingMappingInfo ",{"type":1873,"tag":2163,"props":14469,"children":14470},{"style":2169},[14471],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14473,"children":14474},{"style":2180},[14475],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":14477,"children":14478},{"class":2165,"line":74},[14479,14483,14487],{"type":1873,"tag":2163,"props":14480,"children":14481},{"style":2180},[14482],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":14484,"children":14485},{"style":2169},[14486],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14488,"children":14489},{"style":2180},[14490],{"type":1878,"value":13596},{"type":1873,"tag":2163,"props":14492,"children":14493},{"class":2165,"line":78},[14494,14498,14502,14506],{"type":1873,"tag":2163,"props":14495,"children":14496},{"style":2180},[14497],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":14499,"children":14500},{"style":2169},[14501],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14503,"children":14504},{"style":3995},[14505],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":14507,"children":14508},{"style":2180},[14509],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14511,"children":14512},{"class":2165,"line":82},[14513,14517,14521,14525],{"type":1873,"tag":2163,"props":14514,"children":14515},{"style":2180},[14516],{"type":1878,"value":13623},{"type":1873,"tag":2163,"props":14518,"children":14519},{"style":2169},[14520],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14522,"children":14523},{"style":3995},[14524],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":14526,"children":14527},{"style":2180},[14528],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":14530,"children":14531},{"class":2165,"line":86},[14532,14536,14540,14544],{"type":1873,"tag":2163,"props":14533,"children":14534},{"style":2180},[14535],{"type":1878,"value":13643},{"type":1873,"tag":2163,"props":14537,"children":14538},{"style":2169},[14539],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14541,"children":14542},{"style":2169},[14543],{"type":1878,"value":13776},{"type":1873,"tag":2163,"props":14545,"children":14546},{"style":2180},[14547],{"type":1878,"value":14548},"mapping};\n",{"type":1873,"tag":2163,"props":14550,"children":14551},{"class":2165,"line":90},[14552],{"type":1873,"tag":2163,"props":14553,"children":14554},{"emptyLinePlaceholder":232},[14555],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":14557,"children":14558},{"class":2165,"line":94},[14559,14564,14568],{"type":1873,"tag":2163,"props":14560,"children":14561},{"style":2180},[14562],{"type":1878,"value":14563},"VkShaderCreateInfoEXT shaderCreateInfo ",{"type":1873,"tag":2163,"props":14565,"children":14566},{"style":2169},[14567],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14569,"children":14570},{"style":2180},[14571],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":14573,"children":14574},{"class":2165,"line":98},[14575,14579,14583],{"type":1873,"tag":2163,"props":14576,"children":14577},{"style":2180},[14578],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":14580,"children":14581},{"style":2169},[14582],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14584,"children":14585},{"style":2180},[14586],{"type":1878,"value":14587}," VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,\n",{"type":1873,"tag":2163,"props":14589,"children":14590},{"class":2165,"line":102},[14591,14595,14599,14603],{"type":1873,"tag":2163,"props":14592,"children":14593},{"style":2180},[14594],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":14596,"children":14597},{"style":2169},[14598],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":14600,"children":14601},{"style":2169},[14602],{"type":1878,"value":13776},{"type":1873,"tag":2163,"props":14604,"children":14605},{"style":2180},[14606],{"type":1878,"value":14607},"setAndBindingMappingInfo,\n",{"type":1873,"tag":2163,"props":14609,"children":14610},{"class":2165,"line":106},[14611],{"type":1873,"tag":2163,"props":14612,"children":14613},{"style":2180},[14614],{"type":1878,"value":14615}," ...};\n",{"type":1873,"tag":1880,"props":14617,"children":14618},{"id":4152},[14619],{"type":1878,"value":14620},"SPIR-V Changes",{"type":1873,"tag":1874,"props":14622,"children":14623},{},[14624,14626,14632,14634,14640],{"type":1878,"value":14625},"This proposal adds new extension, ",{"type":1873,"tag":2159,"props":14627,"children":14629},{"className":14628},[],[14630],{"type":1878,"value":14631},"SPV_EXT_descriptor_heap",{"type":1878,"value":14633},", that adds new Built-In variables which identify the heap pointers for each heap, and the size of each descriptor in bytes.\nThe details of that extension are documented in the extension specification here: ",{"type":1873,"tag":1921,"props":14635,"children":14638},{"href":14636,"rel":14637},"https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_descriptor_heap.html",[1925],[14639],{"type":1878,"value":14631},{"type":1878,"value":2077},{"type":1873,"tag":1874,"props":14642,"children":14643},{},[14644],{"type":1878,"value":14645},"One interaction with the API is that resource types now have a defined size equal to the maximum of the generic alignment and size limits that apply to descriptor sizes, as follows:",{"type":1873,"tag":9871,"props":14647,"children":14649},{"className":14648},[9874,9875,9876,9877],[14650,14664],{"type":1873,"tag":9880,"props":14651,"children":14652},{},[14653,14657,14660],{"type":1873,"tag":9884,"props":14654,"children":14656},{"style":14655},"width: 33.3333%;",[],{"type":1873,"tag":9884,"props":14658,"children":14659},{"style":14655},[],{"type":1873,"tag":9884,"props":14661,"children":14663},{"style":14662},"width: 33.3334%;",[],{"type":1873,"tag":9936,"props":14665,"children":14666},{},[14667,14700,14741,14781,14821,14861],{"type":1873,"tag":9905,"props":14668,"children":14669},{},[14670,14680,14690],{"type":1873,"tag":9943,"props":14671,"children":14673},{"className":14672},[9874,9912,9913],[14674],{"type":1873,"tag":1874,"props":14675,"children":14677},{"className":14676},[9874],[14678],{"type":1878,"value":14679},"SPIR-V Type",{"type":1873,"tag":9943,"props":14681,"children":14683},{"className":14682},[9874,9912,9913],[14684],{"type":1873,"tag":1874,"props":14685,"children":14687},{"className":14686},[9874],[14688],{"type":1878,"value":14689},"Size",{"type":1873,"tag":9943,"props":14691,"children":14693},{"className":14692},[9874,9912,9913],[14694],{"type":1873,"tag":1874,"props":14695,"children":14697},{"className":14696},[9874],[14698],{"type":1878,"value":14699},"Aligned to",{"type":1873,"tag":9905,"props":14701,"children":14702},{},[14703,14717,14729],{"type":1873,"tag":9943,"props":14704,"children":14706},{"className":14705},[9874,9912,9913],[14707],{"type":1873,"tag":1874,"props":14708,"children":14710},{"className":14709},[9874],[14711],{"type":1873,"tag":14712,"props":14713,"children":14714},"literal",{},[14715],{"type":1878,"value":14716},"OpTypeSampler",{"type":1873,"tag":9943,"props":14718,"children":14720},{"className":14719},[9874,9912,9913],[14721],{"type":1873,"tag":1874,"props":14722,"children":14724},{"className":14723},[9874],[14725],{"type":1873,"tag":14712,"props":14726,"children":14727},{},[14728],{"type":1878,"value":9682},{"type":1873,"tag":9943,"props":14730,"children":14732},{"className":14731},[9874,9912,9913],[14733],{"type":1873,"tag":1874,"props":14734,"children":14736},{"className":14735},[9874],[14737],{"type":1873,"tag":14712,"props":14738,"children":14739},{},[14740],{"type":1878,"value":9733},{"type":1873,"tag":9905,"props":14742,"children":14743},{},[14744,14757,14769],{"type":1873,"tag":9943,"props":14745,"children":14747},{"className":14746},[9874,9912,9913],[14748],{"type":1873,"tag":1874,"props":14749,"children":14751},{"className":14750},[9874],[14752],{"type":1873,"tag":14712,"props":14753,"children":14754},{},[14755],{"type":1878,"value":14756},"OpTypeImage",{"type":1873,"tag":9943,"props":14758,"children":14760},{"className":14759},[9874,9912,9913],[14761],{"type":1873,"tag":1874,"props":14762,"children":14764},{"className":14763},[9874],[14765],{"type":1873,"tag":14712,"props":14766,"children":14767},{},[14768],{"type":1878,"value":3364},{"type":1873,"tag":9943,"props":14770,"children":14772},{"className":14771},[9874,9912,9913],[14773],{"type":1873,"tag":1874,"props":14774,"children":14776},{"className":14775},[9874],[14777],{"type":1873,"tag":14712,"props":14778,"children":14779},{},[14780],{"type":1878,"value":9750},{"type":1873,"tag":9905,"props":14782,"children":14783},{},[14784,14797,14809],{"type":1873,"tag":9943,"props":14785,"children":14787},{"className":14786},[9874,9912,9913],[14788],{"type":1873,"tag":1874,"props":14789,"children":14791},{"className":14790},[9874],[14792],{"type":1873,"tag":14712,"props":14793,"children":14794},{},[14795],{"type":1878,"value":14796},"OpTypeBuffer",{"type":1873,"tag":9943,"props":14798,"children":14800},{"className":14799},[9874,9912,9913],[14801],{"type":1873,"tag":1874,"props":14802,"children":14804},{"className":14803},[9874],[14805],{"type":1873,"tag":14712,"props":14806,"children":14807},{},[14808],{"type":1878,"value":9716},{"type":1873,"tag":9943,"props":14810,"children":14812},{"className":14811},[9874,9912,9913],[14813],{"type":1873,"tag":1874,"props":14814,"children":14816},{"className":14815},[9874],[14817],{"type":1873,"tag":14712,"props":14818,"children":14819},{},[14820],{"type":1878,"value":9767},{"type":1873,"tag":9905,"props":14822,"children":14823},{},[14824,14837,14849],{"type":1873,"tag":9943,"props":14825,"children":14827},{"className":14826},[9874,9912,9913],[14828],{"type":1873,"tag":1874,"props":14829,"children":14831},{"className":14830},[9874],[14832],{"type":1873,"tag":14712,"props":14833,"children":14834},{},[14835],{"type":1878,"value":14836},"OpTypeAccelerationStructureKHR",{"type":1873,"tag":9943,"props":14838,"children":14840},{"className":14839},[9874,9912,9913],[14841],{"type":1873,"tag":1874,"props":14842,"children":14844},{"className":14843},[9874],[14845],{"type":1873,"tag":14712,"props":14846,"children":14847},{},[14848],{"type":1878,"value":9716},{"type":1873,"tag":9943,"props":14850,"children":14852},{"className":14851},[9874,9912,9913],[14853],{"type":1873,"tag":1874,"props":14854,"children":14856},{"className":14855},[9874],[14857],{"type":1873,"tag":14712,"props":14858,"children":14859},{},[14860],{"type":1878,"value":9767},{"type":1873,"tag":9905,"props":14862,"children":14863},{},[14864,14877,14889],{"type":1873,"tag":9943,"props":14865,"children":14867},{"className":14866},[9874,9912,9913],[14868],{"type":1873,"tag":1874,"props":14869,"children":14871},{"className":14870},[9874],[14872],{"type":1873,"tag":14712,"props":14873,"children":14874},{},[14875],{"type":1878,"value":14876},"OpTypeTensorARM",{"type":1873,"tag":9943,"props":14878,"children":14880},{"className":14879},[9874,9912,9913],[14881],{"type":1873,"tag":1874,"props":14882,"children":14884},{"className":14883},[9874],[14885],{"type":1873,"tag":14712,"props":14886,"children":14887},{},[14888],{"type":1878,"value":10762},{"type":1873,"tag":9943,"props":14890,"children":14892},{"className":14891},[9874,9912,9913],[14893],{"type":1873,"tag":1874,"props":14894,"children":14896},{"className":14895},[9874],[14897],{"type":1873,"tag":14712,"props":14898,"children":14899},{},[14900],{"type":1878,"value":10779},{"type":1873,"tag":1874,"props":14902,"children":14903},{},[14904,14906,14911],{"type":1878,"value":14905},"As these types do not have a fixed size in SPIR-V, ",{"type":1873,"tag":3956,"props":14907,"children":14908},{},[14909],{"type":1878,"value":14910},"OpConstantSizeOfEXT",{"type":1878,"value":14912}," will return these sizes when queried.",{"type":1873,"tag":2025,"props":14914,"children":14915},{},[14916],{"type":1873,"tag":1874,"props":14917,"children":14918},{},[14919],{"type":1878,"value":14920},"Although images and buffers come from the same heap, they may have different sizes.",{"type":1873,"tag":1874,"props":14922,"children":14923},{},[14924,14925,14931,14933,14939,14940,14946,14948,14954,14956,14962,14963,14969],{"type":1878,"value":7563},{"type":1873,"tag":2159,"props":14926,"children":14928},{"className":14927},[],[14929],{"type":1878,"value":14930},"DescriptorHeapEXT",{"type":1878,"value":14932}," capability is declared in a shader, resource access is assumed to be non-uniform by default; this applies both to the ",{"type":1873,"tag":2159,"props":14934,"children":14936},{"className":14935},[],[14937],{"type":1878,"value":14938},"SamplerHeapEXT",{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":14941,"children":14943},{"className":14942},[],[14944],{"type":1878,"value":14945},"ResourceHeapEXT",{"type":1878,"value":14947}," built-ins and any resources declared with bindings. They no longer need to be decorated with ",{"type":1873,"tag":2159,"props":14949,"children":14951},{"className":14950},[],[14952],{"type":1878,"value":14953},"NonUniform",{"type":1878,"value":14955}," to indicate how they are accessed. Resource accesses can be decorated with ",{"type":1873,"tag":2159,"props":14957,"children":14959},{"className":14958},[],[14960],{"type":1878,"value":14961},"Uniform",{"type":1878,"value":6336},{"type":1873,"tag":2159,"props":14964,"children":14966},{"className":14965},[],[14967],{"type":1878,"value":14968},"UniformId",{"type":1878,"value":14970}," to indicate uniform access to improve performance in some cases.",{"type":1873,"tag":2025,"props":14972,"children":14973},{},[14974],{"type":1873,"tag":1874,"props":14975,"children":14976},{},[14977,14979,14985,14987,14992,14993,14998,15000,15005],{"type":1878,"value":14978},"Even though the heap built-ins can be accessed non-uniformly with no decoration in SPIR-V, high level languages are unchanged by this - it is only the mapping that differs.\nFor example, the HLSL qualifier ",{"type":1873,"tag":2159,"props":14980,"children":14982},{"className":14981},[],[14983],{"type":1878,"value":14984},"NonUniformResourceIndex",{"type":1878,"value":14986}," is still required to indicate non-uniform access; and a HLSL-to-SPIR-V compiler would be expected to decorate any access without this with the ",{"type":1873,"tag":2159,"props":14988,"children":14990},{"className":14989},[],[14991],{"type":1878,"value":14968},{"type":1878,"value":6336},{"type":1873,"tag":2159,"props":14994,"children":14996},{"className":14995},[],[14997],{"type":1878,"value":14961},{"type":1878,"value":14999}," decoration.\nThe choice to effectively deprecate ",{"type":1873,"tag":2159,"props":15001,"children":15003},{"className":15002},[],[15004],{"type":1878,"value":14953},{"type":1878,"value":15006}," in SPIR-V is provided as a simplification.\nApplications should still follow implementation performance guidelines regarding non-uniform resource access, but implementations are encouraged to ensure that non-uniform access is as fast as possible.",{"type":1873,"tag":1880,"props":15008,"children":15010},{"id":15009},"_glsl_mapping",[15011],{"type":1878,"value":15012},"GLSL Mapping",{"type":1873,"tag":1874,"props":15014,"children":15015},{},[15016,15018,15024,15025,15031],{"type":1878,"value":15017},"GLSL does not readily support pointers or type casting resources, and while ",{"type":1873,"tag":2159,"props":15019,"children":15021},{"className":15020},[],[15022],{"type":1878,"value":15023},"set",{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":15026,"children":15028},{"className":15027},[],[15029],{"type":1878,"value":15030},"binding",{"type":1878,"value":15032}," qualified resources will continue to work with the mappings, it would be useful to provide a way to access the heaps directly.",{"type":1873,"tag":1874,"props":15034,"children":15035},{},[15036,15038,15044],{"type":1878,"value":15037},"A simple addition to the language will be made in an extension to allow the declaration of resources in unsized arrays with the ",{"type":1873,"tag":2159,"props":15039,"children":15041},{"className":15040},[],[15042],{"type":1878,"value":15043},"descriptor_heap",{"type":1878,"value":15045}," layout instead of set and binding values.\nMultiple of these arrays can be declared for different types, with each array routed to its respective heap (textures/images/texel buffers to the image heap, uniform and storage buffer blocks to the buffer heap, and samplers to the sampler heap).",{"type":1873,"tag":1874,"props":15047,"children":15048},{},[15049],{"type":1878,"value":15050},"Details can be found in the GLSL_EXT_descriptor_heap extension, but an example is provided below:",{"type":1873,"tag":2151,"props":15052,"children":15054},{"className":6488,"code":15053,"language":6490,"meta":2156,"style":2156},"// Sampler array aliased to the sampler heap\nlayout(descriptor_heap) uniform sampler heapSampler[];\n\n// Different image arrays aliased to the image heap\nlayout(descriptor_heap) uniform texture2D heapTexture2D[];\nlayout(descriptor_heap) uniform texture3D heapTexture3D[];\n\n// Different buffer arrays aliased to the buffer heap\nlayout(descriptor_heap) buffer StorageBufferA {\n vec4 a;\n} heapStorageBufferA[];\nlayout(descriptor_heap) buffer StorageBufferB {\n vec4 b;\n} heapStorageBufferB[];\nlayout(descriptor_heap) uniform UniformBuffer {\n vec4 colorOffset;\n} heapUniformBuffer[];\n\nlayout (location = 0) in vec2 uvs;\nlayout (location = 1) flat in uint index;\n\nlayout (location = 0) out vec4 fragColor;\n\nvoid main()\n{\n fragColor = texture(sampler2D(heapTexture2D[27], heapSampler[0]), uvs);\n fragColor += heapUniformBuffer[nonuniformEXT(index)].colorOffset;\n}\n",[15055],{"type":1873,"tag":2159,"props":15056,"children":15057},{"__ignoreMap":2156},[15058,15066,15096,15103,15111,15144,15177,15184,15192,15204,15212,15228,15240,15248,15264,15284,15292,15308,15315,15354,15397,15404,15442,15449,15466,15474,15541,15572],{"type":1873,"tag":2163,"props":15059,"children":15060},{"class":2165,"line":10},[15061],{"type":1873,"tag":2163,"props":15062,"children":15063},{"style":8855},[15064],{"type":1878,"value":15065},"// Sampler array aliased to the sampler heap\n",{"type":1873,"tag":2163,"props":15067,"children":15068},{"class":2165,"line":14},[15069,15073,15078,15082,15087,15092],{"type":1873,"tag":2163,"props":15070,"children":15071},{"style":2682},[15072],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15074,"children":15075},{"style":2180},[15076],{"type":1878,"value":15077},"(descriptor_heap) ",{"type":1873,"tag":2163,"props":15079,"children":15080},{"style":2169},[15081],{"type":1878,"value":6525},{"type":1873,"tag":2163,"props":15083,"children":15084},{"style":2180},[15085],{"type":1878,"value":15086}," sampler heapSampler",{"type":1873,"tag":2163,"props":15088,"children":15089},{"style":2169},[15090],{"type":1878,"value":15091},"[]",{"type":1873,"tag":2163,"props":15093,"children":15094},{"style":2180},[15095],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":15097,"children":15098},{"class":2165,"line":18},[15099],{"type":1873,"tag":2163,"props":15100,"children":15101},{"emptyLinePlaceholder":232},[15102],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":15104,"children":15105},{"class":2165,"line":22},[15106],{"type":1873,"tag":2163,"props":15107,"children":15108},{"style":8855},[15109],{"type":1878,"value":15110},"// Different image arrays aliased to the image heap\n",{"type":1873,"tag":2163,"props":15112,"children":15113},{"class":2165,"line":26},[15114,15118,15122,15126,15131,15136,15140],{"type":1873,"tag":2163,"props":15115,"children":15116},{"style":2682},[15117],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15119,"children":15120},{"style":2180},[15121],{"type":1878,"value":15077},{"type":1873,"tag":2163,"props":15123,"children":15124},{"style":2169},[15125],{"type":1878,"value":6525},{"type":1873,"tag":2163,"props":15127,"children":15128},{"style":3995},[15129],{"type":1878,"value":15130}," texture2D",{"type":1873,"tag":2163,"props":15132,"children":15133},{"style":2180},[15134],{"type":1878,"value":15135}," heapTexture2D",{"type":1873,"tag":2163,"props":15137,"children":15138},{"style":2169},[15139],{"type":1878,"value":15091},{"type":1873,"tag":2163,"props":15141,"children":15142},{"style":2180},[15143],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":15145,"children":15146},{"class":2165,"line":30},[15147,15151,15155,15159,15164,15169,15173],{"type":1873,"tag":2163,"props":15148,"children":15149},{"style":2682},[15150],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15152,"children":15153},{"style":2180},[15154],{"type":1878,"value":15077},{"type":1873,"tag":2163,"props":15156,"children":15157},{"style":2169},[15158],{"type":1878,"value":6525},{"type":1873,"tag":2163,"props":15160,"children":15161},{"style":3995},[15162],{"type":1878,"value":15163}," texture3D",{"type":1873,"tag":2163,"props":15165,"children":15166},{"style":2180},[15167],{"type":1878,"value":15168}," heapTexture3D",{"type":1873,"tag":2163,"props":15170,"children":15171},{"style":2169},[15172],{"type":1878,"value":15091},{"type":1873,"tag":2163,"props":15174,"children":15175},{"style":2180},[15176],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":15178,"children":15179},{"class":2165,"line":34},[15180],{"type":1873,"tag":2163,"props":15181,"children":15182},{"emptyLinePlaceholder":232},[15183],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":15185,"children":15186},{"class":2165,"line":38},[15187],{"type":1873,"tag":2163,"props":15188,"children":15189},{"style":8855},[15190],{"type":1878,"value":15191},"// Different buffer arrays aliased to the buffer heap\n",{"type":1873,"tag":2163,"props":15193,"children":15194},{"class":2165,"line":42},[15195,15199],{"type":1873,"tag":2163,"props":15196,"children":15197},{"style":2682},[15198],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15200,"children":15201},{"style":2180},[15202],{"type":1878,"value":15203},"(descriptor_heap) buffer StorageBufferA {\n",{"type":1873,"tag":2163,"props":15205,"children":15206},{"class":2165,"line":46},[15207],{"type":1873,"tag":2163,"props":15208,"children":15209},{"style":2180},[15210],{"type":1878,"value":15211}," vec4 a;\n",{"type":1873,"tag":2163,"props":15213,"children":15214},{"class":2165,"line":50},[15215,15220,15224],{"type":1873,"tag":2163,"props":15216,"children":15217},{"style":2180},[15218],{"type":1878,"value":15219},"} heapStorageBufferA",{"type":1873,"tag":2163,"props":15221,"children":15222},{"style":2169},[15223],{"type":1878,"value":15091},{"type":1873,"tag":2163,"props":15225,"children":15226},{"style":2180},[15227],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":15229,"children":15230},{"class":2165,"line":54},[15231,15235],{"type":1873,"tag":2163,"props":15232,"children":15233},{"style":2682},[15234],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15236,"children":15237},{"style":2180},[15238],{"type":1878,"value":15239},"(descriptor_heap) buffer StorageBufferB {\n",{"type":1873,"tag":2163,"props":15241,"children":15242},{"class":2165,"line":58},[15243],{"type":1873,"tag":2163,"props":15244,"children":15245},{"style":2180},[15246],{"type":1878,"value":15247}," vec4 b;\n",{"type":1873,"tag":2163,"props":15249,"children":15250},{"class":2165,"line":62},[15251,15256,15260],{"type":1873,"tag":2163,"props":15252,"children":15253},{"style":2180},[15254],{"type":1878,"value":15255},"} heapStorageBufferB",{"type":1873,"tag":2163,"props":15257,"children":15258},{"style":2169},[15259],{"type":1878,"value":15091},{"type":1873,"tag":2163,"props":15261,"children":15262},{"style":2180},[15263],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":15265,"children":15266},{"class":2165,"line":66},[15267,15271,15275,15279],{"type":1873,"tag":2163,"props":15268,"children":15269},{"style":2682},[15270],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15272,"children":15273},{"style":2180},[15274],{"type":1878,"value":15077},{"type":1873,"tag":2163,"props":15276,"children":15277},{"style":2169},[15278],{"type":1878,"value":6525},{"type":1873,"tag":2163,"props":15280,"children":15281},{"style":2180},[15282],{"type":1878,"value":15283}," UniformBuffer {\n",{"type":1873,"tag":2163,"props":15285,"children":15286},{"class":2165,"line":70},[15287],{"type":1873,"tag":2163,"props":15288,"children":15289},{"style":2180},[15290],{"type":1878,"value":15291}," vec4 colorOffset;\n",{"type":1873,"tag":2163,"props":15293,"children":15294},{"class":2165,"line":74},[15295,15300,15304],{"type":1873,"tag":2163,"props":15296,"children":15297},{"style":2180},[15298],{"type":1878,"value":15299},"} heapUniformBuffer",{"type":1873,"tag":2163,"props":15301,"children":15302},{"style":2169},[15303],{"type":1878,"value":15091},{"type":1873,"tag":2163,"props":15305,"children":15306},{"style":2180},[15307],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":15309,"children":15310},{"class":2165,"line":78},[15311],{"type":1873,"tag":2163,"props":15312,"children":15313},{"emptyLinePlaceholder":232},[15314],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":15316,"children":15317},{"class":2165,"line":82},[15318,15322,15327,15331,15335,15339,15344,15349],{"type":1873,"tag":2163,"props":15319,"children":15320},{"style":2682},[15321],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15323,"children":15324},{"style":2180},[15325],{"type":1878,"value":15326}," (location ",{"type":1873,"tag":2163,"props":15328,"children":15329},{"style":2169},[15330],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":15332,"children":15333},{"style":3995},[15334],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":15336,"children":15337},{"style":2180},[15338],{"type":1878,"value":6520},{"type":1873,"tag":2163,"props":15340,"children":15341},{"style":2169},[15342],{"type":1878,"value":15343},"in",{"type":1873,"tag":2163,"props":15345,"children":15346},{"style":2169},[15347],{"type":1878,"value":15348}," vec2",{"type":1873,"tag":2163,"props":15350,"children":15351},{"style":2180},[15352],{"type":1878,"value":15353}," uvs;\n",{"type":1873,"tag":2163,"props":15355,"children":15356},{"class":2165,"line":86},[15357,15361,15365,15369,15373,15377,15382,15387,15392],{"type":1873,"tag":2163,"props":15358,"children":15359},{"style":2682},[15360],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15362,"children":15363},{"style":2180},[15364],{"type":1878,"value":15326},{"type":1873,"tag":2163,"props":15366,"children":15367},{"style":2169},[15368],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":15370,"children":15371},{"style":3995},[15372],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":15374,"children":15375},{"style":2180},[15376],{"type":1878,"value":6520},{"type":1873,"tag":2163,"props":15378,"children":15379},{"style":2169},[15380],{"type":1878,"value":15381},"flat",{"type":1873,"tag":2163,"props":15383,"children":15384},{"style":2169},[15385],{"type":1878,"value":15386}," in",{"type":1873,"tag":2163,"props":15388,"children":15389},{"style":2169},[15390],{"type":1878,"value":15391}," uint",{"type":1873,"tag":2163,"props":15393,"children":15394},{"style":2180},[15395],{"type":1878,"value":15396}," index;\n",{"type":1873,"tag":2163,"props":15398,"children":15399},{"class":2165,"line":90},[15400],{"type":1873,"tag":2163,"props":15401,"children":15402},{"emptyLinePlaceholder":232},[15403],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":15405,"children":15406},{"class":2165,"line":94},[15407,15411,15415,15419,15423,15427,15432,15437],{"type":1873,"tag":2163,"props":15408,"children":15409},{"style":2682},[15410],{"type":1878,"value":6502},{"type":1873,"tag":2163,"props":15412,"children":15413},{"style":2180},[15414],{"type":1878,"value":15326},{"type":1873,"tag":2163,"props":15416,"children":15417},{"style":2169},[15418],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":15420,"children":15421},{"style":3995},[15422],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":15424,"children":15425},{"style":2180},[15426],{"type":1878,"value":6520},{"type":1873,"tag":2163,"props":15428,"children":15429},{"style":2169},[15430],{"type":1878,"value":15431},"out",{"type":1873,"tag":2163,"props":15433,"children":15434},{"style":2169},[15435],{"type":1878,"value":15436}," vec4",{"type":1873,"tag":2163,"props":15438,"children":15439},{"style":2180},[15440],{"type":1878,"value":15441}," fragColor;\n",{"type":1873,"tag":2163,"props":15443,"children":15444},{"class":2165,"line":98},[15445],{"type":1873,"tag":2163,"props":15446,"children":15447},{"emptyLinePlaceholder":232},[15448],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":15450,"children":15451},{"class":2165,"line":102},[15452,15456,15461],{"type":1873,"tag":2163,"props":15453,"children":15454},{"style":2169},[15455],{"type":1878,"value":3613},{"type":1873,"tag":2163,"props":15457,"children":15458},{"style":2682},[15459],{"type":1878,"value":15460}," main",{"type":1873,"tag":2163,"props":15462,"children":15463},{"style":2180},[15464],{"type":1878,"value":15465},"()\n",{"type":1873,"tag":2163,"props":15467,"children":15468},{"class":2165,"line":106},[15469],{"type":1873,"tag":2163,"props":15470,"children":15471},{"style":2180},[15472],{"type":1878,"value":15473},"{\n",{"type":1873,"tag":2163,"props":15475,"children":15476},{"class":2165,"line":110},[15477,15482,15486,15491,15495,15500,15504,15509,15513,15518,15523,15528,15532,15536],{"type":1873,"tag":2163,"props":15478,"children":15479},{"style":2180},[15480],{"type":1878,"value":15481}," fragColor ",{"type":1873,"tag":2163,"props":15483,"children":15484},{"style":2169},[15485],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":15487,"children":15488},{"style":2682},[15489],{"type":1878,"value":15490}," texture",{"type":1873,"tag":2163,"props":15492,"children":15493},{"style":2180},[15494],{"type":1878,"value":13781},{"type":1873,"tag":2163,"props":15496,"children":15497},{"style":2682},[15498],{"type":1878,"value":15499},"sampler2D",{"type":1873,"tag":2163,"props":15501,"children":15502},{"style":2180},[15503],{"type":1878,"value":13781},{"type":1873,"tag":2163,"props":15505,"children":15506},{"style":2701},[15507],{"type":1878,"value":15508},"heapTexture2D",{"type":1873,"tag":2163,"props":15510,"children":15511},{"style":2180},[15512],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":15514,"children":15515},{"style":3995},[15516],{"type":1878,"value":15517},"27",{"type":1873,"tag":2163,"props":15519,"children":15520},{"style":2180},[15521],{"type":1878,"value":15522},"], ",{"type":1873,"tag":2163,"props":15524,"children":15525},{"style":2701},[15526],{"type":1878,"value":15527},"heapSampler",{"type":1873,"tag":2163,"props":15529,"children":15530},{"style":2180},[15531],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":15533,"children":15534},{"style":3995},[15535],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":15537,"children":15538},{"style":2180},[15539],{"type":1878,"value":15540},"]), uvs);\n",{"type":1873,"tag":2163,"props":15542,"children":15543},{"class":2165,"line":114},[15544,15548,15553,15558,15562,15567],{"type":1873,"tag":2163,"props":15545,"children":15546},{"style":2180},[15547],{"type":1878,"value":15481},{"type":1873,"tag":2163,"props":15549,"children":15550},{"style":2169},[15551],{"type":1878,"value":15552},"+=",{"type":1873,"tag":2163,"props":15554,"children":15555},{"style":2701},[15556],{"type":1878,"value":15557}," heapUniformBuffer",{"type":1873,"tag":2163,"props":15559,"children":15560},{"style":2180},[15561],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":15563,"children":15564},{"style":2682},[15565],{"type":1878,"value":15566},"nonuniformEXT",{"type":1873,"tag":2163,"props":15568,"children":15569},{"style":2180},[15570],{"type":1878,"value":15571},"(index)].colorOffset;\n",{"type":1873,"tag":2163,"props":15573,"children":15574},{"class":2165,"line":118},[15575],{"type":1873,"tag":2163,"props":15576,"children":15577},{"style":2180},[15578],{"type":1878,"value":15579},"}\n",{"type":1873,"tag":1880,"props":15581,"children":15582},{"id":4568},[15583],{"type":1878,"value":15584},"HLSL Mapping",{"type":1873,"tag":2079,"props":15586,"children":15588},{"id":15587},"_global_root_signatures",[15589],{"type":1878,"value":15590},"Global Root Signatures",{"type":1873,"tag":1874,"props":15592,"children":15593},{},[15594,15596,15601,15602,15607,15609,15615,15617,15622,15624,15629,15631,15636,15638,15643],{"type":1878,"value":15595},"Unlike core Vulkan, register declarations can now be mapped directly to ",{"type":1873,"tag":2159,"props":15597,"children":15599},{"className":15598},[],[15600],{"type":1878,"value":3197},{"type":1878,"value":3199},{"type":1873,"tag":2159,"props":15603,"children":15605},{"className":15604},[],[15606],{"type":1878,"value":3205},{"type":1878,"value":15608}," decorations in SPIR-V, as they not longer have a strict meaning, and are only used as identifiers.\nThe value of the ",{"type":1873,"tag":2159,"props":15610,"children":15612},{"className":15611},[],[15613],{"type":1878,"value":15614},"space",{"type":1878,"value":15616}," identifier can be used as the ",{"type":1873,"tag":2159,"props":15618,"children":15620},{"className":15619},[],[15621],{"type":1878,"value":3197},{"type":1878,"value":15623},", and the numerical register value as the ",{"type":1873,"tag":2159,"props":15625,"children":15627},{"className":15626},[],[15628],{"type":1878,"value":3205},{"type":1878,"value":15630}," decoration.\nMapping these in the API can be done with the new ",{"type":1873,"tag":2159,"props":15632,"children":15634},{"className":15633},[],[15635],{"type":1878,"value":6319},{"type":1878,"value":15637}," structure and use of push constants.\nThe register type (t/s/u/b) can be mapped via the ",{"type":1873,"tag":2159,"props":15639,"children":15641},{"className":15640},[],[15642],{"type":1878,"value":6447},{"type":1878,"value":15644},", with the following masks for each type:",{"type":1873,"tag":1892,"props":15646,"children":15647},{},[15648,15665,15680,15696],{"type":1873,"tag":1896,"props":15649,"children":15650},{},[15651,15657,15659],{"type":1873,"tag":2159,"props":15652,"children":15654},{"className":15653},[],[15655],{"type":1878,"value":15656},"t",{"type":1878,"value":15658}," - ",{"type":1873,"tag":2159,"props":15660,"children":15662},{"className":15661},[],[15663],{"type":1878,"value":15664},"VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT | VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT | VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT",{"type":1873,"tag":1896,"props":15666,"children":15667},{},[15668,15674,15675],{"type":1873,"tag":2159,"props":15669,"children":15671},{"className":15670},[],[15672],{"type":1878,"value":15673},"s",{"type":1878,"value":15658},{"type":1873,"tag":2159,"props":15676,"children":15678},{"className":15677},[],[15679],{"type":1878,"value":6655},{"type":1873,"tag":1896,"props":15681,"children":15682},{},[15683,15689,15690],{"type":1873,"tag":2159,"props":15684,"children":15686},{"className":15685},[],[15687],{"type":1878,"value":15688},"u",{"type":1878,"value":15658},{"type":1873,"tag":2159,"props":15691,"children":15693},{"className":15692},[],[15694],{"type":1878,"value":15695},"VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT | VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT | VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT",{"type":1873,"tag":1896,"props":15697,"children":15698},{},[15699,15705,15706],{"type":1873,"tag":2159,"props":15700,"children":15702},{"className":15701},[],[15703],{"type":1878,"value":15704},"b",{"type":1878,"value":15658},{"type":1873,"tag":2159,"props":15707,"children":15709},{"className":15708},[],[15710],{"type":1878,"value":6710},{"type":1873,"tag":2025,"props":15712,"children":15713},{},[15714],{"type":1873,"tag":1874,"props":15715,"children":15716},{},[15717],{"type":1878,"value":15718},"This is based on current DXC compiler behavior, which may change in future.",{"type":1873,"tag":3256,"props":15720,"children":15722},{"id":15721},"_example_root_signature_to_vulkan_mappings",[15723],{"type":1878,"value":15724},"Example: Root Signature to Vulkan Mappings",{"type":1873,"tag":1874,"props":15726,"children":15727},{},[15728],{"type":1878,"value":15729},"As an illustration, the following indicates roughly how an application would specify the same mappings in both DirectX 12 and Vulkan.",{"type":1873,"tag":1874,"props":15731,"children":15732},{},[15733,15735,15740],{"type":1878,"value":15734},"DirectX 12 has two major parts of specifying a descriptor mapping; the root signature specifying static mappings, and descriptor tables which set a dynamic offset for those mappings during command buffer recording.\n",{"type":1873,"tag":2159,"props":15736,"children":15738},{"className":15737},[],[15739],{"type":1878,"value":6319},{"type":1878,"value":15741}," specifies the same information as a root signature, but without the need to bake an object ahead of time.\nThe following code used to specify a root signature in DirectX 12:",{"type":1873,"tag":2151,"props":15743,"children":15747},{"className":15744,"code":15745,"language":15746,"meta":2156,"style":2156},"language-cpp shiki shiki-themes github-light-default github-dark-default","D3D12_ROOT_PARAMETER parameters[5];\n\nD3D12_DESCRIPTOR_RANGE descriptorRanges[3] = {\n {\n D3D12_DESCRIPTOR_RANGE_TYPE_SRV,\n 5, // NumDescriptors\n 3, // BaseShaderRegister\n 1, // RegisterSpace\n 0 // OffsetInDescriptorsFromTableStart\n },\n {\n D3D12_DESCRIPTOR_RANGE_TYPE_UAV,\n 6, // NumDescriptors\n 19, // BaseShaderRegister\n 0, // RegisterSpace\n 200 // OffsetInDescriptorsFromTableStart\n },\n {\n D3D12_DESCRIPTOR_RANGE_TYPE_SRV,\n 1, // NumDescriptors\n 0, // BaseShaderRegister\n 3, // RegisterSpace\n 50 // OffsetInDescriptorsFromTableStart\n }\n};\n\n// Descriptor Table 0\nparameters[0].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;\nparameters[0].DescriptorTable.NumDescriptorRanges = 1;\nparameters[0].DescriptorTable.pDescriptorRanges = &(descriptorRanges[0]);\nparameters[0].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;\n\n// Descriptor Table 1\nparameters[1].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;\nparameters[1].DescriptorTable.NumDescriptorRanges = 2;\nparameters[1].DescriptorTable.pDescriptorRanges = &(descriptorRanges[1]);\nparameters[1].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;\n\n// Root Constants\nparameters[2].ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;\nparameters[2].Constants.ShaderRegister = 100;\nparameters[2].Constants.RegisterSpace = 2;\nparameters[2].Num32BitValues = 12;\n\n// Root UAV descriptor\nparameters[3].ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;\nparameters[3].Descriptor.ShaderRegister = 101;\nparameters[3].Descriptor.RegisterSpace = 2;\n\n// Root CBV descriptor\nparameters[4].ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;\nparameters[4].Descriptor.ShaderRegister = 102;\nparameters[4].Descriptor.RegisterSpace = 2;\n\nD3D12_ROOT_SIGNATURE_DESC rootSignatureDesc = {\n 5, // NumParameters\n ¶meters, // pParameters\n 0, // NumStaticSamplers\n NULL, // pStaticSamplers\n 0 // Flags\n};\n","cpp",[15748],{"type":1873,"tag":2159,"props":15749,"children":15750},{"__ignoreMap":2156},[15751,15769,15776,15801,15809,15817,15835,15852,15869,15882,15890,15897,15905,15921,15938,15953,15966,15973,15980,15987,16002,16017,16032,16045,16053,16060,16067,16075,16101,16129,16167,16192,16199,16207,16230,16257,16292,16315,16322,16330,16354,16383,16411,16439,16446,16454,16478,16507,16535,16542,16550,16574,16602,16629,16636,16652,16669,16687,16704,16721,16733],{"type":1873,"tag":2163,"props":15752,"children":15753},{"class":2165,"line":10},[15754,15759,15765],{"type":1873,"tag":2163,"props":15755,"children":15756},{"style":2180},[15757],{"type":1878,"value":15758},"D3D12_ROOT_PARAMETER parameters[",{"type":1873,"tag":2163,"props":15760,"children":15762},{"style":15761},"--shiki-default:#1F2328;--shiki-dark:#79C0FF",[15763],{"type":1878,"value":15764},"5",{"type":1873,"tag":2163,"props":15766,"children":15767},{"style":2180},[15768],{"type":1878,"value":6550},{"type":1873,"tag":2163,"props":15770,"children":15771},{"class":2165,"line":14},[15772],{"type":1873,"tag":2163,"props":15773,"children":15774},{"emptyLinePlaceholder":232},[15775],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":15777,"children":15778},{"class":2165,"line":18},[15779,15784,15788,15792,15796],{"type":1873,"tag":2163,"props":15780,"children":15781},{"style":2180},[15782],{"type":1878,"value":15783},"D3D12_DESCRIPTOR_RANGE descriptorRanges[",{"type":1873,"tag":2163,"props":15785,"children":15786},{"style":3995},[15787],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":15789,"children":15790},{"style":2180},[15791],{"type":1878,"value":12603},{"type":1873,"tag":2163,"props":15793,"children":15794},{"style":2169},[15795],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":15797,"children":15799},{"style":15798},"--shiki-default:#CF222E;--shiki-dark:#E6EDF3",[15800],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":15802,"children":15803},{"class":2165,"line":22},[15804],{"type":1873,"tag":2163,"props":15805,"children":15806},{"style":2180},[15807],{"type":1878,"value":15808}," {\n",{"type":1873,"tag":2163,"props":15810,"children":15811},{"class":2165,"line":26},[15812],{"type":1873,"tag":2163,"props":15813,"children":15814},{"style":2180},[15815],{"type":1878,"value":15816}," D3D12_DESCRIPTOR_RANGE_TYPE_SRV,\n",{"type":1873,"tag":2163,"props":15818,"children":15819},{"class":2165,"line":30},[15820,15825,15830],{"type":1873,"tag":2163,"props":15821,"children":15822},{"style":3995},[15823],{"type":1878,"value":15824}," 5",{"type":1873,"tag":2163,"props":15826,"children":15827},{"style":2180},[15828],{"type":1878,"value":15829},",",{"type":1873,"tag":2163,"props":15831,"children":15832},{"style":8855},[15833],{"type":1878,"value":15834}," // NumDescriptors\n",{"type":1873,"tag":2163,"props":15836,"children":15837},{"class":2165,"line":34},[15838,15843,15847],{"type":1873,"tag":2163,"props":15839,"children":15840},{"style":3995},[15841],{"type":1878,"value":15842}," 3",{"type":1873,"tag":2163,"props":15844,"children":15845},{"style":2180},[15846],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":15848,"children":15849},{"style":8855},[15850],{"type":1878,"value":15851}," // BaseShaderRegister\n",{"type":1873,"tag":2163,"props":15853,"children":15854},{"class":2165,"line":38},[15855,15860,15864],{"type":1873,"tag":2163,"props":15856,"children":15857},{"style":3995},[15858],{"type":1878,"value":15859}," 1",{"type":1873,"tag":2163,"props":15861,"children":15862},{"style":2180},[15863],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":15865,"children":15866},{"style":8855},[15867],{"type":1878,"value":15868}," // RegisterSpace\n",{"type":1873,"tag":2163,"props":15870,"children":15871},{"class":2165,"line":42},[15872,15877],{"type":1873,"tag":2163,"props":15873,"children":15874},{"style":3995},[15875],{"type":1878,"value":15876}," 0",{"type":1873,"tag":2163,"props":15878,"children":15879},{"style":8855},[15880],{"type":1878,"value":15881}," // OffsetInDescriptorsFromTableStart\n",{"type":1873,"tag":2163,"props":15883,"children":15884},{"class":2165,"line":46},[15885],{"type":1873,"tag":2163,"props":15886,"children":15887},{"style":2180},[15888],{"type":1878,"value":15889}," },\n",{"type":1873,"tag":2163,"props":15891,"children":15892},{"class":2165,"line":50},[15893],{"type":1873,"tag":2163,"props":15894,"children":15895},{"style":2180},[15896],{"type":1878,"value":15808},{"type":1873,"tag":2163,"props":15898,"children":15899},{"class":2165,"line":54},[15900],{"type":1873,"tag":2163,"props":15901,"children":15902},{"style":2180},[15903],{"type":1878,"value":15904}," D3D12_DESCRIPTOR_RANGE_TYPE_UAV,\n",{"type":1873,"tag":2163,"props":15906,"children":15907},{"class":2165,"line":58},[15908,15913,15917],{"type":1873,"tag":2163,"props":15909,"children":15910},{"style":3995},[15911],{"type":1878,"value":15912}," 6",{"type":1873,"tag":2163,"props":15914,"children":15915},{"style":2180},[15916],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":15918,"children":15919},{"style":8855},[15920],{"type":1878,"value":15834},{"type":1873,"tag":2163,"props":15922,"children":15923},{"class":2165,"line":62},[15924,15929,15933],{"type":1873,"tag":2163,"props":15925,"children":15926},{"style":3995},[15927],{"type":1878,"value":15928}," 19",{"type":1873,"tag":2163,"props":15930,"children":15931},{"style":2180},[15932],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":15934,"children":15935},{"style":8855},[15936],{"type":1878,"value":15937}," // BaseShaderRegister\n",{"type":1873,"tag":2163,"props":15939,"children":15940},{"class":2165,"line":66},[15941,15945,15949],{"type":1873,"tag":2163,"props":15942,"children":15943},{"style":3995},[15944],{"type":1878,"value":15876},{"type":1873,"tag":2163,"props":15946,"children":15947},{"style":2180},[15948],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":15950,"children":15951},{"style":8855},[15952],{"type":1878,"value":15868},{"type":1873,"tag":2163,"props":15954,"children":15955},{"class":2165,"line":70},[15956,15961],{"type":1873,"tag":2163,"props":15957,"children":15958},{"style":3995},[15959],{"type":1878,"value":15960}," 200",{"type":1873,"tag":2163,"props":15962,"children":15963},{"style":8855},[15964],{"type":1878,"value":15965}," // OffsetInDescriptorsFromTableStart\n",{"type":1873,"tag":2163,"props":15967,"children":15968},{"class":2165,"line":74},[15969],{"type":1873,"tag":2163,"props":15970,"children":15971},{"style":2180},[15972],{"type":1878,"value":15889},{"type":1873,"tag":2163,"props":15974,"children":15975},{"class":2165,"line":78},[15976],{"type":1873,"tag":2163,"props":15977,"children":15978},{"style":2180},[15979],{"type":1878,"value":15808},{"type":1873,"tag":2163,"props":15981,"children":15982},{"class":2165,"line":82},[15983],{"type":1873,"tag":2163,"props":15984,"children":15985},{"style":2180},[15986],{"type":1878,"value":15816},{"type":1873,"tag":2163,"props":15988,"children":15989},{"class":2165,"line":86},[15990,15994,15998],{"type":1873,"tag":2163,"props":15991,"children":15992},{"style":3995},[15993],{"type":1878,"value":15859},{"type":1873,"tag":2163,"props":15995,"children":15996},{"style":2180},[15997],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":15999,"children":16000},{"style":8855},[16001],{"type":1878,"value":15834},{"type":1873,"tag":2163,"props":16003,"children":16004},{"class":2165,"line":90},[16005,16009,16013],{"type":1873,"tag":2163,"props":16006,"children":16007},{"style":3995},[16008],{"type":1878,"value":15876},{"type":1873,"tag":2163,"props":16010,"children":16011},{"style":2180},[16012],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":16014,"children":16015},{"style":8855},[16016],{"type":1878,"value":15851},{"type":1873,"tag":2163,"props":16018,"children":16019},{"class":2165,"line":94},[16020,16024,16028],{"type":1873,"tag":2163,"props":16021,"children":16022},{"style":3995},[16023],{"type":1878,"value":15842},{"type":1873,"tag":2163,"props":16025,"children":16026},{"style":2180},[16027],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":16029,"children":16030},{"style":8855},[16031],{"type":1878,"value":15868},{"type":1873,"tag":2163,"props":16033,"children":16034},{"class":2165,"line":98},[16035,16040],{"type":1873,"tag":2163,"props":16036,"children":16037},{"style":3995},[16038],{"type":1878,"value":16039}," 50",{"type":1873,"tag":2163,"props":16041,"children":16042},{"style":8855},[16043],{"type":1878,"value":16044}," // OffsetInDescriptorsFromTableStart\n",{"type":1873,"tag":2163,"props":16046,"children":16047},{"class":2165,"line":102},[16048],{"type":1873,"tag":2163,"props":16049,"children":16050},{"style":2180},[16051],{"type":1878,"value":16052}," }\n",{"type":1873,"tag":2163,"props":16054,"children":16055},{"class":2165,"line":106},[16056],{"type":1873,"tag":2163,"props":16057,"children":16058},{"style":2180},[16059],{"type":1878,"value":12777},{"type":1873,"tag":2163,"props":16061,"children":16062},{"class":2165,"line":110},[16063],{"type":1873,"tag":2163,"props":16064,"children":16065},{"emptyLinePlaceholder":232},[16066],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16068,"children":16069},{"class":2165,"line":114},[16070],{"type":1873,"tag":2163,"props":16071,"children":16072},{"style":8855},[16073],{"type":1878,"value":16074},"// Descriptor Table 0\n",{"type":1873,"tag":2163,"props":16076,"children":16077},{"class":2165,"line":118},[16078,16083,16087,16092,16096],{"type":1873,"tag":2163,"props":16079,"children":16080},{"style":2180},[16081],{"type":1878,"value":16082},"parameters[",{"type":1873,"tag":2163,"props":16084,"children":16085},{"style":3995},[16086],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":16088,"children":16089},{"style":2180},[16090],{"type":1878,"value":16091},"].ParameterType ",{"type":1873,"tag":2163,"props":16093,"children":16094},{"style":2169},[16095],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16097,"children":16098},{"style":2180},[16099],{"type":1878,"value":16100}," D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;\n",{"type":1873,"tag":2163,"props":16102,"children":16103},{"class":2165,"line":122},[16104,16108,16112,16117,16121,16125],{"type":1873,"tag":2163,"props":16105,"children":16106},{"style":2180},[16107],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16109,"children":16110},{"style":3995},[16111],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":16113,"children":16114},{"style":2180},[16115],{"type":1878,"value":16116},"].DescriptorTable.NumDescriptorRanges ",{"type":1873,"tag":2163,"props":16118,"children":16119},{"style":2169},[16120],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16122,"children":16123},{"style":3995},[16124],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":16126,"children":16127},{"style":2180},[16128],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16130,"children":16131},{"class":2165,"line":126},[16132,16136,16140,16145,16149,16153,16158,16162],{"type":1873,"tag":2163,"props":16133,"children":16134},{"style":2180},[16135],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16137,"children":16138},{"style":3995},[16139],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":16141,"children":16142},{"style":2180},[16143],{"type":1878,"value":16144},"].DescriptorTable.pDescriptorRanges ",{"type":1873,"tag":2163,"props":16146,"children":16147},{"style":2169},[16148],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16150,"children":16151},{"style":2169},[16152],{"type":1878,"value":13776},{"type":1873,"tag":2163,"props":16154,"children":16155},{"style":2180},[16156],{"type":1878,"value":16157},"(descriptorRanges[",{"type":1873,"tag":2163,"props":16159,"children":16160},{"style":3995},[16161],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":16163,"children":16164},{"style":2180},[16165],{"type":1878,"value":16166},"]);\n",{"type":1873,"tag":2163,"props":16168,"children":16169},{"class":2165,"line":130},[16170,16174,16178,16183,16187],{"type":1873,"tag":2163,"props":16171,"children":16172},{"style":2180},[16173],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16175,"children":16176},{"style":3995},[16177],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":16179,"children":16180},{"style":2180},[16181],{"type":1878,"value":16182},"].ShaderVisibility ",{"type":1873,"tag":2163,"props":16184,"children":16185},{"style":2169},[16186],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16188,"children":16189},{"style":2180},[16190],{"type":1878,"value":16191}," D3D12_SHADER_VISIBILITY_ALL;\n",{"type":1873,"tag":2163,"props":16193,"children":16194},{"class":2165,"line":134},[16195],{"type":1873,"tag":2163,"props":16196,"children":16197},{"emptyLinePlaceholder":232},[16198],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16200,"children":16201},{"class":2165,"line":138},[16202],{"type":1873,"tag":2163,"props":16203,"children":16204},{"style":8855},[16205],{"type":1878,"value":16206},"// Descriptor Table 1\n",{"type":1873,"tag":2163,"props":16208,"children":16209},{"class":2165,"line":142},[16210,16214,16218,16222,16226],{"type":1873,"tag":2163,"props":16211,"children":16212},{"style":2180},[16213],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16215,"children":16216},{"style":3995},[16217],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":16219,"children":16220},{"style":2180},[16221],{"type":1878,"value":16091},{"type":1873,"tag":2163,"props":16223,"children":16224},{"style":2169},[16225],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16227,"children":16228},{"style":2180},[16229],{"type":1878,"value":16100},{"type":1873,"tag":2163,"props":16231,"children":16232},{"class":2165,"line":146},[16233,16237,16241,16245,16249,16253],{"type":1873,"tag":2163,"props":16234,"children":16235},{"style":2180},[16236],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16238,"children":16239},{"style":3995},[16240],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":16242,"children":16243},{"style":2180},[16244],{"type":1878,"value":16116},{"type":1873,"tag":2163,"props":16246,"children":16247},{"style":2169},[16248],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16250,"children":16251},{"style":3995},[16252],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":16254,"children":16255},{"style":2180},[16256],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16258,"children":16259},{"class":2165,"line":150},[16260,16264,16268,16272,16276,16280,16284,16288],{"type":1873,"tag":2163,"props":16261,"children":16262},{"style":2180},[16263],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16265,"children":16266},{"style":3995},[16267],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":16269,"children":16270},{"style":2180},[16271],{"type":1878,"value":16144},{"type":1873,"tag":2163,"props":16273,"children":16274},{"style":2169},[16275],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16277,"children":16278},{"style":2169},[16279],{"type":1878,"value":13776},{"type":1873,"tag":2163,"props":16281,"children":16282},{"style":2180},[16283],{"type":1878,"value":16157},{"type":1873,"tag":2163,"props":16285,"children":16286},{"style":3995},[16287],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":16289,"children":16290},{"style":2180},[16291],{"type":1878,"value":16166},{"type":1873,"tag":2163,"props":16293,"children":16294},{"class":2165,"line":154},[16295,16299,16303,16307,16311],{"type":1873,"tag":2163,"props":16296,"children":16297},{"style":2180},[16298],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16300,"children":16301},{"style":3995},[16302],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":16304,"children":16305},{"style":2180},[16306],{"type":1878,"value":16182},{"type":1873,"tag":2163,"props":16308,"children":16309},{"style":2169},[16310],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16312,"children":16313},{"style":2180},[16314],{"type":1878,"value":16191},{"type":1873,"tag":2163,"props":16316,"children":16317},{"class":2165,"line":158},[16318],{"type":1873,"tag":2163,"props":16319,"children":16320},{"emptyLinePlaceholder":232},[16321],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16323,"children":16324},{"class":2165,"line":162},[16325],{"type":1873,"tag":2163,"props":16326,"children":16327},{"style":8855},[16328],{"type":1878,"value":16329},"// Root Constants\n",{"type":1873,"tag":2163,"props":16331,"children":16332},{"class":2165,"line":166},[16333,16337,16341,16345,16349],{"type":1873,"tag":2163,"props":16334,"children":16335},{"style":2180},[16336],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16338,"children":16339},{"style":3995},[16340],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":16342,"children":16343},{"style":2180},[16344],{"type":1878,"value":16091},{"type":1873,"tag":2163,"props":16346,"children":16347},{"style":2169},[16348],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16350,"children":16351},{"style":2180},[16352],{"type":1878,"value":16353}," D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;\n",{"type":1873,"tag":2163,"props":16355,"children":16356},{"class":2165,"line":170},[16357,16361,16365,16370,16374,16379],{"type":1873,"tag":2163,"props":16358,"children":16359},{"style":2180},[16360],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16362,"children":16363},{"style":3995},[16364],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":16366,"children":16367},{"style":2180},[16368],{"type":1878,"value":16369},"].Constants.ShaderRegister ",{"type":1873,"tag":2163,"props":16371,"children":16372},{"style":2169},[16373],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16375,"children":16376},{"style":3995},[16377],{"type":1878,"value":16378}," 100",{"type":1873,"tag":2163,"props":16380,"children":16381},{"style":2180},[16382],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16384,"children":16385},{"class":2165,"line":174},[16386,16390,16394,16399,16403,16407],{"type":1873,"tag":2163,"props":16387,"children":16388},{"style":2180},[16389],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16391,"children":16392},{"style":3995},[16393],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":16395,"children":16396},{"style":2180},[16397],{"type":1878,"value":16398},"].Constants.RegisterSpace ",{"type":1873,"tag":2163,"props":16400,"children":16401},{"style":2169},[16402],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16404,"children":16405},{"style":3995},[16406],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":16408,"children":16409},{"style":2180},[16410],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16412,"children":16413},{"class":2165,"line":178},[16414,16418,16422,16427,16431,16435],{"type":1873,"tag":2163,"props":16415,"children":16416},{"style":2180},[16417],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16419,"children":16420},{"style":3995},[16421],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":16423,"children":16424},{"style":2180},[16425],{"type":1878,"value":16426},"].Num32BitValues ",{"type":1873,"tag":2163,"props":16428,"children":16429},{"style":2169},[16430],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16432,"children":16433},{"style":3995},[16434],{"type":1878,"value":11101},{"type":1873,"tag":2163,"props":16436,"children":16437},{"style":2180},[16438],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16440,"children":16441},{"class":2165,"line":182},[16442],{"type":1873,"tag":2163,"props":16443,"children":16444},{"emptyLinePlaceholder":232},[16445],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16447,"children":16448},{"class":2165,"line":186},[16449],{"type":1873,"tag":2163,"props":16450,"children":16451},{"style":8855},[16452],{"type":1878,"value":16453},"// Root UAV descriptor\n",{"type":1873,"tag":2163,"props":16455,"children":16456},{"class":2165,"line":190},[16457,16461,16465,16469,16473],{"type":1873,"tag":2163,"props":16458,"children":16459},{"style":2180},[16460],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16462,"children":16463},{"style":3995},[16464],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":16466,"children":16467},{"style":2180},[16468],{"type":1878,"value":16091},{"type":1873,"tag":2163,"props":16470,"children":16471},{"style":2169},[16472],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16474,"children":16475},{"style":2180},[16476],{"type":1878,"value":16477}," D3D12_ROOT_PARAMETER_TYPE_UAV;\n",{"type":1873,"tag":2163,"props":16479,"children":16480},{"class":2165,"line":194},[16481,16485,16489,16494,16498,16503],{"type":1873,"tag":2163,"props":16482,"children":16483},{"style":2180},[16484],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16486,"children":16487},{"style":3995},[16488],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":16490,"children":16491},{"style":2180},[16492],{"type":1878,"value":16493},"].Descriptor.ShaderRegister ",{"type":1873,"tag":2163,"props":16495,"children":16496},{"style":2169},[16497],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16499,"children":16500},{"style":3995},[16501],{"type":1878,"value":16502}," 101",{"type":1873,"tag":2163,"props":16504,"children":16505},{"style":2180},[16506],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16508,"children":16509},{"class":2165,"line":198},[16510,16514,16518,16523,16527,16531],{"type":1873,"tag":2163,"props":16511,"children":16512},{"style":2180},[16513],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16515,"children":16516},{"style":3995},[16517],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":16519,"children":16520},{"style":2180},[16521],{"type":1878,"value":16522},"].Descriptor.RegisterSpace ",{"type":1873,"tag":2163,"props":16524,"children":16525},{"style":2169},[16526],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16528,"children":16529},{"style":3995},[16530],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":16532,"children":16533},{"style":2180},[16534],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16536,"children":16537},{"class":2165,"line":202},[16538],{"type":1873,"tag":2163,"props":16539,"children":16540},{"emptyLinePlaceholder":232},[16541],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16543,"children":16544},{"class":2165,"line":206},[16545],{"type":1873,"tag":2163,"props":16546,"children":16547},{"style":8855},[16548],{"type":1878,"value":16549},"// Root CBV descriptor\n",{"type":1873,"tag":2163,"props":16551,"children":16552},{"class":2165,"line":210},[16553,16557,16561,16565,16569],{"type":1873,"tag":2163,"props":16554,"children":16555},{"style":2180},[16556],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16558,"children":16559},{"style":3995},[16560],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":16562,"children":16563},{"style":2180},[16564],{"type":1878,"value":16091},{"type":1873,"tag":2163,"props":16566,"children":16567},{"style":2169},[16568],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16570,"children":16571},{"style":2180},[16572],{"type":1878,"value":16573}," D3D12_ROOT_PARAMETER_TYPE_CBV;\n",{"type":1873,"tag":2163,"props":16575,"children":16576},{"class":2165,"line":214},[16577,16581,16585,16589,16593,16598],{"type":1873,"tag":2163,"props":16578,"children":16579},{"style":2180},[16580],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16582,"children":16583},{"style":3995},[16584],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":16586,"children":16587},{"style":2180},[16588],{"type":1878,"value":16493},{"type":1873,"tag":2163,"props":16590,"children":16591},{"style":2169},[16592],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16594,"children":16595},{"style":3995},[16596],{"type":1878,"value":16597}," 102",{"type":1873,"tag":2163,"props":16599,"children":16600},{"style":2180},[16601],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16603,"children":16604},{"class":2165,"line":218},[16605,16609,16613,16617,16621,16625],{"type":1873,"tag":2163,"props":16606,"children":16607},{"style":2180},[16608],{"type":1878,"value":16082},{"type":1873,"tag":2163,"props":16610,"children":16611},{"style":3995},[16612],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":16614,"children":16615},{"style":2180},[16616],{"type":1878,"value":16522},{"type":1873,"tag":2163,"props":16618,"children":16619},{"style":2169},[16620],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16622,"children":16623},{"style":3995},[16624],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":16626,"children":16627},{"style":2180},[16628],{"type":1878,"value":4120},{"type":1873,"tag":2163,"props":16630,"children":16631},{"class":2165,"line":222},[16632],{"type":1873,"tag":2163,"props":16633,"children":16634},{"emptyLinePlaceholder":232},[16635],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16637,"children":16638},{"class":2165,"line":226},[16639,16644,16648],{"type":1873,"tag":2163,"props":16640,"children":16641},{"style":2180},[16642],{"type":1878,"value":16643},"D3D12_ROOT_SIGNATURE_DESC rootSignatureDesc ",{"type":1873,"tag":2163,"props":16645,"children":16646},{"style":2169},[16647],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16649,"children":16650},{"style":2180},[16651],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":16653,"children":16654},{"class":2165,"line":1622},[16655,16660,16664],{"type":1873,"tag":2163,"props":16656,"children":16657},{"style":3995},[16658],{"type":1878,"value":16659}," 5",{"type":1873,"tag":2163,"props":16661,"children":16662},{"style":2180},[16663],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":16665,"children":16666},{"style":8855},[16667],{"type":1878,"value":16668}," // NumParameters\n",{"type":1873,"tag":2163,"props":16670,"children":16671},{"class":2165,"line":1618},[16672,16677,16682],{"type":1873,"tag":2163,"props":16673,"children":16674},{"style":2169},[16675],{"type":1878,"value":16676}," &",{"type":1873,"tag":2163,"props":16678,"children":16679},{"style":2180},[16680],{"type":1878,"value":16681},"parameters,",{"type":1873,"tag":2163,"props":16683,"children":16684},{"style":8855},[16685],{"type":1878,"value":16686}," // pParameters\n",{"type":1873,"tag":2163,"props":16688,"children":16689},{"class":2165,"line":1629},[16690,16695,16699],{"type":1873,"tag":2163,"props":16691,"children":16692},{"style":3995},[16693],{"type":1878,"value":16694}," 0",{"type":1873,"tag":2163,"props":16696,"children":16697},{"style":2180},[16698],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":16700,"children":16701},{"style":8855},[16702],{"type":1878,"value":16703}," // NumStaticSamplers\n",{"type":1873,"tag":2163,"props":16705,"children":16706},{"class":2165,"line":1753},[16707,16712,16716],{"type":1873,"tag":2163,"props":16708,"children":16709},{"style":3995},[16710],{"type":1878,"value":16711}," NULL",{"type":1873,"tag":2163,"props":16713,"children":16714},{"style":2180},[16715],{"type":1878,"value":15829},{"type":1873,"tag":2163,"props":16717,"children":16718},{"style":8855},[16719],{"type":1878,"value":16720}," // pStaticSamplers\n",{"type":1873,"tag":2163,"props":16722,"children":16723},{"class":2165,"line":1184},[16724,16728],{"type":1873,"tag":2163,"props":16725,"children":16726},{"style":3995},[16727],{"type":1878,"value":16694},{"type":1873,"tag":2163,"props":16729,"children":16730},{"style":8855},[16731],{"type":1878,"value":16732}," // Flags\n",{"type":1873,"tag":2163,"props":16734,"children":16735},{"class":2165,"line":1107},[16736],{"type":1873,"tag":2163,"props":16737,"children":16738},{"style":2180},[16739],{"type":1878,"value":12777},{"type":1873,"tag":1874,"props":16741,"children":16742},{},[16743],{"type":1878,"value":16744},"could translate to the following code in Vulkan:",{"type":1873,"tag":2151,"props":16746,"children":16748},{"className":2153,"code":16747,"language":2155,"meta":2156,"style":2156},"const VkSpirvResourceTypeFlagsEXT srvMask = VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT |\n VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT |\n VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT |\n VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT;\nconst VkSpirvResourceTypeFlagsEXT samplerMask = VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT;\nconst VkSpirvResourceTypeFlagsEXT uavMask = VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT |\n VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT;\nconst VkSpirvResourceTypeFlagsEXT cbvMask = VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT;\n\nVkDescriptorSetAndBindingMappingEXT mappings[6];\n\n// Descriptor Table 0\nmappings[0].sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\nmappings[0].descriptorSet = 1; // Equivalent to RegisterSpace\nmappings[0].bindingCount = 5; // Equivalent to NumDescriptors\nmappings[0].firstBinding = 3; // Equivalent to BaseShaderRegister\nmappings[0].resourceMask = srvMask;\nmappings[0].source = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT;\nmappings[0].sourceData.pushIndex.heapOffset = 0; // Equivalent to OffsetInDescriptorsFromTableStart\nmappings[0].sourceData.pushIndex.heapIndexStride = 1; // Push data is a byte offset\nmappings[0].sourceData.pushIndex.pushOffset = 128; // No grouping of descriptor tables, so entries for the same table map to the same push constant offset.\n\n// Descriptor Table 1\nmappings[1].sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\nmappings[1].descriptorSet = 0; // Equivalent to RegisterSpace\nmappings[1].bindingCount = 6; // Equivalent to NumDescriptors\nmappings[1].firstBinding = 19; // Equivalent to BaseShaderRegister\nmappings[1].resourceMask = uavMask;\nmappings[1].source = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT;\nmappings[1].sourceData.pushIndex.heapOffset = 200 * imageDescriptorSize; // Equivalent to OffsetInDescriptorsFromTableStart\nmappings[1].sourceData.pushIndex.heapIndexStride = 1; // Push data is a byte offset\nmappings[1].sourceData.pushIndex.pushOffset = 132; // No grouping of descriptor tables, so entries for the same table map to the same push constant offset.\n\nmappings[2].sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\nmappings[2].descriptorSet = 3; // Equivalent to RegisterSpace\nmappings[2].bindingCount = 1; // Equivalent to NumDescriptors\nmappings[2].firstBinding = 3; // Equivalent to BaseShaderRegister\nmappings[2].resourceMask = srvMask;\nmappings[2].source = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT;\nmappings[2].sourceData.pushIndex.heapOffset = 50 * imageDescriptorSize; // Equivalent to OffsetInDescriptorsFromTableStart\nmappings[2].sourceData.pushIndex.heapIndexStride = 1; // Push data is a byte offset\nmappings[2].sourceData.pushIndex.pushOffset = 132; // No grouping of descriptor tables, so entries for the same table map to the same push constant offset.\n\n// Root Constants\nmappings[3].sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\nmappings[3].descriptorSet = 2; // Equivalent to RegisterSpace\nmappings[3].bindingCount = 1; // Always maps to a single CBV declaration in HLSL\nmappings[3].firstBinding = 100; // Equivalent to ShaderRegister\nmappings[3].resourceMask = cbvMask;\nmappings[3].source = VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT;\nmappings[3].sourceData.pushDataOffset = 0; // Set to a user-specified offset. No need to say how many there are here.\n\n// Root UAV descriptor\nmappings[4].sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\nmappings[4].descriptorSet = 2; // Equivalent to RegisterSpace\nmappings[4].bindingCount = 1; // Always maps to a single resource declaration in HLSL\nmappings[4].firstBinding = 101; // Equivalent to ShaderRegister\nmappings[4].resourceMask = uavMask;\nmappings[4].source = VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT;\nmappings[4].sourceData.pushAddressOffset = 8; // Set to a user-specified offset.\n\n// Root CBV descriptor\nmappings[5].sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT,\nmappings[5].descriptorSet = 2; // Equivalent to RegisterSpace\nmappings[5].bindingCount = 1; // Always maps to a single resource declaration in HLSL\nmappings[5].firstBinding = 102; // Equivalent to ShaderRegister\nmappings[5].resourceMask = vbvMask;\nmappings[5].source = VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT;\nmappings[5].sourceData.pushAddressOffset = 16; // Set to a user-specified offset.\n\nVkShaderDescriptorSetAndBindingMappingInfoEXT rootSignatureDesc = {\n .sType = VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT,\n .pNext = NULL,\n .mappingCount = 6,\n .pMappings = mappings};\n",[16749],{"type":1873,"tag":2159,"props":16750,"children":16751},{"__ignoreMap":2156},[16752,16777,16789,16801,16809,16830,16855,16863,16884,16891,16915,16922,16929,16957,16994,17031,17067,17096,17124,17160,17196,17232,17239,17246,17273,17308,17343,17380,17408,17435,17477,17512,17547,17554,17581,17616,17651,17686,17713,17740,17781,17816,17852,17859,17866,17893,17929,17965,18001,18029,18057,18094,18101,18108,18135,18170,18206,18241,18268,18296,18333,18340,18347,18374,18409,18444,18479,18507,18534,18570,18577,18593,18608,18627,18646],{"type":1873,"tag":2163,"props":16753,"children":16754},{"class":2165,"line":10},[16755,16759,16764,16768,16773],{"type":1873,"tag":2163,"props":16756,"children":16757},{"style":2169},[16758],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":16760,"children":16761},{"style":2180},[16762],{"type":1878,"value":16763}," VkSpirvResourceTypeFlagsEXT srvMask ",{"type":1873,"tag":2163,"props":16765,"children":16766},{"style":2169},[16767],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16769,"children":16770},{"style":2180},[16771],{"type":1878,"value":16772}," VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT ",{"type":1873,"tag":2163,"props":16774,"children":16775},{"style":2169},[16776],{"type":1878,"value":11965},{"type":1873,"tag":2163,"props":16778,"children":16779},{"class":2165,"line":14},[16780,16785],{"type":1873,"tag":2163,"props":16781,"children":16782},{"style":2180},[16783],{"type":1878,"value":16784}," VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT ",{"type":1873,"tag":2163,"props":16786,"children":16787},{"style":2169},[16788],{"type":1878,"value":11965},{"type":1873,"tag":2163,"props":16790,"children":16791},{"class":2165,"line":18},[16792,16797],{"type":1873,"tag":2163,"props":16793,"children":16794},{"style":2180},[16795],{"type":1878,"value":16796}," VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT ",{"type":1873,"tag":2163,"props":16798,"children":16799},{"style":2169},[16800],{"type":1878,"value":11965},{"type":1873,"tag":2163,"props":16802,"children":16803},{"class":2165,"line":22},[16804],{"type":1873,"tag":2163,"props":16805,"children":16806},{"style":2180},[16807],{"type":1878,"value":16808}," VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT;\n",{"type":1873,"tag":2163,"props":16810,"children":16811},{"class":2165,"line":26},[16812,16816,16821,16825],{"type":1873,"tag":2163,"props":16813,"children":16814},{"style":2169},[16815],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":16817,"children":16818},{"style":2180},[16819],{"type":1878,"value":16820}," VkSpirvResourceTypeFlagsEXT samplerMask ",{"type":1873,"tag":2163,"props":16822,"children":16823},{"style":2169},[16824],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16826,"children":16827},{"style":2180},[16828],{"type":1878,"value":16829}," VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT;\n",{"type":1873,"tag":2163,"props":16831,"children":16832},{"class":2165,"line":30},[16833,16837,16842,16846,16851],{"type":1873,"tag":2163,"props":16834,"children":16835},{"style":2169},[16836],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":16838,"children":16839},{"style":2180},[16840],{"type":1878,"value":16841}," VkSpirvResourceTypeFlagsEXT uavMask ",{"type":1873,"tag":2163,"props":16843,"children":16844},{"style":2169},[16845],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16847,"children":16848},{"style":2180},[16849],{"type":1878,"value":16850}," VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT ",{"type":1873,"tag":2163,"props":16852,"children":16853},{"style":2169},[16854],{"type":1878,"value":11965},{"type":1873,"tag":2163,"props":16856,"children":16857},{"class":2165,"line":34},[16858],{"type":1873,"tag":2163,"props":16859,"children":16860},{"style":2180},[16861],{"type":1878,"value":16862}," VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT;\n",{"type":1873,"tag":2163,"props":16864,"children":16865},{"class":2165,"line":38},[16866,16870,16875,16879],{"type":1873,"tag":2163,"props":16867,"children":16868},{"style":2169},[16869],{"type":1878,"value":11082},{"type":1873,"tag":2163,"props":16871,"children":16872},{"style":2180},[16873],{"type":1878,"value":16874}," VkSpirvResourceTypeFlagsEXT cbvMask ",{"type":1873,"tag":2163,"props":16876,"children":16877},{"style":2169},[16878],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16880,"children":16881},{"style":2180},[16882],{"type":1878,"value":16883}," VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT;\n",{"type":1873,"tag":2163,"props":16885,"children":16886},{"class":2165,"line":42},[16887],{"type":1873,"tag":2163,"props":16888,"children":16889},{"emptyLinePlaceholder":232},[16890],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16892,"children":16893},{"class":2165,"line":46},[16894,16898,16902,16906,16911],{"type":1873,"tag":2163,"props":16895,"children":16896},{"style":2180},[16897],{"type":1878,"value":12288},{"type":1873,"tag":2163,"props":16899,"children":16900},{"style":2701},[16901],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":16903,"children":16904},{"style":2180},[16905],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":16907,"children":16908},{"style":3995},[16909],{"type":1878,"value":16910},"6",{"type":1873,"tag":2163,"props":16912,"children":16913},{"style":2180},[16914],{"type":1878,"value":6550},{"type":1873,"tag":2163,"props":16916,"children":16917},{"class":2165,"line":50},[16918],{"type":1873,"tag":2163,"props":16919,"children":16920},{"emptyLinePlaceholder":232},[16921],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":16923,"children":16924},{"class":2165,"line":54},[16925],{"type":1873,"tag":2163,"props":16926,"children":16927},{"style":8855},[16928],{"type":1878,"value":16074},{"type":1873,"tag":2163,"props":16930,"children":16931},{"class":2165,"line":58},[16932,16936,16940,16944,16949,16953],{"type":1873,"tag":2163,"props":16933,"children":16934},{"style":2701},[16935],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":16937,"children":16938},{"style":2180},[16939],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":16941,"children":16942},{"style":3995},[16943],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":16945,"children":16946},{"style":2180},[16947],{"type":1878,"value":16948},"].sType ",{"type":1873,"tag":2163,"props":16950,"children":16951},{"style":2169},[16952],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16954,"children":16955},{"style":2180},[16956],{"type":1878,"value":12352},{"type":1873,"tag":2163,"props":16958,"children":16959},{"class":2165,"line":62},[16960,16964,16968,16972,16977,16981,16985,16989],{"type":1873,"tag":2163,"props":16961,"children":16962},{"style":2701},[16963],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":16965,"children":16966},{"style":2180},[16967],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":16969,"children":16970},{"style":3995},[16971],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":16973,"children":16974},{"style":2180},[16975],{"type":1878,"value":16976},"].descriptorSet ",{"type":1873,"tag":2163,"props":16978,"children":16979},{"style":2169},[16980],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":16982,"children":16983},{"style":3995},[16984],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":16986,"children":16987},{"style":2180},[16988],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":16990,"children":16991},{"style":8855},[16992],{"type":1878,"value":16993}," // Equivalent to RegisterSpace\n",{"type":1873,"tag":2163,"props":16995,"children":16996},{"class":2165,"line":66},[16997,17001,17005,17009,17014,17018,17022,17026],{"type":1873,"tag":2163,"props":16998,"children":16999},{"style":2701},[17000],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17002,"children":17003},{"style":2180},[17004],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17006,"children":17007},{"style":3995},[17008],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":17010,"children":17011},{"style":2180},[17012],{"type":1878,"value":17013},"].bindingCount ",{"type":1873,"tag":2163,"props":17015,"children":17016},{"style":2169},[17017],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17019,"children":17020},{"style":3995},[17021],{"type":1878,"value":4731},{"type":1873,"tag":2163,"props":17023,"children":17024},{"style":2180},[17025],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17027,"children":17028},{"style":8855},[17029],{"type":1878,"value":17030}," // Equivalent to NumDescriptors\n",{"type":1873,"tag":2163,"props":17032,"children":17033},{"class":2165,"line":70},[17034,17038,17042,17046,17050,17054,17058,17062],{"type":1873,"tag":2163,"props":17035,"children":17036},{"style":2701},[17037],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17039,"children":17040},{"style":2180},[17041],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17043,"children":17044},{"style":3995},[17045],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":17047,"children":17048},{"style":2180},[17049],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":17051,"children":17052},{"style":2169},[17053],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17055,"children":17056},{"style":3995},[17057],{"type":1878,"value":4689},{"type":1873,"tag":2163,"props":17059,"children":17060},{"style":2180},[17061],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17063,"children":17064},{"style":8855},[17065],{"type":1878,"value":17066}," // Equivalent to BaseShaderRegister\n",{"type":1873,"tag":2163,"props":17068,"children":17069},{"class":2165,"line":74},[17070,17074,17078,17082,17087,17091],{"type":1873,"tag":2163,"props":17071,"children":17072},{"style":2701},[17073],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17075,"children":17076},{"style":2180},[17077],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17079,"children":17080},{"style":3995},[17081],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":17083,"children":17084},{"style":2180},[17085],{"type":1878,"value":17086},"].resourceMask ",{"type":1873,"tag":2163,"props":17088,"children":17089},{"style":2169},[17090],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17092,"children":17093},{"style":2180},[17094],{"type":1878,"value":17095}," srvMask;\n",{"type":1873,"tag":2163,"props":17097,"children":17098},{"class":2165,"line":78},[17099,17103,17107,17111,17115,17119],{"type":1873,"tag":2163,"props":17100,"children":17101},{"style":2701},[17102],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17104,"children":17105},{"style":2180},[17106],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17108,"children":17109},{"style":3995},[17110],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":17112,"children":17113},{"style":2180},[17114],{"type":1878,"value":13223},{"type":1873,"tag":2163,"props":17116,"children":17117},{"style":2169},[17118],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17120,"children":17121},{"style":2180},[17122],{"type":1878,"value":17123}," VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT;\n",{"type":1873,"tag":2163,"props":17125,"children":17126},{"class":2165,"line":82},[17127,17131,17135,17139,17143,17147,17151,17155],{"type":1873,"tag":2163,"props":17128,"children":17129},{"style":2701},[17130],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17132,"children":17133},{"style":2180},[17134],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17136,"children":17137},{"style":3995},[17138],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":17140,"children":17141},{"style":2180},[17142],{"type":1878,"value":12797},{"type":1873,"tag":2163,"props":17144,"children":17145},{"style":2169},[17146],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17148,"children":17149},{"style":3995},[17150],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":17152,"children":17153},{"style":2180},[17154],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17156,"children":17157},{"style":8855},[17158],{"type":1878,"value":17159}," // Equivalent to OffsetInDescriptorsFromTableStart\n",{"type":1873,"tag":2163,"props":17161,"children":17162},{"class":2165,"line":86},[17163,17167,17171,17175,17179,17183,17187,17191],{"type":1873,"tag":2163,"props":17164,"children":17165},{"style":2701},[17166],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17168,"children":17169},{"style":2180},[17170],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17172,"children":17173},{"style":3995},[17174],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":17176,"children":17177},{"style":2180},[17178],{"type":1878,"value":12829},{"type":1873,"tag":2163,"props":17180,"children":17181},{"style":2169},[17182],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17184,"children":17185},{"style":3995},[17186],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":17188,"children":17189},{"style":2180},[17190],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17192,"children":17193},{"style":8855},[17194],{"type":1878,"value":17195}," // Push data is a byte offset\n",{"type":1873,"tag":2163,"props":17197,"children":17198},{"class":2165,"line":90},[17199,17203,17207,17211,17215,17219,17223,17227],{"type":1873,"tag":2163,"props":17200,"children":17201},{"style":2701},[17202],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17204,"children":17205},{"style":2180},[17206],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17208,"children":17209},{"style":3995},[17210],{"type":1878,"value":11216},{"type":1873,"tag":2163,"props":17212,"children":17213},{"style":2180},[17214],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":17216,"children":17217},{"style":2169},[17218],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17220,"children":17221},{"style":3995},[17222],{"type":1878,"value":12564},{"type":1873,"tag":2163,"props":17224,"children":17225},{"style":2180},[17226],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17228,"children":17229},{"style":8855},[17230],{"type":1878,"value":17231}," // No grouping of descriptor tables, so entries for the same table map to the same push constant offset.\n",{"type":1873,"tag":2163,"props":17233,"children":17234},{"class":2165,"line":94},[17235],{"type":1873,"tag":2163,"props":17236,"children":17237},{"emptyLinePlaceholder":232},[17238],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":17240,"children":17241},{"class":2165,"line":98},[17242],{"type":1873,"tag":2163,"props":17243,"children":17244},{"style":8855},[17245],{"type":1878,"value":16206},{"type":1873,"tag":2163,"props":17247,"children":17248},{"class":2165,"line":102},[17249,17253,17257,17261,17265,17269],{"type":1873,"tag":2163,"props":17250,"children":17251},{"style":2701},[17252],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17254,"children":17255},{"style":2180},[17256],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17258,"children":17259},{"style":3995},[17260],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17262,"children":17263},{"style":2180},[17264],{"type":1878,"value":16948},{"type":1873,"tag":2163,"props":17266,"children":17267},{"style":2169},[17268],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17270,"children":17271},{"style":2180},[17272],{"type":1878,"value":12352},{"type":1873,"tag":2163,"props":17274,"children":17275},{"class":2165,"line":106},[17276,17280,17284,17288,17292,17296,17300,17304],{"type":1873,"tag":2163,"props":17277,"children":17278},{"style":2701},[17279],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17281,"children":17282},{"style":2180},[17283],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17285,"children":17286},{"style":3995},[17287],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17289,"children":17290},{"style":2180},[17291],{"type":1878,"value":16976},{"type":1873,"tag":2163,"props":17293,"children":17294},{"style":2169},[17295],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17297,"children":17298},{"style":3995},[17299],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":17301,"children":17302},{"style":2180},[17303],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17305,"children":17306},{"style":8855},[17307],{"type":1878,"value":16993},{"type":1873,"tag":2163,"props":17309,"children":17310},{"class":2165,"line":110},[17311,17315,17319,17323,17327,17331,17335,17339],{"type":1873,"tag":2163,"props":17312,"children":17313},{"style":2701},[17314],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17316,"children":17317},{"style":2180},[17318],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17320,"children":17321},{"style":3995},[17322],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17324,"children":17325},{"style":2180},[17326],{"type":1878,"value":17013},{"type":1873,"tag":2163,"props":17328,"children":17329},{"style":2169},[17330],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17332,"children":17333},{"style":3995},[17334],{"type":1878,"value":4752},{"type":1873,"tag":2163,"props":17336,"children":17337},{"style":2180},[17338],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17340,"children":17341},{"style":8855},[17342],{"type":1878,"value":17030},{"type":1873,"tag":2163,"props":17344,"children":17345},{"class":2165,"line":114},[17346,17350,17354,17358,17362,17366,17371,17375],{"type":1873,"tag":2163,"props":17347,"children":17348},{"style":2701},[17349],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17351,"children":17352},{"style":2180},[17353],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17355,"children":17356},{"style":3995},[17357],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17359,"children":17360},{"style":2180},[17361],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":17363,"children":17364},{"style":2169},[17365],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17367,"children":17368},{"style":3995},[17369],{"type":1878,"value":17370}," 19",{"type":1873,"tag":2163,"props":17372,"children":17373},{"style":2180},[17374],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17376,"children":17377},{"style":8855},[17378],{"type":1878,"value":17379}," // Equivalent to BaseShaderRegister\n",{"type":1873,"tag":2163,"props":17381,"children":17382},{"class":2165,"line":118},[17383,17387,17391,17395,17399,17403],{"type":1873,"tag":2163,"props":17384,"children":17385},{"style":2701},[17386],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17388,"children":17389},{"style":2180},[17390],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17392,"children":17393},{"style":3995},[17394],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17396,"children":17397},{"style":2180},[17398],{"type":1878,"value":17086},{"type":1873,"tag":2163,"props":17400,"children":17401},{"style":2169},[17402],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17404,"children":17405},{"style":2180},[17406],{"type":1878,"value":17407}," uavMask;\n",{"type":1873,"tag":2163,"props":17409,"children":17410},{"class":2165,"line":122},[17411,17415,17419,17423,17427,17431],{"type":1873,"tag":2163,"props":17412,"children":17413},{"style":2701},[17414],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17416,"children":17417},{"style":2180},[17418],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17420,"children":17421},{"style":3995},[17422],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17424,"children":17425},{"style":2180},[17426],{"type":1878,"value":13223},{"type":1873,"tag":2163,"props":17428,"children":17429},{"style":2169},[17430],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17432,"children":17433},{"style":2180},[17434],{"type":1878,"value":17123},{"type":1873,"tag":2163,"props":17436,"children":17437},{"class":2165,"line":126},[17438,17442,17446,17450,17454,17458,17463,17467,17472],{"type":1873,"tag":2163,"props":17439,"children":17440},{"style":2701},[17441],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17443,"children":17444},{"style":2180},[17445],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17447,"children":17448},{"style":3995},[17449],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17451,"children":17452},{"style":2180},[17453],{"type":1878,"value":12797},{"type":1873,"tag":2163,"props":17455,"children":17456},{"style":2169},[17457],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17459,"children":17460},{"style":3995},[17461],{"type":1878,"value":17462}," 200",{"type":1873,"tag":2163,"props":17464,"children":17465},{"style":2169},[17466],{"type":1878,"value":12237},{"type":1873,"tag":2163,"props":17468,"children":17469},{"style":2180},[17470],{"type":1878,"value":17471}," imageDescriptorSize;",{"type":1873,"tag":2163,"props":17473,"children":17474},{"style":8855},[17475],{"type":1878,"value":17476}," // Equivalent to OffsetInDescriptorsFromTableStart\n",{"type":1873,"tag":2163,"props":17478,"children":17479},{"class":2165,"line":130},[17480,17484,17488,17492,17496,17500,17504,17508],{"type":1873,"tag":2163,"props":17481,"children":17482},{"style":2701},[17483],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17485,"children":17486},{"style":2180},[17487],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17489,"children":17490},{"style":3995},[17491],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17493,"children":17494},{"style":2180},[17495],{"type":1878,"value":12829},{"type":1873,"tag":2163,"props":17497,"children":17498},{"style":2169},[17499],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17501,"children":17502},{"style":3995},[17503],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":17505,"children":17506},{"style":2180},[17507],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17509,"children":17510},{"style":8855},[17511],{"type":1878,"value":17195},{"type":1873,"tag":2163,"props":17513,"children":17514},{"class":2165,"line":134},[17515,17519,17523,17527,17531,17535,17539,17543],{"type":1873,"tag":2163,"props":17516,"children":17517},{"style":2701},[17518],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17520,"children":17521},{"style":2180},[17522],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17524,"children":17525},{"style":3995},[17526],{"type":1878,"value":11416},{"type":1873,"tag":2163,"props":17528,"children":17529},{"style":2180},[17530],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":17532,"children":17533},{"style":2169},[17534],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17536,"children":17537},{"style":3995},[17538],{"type":1878,"value":13928},{"type":1873,"tag":2163,"props":17540,"children":17541},{"style":2180},[17542],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17544,"children":17545},{"style":8855},[17546],{"type":1878,"value":17231},{"type":1873,"tag":2163,"props":17548,"children":17549},{"class":2165,"line":138},[17550],{"type":1873,"tag":2163,"props":17551,"children":17552},{"emptyLinePlaceholder":232},[17553],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":17555,"children":17556},{"class":2165,"line":142},[17557,17561,17565,17569,17573,17577],{"type":1873,"tag":2163,"props":17558,"children":17559},{"style":2701},[17560],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17562,"children":17563},{"style":2180},[17564],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17566,"children":17567},{"style":3995},[17568],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17570,"children":17571},{"style":2180},[17572],{"type":1878,"value":16948},{"type":1873,"tag":2163,"props":17574,"children":17575},{"style":2169},[17576],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17578,"children":17579},{"style":2180},[17580],{"type":1878,"value":12352},{"type":1873,"tag":2163,"props":17582,"children":17583},{"class":2165,"line":146},[17584,17588,17592,17596,17600,17604,17608,17612],{"type":1873,"tag":2163,"props":17585,"children":17586},{"style":2701},[17587],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17589,"children":17590},{"style":2180},[17591],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17593,"children":17594},{"style":3995},[17595],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17597,"children":17598},{"style":2180},[17599],{"type":1878,"value":16976},{"type":1873,"tag":2163,"props":17601,"children":17602},{"style":2169},[17603],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17605,"children":17606},{"style":3995},[17607],{"type":1878,"value":4689},{"type":1873,"tag":2163,"props":17609,"children":17610},{"style":2180},[17611],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17613,"children":17614},{"style":8855},[17615],{"type":1878,"value":16993},{"type":1873,"tag":2163,"props":17617,"children":17618},{"class":2165,"line":150},[17619,17623,17627,17631,17635,17639,17643,17647],{"type":1873,"tag":2163,"props":17620,"children":17621},{"style":2701},[17622],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17624,"children":17625},{"style":2180},[17626],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17628,"children":17629},{"style":3995},[17630],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17632,"children":17633},{"style":2180},[17634],{"type":1878,"value":17013},{"type":1873,"tag":2163,"props":17636,"children":17637},{"style":2169},[17638],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17640,"children":17641},{"style":3995},[17642],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":17644,"children":17645},{"style":2180},[17646],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17648,"children":17649},{"style":8855},[17650],{"type":1878,"value":17030},{"type":1873,"tag":2163,"props":17652,"children":17653},{"class":2165,"line":154},[17654,17658,17662,17666,17670,17674,17678,17682],{"type":1873,"tag":2163,"props":17655,"children":17656},{"style":2701},[17657],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17659,"children":17660},{"style":2180},[17661],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17663,"children":17664},{"style":3995},[17665],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17667,"children":17668},{"style":2180},[17669],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":17671,"children":17672},{"style":2169},[17673],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17675,"children":17676},{"style":3995},[17677],{"type":1878,"value":4689},{"type":1873,"tag":2163,"props":17679,"children":17680},{"style":2180},[17681],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17683,"children":17684},{"style":8855},[17685],{"type":1878,"value":17066},{"type":1873,"tag":2163,"props":17687,"children":17688},{"class":2165,"line":158},[17689,17693,17697,17701,17705,17709],{"type":1873,"tag":2163,"props":17690,"children":17691},{"style":2701},[17692],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17694,"children":17695},{"style":2180},[17696],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17698,"children":17699},{"style":3995},[17700],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17702,"children":17703},{"style":2180},[17704],{"type":1878,"value":17086},{"type":1873,"tag":2163,"props":17706,"children":17707},{"style":2169},[17708],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17710,"children":17711},{"style":2180},[17712],{"type":1878,"value":17095},{"type":1873,"tag":2163,"props":17714,"children":17715},{"class":2165,"line":162},[17716,17720,17724,17728,17732,17736],{"type":1873,"tag":2163,"props":17717,"children":17718},{"style":2701},[17719],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17721,"children":17722},{"style":2180},[17723],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17725,"children":17726},{"style":3995},[17727],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17729,"children":17730},{"style":2180},[17731],{"type":1878,"value":13223},{"type":1873,"tag":2163,"props":17733,"children":17734},{"style":2169},[17735],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17737,"children":17738},{"style":2180},[17739],{"type":1878,"value":17123},{"type":1873,"tag":2163,"props":17741,"children":17742},{"class":2165,"line":166},[17743,17747,17751,17755,17759,17763,17768,17772,17776],{"type":1873,"tag":2163,"props":17744,"children":17745},{"style":2701},[17746],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17748,"children":17749},{"style":2180},[17750],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17752,"children":17753},{"style":3995},[17754],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17756,"children":17757},{"style":2180},[17758],{"type":1878,"value":12797},{"type":1873,"tag":2163,"props":17760,"children":17761},{"style":2169},[17762],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17764,"children":17765},{"style":3995},[17766],{"type":1878,"value":17767}," 50",{"type":1873,"tag":2163,"props":17769,"children":17770},{"style":2169},[17771],{"type":1878,"value":12237},{"type":1873,"tag":2163,"props":17773,"children":17774},{"style":2180},[17775],{"type":1878,"value":17471},{"type":1873,"tag":2163,"props":17777,"children":17778},{"style":8855},[17779],{"type":1878,"value":17780}," // Equivalent to OffsetInDescriptorsFromTableStart\n",{"type":1873,"tag":2163,"props":17782,"children":17783},{"class":2165,"line":170},[17784,17788,17792,17796,17800,17804,17808,17812],{"type":1873,"tag":2163,"props":17785,"children":17786},{"style":2701},[17787],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17789,"children":17790},{"style":2180},[17791],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17793,"children":17794},{"style":3995},[17795],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17797,"children":17798},{"style":2180},[17799],{"type":1878,"value":12829},{"type":1873,"tag":2163,"props":17801,"children":17802},{"style":2169},[17803],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17805,"children":17806},{"style":3995},[17807],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":17809,"children":17810},{"style":2180},[17811],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17813,"children":17814},{"style":8855},[17815],{"type":1878,"value":17195},{"type":1873,"tag":2163,"props":17817,"children":17818},{"class":2165,"line":174},[17819,17823,17827,17831,17835,17839,17843,17847],{"type":1873,"tag":2163,"props":17820,"children":17821},{"style":2701},[17822],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17824,"children":17825},{"style":2180},[17826],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17828,"children":17829},{"style":3995},[17830],{"type":1878,"value":10219},{"type":1873,"tag":2163,"props":17832,"children":17833},{"style":2180},[17834],{"type":1878,"value":12895},{"type":1873,"tag":2163,"props":17836,"children":17837},{"style":2169},[17838],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17840,"children":17841},{"style":3995},[17842],{"type":1878,"value":13928},{"type":1873,"tag":2163,"props":17844,"children":17845},{"style":2180},[17846],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17848,"children":17849},{"style":8855},[17850],{"type":1878,"value":17851}," // No grouping of descriptor tables, so entries for the same table map to the same push constant offset.\n",{"type":1873,"tag":2163,"props":17853,"children":17854},{"class":2165,"line":178},[17855],{"type":1873,"tag":2163,"props":17856,"children":17857},{"emptyLinePlaceholder":232},[17858],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":17860,"children":17861},{"class":2165,"line":182},[17862],{"type":1873,"tag":2163,"props":17863,"children":17864},{"style":8855},[17865],{"type":1878,"value":16329},{"type":1873,"tag":2163,"props":17867,"children":17868},{"class":2165,"line":186},[17869,17873,17877,17881,17885,17889],{"type":1873,"tag":2163,"props":17870,"children":17871},{"style":2701},[17872],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17874,"children":17875},{"style":2180},[17876],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17878,"children":17879},{"style":3995},[17880],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":17882,"children":17883},{"style":2180},[17884],{"type":1878,"value":16948},{"type":1873,"tag":2163,"props":17886,"children":17887},{"style":2169},[17888],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17890,"children":17891},{"style":2180},[17892],{"type":1878,"value":12352},{"type":1873,"tag":2163,"props":17894,"children":17895},{"class":2165,"line":190},[17896,17900,17904,17908,17912,17916,17920,17924],{"type":1873,"tag":2163,"props":17897,"children":17898},{"style":2701},[17899],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17901,"children":17902},{"style":2180},[17903],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17905,"children":17906},{"style":3995},[17907],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":17909,"children":17910},{"style":2180},[17911],{"type":1878,"value":16976},{"type":1873,"tag":2163,"props":17913,"children":17914},{"style":2169},[17915],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17917,"children":17918},{"style":3995},[17919],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":17921,"children":17922},{"style":2180},[17923],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17925,"children":17926},{"style":8855},[17927],{"type":1878,"value":17928}," // Equivalent to RegisterSpace\n",{"type":1873,"tag":2163,"props":17930,"children":17931},{"class":2165,"line":194},[17932,17936,17940,17944,17948,17952,17956,17960],{"type":1873,"tag":2163,"props":17933,"children":17934},{"style":2701},[17935],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17937,"children":17938},{"style":2180},[17939],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17941,"children":17942},{"style":3995},[17943],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":17945,"children":17946},{"style":2180},[17947],{"type":1878,"value":17013},{"type":1873,"tag":2163,"props":17949,"children":17950},{"style":2169},[17951],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17953,"children":17954},{"style":3995},[17955],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":17957,"children":17958},{"style":2180},[17959],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17961,"children":17962},{"style":8855},[17963],{"type":1878,"value":17964}," // Always maps to a single CBV declaration in HLSL\n",{"type":1873,"tag":2163,"props":17966,"children":17967},{"class":2165,"line":198},[17968,17972,17976,17980,17984,17988,17992,17996],{"type":1873,"tag":2163,"props":17969,"children":17970},{"style":2701},[17971],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":17973,"children":17974},{"style":2180},[17975],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":17977,"children":17978},{"style":3995},[17979],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":17981,"children":17982},{"style":2180},[17983],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":17985,"children":17986},{"style":2169},[17987],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":17989,"children":17990},{"style":3995},[17991],{"type":1878,"value":16378},{"type":1873,"tag":2163,"props":17993,"children":17994},{"style":2180},[17995],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":17997,"children":17998},{"style":8855},[17999],{"type":1878,"value":18000}," // Equivalent to ShaderRegister\n",{"type":1873,"tag":2163,"props":18002,"children":18003},{"class":2165,"line":202},[18004,18008,18012,18016,18020,18024],{"type":1873,"tag":2163,"props":18005,"children":18006},{"style":2701},[18007],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18009,"children":18010},{"style":2180},[18011],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18013,"children":18014},{"style":3995},[18015],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":18017,"children":18018},{"style":2180},[18019],{"type":1878,"value":17086},{"type":1873,"tag":2163,"props":18021,"children":18022},{"style":2169},[18023],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18025,"children":18026},{"style":2180},[18027],{"type":1878,"value":18028}," cbvMask;\n",{"type":1873,"tag":2163,"props":18030,"children":18031},{"class":2165,"line":206},[18032,18036,18040,18044,18048,18052],{"type":1873,"tag":2163,"props":18033,"children":18034},{"style":2701},[18035],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18037,"children":18038},{"style":2180},[18039],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18041,"children":18042},{"style":3995},[18043],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":18045,"children":18046},{"style":2180},[18047],{"type":1878,"value":13223},{"type":1873,"tag":2163,"props":18049,"children":18050},{"style":2169},[18051],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18053,"children":18054},{"style":2180},[18055],{"type":1878,"value":18056}," VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT;\n",{"type":1873,"tag":2163,"props":18058,"children":18059},{"class":2165,"line":210},[18060,18064,18068,18072,18077,18081,18085,18089],{"type":1873,"tag":2163,"props":18061,"children":18062},{"style":2701},[18063],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18065,"children":18066},{"style":2180},[18067],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18069,"children":18070},{"style":3995},[18071],{"type":1878,"value":10585},{"type":1873,"tag":2163,"props":18073,"children":18074},{"style":2180},[18075],{"type":1878,"value":18076},"].sourceData.pushDataOffset ",{"type":1873,"tag":2163,"props":18078,"children":18079},{"style":2169},[18080],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18082,"children":18083},{"style":3995},[18084],{"type":1878,"value":4626},{"type":1873,"tag":2163,"props":18086,"children":18087},{"style":2180},[18088],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18090,"children":18091},{"style":8855},[18092],{"type":1878,"value":18093}," // Set to a user-specified offset. No need to say how many there are here.\n",{"type":1873,"tag":2163,"props":18095,"children":18096},{"class":2165,"line":214},[18097],{"type":1873,"tag":2163,"props":18098,"children":18099},{"emptyLinePlaceholder":232},[18100],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":18102,"children":18103},{"class":2165,"line":218},[18104],{"type":1873,"tag":2163,"props":18105,"children":18106},{"style":8855},[18107],{"type":1878,"value":16453},{"type":1873,"tag":2163,"props":18109,"children":18110},{"class":2165,"line":222},[18111,18115,18119,18123,18127,18131],{"type":1873,"tag":2163,"props":18112,"children":18113},{"style":2701},[18114],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18116,"children":18117},{"style":2180},[18118],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18120,"children":18121},{"style":3995},[18122],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":18124,"children":18125},{"style":2180},[18126],{"type":1878,"value":16948},{"type":1873,"tag":2163,"props":18128,"children":18129},{"style":2169},[18130],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18132,"children":18133},{"style":2180},[18134],{"type":1878,"value":12352},{"type":1873,"tag":2163,"props":18136,"children":18137},{"class":2165,"line":226},[18138,18142,18146,18150,18154,18158,18162,18166],{"type":1873,"tag":2163,"props":18139,"children":18140},{"style":2701},[18141],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18143,"children":18144},{"style":2180},[18145],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18147,"children":18148},{"style":3995},[18149],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":18151,"children":18152},{"style":2180},[18153],{"type":1878,"value":16976},{"type":1873,"tag":2163,"props":18155,"children":18156},{"style":2169},[18157],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18159,"children":18160},{"style":3995},[18161],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":18163,"children":18164},{"style":2180},[18165],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18167,"children":18168},{"style":8855},[18169],{"type":1878,"value":17928},{"type":1873,"tag":2163,"props":18171,"children":18172},{"class":2165,"line":1622},[18173,18177,18181,18185,18189,18193,18197,18201],{"type":1873,"tag":2163,"props":18174,"children":18175},{"style":2701},[18176],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18178,"children":18179},{"style":2180},[18180],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18182,"children":18183},{"style":3995},[18184],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":18186,"children":18187},{"style":2180},[18188],{"type":1878,"value":17013},{"type":1873,"tag":2163,"props":18190,"children":18191},{"style":2169},[18192],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18194,"children":18195},{"style":3995},[18196],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":18198,"children":18199},{"style":2180},[18200],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18202,"children":18203},{"style":8855},[18204],{"type":1878,"value":18205}," // Always maps to a single resource declaration in HLSL\n",{"type":1873,"tag":2163,"props":18207,"children":18208},{"class":2165,"line":1618},[18209,18213,18217,18221,18225,18229,18233,18237],{"type":1873,"tag":2163,"props":18210,"children":18211},{"style":2701},[18212],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18214,"children":18215},{"style":2180},[18216],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18218,"children":18219},{"style":3995},[18220],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":18222,"children":18223},{"style":2180},[18224],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":18226,"children":18227},{"style":2169},[18228],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18230,"children":18231},{"style":3995},[18232],{"type":1878,"value":16502},{"type":1873,"tag":2163,"props":18234,"children":18235},{"style":2180},[18236],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18238,"children":18239},{"style":8855},[18240],{"type":1878,"value":18000},{"type":1873,"tag":2163,"props":18242,"children":18243},{"class":2165,"line":1629},[18244,18248,18252,18256,18260,18264],{"type":1873,"tag":2163,"props":18245,"children":18246},{"style":2701},[18247],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18249,"children":18250},{"style":2180},[18251],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18253,"children":18254},{"style":3995},[18255],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":18257,"children":18258},{"style":2180},[18259],{"type":1878,"value":17086},{"type":1873,"tag":2163,"props":18261,"children":18262},{"style":2169},[18263],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18265,"children":18266},{"style":2180},[18267],{"type":1878,"value":17407},{"type":1873,"tag":2163,"props":18269,"children":18270},{"class":2165,"line":1753},[18271,18275,18279,18283,18287,18291],{"type":1873,"tag":2163,"props":18272,"children":18273},{"style":2701},[18274],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18276,"children":18277},{"style":2180},[18278],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18280,"children":18281},{"style":3995},[18282],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":18284,"children":18285},{"style":2180},[18286],{"type":1878,"value":13223},{"type":1873,"tag":2163,"props":18288,"children":18289},{"style":2169},[18290],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18292,"children":18293},{"style":2180},[18294],{"type":1878,"value":18295}," VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT;\n",{"type":1873,"tag":2163,"props":18297,"children":18298},{"class":2165,"line":1184},[18299,18303,18307,18311,18316,18320,18324,18328],{"type":1873,"tag":2163,"props":18300,"children":18301},{"style":2701},[18302],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18304,"children":18305},{"style":2180},[18306],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18308,"children":18309},{"style":3995},[18310],{"type":1878,"value":11156},{"type":1873,"tag":2163,"props":18312,"children":18313},{"style":2180},[18314],{"type":1878,"value":18315},"].sourceData.pushAddressOffset ",{"type":1873,"tag":2163,"props":18317,"children":18318},{"style":2169},[18319],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18321,"children":18322},{"style":3995},[18323],{"type":1878,"value":4794},{"type":1873,"tag":2163,"props":18325,"children":18326},{"style":2180},[18327],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18329,"children":18330},{"style":8855},[18331],{"type":1878,"value":18332}," // Set to a user-specified offset.\n",{"type":1873,"tag":2163,"props":18334,"children":18335},{"class":2165,"line":1107},[18336],{"type":1873,"tag":2163,"props":18337,"children":18338},{"emptyLinePlaceholder":232},[18339],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":18341,"children":18342},{"class":2165,"line":939},[18343],{"type":1873,"tag":2163,"props":18344,"children":18345},{"style":8855},[18346],{"type":1878,"value":16549},{"type":1873,"tag":2163,"props":18348,"children":18349},{"class":2165,"line":1517},[18350,18354,18358,18362,18366,18370],{"type":1873,"tag":2163,"props":18351,"children":18352},{"style":2701},[18353],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18355,"children":18356},{"style":2180},[18357],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18359,"children":18360},{"style":3995},[18361],{"type":1878,"value":15764},{"type":1873,"tag":2163,"props":18363,"children":18364},{"style":2180},[18365],{"type":1878,"value":16948},{"type":1873,"tag":2163,"props":18367,"children":18368},{"style":2169},[18369],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18371,"children":18372},{"style":2180},[18373],{"type":1878,"value":12352},{"type":1873,"tag":2163,"props":18375,"children":18376},{"class":2165,"line":1332},[18377,18381,18385,18389,18393,18397,18401,18405],{"type":1873,"tag":2163,"props":18378,"children":18379},{"style":2701},[18380],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18382,"children":18383},{"style":2180},[18384],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18386,"children":18387},{"style":3995},[18388],{"type":1878,"value":15764},{"type":1873,"tag":2163,"props":18390,"children":18391},{"style":2180},[18392],{"type":1878,"value":16976},{"type":1873,"tag":2163,"props":18394,"children":18395},{"style":2169},[18396],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18398,"children":18399},{"style":3995},[18400],{"type":1878,"value":4668},{"type":1873,"tag":2163,"props":18402,"children":18403},{"style":2180},[18404],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18406,"children":18407},{"style":8855},[18408],{"type":1878,"value":17928},{"type":1873,"tag":2163,"props":18410,"children":18411},{"class":2165,"line":877},[18412,18416,18420,18424,18428,18432,18436,18440],{"type":1873,"tag":2163,"props":18413,"children":18414},{"style":2701},[18415],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18417,"children":18418},{"style":2180},[18419],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18421,"children":18422},{"style":3995},[18423],{"type":1878,"value":15764},{"type":1873,"tag":2163,"props":18425,"children":18426},{"style":2180},[18427],{"type":1878,"value":17013},{"type":1873,"tag":2163,"props":18429,"children":18430},{"style":2169},[18431],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18433,"children":18434},{"style":3995},[18435],{"type":1878,"value":4647},{"type":1873,"tag":2163,"props":18437,"children":18438},{"style":2180},[18439],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18441,"children":18442},{"style":8855},[18443],{"type":1878,"value":18205},{"type":1873,"tag":2163,"props":18445,"children":18446},{"class":2165,"line":883},[18447,18451,18455,18459,18463,18467,18471,18475],{"type":1873,"tag":2163,"props":18448,"children":18449},{"style":2701},[18450],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18452,"children":18453},{"style":2180},[18454],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18456,"children":18457},{"style":3995},[18458],{"type":1878,"value":15764},{"type":1873,"tag":2163,"props":18460,"children":18461},{"style":2180},[18462],{"type":1878,"value":12727},{"type":1873,"tag":2163,"props":18464,"children":18465},{"style":2169},[18466],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18468,"children":18469},{"style":3995},[18470],{"type":1878,"value":16597},{"type":1873,"tag":2163,"props":18472,"children":18473},{"style":2180},[18474],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18476,"children":18477},{"style":8855},[18478],{"type":1878,"value":18000},{"type":1873,"tag":2163,"props":18480,"children":18481},{"class":2165,"line":922},[18482,18486,18490,18494,18498,18502],{"type":1873,"tag":2163,"props":18483,"children":18484},{"style":2701},[18485],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18487,"children":18488},{"style":2180},[18489],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18491,"children":18492},{"style":3995},[18493],{"type":1878,"value":15764},{"type":1873,"tag":2163,"props":18495,"children":18496},{"style":2180},[18497],{"type":1878,"value":17086},{"type":1873,"tag":2163,"props":18499,"children":18500},{"style":2169},[18501],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18503,"children":18504},{"style":2180},[18505],{"type":1878,"value":18506}," vbvMask;\n",{"type":1873,"tag":2163,"props":18508,"children":18509},{"class":2165,"line":427},[18510,18514,18518,18522,18526,18530],{"type":1873,"tag":2163,"props":18511,"children":18512},{"style":2701},[18513],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18515,"children":18516},{"style":2180},[18517],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18519,"children":18520},{"style":3995},[18521],{"type":1878,"value":15764},{"type":1873,"tag":2163,"props":18523,"children":18524},{"style":2180},[18525],{"type":1878,"value":13223},{"type":1873,"tag":2163,"props":18527,"children":18528},{"style":2169},[18529],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18531,"children":18532},{"style":2180},[18533],{"type":1878,"value":18295},{"type":1873,"tag":2163,"props":18535,"children":18536},{"class":2165,"line":779},[18537,18541,18545,18549,18553,18557,18562,18566],{"type":1873,"tag":2163,"props":18538,"children":18539},{"style":2701},[18540],{"type":1878,"value":12293},{"type":1873,"tag":2163,"props":18542,"children":18543},{"style":2180},[18544],{"type":1878,"value":6540},{"type":1873,"tag":2163,"props":18546,"children":18547},{"style":3995},[18548],{"type":1878,"value":15764},{"type":1873,"tag":2163,"props":18550,"children":18551},{"style":2180},[18552],{"type":1878,"value":18315},{"type":1873,"tag":2163,"props":18554,"children":18555},{"style":2169},[18556],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18558,"children":18559},{"style":3995},[18560],{"type":1878,"value":18561}," 16",{"type":1873,"tag":2163,"props":18563,"children":18564},{"style":2180},[18565],{"type":1878,"value":12275},{"type":1873,"tag":2163,"props":18567,"children":18568},{"style":8855},[18569],{"type":1878,"value":18332},{"type":1873,"tag":2163,"props":18571,"children":18572},{"class":2165,"line":1211},[18573],{"type":1873,"tag":2163,"props":18574,"children":18575},{"emptyLinePlaceholder":232},[18576],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":18578,"children":18579},{"class":2165,"line":1111},[18580,18585,18589],{"type":1873,"tag":2163,"props":18581,"children":18582},{"style":2180},[18583],{"type":1878,"value":18584},"VkShaderDescriptorSetAndBindingMappingInfoEXT rootSignatureDesc ",{"type":1873,"tag":2163,"props":18586,"children":18587},{"style":2169},[18588],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18590,"children":18591},{"style":2180},[18592],{"type":1878,"value":12021},{"type":1873,"tag":2163,"props":18594,"children":18595},{"class":2165,"line":1147},[18596,18600,18604],{"type":1873,"tag":2163,"props":18597,"children":18598},{"style":2180},[18599],{"type":1878,"value":12126},{"type":1873,"tag":2163,"props":18601,"children":18602},{"style":2169},[18603],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18605,"children":18606},{"style":2180},[18607],{"type":1878,"value":13596},{"type":1873,"tag":2163,"props":18609,"children":18610},{"class":2165,"line":1143},[18611,18615,18619,18623],{"type":1873,"tag":2163,"props":18612,"children":18613},{"style":2180},[18614],{"type":1878,"value":12143},{"type":1873,"tag":2163,"props":18616,"children":18617},{"style":2169},[18618],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18620,"children":18621},{"style":3995},[18622],{"type":1878,"value":11349},{"type":1873,"tag":2163,"props":18624,"children":18625},{"style":2180},[18626],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":18628,"children":18629},{"class":2165,"line":1152},[18630,18634,18638,18642],{"type":1873,"tag":2163,"props":18631,"children":18632},{"style":2180},[18633],{"type":1878,"value":13623},{"type":1873,"tag":2163,"props":18635,"children":18636},{"style":2169},[18637],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18639,"children":18640},{"style":3995},[18641],{"type":1878,"value":4752},{"type":1873,"tag":2163,"props":18643,"children":18644},{"style":2180},[18645],{"type":1878,"value":2708},{"type":1873,"tag":2163,"props":18647,"children":18648},{"class":2165,"line":1150},[18649,18653,18657],{"type":1873,"tag":2163,"props":18650,"children":18651},{"style":2180},[18652],{"type":1878,"value":13643},{"type":1873,"tag":2163,"props":18654,"children":18655},{"style":2169},[18656],{"type":1878,"value":3987},{"type":1873,"tag":2163,"props":18658,"children":18659},{"style":2180},[18660],{"type":1878,"value":13652},{"type":1873,"tag":1874,"props":18662,"children":18663},{},[18664],{"type":1878,"value":18665},"This should be a substantially cleaner mapping than what was previously possible with core Vulkan.",{"type":1873,"tag":2079,"props":18667,"children":18669},{"id":18668},"_local_root_signatures",[18670],{"type":1878,"value":18671},"Local Root Signatures",{"type":1873,"tag":1874,"props":18673,"children":18674},{},[18675,18677,18683,18685,18691],{"type":1878,"value":18676},"Local root signatures can be emulated in the exact same way as the global root signatures, but using the ",{"type":1873,"tag":2159,"props":18678,"children":18680},{"className":18679},[],[18681],{"type":1878,"value":18682},"SHADER_RESOURCE",{"type":1878,"value":18684}," mappings instead of ",{"type":1873,"tag":2159,"props":18686,"children":18688},{"className":18687},[],[18689],{"type":1878,"value":18690},"PUSH",{"type":1878,"value":18692}," mappings.",{"type":1873,"tag":1874,"props":18694,"children":18695},{},[18696,18698,18703,18705,18710,18712,18717,18718,18723,18724,18729,18731,18736,18737,18742,18743,18748],{"type":1878,"value":18697},"Taking the same example as ",{"type":1873,"tag":1921,"props":18699,"children":18701},{"href":18700},"/404#_example_root_signature_to_vulkan_mappings",[18702],{"type":1878,"value":15721},{"type":1878,"value":18704}," above, but assuming the DirectX portion defines a local heap, the code for mapping that in Vulkan will be identical other than the ",{"type":1873,"tag":2159,"props":18706,"children":18708},{"className":18707},[],[18709],{"type":1878,"value":18682},{"type":1878,"value":18711}," mapping enums.\nUses of ",{"type":1873,"tag":2159,"props":18713,"children":18715},{"className":18714},[],[18716],{"type":1878,"value":6852},{"type":1878,"value":3350},{"type":1873,"tag":2159,"props":18719,"children":18721},{"className":18720},[],[18722],{"type":1878,"value":7065},{"type":1878,"value":4462},{"type":1873,"tag":2159,"props":18725,"children":18727},{"className":18726},[],[18728],{"type":1878,"value":7110},{"type":1878,"value":18730}," would instead become ",{"type":1873,"tag":2159,"props":18732,"children":18734},{"className":18733},[],[18735],{"type":1878,"value":7148},{"type":1878,"value":3350},{"type":1873,"tag":2159,"props":18738,"children":18740},{"className":18739},[],[18741],{"type":1878,"value":7170},{"type":1878,"value":4462},{"type":1873,"tag":2159,"props":18744,"children":18746},{"className":18745},[],[18747],{"type":1878,"value":7190},{"type":1878,"value":18749},", respectively.",{"type":1873,"tag":2079,"props":18751,"children":18753},{"id":18752},"_shader_model_6_6_samplerheap_and_resourceheap",[18754],{"type":1878,"value":18755},"Shader Model 6.6 - SamplerHeap and ResourceHeap",{"type":1873,"tag":1874,"props":18757,"children":18758},{},[18759,18761,18768,18770,18776],{"type":1878,"value":18760},"To map this functionality to ",{"type":1873,"tag":1921,"props":18762,"children":18765},{"href":18763,"rel":18764},"https://microsoft.github.io/DirectX-Specs/d3d/HLSL_SM_6_6_DynamicResources.html",[1925],[18766],{"type":1878,"value":18767},"HLSL Shader Model 6.6’s resource and sampler heaps",{"type":1878,"value":18769}," efficiently, the ",{"type":1873,"tag":1921,"props":18771,"children":18773},{"href":18772},"/404#Example:%20Heap%20declarations",[18774],{"type":1878,"value":18775},"heap declarations in the earlier example",{"type":1878,"value":18777}," are used.",{"type":1873,"tag":1874,"props":18779,"children":18780},{},[18781],{"type":1878,"value":18782},"The correct underlying heap in the API will be selected by the implementation at the point of access, based on the resource that is accessed.\nFor example, the following hlsl code:",{"type":1873,"tag":2151,"props":18784,"children":18788},{"className":18785,"code":18786,"language":18787,"meta":2156,"style":2156},"language-hlsl shiki shiki-themes github-light-default github-dark-default","Texture2D\u003Cfloat4> myTexture = ResourceDescriptorHeap[texIdx];\n","hlsl",[18789],{"type":1873,"tag":2159,"props":18790,"children":18791},{"__ignoreMap":2156},[18792],{"type":1873,"tag":2163,"props":18793,"children":18794},{"class":2165,"line":10},[18795],{"type":1873,"tag":2163,"props":18796,"children":18797},{},[18798],{"type":1878,"value":18786},{"type":1873,"tag":1874,"props":18800,"children":18801},{},[18802],{"type":1878,"value":18803},"will become this in SPIR-V:",{"type":1873,"tag":2151,"props":18805,"children":18809},{"className":18806,"code":18807,"language":18808,"meta":2156,"style":2156},"language-spirv shiki shiki-themes github-light-default github-dark-default"," OpDecorateId %placeholder_image_array_type ArrayStrideIdEXT %resource_size\n\n %void_type = OpTypeVoid\n %size_type = OpTypeInt 32 0\n %placeholder_image_type = OpTypeImage %void_type 2D 2 0 0 0 Unknown\n %placeholder_buffer_type = OpTypeBufferEXT Uniform\n %placeholder_image_array_type = OpTypeRuntimeArray %placeholder_image_type\n %image_size = OpConstantSizeOfEXT %size_type %placeholder_image_type\n %buffer_size = OpConstantSizeOfEXT %size_type %placeholder_buffer_type\n %image_is_bigger = OpSpecConstantOp OpUGreaterThan %boolean_type %image_size %buffer_size\n %resource_size = OpSpecConstantOp OpSelect %size_type %image_is_bigger %image_size %buffer_size\n %uniformconstant_ptr_type = OpTypeUntypedPointerKHR UniformConstant\n\n %myTexture_ptr = OpUntypedAccessChainKHR %uniformconstant_ptr_type %placeholder_image_array_type %image_heap %texIdx\n\n %texture2D_float4_type = OpTypeImage %float4_type 1 2 0 0 0 1 Unknown\n %myTexture = OpLoad %texture2D_float4_type %myTexture_ptr\n","spirv",[18810],{"type":1873,"tag":2159,"props":18811,"children":18812},{"__ignoreMap":2156},[18813,18821,18828,18836,18844,18852,18860,18868,18876,18884,18892,18900,18908,18915,18923,18930,18938],{"type":1873,"tag":2163,"props":18814,"children":18815},{"class":2165,"line":10},[18816],{"type":1873,"tag":2163,"props":18817,"children":18818},{},[18819],{"type":1878,"value":18820}," OpDecorateId %placeholder_image_array_type ArrayStrideIdEXT %resource_size\n",{"type":1873,"tag":2163,"props":18822,"children":18823},{"class":2165,"line":14},[18824],{"type":1873,"tag":2163,"props":18825,"children":18826},{"emptyLinePlaceholder":232},[18827],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":18829,"children":18830},{"class":2165,"line":18},[18831],{"type":1873,"tag":2163,"props":18832,"children":18833},{},[18834],{"type":1878,"value":18835}," %void_type = OpTypeVoid\n",{"type":1873,"tag":2163,"props":18837,"children":18838},{"class":2165,"line":22},[18839],{"type":1873,"tag":2163,"props":18840,"children":18841},{},[18842],{"type":1878,"value":18843}," %size_type = OpTypeInt 32 0\n",{"type":1873,"tag":2163,"props":18845,"children":18846},{"class":2165,"line":26},[18847],{"type":1873,"tag":2163,"props":18848,"children":18849},{},[18850],{"type":1878,"value":18851}," %placeholder_image_type = OpTypeImage %void_type 2D 2 0 0 0 Unknown\n",{"type":1873,"tag":2163,"props":18853,"children":18854},{"class":2165,"line":30},[18855],{"type":1873,"tag":2163,"props":18856,"children":18857},{},[18858],{"type":1878,"value":18859}," %placeholder_buffer_type = OpTypeBufferEXT Uniform\n",{"type":1873,"tag":2163,"props":18861,"children":18862},{"class":2165,"line":34},[18863],{"type":1873,"tag":2163,"props":18864,"children":18865},{},[18866],{"type":1878,"value":18867}," %placeholder_image_array_type = OpTypeRuntimeArray %placeholder_image_type\n",{"type":1873,"tag":2163,"props":18869,"children":18870},{"class":2165,"line":38},[18871],{"type":1873,"tag":2163,"props":18872,"children":18873},{},[18874],{"type":1878,"value":18875}," %image_size = OpConstantSizeOfEXT %size_type %placeholder_image_type\n",{"type":1873,"tag":2163,"props":18877,"children":18878},{"class":2165,"line":42},[18879],{"type":1873,"tag":2163,"props":18880,"children":18881},{},[18882],{"type":1878,"value":18883}," %buffer_size = OpConstantSizeOfEXT %size_type %placeholder_buffer_type\n",{"type":1873,"tag":2163,"props":18885,"children":18886},{"class":2165,"line":46},[18887],{"type":1873,"tag":2163,"props":18888,"children":18889},{},[18890],{"type":1878,"value":18891}," %image_is_bigger = OpSpecConstantOp OpUGreaterThan %boolean_type %image_size %buffer_size\n",{"type":1873,"tag":2163,"props":18893,"children":18894},{"class":2165,"line":50},[18895],{"type":1873,"tag":2163,"props":18896,"children":18897},{},[18898],{"type":1878,"value":18899}," %resource_size = OpSpecConstantOp OpSelect %size_type %image_is_bigger %image_size %buffer_size\n",{"type":1873,"tag":2163,"props":18901,"children":18902},{"class":2165,"line":54},[18903],{"type":1873,"tag":2163,"props":18904,"children":18905},{},[18906],{"type":1878,"value":18907}," %uniformconstant_ptr_type = OpTypeUntypedPointerKHR UniformConstant\n",{"type":1873,"tag":2163,"props":18909,"children":18910},{"class":2165,"line":58},[18911],{"type":1873,"tag":2163,"props":18912,"children":18913},{"emptyLinePlaceholder":232},[18914],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":18916,"children":18917},{"class":2165,"line":62},[18918],{"type":1873,"tag":2163,"props":18919,"children":18920},{},[18921],{"type":1878,"value":18922}," %myTexture_ptr = OpUntypedAccessChainKHR %uniformconstant_ptr_type %placeholder_image_array_type %image_heap %texIdx\n",{"type":1873,"tag":2163,"props":18924,"children":18925},{"class":2165,"line":66},[18926],{"type":1873,"tag":2163,"props":18927,"children":18928},{"emptyLinePlaceholder":232},[18929],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":18931,"children":18932},{"class":2165,"line":70},[18933],{"type":1873,"tag":2163,"props":18934,"children":18935},{},[18936],{"type":1878,"value":18937}," %texture2D_float4_type = OpTypeImage %float4_type 1 2 0 0 0 1 Unknown\n",{"type":1873,"tag":2163,"props":18939,"children":18940},{"class":2165,"line":74},[18941],{"type":1873,"tag":2163,"props":18942,"children":18943},{},[18944],{"type":1878,"value":18945}," %myTexture = OpLoad %texture2D_float4_type %myTexture_ptr\n",{"type":1873,"tag":1874,"props":18947,"children":18948},{},[18949],{"type":1878,"value":18950},"Similarly, the following hlsl code retrieving a constant buffer:",{"type":1873,"tag":2151,"props":18952,"children":18954},{"className":18785,"code":18953,"language":18787,"meta":2156,"style":2156},"struct MyStruct {\n uint placeholder;\n uint value;\n};\n\nConstantBuffer\u003CMyStruct> myCBuffer = ResourceDescriptorHeap[bufIdx];\n\nint myValue = myCBuffer.value;\n",[18955],{"type":1873,"tag":2159,"props":18956,"children":18957},{"__ignoreMap":2156},[18958,18966,18974,18982,18989,18996,19004,19011],{"type":1873,"tag":2163,"props":18959,"children":18960},{"class":2165,"line":10},[18961],{"type":1873,"tag":2163,"props":18962,"children":18963},{},[18964],{"type":1878,"value":18965},"struct MyStruct {\n",{"type":1873,"tag":2163,"props":18967,"children":18968},{"class":2165,"line":14},[18969],{"type":1873,"tag":2163,"props":18970,"children":18971},{},[18972],{"type":1878,"value":18973}," uint placeholder;\n",{"type":1873,"tag":2163,"props":18975,"children":18976},{"class":2165,"line":18},[18977],{"type":1873,"tag":2163,"props":18978,"children":18979},{},[18980],{"type":1878,"value":18981}," uint value;\n",{"type":1873,"tag":2163,"props":18983,"children":18984},{"class":2165,"line":22},[18985],{"type":1873,"tag":2163,"props":18986,"children":18987},{},[18988],{"type":1878,"value":12777},{"type":1873,"tag":2163,"props":18990,"children":18991},{"class":2165,"line":26},[18992],{"type":1873,"tag":2163,"props":18993,"children":18994},{"emptyLinePlaceholder":232},[18995],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":18997,"children":18998},{"class":2165,"line":30},[18999],{"type":1873,"tag":2163,"props":19000,"children":19001},{},[19002],{"type":1878,"value":19003},"ConstantBuffer\u003CMyStruct> myCBuffer = ResourceDescriptorHeap[bufIdx];\n",{"type":1873,"tag":2163,"props":19005,"children":19006},{"class":2165,"line":34},[19007],{"type":1873,"tag":2163,"props":19008,"children":19009},{"emptyLinePlaceholder":232},[19010],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":19012,"children":19013},{"class":2165,"line":38},[19014],{"type":1873,"tag":2163,"props":19015,"children":19016},{},[19017],{"type":1878,"value":19018},"int myValue = myCBuffer.value;\n",{"type":1873,"tag":1874,"props":19020,"children":19021},{},[19022],{"type":1878,"value":18803},{"type":1873,"tag":2151,"props":19024,"children":19026},{"className":18806,"code":19025,"language":18808,"meta":2156,"style":2156}," OpDecorateId %placeholder_buffer_array_type ArrayStrideIdEXT %resource_size\n\n %void_type = OpTypeVoid\n %size_type = OpTypeInt 32 0\n %placeholder_image_type = OpTypeImage %void_type 2D 2 0 0 0 Unknown\n %placeholder_buffer_type = OpTypeBufferEXT Uniform\n %placeholder_buffer_array_type = OpTypeRuntimeArray %placeholder_buffer_type\n %image_size = OpConstantSizeOfEXT %size_type %placeholder_image_type\n %buffer_size = OpConstantSizeOfEXT %size_type %placeholder_buffer_type\n %image_is_bigger = OpSpecConstantOp OpUGreaterThan %boolean_type %image_size %buffer_size\n %resource_size = OpSpecConstantOp OpSelect %size_type %image_is_bigger %image_size %buffer_size\n %cbuffer_data_ptr_type = OpTypeUntypedPointerKHR Uniform\n %uniformconstant_ptr_type = OpTypeUntypedPointerKHR UniformConstant\n\n %myCBuffer_ptr = OpUntypedAccessChainKHR %uniformconstant_ptr_type %placeholder_buffer_array_type %resource_heap %bufIdx\n %cbuffer_data_ptr = OpBufferPointerEXT %cbuffer_data_ptr_type %myCBuffer_ptr\n\n %mystruct_type = OpTypeStruct %uint32_type %uint32_type\n %mystruct_value_ptr = OpUntypedAccessChainKHR %cbuffer_data_ptr_type %mystruct_type %cbuffer_data_ptr 1\n %myValue = OpLoad %uint32_type %mystruct_value_ptr\n",[19027],{"type":1873,"tag":2159,"props":19028,"children":19029},{"__ignoreMap":2156},[19030,19038,19045,19052,19059,19066,19073,19081,19088,19095,19102,19109,19117,19124,19131,19139,19147,19154,19162,19170],{"type":1873,"tag":2163,"props":19031,"children":19032},{"class":2165,"line":10},[19033],{"type":1873,"tag":2163,"props":19034,"children":19035},{},[19036],{"type":1878,"value":19037}," OpDecorateId %placeholder_buffer_array_type ArrayStrideIdEXT %resource_size\n",{"type":1873,"tag":2163,"props":19039,"children":19040},{"class":2165,"line":14},[19041],{"type":1873,"tag":2163,"props":19042,"children":19043},{"emptyLinePlaceholder":232},[19044],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":19046,"children":19047},{"class":2165,"line":18},[19048],{"type":1873,"tag":2163,"props":19049,"children":19050},{},[19051],{"type":1878,"value":18835},{"type":1873,"tag":2163,"props":19053,"children":19054},{"class":2165,"line":22},[19055],{"type":1873,"tag":2163,"props":19056,"children":19057},{},[19058],{"type":1878,"value":18843},{"type":1873,"tag":2163,"props":19060,"children":19061},{"class":2165,"line":26},[19062],{"type":1873,"tag":2163,"props":19063,"children":19064},{},[19065],{"type":1878,"value":18851},{"type":1873,"tag":2163,"props":19067,"children":19068},{"class":2165,"line":30},[19069],{"type":1873,"tag":2163,"props":19070,"children":19071},{},[19072],{"type":1878,"value":18859},{"type":1873,"tag":2163,"props":19074,"children":19075},{"class":2165,"line":34},[19076],{"type":1873,"tag":2163,"props":19077,"children":19078},{},[19079],{"type":1878,"value":19080}," %placeholder_buffer_array_type = OpTypeRuntimeArray %placeholder_buffer_type\n",{"type":1873,"tag":2163,"props":19082,"children":19083},{"class":2165,"line":38},[19084],{"type":1873,"tag":2163,"props":19085,"children":19086},{},[19087],{"type":1878,"value":18875},{"type":1873,"tag":2163,"props":19089,"children":19090},{"class":2165,"line":42},[19091],{"type":1873,"tag":2163,"props":19092,"children":19093},{},[19094],{"type":1878,"value":18883},{"type":1873,"tag":2163,"props":19096,"children":19097},{"class":2165,"line":46},[19098],{"type":1873,"tag":2163,"props":19099,"children":19100},{},[19101],{"type":1878,"value":18891},{"type":1873,"tag":2163,"props":19103,"children":19104},{"class":2165,"line":50},[19105],{"type":1873,"tag":2163,"props":19106,"children":19107},{},[19108],{"type":1878,"value":18899},{"type":1873,"tag":2163,"props":19110,"children":19111},{"class":2165,"line":54},[19112],{"type":1873,"tag":2163,"props":19113,"children":19114},{},[19115],{"type":1878,"value":19116}," %cbuffer_data_ptr_type = OpTypeUntypedPointerKHR Uniform\n",{"type":1873,"tag":2163,"props":19118,"children":19119},{"class":2165,"line":58},[19120],{"type":1873,"tag":2163,"props":19121,"children":19122},{},[19123],{"type":1878,"value":18907},{"type":1873,"tag":2163,"props":19125,"children":19126},{"class":2165,"line":62},[19127],{"type":1873,"tag":2163,"props":19128,"children":19129},{"emptyLinePlaceholder":232},[19130],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":19132,"children":19133},{"class":2165,"line":66},[19134],{"type":1873,"tag":2163,"props":19135,"children":19136},{},[19137],{"type":1878,"value":19138}," %myCBuffer_ptr = OpUntypedAccessChainKHR %uniformconstant_ptr_type %placeholder_buffer_array_type %resource_heap %bufIdx\n",{"type":1873,"tag":2163,"props":19140,"children":19141},{"class":2165,"line":70},[19142],{"type":1873,"tag":2163,"props":19143,"children":19144},{},[19145],{"type":1878,"value":19146}," %cbuffer_data_ptr = OpBufferPointerEXT %cbuffer_data_ptr_type %myCBuffer_ptr\n",{"type":1873,"tag":2163,"props":19148,"children":19149},{"class":2165,"line":74},[19150],{"type":1873,"tag":2163,"props":19151,"children":19152},{"emptyLinePlaceholder":232},[19153],{"type":1878,"value":2225},{"type":1873,"tag":2163,"props":19155,"children":19156},{"class":2165,"line":78},[19157],{"type":1873,"tag":2163,"props":19158,"children":19159},{},[19160],{"type":1878,"value":19161}," %mystruct_type = OpTypeStruct %uint32_type %uint32_type\n",{"type":1873,"tag":2163,"props":19163,"children":19164},{"class":2165,"line":82},[19165],{"type":1873,"tag":2163,"props":19166,"children":19167},{},[19168],{"type":1878,"value":19169}," %mystruct_value_ptr = OpUntypedAccessChainKHR %cbuffer_data_ptr_type %mystruct_type %cbuffer_data_ptr 1\n",{"type":1873,"tag":2163,"props":19171,"children":19172},{"class":2165,"line":86},[19173],{"type":1873,"tag":2163,"props":19174,"children":19175},{},[19176],{"type":1878,"value":19177}," %myValue = OpLoad %uint32_type %mystruct_value_ptr\n",{"type":1873,"tag":2025,"props":19179,"children":19180},{},[19181,19186],{"type":1873,"tag":1874,"props":19182,"children":19183},{},[19184],{"type":1878,"value":19185},"This matches native DirectX 12’s handling of descriptors, where all resource types are the same size. For implementations where these descriptors are not the same size, this wastes significant space in the heap and may increase cache pressure unnecessarily.",{"type":1873,"tag":1874,"props":19187,"children":19188},{},[19189],{"type":1878,"value":19190},"HLSL and existing HLSL compilers do not currently have a method to alter this indexing, and one should be considered, but that will be handled as a separate proposal.",{"type":1873,"tag":1880,"props":19192,"children":19194},{"id":19193},"_issues",[19195],{"type":1878,"value":19196},"Issues",{"type":1873,"tag":2079,"props":19198,"children":19200},{"id":19199},"_is_this_the_same_as_directx_12_descriptor_heaps",[19201],{"type":1878,"value":19202},"Is this the same as DirectX 12 descriptor heaps?",{"type":1873,"tag":1874,"props":19204,"children":19205},{},[19206,19213,19215,19220],{"type":1873,"tag":1921,"props":19207,"children":19210},{"href":19208,"rel":19209},"https://learn.microsoft.com/en-us/windows/win32/direct3d12/descriptor-heaps-overview",[1925],[19211],{"type":1878,"value":19212},"DirectX 12 also features something called descriptor heaps",{"type":1878,"value":19214},".\nThe \"descriptor heap\" name is not an accident – it was deliberately chosen to capture this similarity and indicate architectural compatibility.\nHowever, while you can drive Vulkan’s descriptor heaps in the same way as you would drive DirectX 12’s descriptor heaps (",{"type":1873,"tag":1921,"props":19216,"children":19217},{"href":2120},[19218],{"type":1878,"value":19219},"which was something we explicitly designed them for",{"type":1878,"value":19221},"), Vulkan’s are also significantly more flexible.",{"type":1873,"tag":1874,"props":19223,"children":19224},{},[19225],{"type":1878,"value":19226},"DirectX 12’s heaps are an object — a thing that you create descriptors inside of, with the nitty-gritty details of what goes on under the hood hidden behind the runtime and the driver.\nTo do things like copy descriptors between or within heaps, you need to call a function.\nIf you want to stage descriptors on the host, you need a specially created heap to do so.\nFor any action you want to perform with a descriptor, a purpose-built API is required.",{"type":1873,"tag":1874,"props":19228,"children":19229},{},[19230],{"type":1878,"value":19231},"Vulkan’s descriptor heaps, on the other hand, are just a specially identified region of memory, and descriptors are just bags of bits.\nIf you want to copy descriptors around, call memcpy; or do it on the GPU.\nTo stage descriptors on the host, just stow them in host memory anywhere you want and copy them the same way you would copy any other plain old data.",{"type":1873,"tag":1874,"props":19233,"children":19234},{},[19235],{"type":1878,"value":19236},"You are also free to use the heap’s memory to store whatever else you want.\nFor example, you can store constant data next to your descriptors for a material, rather than using a separate allocation, which can be more cache efficient on a number of implementations.\nYou can even use that same memory as a storage buffer with read/write access if you want.\nJust be aware that you need to issue an API barrier between writing to the heap on the device and reading from the heap in a shader.",{"type":1873,"tag":1874,"props":19238,"children":19239},{},[19240,19242,19249],{"type":1878,"value":19241},"There are some restrictions simply because not all implementations can handle descriptors coming from arbitrary memory.\nDescriptors used in shaders must come from a heap; they cannot be stored in arbitrary buffers.\nThe application should also expect a high cost to switch between heaps on some implementations, ",{"type":1873,"tag":1921,"props":19243,"children":19246},{"href":19244,"rel":19245},"https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12graphicscommandlist-setdescriptorheaps#remarks",[1925],[19247],{"type":1878,"value":19248},"just as in DirectX 12",{"type":1878,"value":2077},{"type":1873,"tag":2079,"props":19251,"children":19253},{"id":19252},"_do_i_need_to_change_all_my_shaders_to_use_this",[19254],{"type":1878,"value":19255},"Do I need to change all my shaders to use this?",{"type":1873,"tag":1874,"props":19257,"children":19258},{},[19259],{"type":1878,"value":19260},"Nope!",{"type":1873,"tag":1874,"props":19262,"children":19263},{},[19264],{"type":1878,"value":19265},"This extension has been carefully and deliberately designed to work with your existing SPIR-V shaders, but also includes adaptations to improve compatibility with existing shading languages if/when you do wish to recompile your shaders.\nThere are other benefits to recompiling your shaders to use the new SPIR-V extension, but this is not necessary to start using the API features.",{"type":1873,"tag":1874,"props":19267,"children":19268},{},[19269],{"type":1878,"value":19270},"Descriptor heaps can be interacted with in two ways: By direct access to heaps and push data or through a flexible mapping system in the API that maps shader bindings to heap entries, push data, or device addresses.",{"type":1873,"tag":1874,"props":19272,"children":19273},{},[19274,19276,19281,19283,19288],{"type":1878,"value":19275},"For shaders using bindings, the extension introduces a ",{"type":1873,"tag":1921,"props":19277,"children":19278},{"href":2128},[19279],{"type":1878,"value":19280},"flexible mapping system",{"type":1878,"value":19282}," that enables existing SPIR-V shaders to be used as-is, without requiring recompilation or shader edits.\nHowever, as part of the design work, we made sure that the mapping system was not just 1:1 with descriptor set layouts, but instead catered to a wide variety of API and shader binding models, both for porting and for emulation of other APIs.\nFor instance, the ",{"type":1873,"tag":1921,"props":19284,"children":19285},{"href":2120},[19286],{"type":1878,"value":19287},"HLSL binding model now works without needing any Vulkan-specific workarounds",{"type":1878,"value":19289},", which has been a longstanding developer pain point with using HLSL on Vulkan.",{"type":1873,"tag":1874,"props":19291,"children":19292},{},[19293,19295,19300],{"type":1878,"value":19294},"The direct access approach requires applications to recompile their shaders, making use of the new ",{"type":1873,"tag":2159,"props":19296,"children":19298},{"className":19297},[],[19299],{"type":1878,"value":14631},{"type":1878,"value":19301}," extension.\nThis extension provides a pointer for each heap, allowing simple access to each, and notably matching 1:1 with HLSL’s Dynamic Resources.\nThere is also a GLSL extension to allow declared arrays of descriptors to access the descriptor heap without shader bindings.",{"type":1873,"tag":1874,"props":19303,"children":19304},{},[19305],{"type":1878,"value":19306},"While it is not possible to mix and match legacy descriptor set layouts and anything based on them with heaps, mixing and matching the use of bindings and direct heap access in your shaders works just fine with the mapping API.\nSo you can gradually start introducing heap access to shaders with bindings, rather than having to rewrite all of your shaders to make use of this new extension.",{"type":1873,"tag":1874,"props":19308,"children":19309},{},[19310],{"type":1878,"value":19311},"The ultimate aim here is that you should be able to take a shader, compiled from any shading language, and use it without worrying about how to make it work with Vulkan.\nThe interface between the API and your shaders is now yours to define.",{"type":1873,"tag":2079,"props":19313,"children":19315},{"id":19314},"_does_exposing_all_of_this_make_debugging_invalid_descriptors_worse",[19316],{"type":1878,"value":19317},"Does exposing all of this make debugging invalid descriptors worse?",{"type":1873,"tag":1874,"props":19319,"children":19320},{},[19321],{"type":1878,"value":19322},"With GPU copies, control over where in memory a descriptor is being accessed, and responsibility for actually putting the bits in memory, there are more ways than ever to end up in a situation with an invalid descriptor.\nThe good news is that none of this really makes debugging worse than it already is - validating a descriptor has been at point of use since we introduced dynamic indexing.\nThe work that validation layers already do for descriptor indexing will be being reworked for this extension, which should provide a seamless debugging experience.",{"type":1873,"tag":1874,"props":19324,"children":19325},{},[19326,19328,19334],{"type":1878,"value":19327},"Work to ",{"type":1873,"tag":1921,"props":19329,"children":19331},{"href":19330},"/404#_better_debugging",[19332],{"type":1878,"value":19333},"improve debugging for descriptors",{"type":1878,"value":19335}," is ongoing.",{"type":1873,"tag":2079,"props":19337,"children":19339},{"id":19338},"_how_does_ycbcr_sampling_work_with_the_bindless_interface",[19340,19342,19346,19347,19351],{"type":1878,"value":19341},"How does YC",{"type":1873,"tag":3263,"props":19343,"children":19344},{},[19345],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":19348,"children":19349},{},[19350],{"type":1878,"value":3274},{"type":1878,"value":19352}," sampling work with the bindless interface?",{"type":1873,"tag":1874,"props":19354,"children":19355},{},[19356,19358,19363],{"type":1878,"value":19357},"For now it still requires set and binding, mapping to shader combined image samplers.\nA number of image descriptors will be consumed for each such resource, according to ",{"type":1873,"tag":1921,"props":19359,"children":19361},{"href":3369,"rel":19360},[1925],[19362],{"type":1878,"value":3373},{"type":1878,"value":2077},{"type":1873,"tag":2079,"props":19365,"children":19367},{"id":19366},"_how_does_sampling_of_subsampled_images_for_fragment_density_maps_work_with_the_bindless_interface",[19368],{"type":1878,"value":19369},"How does sampling of subsampled images for fragment density maps work with the bindless interface?",{"type":1873,"tag":1874,"props":19371,"children":19372},{},[19373,19374,19380],{"type":1878,"value":19357},{"type":1873,"tag":2159,"props":19375,"children":19377},{"className":19376},[],[19378],{"type":1878,"value":19379},"VkSubsampledImageFormatPropertiesEXT::subsampledImageDescriptorCount",{"type":1878,"value":2077},{"type":1873,"tag":2079,"props":19382,"children":19384},{"id":19383},"_should_embedded_samplers_be_passed_as_descriptors_rather_than_create_infos",[19385],{"type":1878,"value":19386},"Should embedded samplers be passed as descriptors rather than create infos?",{"type":1873,"tag":1874,"props":19388,"children":19389},{},[19390],{"type":1878,"value":19391},"No.",{"type":1873,"tag":1874,"props":19393,"children":19394},{},[19395,19397,19401,19402,19406],{"type":1878,"value":19396},"Part of the reason for embedded samplers being passed to shader/pipeline create info is to allow for them to be baked into shaders where viable; for things like YC",{"type":1873,"tag":3263,"props":19398,"children":19399},{},[19400],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":19403,"children":19404},{},[19405],{"type":1878,"value":3274},{"type":1878,"value":19407}," sampling, this might include information that is not directly in the sampler descriptor.",{"type":1873,"tag":2079,"props":19409,"children":19411},{"id":19410},"_why_is_there_an_explicit_custom_border_color_registration",[19412],{"type":1878,"value":19413},"Why is there an explicit custom border color registration?",{"type":1873,"tag":1874,"props":19415,"children":19416},{},[19417],{"type":1878,"value":19418},"Some implementations maintain a table of border colors rather than embedding them directly in the sampler.\nWhen sampler objects are created prior to this extension, registration happens under the covers when a sampler object is created or destroyed; without sampler objects, this needs to be exposed.",{"type":1873,"tag":2079,"props":19420,"children":19422},{"id":19421},"_should_descriptor_layout_compatibility_be_a_separate_extension",[19423],{"type":1878,"value":19424},"Should descriptor layout compatibility be a separate extension?",{"type":1873,"tag":1874,"props":19426,"children":19427},{},[19428,19430,19434,19435,19439],{"type":1878,"value":19429},"No, on the basis that it is currently necessary in order to use YC",{"type":1873,"tag":3263,"props":19431,"children":19432},{},[19433],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":19436,"children":19437},{},[19438],{"type":1878,"value":3274},{"type":1878,"value":19440}," sampling and input attachments.\nIt is also expected that a significant portion of existing content (particularly via emulation layers) will make use of it.",{"type":1873,"tag":2079,"props":19442,"children":19444},{"id":19443},"_what_are_the_indexing_rules_when_using_descriptor_heaps",[19445],{"type":1878,"value":19446},"What are the indexing rules when using descriptor heaps?",{"type":1873,"tag":1874,"props":19448,"children":19449},{},[19450,19452,19458],{"type":1878,"value":19451},"They are largely the same as ",{"type":1873,"tag":1921,"props":19453,"children":19456},{"href":19454,"rel":19455},"https://docs.vulkan.org/spec/latest/appendices/extensions.html#VK_EXT_descriptor_indexing",[1925],[19457],{"type":1878,"value":519},{"type":1878,"value":19459}," with all features enabled - indexing may be non-uniform, but does not need the expression to be tagged as non-uniform.",{"type":1873,"tag":2079,"props":19461,"children":19463},{"id":19462},"_how_are_embedded_samplers_handled_on_implementations_that_cannot_embed_them_in_shader_constant_data",[19464],{"type":1878,"value":19465},"How are embedded samplers handled on implementations that cannot embed them in shader constant data?",{"type":1873,"tag":1874,"props":19467,"children":19468},{},[19469],{"type":1878,"value":19470},"For implementations that need to store samplers in a sampler heap of some form, the reserved range of each sampler heap will need to accommodate any embedded samplers created by the application.\nAs the total number of unique embedded samplers that can exist is limited, implementations can store these statically, but will need to de-duplicate any samplers with the same create info across multiple pipelines.",{"type":1873,"tag":2079,"props":19472,"children":19474},{"id":19473},"_why_is_so_much_state_baked_in_when_using_vk_ext_shader_object_with_bindings",[19475],{"type":1878,"value":19476},"Why is so much state baked in when using VK_EXT_shader_object with bindings?",{"type":1873,"tag":1874,"props":19478,"children":19479},{},[19480],{"type":1878,"value":19481},"Shader object largely did away with the idea of static state, but in the case of descriptor layouts this \"state\" is really a set of constant shader offsets baked into the shader; which is why the pipeline layout was included in shader object creation in the base extension.\nWhile all of these offsets could probably be made fully dynamic, doing so would come at a significant and unexpected performance penalty compared to using a pipeline layout.\nIf an application really wants fully dynamic offsets then they can do so by not using the mappings, and instead using the heaps directly.",{"type":1873,"tag":2079,"props":19483,"children":19485},{"id":19484},"_why_is_there_a_multiple_sampler_limit_for_samplers_with_ycbcr_conversion",[19486,19488,19492,19493,19497],{"type":1878,"value":19487},"Why is there a multiple sampler limit for samplers with YC",{"type":1873,"tag":3263,"props":19489,"children":19490},{},[19491],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":19494,"children":19495},{},[19496],{"type":1878,"value":3274},{"type":1878,"value":19498}," conversion?",{"type":1873,"tag":1874,"props":19500,"children":19501},{},[19502],{"type":1878,"value":19503},"Implementations can currently hide if they use multiple samplers behind multiple combined image samplers. This extension does not allow for that, so a separate limit has been added.",{"type":1873,"tag":2079,"props":19505,"children":19507},{"id":19506},"_why_do_the_heaps_have_reserved_ranges",[19508],{"type":1878,"value":19509},"Why do the heaps have reserved ranges?",{"type":1873,"tag":1874,"props":19511,"children":19512},{},[19513],{"type":1878,"value":19514},"Implementations need descriptors for various operations that may not be directly apparent - for instance, blit operations implemented as a shader need access to descriptors for the images involved and a sampler descriptor to sample the source image.\nSome operations may also require additional pointers to data, such as the shader resource buffers for ray tracing or scratch memory for acceleration structure builds; if an implementation has limited push data space then this space is available to manage buffer descriptors for this purpose.",{"type":1873,"tag":2079,"props":19516,"children":19518},{"id":19517},"_is_it_possible_to_map_input_attachments_without_shader_bindings",[19519],{"type":1878,"value":19520},"Is it possible to map input attachments without shader bindings?",{"type":1873,"tag":1874,"props":19522,"children":19523},{},[19524],{"type":1878,"value":19525},"No - right now they need to be mapped as they always have been and shader bindings used to set them up.\nIt would be possible to just add a heap offset as a constant to make this work, but that is not strictly an improvement.\nFuture extensions could consider how to make this interaction cleaner.",{"type":1873,"tag":2079,"props":19527,"children":19529},{"id":19528},"_why_does_vk_nv_device_generated_commands_have_a_specific_token_for_push_data_but_vk_ext_device_generated_commands_does_not",[19530],{"type":1878,"value":19531},"Why does VK_NV_device_generated_commands have a specific token for push data but VK_EXT_device_generated_commands does not?",{"type":1873,"tag":1874,"props":19533,"children":19534},{},[19535],{"type":1878,"value":19536},"It largely just boils down to the fact that the two extensions expressed tokens differently.\nAs a result, the EXT just reuses the push constant token, whereas the NV extension gets a new token.\nThe NV extension smooshed all tokens into a monolithic structure, so having push constants sometimes being push data would add significant complexity to validation; so having a separate token along the lines of other extensions made sense.\nWith the EXT, the tokens are isolated structures in a union, so the valid usage was much simpler to spell out, and so the token would have just been an alias anyway.",{"type":1873,"tag":2079,"props":19538,"children":19540},{"id":19539},"_can_different_shader_stages_in_the_same_pipelinedraw_use_different_resource_mappings",[19541],{"type":1878,"value":19542},"Can different shader stages in the same pipeline/draw use different resource mappings?",{"type":1873,"tag":1874,"props":19544,"children":19545},{},[19546],{"type":1878,"value":19547},"Yes! There is no cross stage validation for the mappings set by a user; as long as an application ensures that the descriptors they use are where they expect them to be for each shader, the mappings can be set however the developer wishes.",{"type":1873,"tag":2079,"props":19549,"children":19551},{"id":19550},"_why_is_the_vkresourcedescriptordataext_a_union_of_pointers_instead_of_a_flat_union",[19552,19554,19559],{"type":1878,"value":19553},"Why is the ",{"type":1873,"tag":2159,"props":19555,"children":19557},{"className":19556},[],[19558],{"type":1878,"value":7585},{"type":1878,"value":19560}," a union of pointers instead of a flat union?",{"type":1873,"tag":1874,"props":19562,"children":19563},{},[19564,19566,19571,19573,19578],{"type":1878,"value":19565},"So that each pointer can be set to ",{"type":1873,"tag":2159,"props":19567,"children":19569},{"className":19568},[],[19570],{"type":1878,"value":4131},{"type":1878,"value":19572}," to define a \"null descriptor\" when interacting with ",{"type":1873,"tag":2159,"props":19574,"children":19576},{"className":19575},[],[19577],{"type":1878,"value":828},{"type":1878,"value":2077},{"type":1873,"tag":2079,"props":19580,"children":19582},{"id":19581},"_how_can_i_use_debug_labels_with_descriptor_heaps",[19583],{"type":1878,"value":19584},"How can I use debug labels with descriptor heaps?",{"type":1873,"tag":1874,"props":19586,"children":19587},{},[19588,19590,19595,19597,19602,19603,19608],{"type":1878,"value":19589},"Labels can be associated with patterns of descriptor bits when they are written, or with embedded samplers during pipeline creation, by chaining ",{"type":1873,"tag":1921,"props":19591,"children":19593},{"href":10958,"rel":19592},[1925],[19594],{"type":1878,"value":10962},{"type":1878,"value":19596}," structures into ",{"type":1873,"tag":2159,"props":19598,"children":19600},{"className":19599},[],[19601],{"type":1878,"value":10982},{"type":1878,"value":6336},{"type":1873,"tag":2159,"props":19604,"children":19606},{"className":19605},[],[19607],{"type":1878,"value":7309},{"type":1878,"value":2077},{"type":1873,"tag":1874,"props":19610,"children":19611},{},[19612,19614,19620],{"type":1878,"value":19613},"See ",{"type":1873,"tag":1921,"props":19615,"children":19617},{"href":19616},"/404#Interaction%20with%20VK_EXT_debug_utils",[19618],{"type":1878,"value":19619},"Interaction with VK_EXT_debug_utils",{"type":1878,"value":19621}," for further information.",{"type":1873,"tag":2079,"props":19623,"children":19625},{"id":19624},"_why_is_vk_khr_shader_untyped_pointers_not_a_dependency_but_still_required_by_implementations",[19626,19628,19633],{"type":1878,"value":19627},"Why is ",{"type":1873,"tag":1921,"props":19629,"children":19631},{"href":2072,"rel":19630},[1925],[19632],{"type":1878,"value":1381},{"type":1878,"value":19634}," not a dependency, but still required by implementations?",{"type":1873,"tag":1874,"props":19636,"children":19637},{},[19638],{"type":1878,"value":19639},"Untyped pointers are only necessary when accessing the heap directly from the shader; for applications using shader mappings, they are not needed, so the extension can be omitted in this case.",{"type":1873,"tag":1880,"props":19641,"children":19643},{"id":19642},"_further_work",[19644],{"type":1878,"value":19645},"Further Work",{"type":1873,"tag":2079,"props":19647,"children":19649},{"id":19648},"_embedded_samplers",[19650],{"type":1878,"value":19651},"Embedded Samplers",{"type":1873,"tag":1874,"props":19653,"children":19654},{},[19655,19657,19661,19662,19666],{"type":1878,"value":19656},"Embedded samplers are both a feature of HLSL and necessary for YC",{"type":1873,"tag":3263,"props":19658,"children":19659},{},[19660],{"type":1878,"value":3267},{"type":1878,"value":3269},{"type":1873,"tag":3263,"props":19663,"children":19664},{},[19665],{"type":1878,"value":3274},{"type":1878,"value":19667}," support.\nNot having a bindless interface for these is unfortunate, and it would be good to replace this in the future.\nA possible avenue for exploration would be to add shader-defined samplers, rather than having them defined in the API.",{"type":1873,"tag":2079,"props":19669,"children":19671},{"id":19670},"_input_attachments",[19672],{"type":1878,"value":19673},"Input Attachments",{"type":1873,"tag":1874,"props":19675,"children":19676},{},[19677],{"type":1878,"value":19678},"Input attachments need some additional work in order to allow the use of both bindless descriptors and attachment indices that is not covered in this extension.\nFiguring out how to make this work cleanly would be a useful addition in a future extension.",{"type":1873,"tag":2079,"props":19680,"children":19682},{"id":19681},"_hlsl_bindless_push_data_root_constants",[19683],{"type":1878,"value":19684},"HLSL Bindless Push Data / Root Constants",{"type":1873,"tag":1874,"props":19686,"children":19687},{},[19688,19690,19696],{"type":1878,"value":19689},"Push data in HLSL can currently only be accessed by mapping to a constant buffer with bindings.\nIt would be useful to be able to do this bindlessly in a similar manner to GLSL, without bindings, and ideally in a way that maps correctly for DX12 as well.\nA proposal that includes this is currently in review for HLSL here: ",{"type":1873,"tag":1921,"props":19691,"children":19694},{"href":19692,"rel":19693},"https://github.com/microsoft/hlsl-specs/pull/461",[1925],[19695],{"type":1878,"value":19692},{"type":1878,"value":2077},{"type":1873,"tag":2079,"props":19698,"children":19700},{"id":19699},"_hlsl_heap_data_access",[19701],{"type":1878,"value":19702},"HLSL Heap Data Access",{"type":1873,"tag":1874,"props":19704,"children":19705},{},[19706],{"type":1878,"value":19707},"It would be useful to be able to express different data types coming from a resource heap, including POD types. This would allow more flexibility in access of these heaps, and allow the size of descriptors to vary, reducing unnecessary padding when accessing smaller descriptor types.",{"type":1873,"tag":2079,"props":19709,"children":19711},{"id":19710},"_better_debugging",[19712],{"type":1878,"value":19713},"Better Debugging",{"type":1873,"tag":1874,"props":19715,"children":19716},{},[19717,19719,19725],{"type":1878,"value":19718},"Debugging descriptors has been a pain since dynamic indexing was introduced, requiring point-of-access validation.\nThe current approach to this in debug tools requires looking up descriptors in a table to see if they are valid, which requires shader instrumentation, and is too slow to be on by default.\nTraverse Research did some excellent work on this topic in their bindless setup, where they restricted their descriptor indices to 31 bits and used the last bit as a sentinel value to check for validity, which you can read about ",{"type":1873,"tag":1921,"props":19720,"children":19722},{"href":3733,"rel":19721},[1925],[19723],{"type":1878,"value":19724},"here",{"type":1878,"value":19726},".\nFinding spare bits in real descriptors was considered, but could not be guaranteed reliably by all vendors.\nHowever, by exposing descriptor sizes precisely and allowing arbitrary data to be read from the heaps, a similar approach should be possible, potentially expanding beyond single descriptors.\nThis extension provides a lot of tools, the next step is to find ways to use them.",{"type":1873,"tag":19728,"props":19729,"children":19730},"style",{},[19731],{"type":1878,"value":19732},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":2156,"searchDepth":14,"depth":14,"links":19734},[19735,19736,19737,19754,19755,19757,19759,19769,19770,19771,19776,19801],{"id":1882,"depth":14,"text":1885},{"id":1992,"depth":14,"text":1995},{"id":2048,"depth":14,"text":2051,"children":19738},[19739,19740,19741,19742,19743,19744,19745,19746,19747,19748,19749,19750,19751,19752,19753],{"id":2081,"depth":18,"text":2084},{"id":2141,"depth":18,"text":2144},{"id":2103,"depth":18,"text":67},{"id":4064,"depth":18,"text":4067},{"id":7329,"depth":18,"text":7332},{"id":7416,"depth":18,"text":7419},{"id":7555,"depth":18,"text":7558},{"id":7596,"depth":18,"text":7599},{"id":8036,"depth":18,"text":8039},{"id":8818,"depth":18,"text":8821},{"id":8923,"depth":18,"text":8926},{"id":9113,"depth":18,"text":9116},{"id":9206,"depth":18,"text":9209},{"id":9323,"depth":18,"text":9326},{"id":10800,"depth":18,"text":10803},{"id":10941,"depth":14,"text":19619},{"id":10987,"depth":14,"text":19756},"Interaction with VK_KHR_pipeline_library",{"id":11011,"depth":14,"text":19758},"Interaction with VK_EXT_graphics_pipeline_library",{"id":11034,"depth":14,"text":19760,"children":19761},"VkDescriptorSetLayout Mapping",[19762,19763,19764,19765,19766,19767,19768],{"id":6922,"depth":18,"text":11062},{"id":13801,"depth":18,"text":13804},{"id":6938,"depth":18,"text":13823},{"id":13851,"depth":18,"text":13854},{"id":13999,"depth":18,"text":14002},{"id":14180,"depth":18,"text":14183},{"id":14216,"depth":18,"text":14219},{"id":4152,"depth":14,"text":14620},{"id":15009,"depth":14,"text":15012},{"id":4568,"depth":14,"text":15584,"children":19772},[19773,19774,19775],{"id":15587,"depth":18,"text":15590},{"id":18668,"depth":18,"text":18671},{"id":18752,"depth":18,"text":18755},{"id":19193,"depth":14,"text":19196,"children":19777},[19778,19779,19780,19781,19783,19784,19785,19786,19787,19788,19789,19790,19792,19793,19794,19795,19796,19798,19799],{"id":19199,"depth":18,"text":19202},{"id":19252,"depth":18,"text":19255},{"id":19314,"depth":18,"text":19317},{"id":19338,"depth":18,"text":19782},"How does YCBCR sampling work with the bindless interface?",{"id":19366,"depth":18,"text":19369},{"id":19383,"depth":18,"text":19386},{"id":19410,"depth":18,"text":19413},{"id":19421,"depth":18,"text":19424},{"id":19443,"depth":18,"text":19446},{"id":19462,"depth":18,"text":19465},{"id":19473,"depth":18,"text":19476},{"id":19484,"depth":18,"text":19791},"Why is there a multiple sampler limit for samplers with YCBCR conversion?",{"id":19506,"depth":18,"text":19509},{"id":19517,"depth":18,"text":19520},{"id":19528,"depth":18,"text":19531},{"id":19539,"depth":18,"text":19542},{"id":19550,"depth":18,"text":19797},"Why is the VkResourceDescriptorDataEXT a union of pointers instead of a flat union?",{"id":19581,"depth":18,"text":19584},{"id":19624,"depth":18,"text":19800},"Why is VK_KHR_shader_untyped_pointers not a dependency, but still required by implementations?",{"id":19642,"depth":14,"text":19645,"children":19802},[19803,19804,19805,19806,19807],{"id":19648,"depth":18,"text":19651},{"id":19670,"depth":18,"text":19673},{"id":19681,"depth":18,"text":19684},{"id":19699,"depth":18,"text":19702},{"id":19710,"depth":18,"text":19713},"markdown",1773121677661]