[{"data":1,"prerenderedAt":194},["ShallowReactive",2],{"dftn0khJWD":3},{"title":4,"description":5,"type":6,"xrefs":7,"body":9,"_type":193,"_id":4},"provisional-headers","Control inclusion of provisional extensions","freeform",[8],"WSIheaders",{"type":10,"children":11,"toc":189},"root",[12,39,90,112,159,181],{"type":13,"tag":14,"props":15,"children":16},"element","p",{},[17,24,26,31,33,37],{"type":13,"tag":18,"props":19,"children":20},"em",{},[21],{"type":22,"value":23},"text","Provisional",{"type":22,"value":25}," extensions ",{"type":13,"tag":27,"props":28,"children":30},"normative",{"type":29},"should",[],{"type":22,"value":32}," not be used in production applications.\nThe functionality defined by such extensions ",{"type":13,"tag":27,"props":34,"children":36},{"type":35},"may",[],{"type":22,"value":38}," change in ways that break\nbackwards compatibility between revisions, and before final release of a\nnon-provisional version of that extension.",{"type":13,"tag":14,"props":40,"children":41},{},[42,44,49,51,58,60,67,69,74,76,80,82,88],{"type":22,"value":43},"Provisional extensions are defined in a separate ",{"type":13,"tag":18,"props":45,"children":46},{},[47],{"type":22,"value":48},"provisional header",{"type":22,"value":50},",\n",{"type":13,"tag":52,"props":53,"children":55},"code",{"className":54},[],[56],{"type":22,"value":57},"vulkan_beta.h",{"type":22,"value":59},", allowing applications to decide whether or not to include\nthem.\nThe mechanism is similar to ",{"type":13,"tag":61,"props":62,"children":64},"a",{"href":63},"/chapters/boilerplate#boilerplate-wsi-header",[65],{"type":22,"value":66},"window system-specific\nheaders",{"type":22,"value":68},": before including ",{"type":13,"tag":52,"props":70,"children":72},{"className":71},[],[73],{"type":22,"value":57},{"type":22,"value":75},", applications ",{"type":13,"tag":27,"props":77,"children":79},{"type":78},"must",[],{"type":22,"value":81}," include\n",{"type":13,"tag":52,"props":83,"children":85},{"className":84},[],[86],{"type":22,"value":87},"vulkan_core.h",{"type":22,"value":89},".",{"type":13,"tag":91,"props":92,"children":93},"note",{},[94],{"type":13,"tag":14,"props":95,"children":96},{},[97,99,104,106,111],{"type":22,"value":98},"Sometimes a provisional extension will include a subset of its interfaces in\n",{"type":13,"tag":52,"props":100,"children":102},{"className":101},[],[103],{"type":22,"value":87},{"type":22,"value":105},".\nThis may occur if the provisional extension is promoted from an existing\nvendor or EXT extension and some of the existing interfaces are defined as\naliases of the provisional extension interfaces.\nAll other interfaces of that provisional extension which are not aliased\nwill be included in ",{"type":13,"tag":52,"props":107,"children":109},{"className":108},[],[110],{"type":22,"value":57},{"type":22,"value":89},{"type":13,"tag":14,"props":113,"children":114},{},[115,117,123,125,130,132,136,138,143,145,151,153,158],{"type":22,"value":116},"As a convenience for applications, ",{"type":13,"tag":52,"props":118,"children":120},{"className":119},[],[121],{"type":22,"value":122},"vulkan.h",{"type":22,"value":124}," conditionally includes\n",{"type":13,"tag":52,"props":126,"children":128},{"className":127},[],[129],{"type":22,"value":57},{"type":22,"value":131},".\nApplications ",{"type":13,"tag":27,"props":133,"children":135},{"type":134},"can",[],{"type":22,"value":137}," control inclusion of ",{"type":13,"tag":52,"props":139,"children":141},{"className":140},[],[142],{"type":22,"value":57},{"type":22,"value":144}," by #defining the\nmacro ",{"type":13,"tag":52,"props":146,"children":148},{"className":147},[],[149],{"type":22,"value":150},"VK_ENABLE_BETA_EXTENSIONS",{"type":22,"value":152}," before including ",{"type":13,"tag":52,"props":154,"children":156},{"className":155},[],[157],{"type":22,"value":122},{"type":22,"value":89},{"type":13,"tag":91,"props":160,"children":161},{},[162],{"type":13,"tag":14,"props":163,"children":164},{},[165,167,172,174,179],{"type":22,"value":166},"Starting in version 1.2.171 of the Specification, all provisional enumerants\nare protected by the macro ",{"type":13,"tag":52,"props":168,"children":170},{"className":169},[],[171],{"type":22,"value":150},{"type":22,"value":173},".\nApplications needing to use provisional extensions must always define this\nmacro, even if they are explicitly including ",{"type":13,"tag":52,"props":175,"children":177},{"className":176},[],[178],{"type":22,"value":57},{"type":22,"value":180},".\nThis is a minor change to behavior, affecting only provisional extensions.",{"type":13,"tag":91,"props":182,"children":183},{},[184],{"type":13,"tag":14,"props":185,"children":186},{},[187],{"type":22,"value":188},"This section describes the purpose of the provisional header independently\nof the specific provisional extensions which are contained in that header at\nany given time.\nThe extension appendices for provisional extensions note their provisional\nstatus, and link back to this section for more information.\nProvisional extensions are intended to provide early access for\nbleeding-edge developers, with the understanding that extension interfaces\nmay change in response to developer feedback.\nProvisional extensions are very likely to eventually be updated and released\nas non-provisional extensions, but there is no guarantee this will happen,\nor how long it will take if it does happen.",{"title":190,"searchDepth":191,"depth":191,"links":192},"",2,[],"markdown",1725732596429]