aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt22
-rw-r--r--contrib/DirectX-Headers/CMakeLists.txt87
-rw-r--r--contrib/DirectX-Headers/LICENSE21
-rw-r--r--contrib/DirectX-Headers/README.md59
-rw-r--r--contrib/DirectX-Headers/SECURITY.md41
-rw-r--r--contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in4
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12.h23139
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12.idl5457
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12compatibility.h659
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12compatibility.idl88
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12sdklayers.h3657
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl1679
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12shader.h474
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12video.h5533
-rw-r--r--contrib/DirectX-Headers/include/directx/d3d12video.idl1448
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dcommon.h1068
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dcommon.idl911
-rw-r--r--contrib/DirectX-Headers/include/directx/d3dx12.h4049
-rw-r--r--contrib/DirectX-Headers/include/directx/dxcore.h41
-rw-r--r--contrib/DirectX-Headers/include/directx/dxcore_interface.h316
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgicommon.h57
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgicommon.idl52
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgiformat.h142
-rw-r--r--contrib/DirectX-Headers/include/directx/dxgiformat.idl137
-rw-r--r--contrib/DirectX-Headers/include/dxguids/dxguids.h126
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/rpc.h5
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h6
-rw-r--r--contrib/DirectX-Headers/include/wsl/winadapter.h340
-rw-r--r--contrib/DirectX-Headers/include/wsl/wrladapter.h801
-rw-r--r--contrib/DirectX-Headers/meson.build35
-rw-r--r--contrib/DirectX-Headers/meson_options.txt7
-rw-r--r--contrib/DirectX-Headers/src/dxguids.cpp12
-rw-r--r--contrib/DirectX-Headers/test/CMakeLists.txt6
-rw-r--r--contrib/DirectX-Headers/test/meson.build9
-rw-r--r--contrib/DirectX-Headers/test/test.cpp32
-rw-r--r--contrib/glfw/CMakeLists.txt11
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/LICENSE.md23
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/README.md69
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bc_s.pngbin0 -> 676 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bdwn.pngbin0 -> 147 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_guide.html192
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/closed.pngbin0 -> 132 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_guide.html145
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_guide.html216
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_guide.html251
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/deprecated.html81
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_95e305b1bfdd4b95b22076c452f17802.html88
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_a2f8ccc4e596c8744057ab6c4a040d5c.html86
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_af88d45d38f632316cb7d639530d38c2.html78
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_ba478fc71671afc03f16a7df0eff1823.html84
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doc.pngbin0 -> 746 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.css1827
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.svg26
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dynsections.js121
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/extra.css1
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/files.html80
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderclosed.pngbin0 -> 616 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderopen.pngbin0 -> 597 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h.html1603
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h_source.html1155
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h.html160
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h_source.html264
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__buttons.html275
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__context.html295
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__errors.html297
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__axes.html195
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__buttons.html403
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__hat__state.html227
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__init.html545
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__input.html2227
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__joysticks.html355
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__keys.html2043
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__mods.html191
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__monitor.html841
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__native.html798
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__shapes.html191
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__vulkan.html354
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__window.html3425
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/index.html93
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_guide.html560
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internal_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internals_guide.html125
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_guide.html329
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/jquery.js35
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/main_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menu.js127
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menudata.js30
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/modules.html94
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_guide.html222
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_guide.html367
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_f.pngbin0 -> 153 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_g.pngbin0 -> 95 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_h.pngbin0 -> 98 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news.html606
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/open.pngbin0 -> 123 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/pages.html92
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_guide.html391
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.js8
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.js7
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.js9
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.js476
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.js11
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.js11
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.js7
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.js7
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/close.svg31
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.js31
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.js146
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/mag_sel.svg74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/nomatches.html13
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.css263
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.js794
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_l.pngbin0 -> 567 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_m.pngbin0 -> 158 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_r.pngbin0 -> 553 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/searchdata.js39
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.js32
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.js5
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.js6
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.html37
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.js4
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/spaces.svg877
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/splitbar.pngbin0 -> 314 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgamepadstate.html129
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgammaramp.html165
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWimage.html146
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWvidmode.html199
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_off.pngbin0 -> 853 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_on.pngbin0 -> 845 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_a.pngbin0 -> 142 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_b.pngbin0 -> 169 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_h.pngbin0 -> 177 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_s.pngbin0 -> 184 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tabs.css1
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_guide.html188
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_8dox.html74
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_guide.html756
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3.h5907
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h594
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.dllbin0 -> 214016 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.libbin0 -> 623886 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3_mt.libbin0 -> 623324 bytes
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3dll.libbin0 -> 30306 bytes
-rw-r--r--dxcommon/CMakeLists.txt12
-rw-r--r--dxcommon/include/dxcommon.h55
-rw-r--r--dxcommon/src/dxcommon.cc8
-rw-r--r--dxwindow/CMakeLists.txt10
-rw-r--r--dxwindow/include/dxwindow.h50
-rw-r--r--dxwindow/src/dxwindow.cc80
-rw-r--r--hello/CMakeLists.txt7
-rw-r--r--hello/main.cc439
274 files changed, 87945 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..53799c0
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,22 @@
1cmake_minimum_required(VERSION 3.0)
2
3project(dx12)
4
5set(CMAKE_CXX_STANDARD 20)
6set(CMAKE_CXX_STANDARD_REQUIRED ON)
7
8# -MT, multi-threaded statically-linked runtime library.
9#set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
10set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
11set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /DDEBUG")
12
13# External dependencies.
14add_subdirectory(contrib/DirectX-Headers)
15add_subdirectory(contrib/glfw)
16
17# Common libraries.
18add_subdirectory(dxcommon)
19add_subdirectory(dxwindow)
20
21# Applications.
22add_subdirectory(hello)
diff --git a/contrib/DirectX-Headers/CMakeLists.txt b/contrib/DirectX-Headers/CMakeLists.txt
new file mode 100644
index 0000000..9d3c51b
--- /dev/null
+++ b/contrib/DirectX-Headers/CMakeLists.txt
@@ -0,0 +1,87 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3cmake_minimum_required(VERSION 3.10.2)
4project(DirectX-Headers
5 LANGUAGES CXX
6 VERSION 1.4.9
7)
8
9set(CMAKE_CXX_STANDARD 14)
10set(CMAKE_CXX_STANDARD_REQUIRED ON)
11set(CMAKE_CXX_EXTENSIONS OFF)
12
13# It's useful to know if you are a top level project or not, if your project is
14# being consumed via add_subdirectory
15if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
16 set(IS_TOPLEVEL_PROJECT TRUE)
17else()
18 set(IS_TOPLEVEL_PROJECT FALSE)
19endif()
20
21# Use DXHEADERS_* prefix to avoid potential name conflicts in cmake-gui, and allow
22# grouping by prefix if more options are added
23#
24# Testing should only be enabled by default if we are top level. Otherwise clients can set it
25# either via cmake or cmake-gui
26option(DXHEADERS_BUILD_TEST "Build the test" ${IS_TOPLEVEL_PROJECT})
27option(DXHEADERS_INSTALL "Installation logic" ${IS_TOPLEVEL_PROJECT})
28
29include(GNUInstallDirs)
30
31# Enables consumers to add this library as a link target to automatically add
32# these include directories, regardless of whether this is referenced via subdirectory
33# or from an installed location
34add_library(DirectX-Headers INTERFACE)
35target_include_directories(DirectX-Headers SYSTEM INTERFACE
36 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
37 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
38)
39
40# For non-Windows targets, also add the WSL stubs to the include path
41if (NOT WIN32)
42 target_include_directories(DirectX-Headers SYSTEM INTERFACE
43 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/wsl/stubs>"
44 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/wsl/stubs>"
45 )
46endif()
47
48add_library(Microsoft::DirectX-Headers ALIAS DirectX-Headers)
49
50add_library(DirectX-Guids STATIC src/dxguids.cpp)
51target_link_libraries(DirectX-Guids PRIVATE DirectX-Headers)
52
53add_library(Microsoft::DirectX-Guids ALIAS DirectX-Guids)
54
55if (DXHEADERS_INSTALL)
56 # Install the targets
57 install(TARGETS DirectX-Headers DirectX-Guids
58 EXPORT DirectX-Headers-Targets
59 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
60 # Create the targets CMake file which contains the above definitions
61 install(EXPORT DirectX-Headers-Targets FILE directx-headers-targets.cmake
62 NAMESPACE Microsoft::
63 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
64
65 # Install the actual includes
66 install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/"
67 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
68
69 # Create the CMake config files
70 include(CMakePackageConfigHelpers)
71 write_basic_package_version_file("directx-headers-config-version.cmake"
72 VERSION ${PROJECT_VERSION}
73 COMPATIBILITY SameMajorVersion)
74 configure_package_config_file(
75 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/directx-headers-config.cmake.in"
76 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
77 INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
78
79 # Install the CMake config files
80 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
81 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config-version.cmake"
82 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
83endif()
84
85if (DXHEADERS_BUILD_TEST)
86 add_subdirectory(test)
87endif()
diff --git a/contrib/DirectX-Headers/LICENSE b/contrib/DirectX-Headers/LICENSE
new file mode 100644
index 0000000..63447fd
--- /dev/null
+++ b/contrib/DirectX-Headers/LICENSE
@@ -0,0 +1,21 @@
1Copyright (c) Microsoft Corporation.
2
3MIT License
4
5Permission is hereby granted, free of charge, to any person obtaining a copy
6of this software and associated documentation files (the "Software"), to deal
7in the Software without restriction, including without limitation the rights
8to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9copies of the Software, and to permit persons to whom the Software is
10furnished to do so, subject to the following conditions:
11
12The above copyright notice and this permission notice shall be included in all
13copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21SOFTWARE. \ No newline at end of file
diff --git a/contrib/DirectX-Headers/README.md b/contrib/DirectX-Headers/README.md
new file mode 100644
index 0000000..1e77be6
--- /dev/null
+++ b/contrib/DirectX-Headers/README.md
@@ -0,0 +1,59 @@
1# DirectX Headers
2
3This repository hosts the official Direct3D 12 headers. These headers are made available under the MIT license rather than the traditional Windows SDK license.
4
5Additionally, this repository hosts several helpers for using these headers.
6
7## Directory Structure
8
9* `/`: Build files are available here for quick integration. CMake is provided, and can be referenced either via `subdirectory()` or after installation to a system location. Meson is also available for inclusion as a subproject/wrap.
10* `/include/directx`: These files are the core headers for using D3D12, plus d3dx12.h, which is a helper and does not cross the boundaries of the D3D12 API.
11* `/include/wsl`: These files are provided as a shim to be able to include the D3D12 headers from a Linux build environment, without requiring the rest of the Windows SDK.
12* `/include/dxguids`: This header allows an application to use `uuidof<T>()` consistently between Windows and WSL, instead of `__uuidof()`.
13* `/src/dxguids.cpp`: This cpp file can be used as a replacement for linking against `dxguid.lib` on Windows, and as a convenient translation unit to define GUIDs without multiple definitions for WSL.
14* `/test`: Simple CMake/Meson projects for validating the headers can be included in a given environment
15
16## Use on Windows
17
18Note that these headers may conflict with the headers from the Windows SDK, depending on include ordering. These headers should be added to the include directory list before the SDK, and should be included before other graphics headers (e.g. `d3d11.h`) from the Windows SDK. Otherwise, the corresponding header from the Windows SDK may be included first, and will define the include guards which prevents these headers from being used.
19
20## Use on WSL
21
22Note: WSL support is not intended for general purpose application development. At this time, the only recommended usage is for frameworks wishing to provide hardware acceleration for a Linux graphics/compute API in a WSL2 virtualization environment.
23
24Note: WSL support is only available for 64-bit binaries.
25
26The headers in the `/include/wsl` directory provide alternative definitions to macros and typedefs normally found in the Windows SDK. For the most part, they should be straightforward, but there are a couple to call attention to:
27
28|Type|Reason|
29|---|---|
30|`LONG`/`ULONG`|On 64-bit Windows, a `long` is 4 bytes, but on Linux it is typically 8 bytes. The D3D12 ABI for WSL uses `long` and therefore these should be 8 bytes.|
31|`WCHAR`/`WCSTR`|On Windows, a `wchar_t` is 2 bytes, but on Linux it is typically 4 bytes. The D3D12 ABI for WSL uses the native 4-byte `wchar_t`, to enable applications and the runtime to use the system C library to perform string manipulation.|
32
33Additionally, APIs taking `HANDLE` (`void*`) for Win32 types should instead use `reinterpret_cast<HANDLE>(fd)` for an appropriate type of file descriptor. For `ID3D12Fence::SetEventOnCompletion` this should be an `eventfd`, and for shared resources will be an opaque fd.
34
35## Ways to consume
36
37There are various ways to consume the headers in this project:
38
39* Manually: Just copy the headers somewhere and point your project at them.
40* CMake subproject: Add this entire project as a subdirectory of your larger project, e.g. as a git submodule, and `add_subdirectory` into it. Use the resulting `DirectX-Headers` and/or `DirectX-Guids` targets as a link dependency
41* Installed CMake: After building/installing this project, it can be found through CMake's `find_package` functionality and will expose the same `DirectX-Headers` and `DirectX-Guids` targets.
42* FetchContent CMake (3.11+): Fetch this library using Git and easily add it to your project.
43* Meson subproject/wrap: Add this entire project as a subproject of your larger project, and use `subproject` or `dependency` to consume it.
44* Pkg-config: Use Meson to build this project, and the resulting installed package can be found via pkg-config.
45* vcpkg: A vcpkg port has [been added](https://github.com/microsoft/vcpkg/pull/15222).
46
47Contributions for new mechanisms are welcome.
48
49## Contributing
50
51This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
52
53When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
54
55This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
56
57## Trademarks
58
59This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies. \ No newline at end of file
diff --git a/contrib/DirectX-Headers/SECURITY.md b/contrib/DirectX-Headers/SECURITY.md
new file mode 100644
index 0000000..f7b8998
--- /dev/null
+++ b/contrib/DirectX-Headers/SECURITY.md
@@ -0,0 +1,41 @@
1<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
2
3## Security
4
5Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6
7If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
8
9## Reporting Security Issues
10
11**Please do not report security vulnerabilities through public GitHub issues.**
12
13Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
14
15If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
16
17You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
18
19Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20
21 * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22 * Full paths of source file(s) related to the manifestation of the issue
23 * The location of the affected source code (tag/branch/commit or direct URL)
24 * Any special configuration required to reproduce the issue
25 * Step-by-step instructions to reproduce the issue
26 * Proof-of-concept or exploit code (if possible)
27 * Impact of the issue, including how an attacker might exploit the issue
28
29This information will help us triage your report more quickly.
30
31If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
32
33## Preferred Languages
34
35We prefer all communications to be in English.
36
37## Policy
38
39Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
40
41<!-- END MICROSOFT SECURITY.MD BLOCK --> \ No newline at end of file
diff --git a/contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in b/contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in
new file mode 100644
index 0000000..50c40bc
--- /dev/null
+++ b/contrib/DirectX-Headers/cmake/directx-headers-config.cmake.in
@@ -0,0 +1,4 @@
1@PACKAGE_INIT@
2
3include("${CMAKE_CURRENT_LIST_DIR}/directx-headers-targets.cmake")
4check_required_components("@PROJECT_NAME@") \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/directx/d3d12.h b/contrib/DirectX-Headers/include/directx/d3d12.h
new file mode 100644
index 0000000..0cac343
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12.h
@@ -0,0 +1,23139 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12_h__
39#define __d3d12_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Object_FWD_DEFINED__
56#define __ID3D12Object_FWD_DEFINED__
57typedef interface ID3D12Object ID3D12Object;
58
59#endif /* __ID3D12Object_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12DeviceChild_FWD_DEFINED__
63#define __ID3D12DeviceChild_FWD_DEFINED__
64typedef interface ID3D12DeviceChild ID3D12DeviceChild;
65
66#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12RootSignature_FWD_DEFINED__
70#define __ID3D12RootSignature_FWD_DEFINED__
71typedef interface ID3D12RootSignature ID3D12RootSignature;
72
73#endif /* __ID3D12RootSignature_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
77#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
78typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
79
80#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
84#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
85typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
86
87#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Pageable_FWD_DEFINED__
91#define __ID3D12Pageable_FWD_DEFINED__
92typedef interface ID3D12Pageable ID3D12Pageable;
93
94#endif /* __ID3D12Pageable_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Heap_FWD_DEFINED__
98#define __ID3D12Heap_FWD_DEFINED__
99typedef interface ID3D12Heap ID3D12Heap;
100
101#endif /* __ID3D12Heap_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12Resource_FWD_DEFINED__
105#define __ID3D12Resource_FWD_DEFINED__
106typedef interface ID3D12Resource ID3D12Resource;
107
108#endif /* __ID3D12Resource_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
112#define __ID3D12CommandAllocator_FWD_DEFINED__
113typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
114
115#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12Fence_FWD_DEFINED__
119#define __ID3D12Fence_FWD_DEFINED__
120typedef interface ID3D12Fence ID3D12Fence;
121
122#endif /* __ID3D12Fence_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12Fence1_FWD_DEFINED__
126#define __ID3D12Fence1_FWD_DEFINED__
127typedef interface ID3D12Fence1 ID3D12Fence1;
128
129#endif /* __ID3D12Fence1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12PipelineState_FWD_DEFINED__
133#define __ID3D12PipelineState_FWD_DEFINED__
134typedef interface ID3D12PipelineState ID3D12PipelineState;
135
136#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
140#define __ID3D12DescriptorHeap_FWD_DEFINED__
141typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
142
143#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12QueryHeap_FWD_DEFINED__
147#define __ID3D12QueryHeap_FWD_DEFINED__
148typedef interface ID3D12QueryHeap ID3D12QueryHeap;
149
150#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12CommandSignature_FWD_DEFINED__
154#define __ID3D12CommandSignature_FWD_DEFINED__
155typedef interface ID3D12CommandSignature ID3D12CommandSignature;
156
157#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12CommandList_FWD_DEFINED__
161#define __ID3D12CommandList_FWD_DEFINED__
162typedef interface ID3D12CommandList ID3D12CommandList;
163
164#endif /* __ID3D12CommandList_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
168#define __ID3D12GraphicsCommandList_FWD_DEFINED__
169typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
170
171#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
175#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
176typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
177
178#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
182#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
183typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
184
185#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12CommandQueue_FWD_DEFINED__
189#define __ID3D12CommandQueue_FWD_DEFINED__
190typedef interface ID3D12CommandQueue ID3D12CommandQueue;
191
192#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12Device_FWD_DEFINED__
196#define __ID3D12Device_FWD_DEFINED__
197typedef interface ID3D12Device ID3D12Device;
198
199#endif /* __ID3D12Device_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
203#define __ID3D12PipelineLibrary_FWD_DEFINED__
204typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
205
206#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
210#define __ID3D12PipelineLibrary1_FWD_DEFINED__
211typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
212
213#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12Device1_FWD_DEFINED__
217#define __ID3D12Device1_FWD_DEFINED__
218typedef interface ID3D12Device1 ID3D12Device1;
219
220#endif /* __ID3D12Device1_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12Device2_FWD_DEFINED__
224#define __ID3D12Device2_FWD_DEFINED__
225typedef interface ID3D12Device2 ID3D12Device2;
226
227#endif /* __ID3D12Device2_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12Device3_FWD_DEFINED__
231#define __ID3D12Device3_FWD_DEFINED__
232typedef interface ID3D12Device3 ID3D12Device3;
233
234#endif /* __ID3D12Device3_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
238#define __ID3D12ProtectedSession_FWD_DEFINED__
239typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
240
241#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
245#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
246typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
247
248#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12Device4_FWD_DEFINED__
252#define __ID3D12Device4_FWD_DEFINED__
253typedef interface ID3D12Device4 ID3D12Device4;
254
255#endif /* __ID3D12Device4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
259#define __ID3D12LifetimeOwner_FWD_DEFINED__
260typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
261
262#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
263
264
265#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
266#define __ID3D12SwapChainAssistant_FWD_DEFINED__
267typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
268
269#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
270
271
272#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
273#define __ID3D12LifetimeTracker_FWD_DEFINED__
274typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
275
276#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
277
278
279#ifndef __ID3D12StateObject_FWD_DEFINED__
280#define __ID3D12StateObject_FWD_DEFINED__
281typedef interface ID3D12StateObject ID3D12StateObject;
282
283#endif /* __ID3D12StateObject_FWD_DEFINED__ */
284
285
286#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
287#define __ID3D12StateObjectProperties_FWD_DEFINED__
288typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
289
290#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
291
292
293#ifndef __ID3D12Device5_FWD_DEFINED__
294#define __ID3D12Device5_FWD_DEFINED__
295typedef interface ID3D12Device5 ID3D12Device5;
296
297#endif /* __ID3D12Device5_FWD_DEFINED__ */
298
299
300#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
301#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
302typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
303
304#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
305
306
307#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
308#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
309typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
310
311#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
312
313
314#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
315#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
316typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
317
318#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
319
320
321#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
322#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
323typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
324
325#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
326
327
328#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
329#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
330typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
331
332#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
333
334
335#ifndef __ID3D12Device6_FWD_DEFINED__
336#define __ID3D12Device6_FWD_DEFINED__
337typedef interface ID3D12Device6 ID3D12Device6;
338
339#endif /* __ID3D12Device6_FWD_DEFINED__ */
340
341
342#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
343#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
344typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
345
346#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
347
348
349#ifndef __ID3D12Device7_FWD_DEFINED__
350#define __ID3D12Device7_FWD_DEFINED__
351typedef interface ID3D12Device7 ID3D12Device7;
352
353#endif /* __ID3D12Device7_FWD_DEFINED__ */
354
355
356#ifndef __ID3D12Device8_FWD_DEFINED__
357#define __ID3D12Device8_FWD_DEFINED__
358typedef interface ID3D12Device8 ID3D12Device8;
359
360#endif /* __ID3D12Device8_FWD_DEFINED__ */
361
362
363#ifndef __ID3D12Resource1_FWD_DEFINED__
364#define __ID3D12Resource1_FWD_DEFINED__
365typedef interface ID3D12Resource1 ID3D12Resource1;
366
367#endif /* __ID3D12Resource1_FWD_DEFINED__ */
368
369
370#ifndef __ID3D12Resource2_FWD_DEFINED__
371#define __ID3D12Resource2_FWD_DEFINED__
372typedef interface ID3D12Resource2 ID3D12Resource2;
373
374#endif /* __ID3D12Resource2_FWD_DEFINED__ */
375
376
377#ifndef __ID3D12Heap1_FWD_DEFINED__
378#define __ID3D12Heap1_FWD_DEFINED__
379typedef interface ID3D12Heap1 ID3D12Heap1;
380
381#endif /* __ID3D12Heap1_FWD_DEFINED__ */
382
383
384#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
385#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
386typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
387
388#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
389
390
391#ifndef __ID3D12MetaCommand_FWD_DEFINED__
392#define __ID3D12MetaCommand_FWD_DEFINED__
393typedef interface ID3D12MetaCommand ID3D12MetaCommand;
394
395#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
396
397
398#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
399#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
400typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
401
402#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
403
404
405#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
406#define __ID3D12ShaderCacheSession_FWD_DEFINED__
407typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
408
409#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
410
411
412#ifndef __ID3D12Device9_FWD_DEFINED__
413#define __ID3D12Device9_FWD_DEFINED__
414typedef interface ID3D12Device9 ID3D12Device9;
415
416#endif /* __ID3D12Device9_FWD_DEFINED__ */
417
418
419#ifndef __ID3D12Tools_FWD_DEFINED__
420#define __ID3D12Tools_FWD_DEFINED__
421typedef interface ID3D12Tools ID3D12Tools;
422
423#endif /* __ID3D12Tools_FWD_DEFINED__ */
424
425
426#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
427#define __ID3D12SDKConfiguration_FWD_DEFINED__
428typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
429
430#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
431
432
433#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
434#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
435typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
436
437#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
438
439
440#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
441#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
442typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
443
444#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
445
446
447/* header files for imported files */
448#include "OAIdl.h"
449#include "OCIdl.h"
450#include "dxgicommon.h"
451#include "dxgiformat.h"
452#include "d3dcommon.h"
453
454#ifdef __cplusplus
455extern "C"{
456#endif
457
458
459/* interface __MIDL_itf_d3d12_0000_0000 */
460/* [local] */
461
462#include <winapifamily.h>
463#pragma region App Family
464#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
465#ifndef _D3D12_CONSTANTS
466#define _D3D12_CONSTANTS
467#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
468
469#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
470
471#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
472
473#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
474
475#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
476
477#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
478
479#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
480
481#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
482
483#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
484
485#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
486
487#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
488
489#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
490
491#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
492
493#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
494
495#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
496
497#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
498
499#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
500
501#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
502
503#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
504
505#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
506
507#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
508
509#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
510
511#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
512
513#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
514
515#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
516
517#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
518
519#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
520
521#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
522
523#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
524
525#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
526
527#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
528
529#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
530
531#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
532
533#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
534
535#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
536
537#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
538
539#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
540
541#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
542
543#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
544
545#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
546
547#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
548
549#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
550
551#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
552
553#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
554
555#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
556
557#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
558
559#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
560
561#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
562
563#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
564
565#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
566
567#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
568
569#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
570
571#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
572
573#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
574
575#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
576
577#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
578
579#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
580
581#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
582
583#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
584
585#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
586
587#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
588
589#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
590
591#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
592
593#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
594
595#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
596
597#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
598
599#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
600
601#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
602
603#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
604
605#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
606
607#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
608
609#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
610
611#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
612
613#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
614
615#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
616
617#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
618
619#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
620
621#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
622
623#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
624
625#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
626
627#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
628
629#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
630
631#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
632
633#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
634
635#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
636
637#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
638
639#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
640
641#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
642
643#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
644
645#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
646
647#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
648
649#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
650
651#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
652
653#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
654
655#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
656
657#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
658
659#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
660
661#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
662
663#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
664
665#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
666
667#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
668
669#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
670
671#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
672#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
673#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
674#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
675#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
676#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
677
678#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
679#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
680
681#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
682#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
683
684#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
685
686#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
687
688#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
689
690#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
691
692#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
693
694#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
695
696#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
697
698#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
699#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
700
701#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
702
703#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
704
705#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
706
707#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
708
709#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
710#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
711#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
712
713#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
714
715#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
716
717#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
718
719#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
720
721#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
722
723#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
724
725#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
726
727#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
728
729#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
730
731#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
732
733#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
734
735#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
736
737#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
738
739#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
740
741#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
742
743#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
744
745#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
746
747#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
748
749#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
750
751#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
752
753#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
754
755#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
756
757#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
758
759#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
760
761#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
762
763#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
764
765#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
766
767#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
768
769#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
770
771#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
772#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
773#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
774#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
775#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
776#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
777#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
778#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
779#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
780#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
781#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
782#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
783#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
784#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
785
786#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
787
788#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
789
790#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
791
792#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
793
794#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
795
796#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
797
798#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
799
800#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
801
802#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
803
804#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
805
806#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
807
808#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
809
810#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
811
812#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
813
814#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
815
816#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
817
818#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
819
820#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
821
822#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
823
824#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
825
826#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
827
828#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
829
830#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
831
832#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
833
834#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
835
836#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
837
838#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
839
840#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
841
842#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
843
844#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
845
846#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
847
848#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
849
850#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
851
852#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
853
854#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
855
856#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
857
858#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
859
860#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
861
862#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
863
864#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
865
866#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
867
868#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
869
870#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
871
872#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
873
874#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
875#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
876#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
877
878#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
879
880#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
881
882#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
883
884#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
885
886#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
887
888#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
889
890#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
891
892#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
893
894#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
895
896#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
897
898#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
899
900#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
901
902#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
903
904#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
905
906#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
907
908#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
909
910#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
911
912#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
913
914#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
915
916#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
917
918#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
919
920#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
921
922#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
923
924#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
925
926#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
927
928#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
929
930#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
931
932#define D3D12_LINEAR_GAMMA ( 1.0f )
933#define D3D12_MAJOR_VERSION ( 12 )
934
935#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
936#define D3D12_MAX_DEPTH ( 1.0f )
937#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
938
939#define D3D12_MAX_MAXANISOTROPY ( 16 )
940
941#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
942
943#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
944#define D3D12_MAX_ROOT_COST ( 64 )
945
946#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
947
948#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
949
950#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
951
952#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
953
954#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
955
956#define D3D12_MINOR_VERSION ( 0 )
957
958#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
959#define D3D12_MIN_DEPTH ( 0.0f )
960#define D3D12_MIN_MAXANISOTROPY ( 0 )
961
962#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
963#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
964#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
965
966#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
967
968#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
969#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
970
971#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
972
973#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
974
975#define D3D12_PACKED_TILE ( 0xffffffff )
976
977#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
978
979#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
980
981#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
982
983#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
984
985#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
986
987#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
988
989#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
990
991#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
992
993#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
994
995#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
996
997#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
998
999#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
1000
1001#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
1002
1003#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
1004
1005#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
1006#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
1007
1008#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1009
1010#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
1011
1012#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
1013
1014#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1015
1016#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
1017
1018#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1019
1020#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1021
1022#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
1023
1024#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
1025#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
1026
1027#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
1028
1029#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
1030
1031#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
1032
1033#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
1034
1035#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
1036
1037#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1038
1039#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1040
1041#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
1042
1043#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
1044
1045#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
1046
1047#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
1048
1049#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
1050
1051#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
1052
1053#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
1054
1055#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
1056
1057#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1058
1059#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
1060
1061#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
1062
1063#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
1064
1065#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
1066
1067#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
1068
1069#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1070
1071#define D3D12_REQ_MAXANISOTROPY ( 16 )
1072
1073#define D3D12_REQ_MIP_LEVELS ( 15 )
1074
1075#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
1076
1077#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1078
1079#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
1080
1081#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
1082
1083#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
1084#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
1085
1086#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
1087
1088#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1089
1090#define D3D12_REQ_SUBRESOURCES ( 30720 )
1091
1092#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
1093
1094#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
1095
1096#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
1097
1098#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
1099
1100#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
1101
1102#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
1103
1104#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
1105
1106#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
1107
1108#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
1109
1110#define D3D12_SDK_VERSION ( 4 )
1111
1112#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
1113
1114#define D3D12_SHADER_MAJOR_VERSION ( 5 )
1115
1116#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
1117
1118#define D3D12_SHADER_MAX_INTERFACES ( 253 )
1119
1120#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
1121
1122#define D3D12_SHADER_MAX_TYPES ( 65535 )
1123
1124#define D3D12_SHADER_MINOR_VERSION ( 1 )
1125
1126#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
1127
1128#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
1129
1130#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
1131
1132#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
1133
1134#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
1135
1136#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
1137
1138#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
1139
1140#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
1141
1142#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
1143
1144#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
1145
1146#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
1147
1148#define D3D12_SO_STREAM_COUNT ( 4 )
1149
1150#define D3D12_SPEC_DATE_DAY ( 14 )
1151
1152#define D3D12_SPEC_DATE_MONTH ( 11 )
1153
1154#define D3D12_SPEC_DATE_YEAR ( 2014 )
1155
1156#define D3D12_SPEC_VERSION ( 1.16 )
1157#define D3D12_SRGB_GAMMA ( 2.2f )
1158#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
1159#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
1160#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
1161#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
1162#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
1163#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
1164#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
1165
1166#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
1167
1168#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
1169
1170#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
1171
1172#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
1173
1174#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
1175
1176#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
1177
1178#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
1179
1180#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
1181
1182#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
1183
1184#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1185
1186#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
1187
1188#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
1189
1190#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
1191
1192#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
1193
1194#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
1195
1196#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
1197
1198#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
1199
1200#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
1201
1202#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1203
1204#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
1205
1206#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
1207
1208#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
1209
1210#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
1211
1212#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
1213
1214#define D3D12_UAV_SLOT_COUNT ( 64 )
1215
1216#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
1217
1218#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
1219
1220#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
1221
1222#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
1223
1224#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
1225
1226#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
1227
1228#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
1229
1230#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
1231
1232#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
1233
1234#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
1235
1236#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
1237
1238#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
1239
1240#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
1241
1242#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1243
1244#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
1245
1246#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
1247
1248#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
1249
1250#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1251
1252#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1253
1254#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
1255
1256#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
1257
1258#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
1259
1260#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
1261
1262#endif
1263
1264typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
1265
1266typedef
1267enum D3D12_COMMAND_LIST_TYPE
1268 {
1269 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
1270 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
1271 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
1272 D3D12_COMMAND_LIST_TYPE_COPY = 3,
1273 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
1274 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
1275 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6
1276 } D3D12_COMMAND_LIST_TYPE;
1277
1278typedef
1279enum D3D12_COMMAND_QUEUE_FLAGS
1280 {
1281 D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
1282 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1
1283 } D3D12_COMMAND_QUEUE_FLAGS;
1284
1285DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );
1286typedef
1287enum D3D12_COMMAND_QUEUE_PRIORITY
1288 {
1289 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
1290 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
1291 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
1292 } D3D12_COMMAND_QUEUE_PRIORITY;
1293
1294typedef struct D3D12_COMMAND_QUEUE_DESC
1295 {
1296 D3D12_COMMAND_LIST_TYPE Type;
1297 INT Priority;
1298 D3D12_COMMAND_QUEUE_FLAGS Flags;
1299 UINT NodeMask;
1300 } D3D12_COMMAND_QUEUE_DESC;
1301
1302typedef
1303enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
1304 {
1305 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
1306 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
1307 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
1308 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
1309 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
1310 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
1311
1312typedef
1313enum D3D12_INPUT_CLASSIFICATION
1314 {
1315 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
1316 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
1317 } D3D12_INPUT_CLASSIFICATION;
1318
1319typedef struct D3D12_INPUT_ELEMENT_DESC
1320 {
1321 LPCSTR SemanticName;
1322 UINT SemanticIndex;
1323 DXGI_FORMAT Format;
1324 UINT InputSlot;
1325 UINT AlignedByteOffset;
1326 D3D12_INPUT_CLASSIFICATION InputSlotClass;
1327 UINT InstanceDataStepRate;
1328 } D3D12_INPUT_ELEMENT_DESC;
1329
1330typedef
1331enum D3D12_FILL_MODE
1332 {
1333 D3D12_FILL_MODE_WIREFRAME = 2,
1334 D3D12_FILL_MODE_SOLID = 3
1335 } D3D12_FILL_MODE;
1336
1337typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
1338
1339typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
1340
1341typedef
1342enum D3D12_CULL_MODE
1343 {
1344 D3D12_CULL_MODE_NONE = 1,
1345 D3D12_CULL_MODE_FRONT = 2,
1346 D3D12_CULL_MODE_BACK = 3
1347 } D3D12_CULL_MODE;
1348
1349typedef struct D3D12_SO_DECLARATION_ENTRY
1350 {
1351 UINT Stream;
1352 LPCSTR SemanticName;
1353 UINT SemanticIndex;
1354 BYTE StartComponent;
1355 BYTE ComponentCount;
1356 BYTE OutputSlot;
1357 } D3D12_SO_DECLARATION_ENTRY;
1358
1359typedef struct D3D12_VIEWPORT
1360 {
1361 FLOAT TopLeftX;
1362 FLOAT TopLeftY;
1363 FLOAT Width;
1364 FLOAT Height;
1365 FLOAT MinDepth;
1366 FLOAT MaxDepth;
1367 } D3D12_VIEWPORT;
1368
1369typedef RECT D3D12_RECT;
1370
1371typedef struct D3D12_BOX
1372 {
1373 UINT left;
1374 UINT top;
1375 UINT front;
1376 UINT right;
1377 UINT bottom;
1378 UINT back;
1379 } D3D12_BOX;
1380
1381typedef
1382enum D3D12_COMPARISON_FUNC
1383 {
1384 D3D12_COMPARISON_FUNC_NEVER = 1,
1385 D3D12_COMPARISON_FUNC_LESS = 2,
1386 D3D12_COMPARISON_FUNC_EQUAL = 3,
1387 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
1388 D3D12_COMPARISON_FUNC_GREATER = 5,
1389 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
1390 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
1391 D3D12_COMPARISON_FUNC_ALWAYS = 8
1392 } D3D12_COMPARISON_FUNC;
1393
1394typedef
1395enum D3D12_DEPTH_WRITE_MASK
1396 {
1397 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
1398 D3D12_DEPTH_WRITE_MASK_ALL = 1
1399 } D3D12_DEPTH_WRITE_MASK;
1400
1401typedef
1402enum D3D12_STENCIL_OP
1403 {
1404 D3D12_STENCIL_OP_KEEP = 1,
1405 D3D12_STENCIL_OP_ZERO = 2,
1406 D3D12_STENCIL_OP_REPLACE = 3,
1407 D3D12_STENCIL_OP_INCR_SAT = 4,
1408 D3D12_STENCIL_OP_DECR_SAT = 5,
1409 D3D12_STENCIL_OP_INVERT = 6,
1410 D3D12_STENCIL_OP_INCR = 7,
1411 D3D12_STENCIL_OP_DECR = 8
1412 } D3D12_STENCIL_OP;
1413
1414typedef struct D3D12_DEPTH_STENCILOP_DESC
1415 {
1416 D3D12_STENCIL_OP StencilFailOp;
1417 D3D12_STENCIL_OP StencilDepthFailOp;
1418 D3D12_STENCIL_OP StencilPassOp;
1419 D3D12_COMPARISON_FUNC StencilFunc;
1420 } D3D12_DEPTH_STENCILOP_DESC;
1421
1422typedef struct D3D12_DEPTH_STENCIL_DESC
1423 {
1424 BOOL DepthEnable;
1425 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1426 D3D12_COMPARISON_FUNC DepthFunc;
1427 BOOL StencilEnable;
1428 UINT8 StencilReadMask;
1429 UINT8 StencilWriteMask;
1430 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1431 D3D12_DEPTH_STENCILOP_DESC BackFace;
1432 } D3D12_DEPTH_STENCIL_DESC;
1433
1434typedef struct D3D12_DEPTH_STENCIL_DESC1
1435 {
1436 BOOL DepthEnable;
1437 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1438 D3D12_COMPARISON_FUNC DepthFunc;
1439 BOOL StencilEnable;
1440 UINT8 StencilReadMask;
1441 UINT8 StencilWriteMask;
1442 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1443 D3D12_DEPTH_STENCILOP_DESC BackFace;
1444 BOOL DepthBoundsTestEnable;
1445 } D3D12_DEPTH_STENCIL_DESC1;
1446
1447typedef
1448enum D3D12_BLEND
1449 {
1450 D3D12_BLEND_ZERO = 1,
1451 D3D12_BLEND_ONE = 2,
1452 D3D12_BLEND_SRC_COLOR = 3,
1453 D3D12_BLEND_INV_SRC_COLOR = 4,
1454 D3D12_BLEND_SRC_ALPHA = 5,
1455 D3D12_BLEND_INV_SRC_ALPHA = 6,
1456 D3D12_BLEND_DEST_ALPHA = 7,
1457 D3D12_BLEND_INV_DEST_ALPHA = 8,
1458 D3D12_BLEND_DEST_COLOR = 9,
1459 D3D12_BLEND_INV_DEST_COLOR = 10,
1460 D3D12_BLEND_SRC_ALPHA_SAT = 11,
1461 D3D12_BLEND_BLEND_FACTOR = 14,
1462 D3D12_BLEND_INV_BLEND_FACTOR = 15,
1463 D3D12_BLEND_SRC1_COLOR = 16,
1464 D3D12_BLEND_INV_SRC1_COLOR = 17,
1465 D3D12_BLEND_SRC1_ALPHA = 18,
1466 D3D12_BLEND_INV_SRC1_ALPHA = 19
1467 } D3D12_BLEND;
1468
1469typedef
1470enum D3D12_BLEND_OP
1471 {
1472 D3D12_BLEND_OP_ADD = 1,
1473 D3D12_BLEND_OP_SUBTRACT = 2,
1474 D3D12_BLEND_OP_REV_SUBTRACT = 3,
1475 D3D12_BLEND_OP_MIN = 4,
1476 D3D12_BLEND_OP_MAX = 5
1477 } D3D12_BLEND_OP;
1478
1479typedef
1480enum D3D12_COLOR_WRITE_ENABLE
1481 {
1482 D3D12_COLOR_WRITE_ENABLE_RED = 1,
1483 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
1484 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
1485 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
1486 D3D12_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN ) | D3D12_COLOR_WRITE_ENABLE_BLUE ) | D3D12_COLOR_WRITE_ENABLE_ALPHA )
1487 } D3D12_COLOR_WRITE_ENABLE;
1488
1489typedef
1490enum D3D12_LOGIC_OP
1491 {
1492 D3D12_LOGIC_OP_CLEAR = 0,
1493 D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
1494 D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
1495 D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
1496 D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
1497 D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
1498 D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
1499 D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
1500 D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
1501 D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
1502 D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
1503 D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
1504 D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
1505 D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
1506 D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
1507 D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
1508 } D3D12_LOGIC_OP;
1509
1510typedef struct D3D12_RENDER_TARGET_BLEND_DESC
1511 {
1512 BOOL BlendEnable;
1513 BOOL LogicOpEnable;
1514 D3D12_BLEND SrcBlend;
1515 D3D12_BLEND DestBlend;
1516 D3D12_BLEND_OP BlendOp;
1517 D3D12_BLEND SrcBlendAlpha;
1518 D3D12_BLEND DestBlendAlpha;
1519 D3D12_BLEND_OP BlendOpAlpha;
1520 D3D12_LOGIC_OP LogicOp;
1521 UINT8 RenderTargetWriteMask;
1522 } D3D12_RENDER_TARGET_BLEND_DESC;
1523
1524typedef struct D3D12_BLEND_DESC
1525 {
1526 BOOL AlphaToCoverageEnable;
1527 BOOL IndependentBlendEnable;
1528 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
1529 } D3D12_BLEND_DESC;
1530
1531/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
1532 IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
1533typedef
1534enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
1535 {
1536 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
1537 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
1538 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
1539
1540typedef struct D3D12_RASTERIZER_DESC
1541 {
1542 D3D12_FILL_MODE FillMode;
1543 D3D12_CULL_MODE CullMode;
1544 BOOL FrontCounterClockwise;
1545 INT DepthBias;
1546 FLOAT DepthBiasClamp;
1547 FLOAT SlopeScaledDepthBias;
1548 BOOL DepthClipEnable;
1549 BOOL MultisampleEnable;
1550 BOOL AntialiasedLineEnable;
1551 UINT ForcedSampleCount;
1552 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1553 } D3D12_RASTERIZER_DESC;
1554
1555
1556
1557extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
1558extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
1559
1560#ifndef __ID3D12Object_INTERFACE_DEFINED__
1561#define __ID3D12Object_INTERFACE_DEFINED__
1562
1563/* interface ID3D12Object */
1564/* [unique][local][object][uuid] */
1565
1566
1567EXTERN_C const IID IID_ID3D12Object;
1568
1569#if defined(__cplusplus) && !defined(CINTERFACE)
1570
1571 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1572 ID3D12Object : public IUnknown
1573 {
1574 public:
1575 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1576 _In_ REFGUID guid,
1577 _Inout_ UINT *pDataSize,
1578 _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
1579
1580 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1581 _In_ REFGUID guid,
1582 _In_ UINT DataSize,
1583 _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
1584
1585 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1586 _In_ REFGUID guid,
1587 _In_opt_ const IUnknown *pData) = 0;
1588
1589 virtual HRESULT STDMETHODCALLTYPE SetName(
1590 _In_z_ LPCWSTR Name) = 0;
1591
1592 };
1593
1594
1595#else /* C style interface */
1596
1597 typedef struct ID3D12ObjectVtbl
1598 {
1599 BEGIN_INTERFACE
1600
1601 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1602 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1603 ID3D12Object * This,
1604 REFIID riid,
1605 _COM_Outptr_ void **ppvObject);
1606
1607 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1608 ULONG ( STDMETHODCALLTYPE *AddRef )(
1609 ID3D12Object * This);
1610
1611 DECLSPEC_XFGVIRT(IUnknown, Release)
1612 ULONG ( STDMETHODCALLTYPE *Release )(
1613 ID3D12Object * This);
1614
1615 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1616 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1617 ID3D12Object * This,
1618 _In_ REFGUID guid,
1619 _Inout_ UINT *pDataSize,
1620 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1621
1622 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1623 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1624 ID3D12Object * This,
1625 _In_ REFGUID guid,
1626 _In_ UINT DataSize,
1627 _In_reads_bytes_opt_( DataSize ) const void *pData);
1628
1629 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1630 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1631 ID3D12Object * This,
1632 _In_ REFGUID guid,
1633 _In_opt_ const IUnknown *pData);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1636 HRESULT ( STDMETHODCALLTYPE *SetName )(
1637 ID3D12Object * This,
1638 _In_z_ LPCWSTR Name);
1639
1640 END_INTERFACE
1641 } ID3D12ObjectVtbl;
1642
1643 interface ID3D12Object
1644 {
1645 CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1646 };
1647
1648
1649
1650#ifdef COBJMACROS
1651
1652
1653#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
1654 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1655
1656#define ID3D12Object_AddRef(This) \
1657 ( (This)->lpVtbl -> AddRef(This) )
1658
1659#define ID3D12Object_Release(This) \
1660 ( (This)->lpVtbl -> Release(This) )
1661
1662
1663#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
1664 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1665
1666#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
1667 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1668
1669#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
1670 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1671
1672#define ID3D12Object_SetName(This,Name) \
1673 ( (This)->lpVtbl -> SetName(This,Name) )
1674
1675#endif /* COBJMACROS */
1676
1677
1678#endif /* C style interface */
1679
1680
1681
1682
1683#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
1684
1685
1686#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
1687#define __ID3D12DeviceChild_INTERFACE_DEFINED__
1688
1689/* interface ID3D12DeviceChild */
1690/* [unique][local][object][uuid] */
1691
1692
1693EXTERN_C const IID IID_ID3D12DeviceChild;
1694
1695#if defined(__cplusplus) && !defined(CINTERFACE)
1696
1697 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
1698 ID3D12DeviceChild : public ID3D12Object
1699 {
1700 public:
1701 virtual HRESULT STDMETHODCALLTYPE GetDevice(
1702 REFIID riid,
1703 _COM_Outptr_opt_ void **ppvDevice) = 0;
1704
1705 };
1706
1707
1708#else /* C style interface */
1709
1710 typedef struct ID3D12DeviceChildVtbl
1711 {
1712 BEGIN_INTERFACE
1713
1714 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1715 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1716 ID3D12DeviceChild * This,
1717 REFIID riid,
1718 _COM_Outptr_ void **ppvObject);
1719
1720 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1721 ULONG ( STDMETHODCALLTYPE *AddRef )(
1722 ID3D12DeviceChild * This);
1723
1724 DECLSPEC_XFGVIRT(IUnknown, Release)
1725 ULONG ( STDMETHODCALLTYPE *Release )(
1726 ID3D12DeviceChild * This);
1727
1728 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1729 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1730 ID3D12DeviceChild * This,
1731 _In_ REFGUID guid,
1732 _Inout_ UINT *pDataSize,
1733 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1734
1735 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1736 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1737 ID3D12DeviceChild * This,
1738 _In_ REFGUID guid,
1739 _In_ UINT DataSize,
1740 _In_reads_bytes_opt_( DataSize ) const void *pData);
1741
1742 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1743 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1744 ID3D12DeviceChild * This,
1745 _In_ REFGUID guid,
1746 _In_opt_ const IUnknown *pData);
1747
1748 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1749 HRESULT ( STDMETHODCALLTYPE *SetName )(
1750 ID3D12DeviceChild * This,
1751 _In_z_ LPCWSTR Name);
1752
1753 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1754 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1755 ID3D12DeviceChild * This,
1756 REFIID riid,
1757 _COM_Outptr_opt_ void **ppvDevice);
1758
1759 END_INTERFACE
1760 } ID3D12DeviceChildVtbl;
1761
1762 interface ID3D12DeviceChild
1763 {
1764 CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
1765 };
1766
1767
1768
1769#ifdef COBJMACROS
1770
1771
1772#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
1773 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1774
1775#define ID3D12DeviceChild_AddRef(This) \
1776 ( (This)->lpVtbl -> AddRef(This) )
1777
1778#define ID3D12DeviceChild_Release(This) \
1779 ( (This)->lpVtbl -> Release(This) )
1780
1781
1782#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
1783 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1784
1785#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
1786 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1787
1788#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
1789 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1790
1791#define ID3D12DeviceChild_SetName(This,Name) \
1792 ( (This)->lpVtbl -> SetName(This,Name) )
1793
1794
1795#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
1796 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1797
1798#endif /* COBJMACROS */
1799
1800
1801#endif /* C style interface */
1802
1803
1804
1805
1806#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
1807
1808
1809#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
1810#define __ID3D12RootSignature_INTERFACE_DEFINED__
1811
1812/* interface ID3D12RootSignature */
1813/* [unique][local][object][uuid] */
1814
1815
1816EXTERN_C const IID IID_ID3D12RootSignature;
1817
1818#if defined(__cplusplus) && !defined(CINTERFACE)
1819
1820 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
1821 ID3D12RootSignature : public ID3D12DeviceChild
1822 {
1823 public:
1824 };
1825
1826
1827#else /* C style interface */
1828
1829 typedef struct ID3D12RootSignatureVtbl
1830 {
1831 BEGIN_INTERFACE
1832
1833 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1834 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1835 ID3D12RootSignature * This,
1836 REFIID riid,
1837 _COM_Outptr_ void **ppvObject);
1838
1839 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1840 ULONG ( STDMETHODCALLTYPE *AddRef )(
1841 ID3D12RootSignature * This);
1842
1843 DECLSPEC_XFGVIRT(IUnknown, Release)
1844 ULONG ( STDMETHODCALLTYPE *Release )(
1845 ID3D12RootSignature * This);
1846
1847 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1848 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1849 ID3D12RootSignature * This,
1850 _In_ REFGUID guid,
1851 _Inout_ UINT *pDataSize,
1852 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1853
1854 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1855 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1856 ID3D12RootSignature * This,
1857 _In_ REFGUID guid,
1858 _In_ UINT DataSize,
1859 _In_reads_bytes_opt_( DataSize ) const void *pData);
1860
1861 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1862 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1863 ID3D12RootSignature * This,
1864 _In_ REFGUID guid,
1865 _In_opt_ const IUnknown *pData);
1866
1867 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1868 HRESULT ( STDMETHODCALLTYPE *SetName )(
1869 ID3D12RootSignature * This,
1870 _In_z_ LPCWSTR Name);
1871
1872 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1873 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1874 ID3D12RootSignature * This,
1875 REFIID riid,
1876 _COM_Outptr_opt_ void **ppvDevice);
1877
1878 END_INTERFACE
1879 } ID3D12RootSignatureVtbl;
1880
1881 interface ID3D12RootSignature
1882 {
1883 CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
1884 };
1885
1886
1887
1888#ifdef COBJMACROS
1889
1890
1891#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
1892 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1893
1894#define ID3D12RootSignature_AddRef(This) \
1895 ( (This)->lpVtbl -> AddRef(This) )
1896
1897#define ID3D12RootSignature_Release(This) \
1898 ( (This)->lpVtbl -> Release(This) )
1899
1900
1901#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
1902 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1903
1904#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
1905 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1906
1907#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
1908 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1909
1910#define ID3D12RootSignature_SetName(This,Name) \
1911 ( (This)->lpVtbl -> SetName(This,Name) )
1912
1913
1914#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
1915 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1916
1917
1918#endif /* COBJMACROS */
1919
1920
1921#endif /* C style interface */
1922
1923
1924
1925
1926#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
1927
1928
1929/* interface __MIDL_itf_d3d12_0000_0001 */
1930/* [local] */
1931
1932typedef struct D3D12_SHADER_BYTECODE
1933 {
1934 _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
1935 SIZE_T BytecodeLength;
1936 } D3D12_SHADER_BYTECODE;
1937
1938typedef struct D3D12_STREAM_OUTPUT_DESC
1939 {
1940 _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
1941 UINT NumEntries;
1942 _Field_size_full_(NumStrides) const UINT *pBufferStrides;
1943 UINT NumStrides;
1944 UINT RasterizedStream;
1945 } D3D12_STREAM_OUTPUT_DESC;
1946
1947typedef struct D3D12_INPUT_LAYOUT_DESC
1948 {
1949 _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
1950 UINT NumElements;
1951 } D3D12_INPUT_LAYOUT_DESC;
1952
1953typedef
1954enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
1955 {
1956 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
1957 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
1958 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
1959 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
1960
1961typedef struct D3D12_CACHED_PIPELINE_STATE
1962 {
1963 _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
1964 SIZE_T CachedBlobSizeInBytes;
1965 } D3D12_CACHED_PIPELINE_STATE;
1966
1967typedef
1968enum D3D12_PIPELINE_STATE_FLAGS
1969 {
1970 D3D12_PIPELINE_STATE_FLAG_NONE = 0,
1971 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1
1972 } D3D12_PIPELINE_STATE_FLAGS;
1973
1974DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );
1975typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
1976 {
1977 ID3D12RootSignature *pRootSignature;
1978 D3D12_SHADER_BYTECODE VS;
1979 D3D12_SHADER_BYTECODE PS;
1980 D3D12_SHADER_BYTECODE DS;
1981 D3D12_SHADER_BYTECODE HS;
1982 D3D12_SHADER_BYTECODE GS;
1983 D3D12_STREAM_OUTPUT_DESC StreamOutput;
1984 D3D12_BLEND_DESC BlendState;
1985 UINT SampleMask;
1986 D3D12_RASTERIZER_DESC RasterizerState;
1987 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
1988 D3D12_INPUT_LAYOUT_DESC InputLayout;
1989 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
1990 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
1991 UINT NumRenderTargets;
1992 DXGI_FORMAT RTVFormats[ 8 ];
1993 DXGI_FORMAT DSVFormat;
1994 DXGI_SAMPLE_DESC SampleDesc;
1995 UINT NodeMask;
1996 D3D12_CACHED_PIPELINE_STATE CachedPSO;
1997 D3D12_PIPELINE_STATE_FLAGS Flags;
1998 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
1999
2000typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
2001 {
2002 ID3D12RootSignature *pRootSignature;
2003 D3D12_SHADER_BYTECODE CS;
2004 UINT NodeMask;
2005 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2006 D3D12_PIPELINE_STATE_FLAGS Flags;
2007 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
2008
2009struct D3D12_RT_FORMAT_ARRAY
2010 {
2011 DXGI_FORMAT RTFormats[ 8 ];
2012 UINT NumRenderTargets;
2013 } ;
2014typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
2015 {
2016 _In_ SIZE_T SizeInBytes;
2017 _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
2018 } D3D12_PIPELINE_STATE_STREAM_DESC;
2019
2020typedef
2021enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
2022 {
2023 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
2024 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
2025 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
2026 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
2027 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
2028 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
2029 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
2030 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
2031 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
2032 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
2033 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
2034 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
2035 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
2036 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
2037 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
2038 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
2039 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
2040 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
2041 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
2042 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
2043 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
2044 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
2045 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
2046 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
2047 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
2048 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS + 1 )
2049 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
2050
2051typedef
2052enum D3D12_FEATURE
2053 {
2054 D3D12_FEATURE_D3D12_OPTIONS = 0,
2055 D3D12_FEATURE_ARCHITECTURE = 1,
2056 D3D12_FEATURE_FEATURE_LEVELS = 2,
2057 D3D12_FEATURE_FORMAT_SUPPORT = 3,
2058 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
2059 D3D12_FEATURE_FORMAT_INFO = 5,
2060 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
2061 D3D12_FEATURE_SHADER_MODEL = 7,
2062 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
2063 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
2064 D3D12_FEATURE_ROOT_SIGNATURE = 12,
2065 D3D12_FEATURE_ARCHITECTURE1 = 16,
2066 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
2067 D3D12_FEATURE_SHADER_CACHE = 19,
2068 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
2069 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
2070 D3D12_FEATURE_EXISTING_HEAPS = 22,
2071 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
2072 D3D12_FEATURE_SERIALIZATION = 24,
2073 D3D12_FEATURE_CROSS_NODE = 25,
2074 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
2075 D3D12_FEATURE_DISPLAYABLE = 28,
2076 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
2077 D3D12_FEATURE_QUERY_META_COMMAND = 31,
2078 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
2079 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
2080 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
2081 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
2082 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
2083 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
2084 D3D12_FEATURE_D3D12_OPTIONS11 = 40
2085 } D3D12_FEATURE;
2086
2087typedef
2088enum D3D12_SHADER_MIN_PRECISION_SUPPORT
2089 {
2090 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
2091 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
2092 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
2093 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
2094
2095DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );
2096typedef
2097enum D3D12_TILED_RESOURCES_TIER
2098 {
2099 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
2100 D3D12_TILED_RESOURCES_TIER_1 = 1,
2101 D3D12_TILED_RESOURCES_TIER_2 = 2,
2102 D3D12_TILED_RESOURCES_TIER_3 = 3,
2103 D3D12_TILED_RESOURCES_TIER_4 = 4
2104 } D3D12_TILED_RESOURCES_TIER;
2105
2106typedef
2107enum D3D12_RESOURCE_BINDING_TIER
2108 {
2109 D3D12_RESOURCE_BINDING_TIER_1 = 1,
2110 D3D12_RESOURCE_BINDING_TIER_2 = 2,
2111 D3D12_RESOURCE_BINDING_TIER_3 = 3
2112 } D3D12_RESOURCE_BINDING_TIER;
2113
2114typedef
2115enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
2116 {
2117 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
2118 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
2119 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
2120 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
2121 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
2122
2123typedef
2124enum D3D12_FORMAT_SUPPORT1
2125 {
2126 D3D12_FORMAT_SUPPORT1_NONE = 0,
2127 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
2128 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
2129 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
2130 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
2131 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
2132 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
2133 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
2134 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
2135 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
2136 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
2137 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
2138 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
2139 D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
2140 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
2141 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
2142 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
2143 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
2144 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
2145 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
2146 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
2147 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
2148 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
2149 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
2150 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
2151 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
2152 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
2153 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
2154 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
2155 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
2156 } D3D12_FORMAT_SUPPORT1;
2157
2158DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );
2159typedef
2160enum D3D12_FORMAT_SUPPORT2
2161 {
2162 D3D12_FORMAT_SUPPORT2_NONE = 0,
2163 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
2164 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
2165 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
2166 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
2167 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
2168 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
2169 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
2170 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
2171 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
2172 D3D12_FORMAT_SUPPORT2_TILED = 0x200,
2173 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
2174 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000
2175 } D3D12_FORMAT_SUPPORT2;
2176
2177DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );
2178typedef
2179enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
2180 {
2181 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
2182 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
2183 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
2184
2185DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );
2186typedef
2187enum D3D12_CROSS_NODE_SHARING_TIER
2188 {
2189 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
2190 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
2191 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
2192 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
2193 D3D12_CROSS_NODE_SHARING_TIER_3 = 4
2194 } D3D12_CROSS_NODE_SHARING_TIER;
2195
2196typedef
2197enum D3D12_RESOURCE_HEAP_TIER
2198 {
2199 D3D12_RESOURCE_HEAP_TIER_1 = 1,
2200 D3D12_RESOURCE_HEAP_TIER_2 = 2
2201 } D3D12_RESOURCE_HEAP_TIER;
2202
2203typedef
2204enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
2205 {
2206 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
2207 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
2208 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
2209 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
2210
2211typedef
2212enum D3D12_VIEW_INSTANCING_TIER
2213 {
2214 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
2215 D3D12_VIEW_INSTANCING_TIER_1 = 1,
2216 D3D12_VIEW_INSTANCING_TIER_2 = 2,
2217 D3D12_VIEW_INSTANCING_TIER_3 = 3
2218 } D3D12_VIEW_INSTANCING_TIER;
2219
2220typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
2221 {
2222 _Out_ BOOL DoublePrecisionFloatShaderOps;
2223 _Out_ BOOL OutputMergerLogicOp;
2224 _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
2225 _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
2226 _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
2227 _Out_ BOOL PSSpecifiedStencilRefSupported;
2228 _Out_ BOOL TypedUAVLoadAdditionalFormats;
2229 _Out_ BOOL ROVsSupported;
2230 _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
2231 _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
2232 _Out_ BOOL StandardSwizzle64KBSupported;
2233 _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
2234 _Out_ BOOL CrossAdapterRowMajorTextureSupported;
2235 _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
2236 _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
2237 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
2238
2239typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
2240 {
2241 _Out_ BOOL WaveOps;
2242 _Out_ UINT WaveLaneCountMin;
2243 _Out_ UINT WaveLaneCountMax;
2244 _Out_ UINT TotalLaneCount;
2245 _Out_ BOOL ExpandedComputeResourceStates;
2246 _Out_ BOOL Int64ShaderOps;
2247 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
2248
2249typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
2250 {
2251 _Out_ BOOL DepthBoundsTestSupported;
2252 _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
2253 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
2254
2255typedef
2256enum D3D_ROOT_SIGNATURE_VERSION
2257 {
2258 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
2259 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2260 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2
2261 } D3D_ROOT_SIGNATURE_VERSION;
2262
2263typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
2264 {
2265 _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
2266 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
2267
2268typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
2269 {
2270 _In_ UINT NodeIndex;
2271 _Out_ BOOL TileBasedRenderer;
2272 _Out_ BOOL UMA;
2273 _Out_ BOOL CacheCoherentUMA;
2274 } D3D12_FEATURE_DATA_ARCHITECTURE;
2275
2276typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
2277 {
2278 _In_ UINT NodeIndex;
2279 _Out_ BOOL TileBasedRenderer;
2280 _Out_ BOOL UMA;
2281 _Out_ BOOL CacheCoherentUMA;
2282 _Out_ BOOL IsolatedMMU;
2283 } D3D12_FEATURE_DATA_ARCHITECTURE1;
2284
2285typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
2286 {
2287 _In_ UINT NumFeatureLevels;
2288 _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
2289 _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
2290 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
2291
2292typedef
2293enum D3D_SHADER_MODEL
2294 {
2295 D3D_SHADER_MODEL_5_1 = 0x51,
2296 D3D_SHADER_MODEL_6_0 = 0x60,
2297 D3D_SHADER_MODEL_6_1 = 0x61,
2298 D3D_SHADER_MODEL_6_2 = 0x62,
2299 D3D_SHADER_MODEL_6_3 = 0x63,
2300 D3D_SHADER_MODEL_6_4 = 0x64,
2301 D3D_SHADER_MODEL_6_5 = 0x65,
2302 D3D_SHADER_MODEL_6_6 = 0x66,
2303 D3D_SHADER_MODEL_6_7 = 0x67
2304 } D3D_SHADER_MODEL;
2305
2306typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
2307 {
2308 _Inout_ D3D_SHADER_MODEL HighestShaderModel;
2309 } D3D12_FEATURE_DATA_SHADER_MODEL;
2310
2311typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
2312 {
2313 _In_ DXGI_FORMAT Format;
2314 _Out_ D3D12_FORMAT_SUPPORT1 Support1;
2315 _Out_ D3D12_FORMAT_SUPPORT2 Support2;
2316 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
2317
2318typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
2319 {
2320 _In_ DXGI_FORMAT Format;
2321 _In_ UINT SampleCount;
2322 _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
2323 _Out_ UINT NumQualityLevels;
2324 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
2325
2326typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
2327 {
2328 DXGI_FORMAT Format;
2329 UINT8 PlaneCount;
2330 } D3D12_FEATURE_DATA_FORMAT_INFO;
2331
2332typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
2333 {
2334 UINT MaxGPUVirtualAddressBitsPerResource;
2335 UINT MaxGPUVirtualAddressBitsPerProcess;
2336 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
2337
2338typedef
2339enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
2340 {
2341 D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
2342 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
2343 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
2344 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
2345 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
2346 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
2347 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
2348 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
2349 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
2350
2351DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );
2352typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
2353 {
2354 _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
2355 } D3D12_FEATURE_DATA_SHADER_CACHE;
2356
2357typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
2358 {
2359 _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
2360 _In_ UINT Priority;
2361 _Out_ BOOL PriorityForTypeIsSupported;
2362 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
2363
2364typedef
2365enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
2366 {
2367 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
2368 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
2369 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
2370 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
2371 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
2372 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
2373 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
2374 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
2375 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
2376
2377DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS );
2378typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
2379 {
2380 _Out_ BOOL CopyQueueTimestampQueriesSupported;
2381 _Out_ BOOL CastingFullyTypedFormatSupported;
2382 _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
2383 _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
2384 _Out_ BOOL BarycentricsSupported;
2385 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
2386
2387typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
2388 {
2389 _Out_ BOOL Supported;
2390 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
2391
2392typedef
2393enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
2394 {
2395 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
2396 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
2397 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 ) ,
2398 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_3 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 + 1 )
2399 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
2400
2401typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
2402 {
2403 _Out_ BOOL DisplayableTexture;
2404 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2405 } D3D12_FEATURE_DATA_DISPLAYABLE;
2406
2407typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
2408 {
2409 _Out_ BOOL MSAA64KBAlignedTextureSupported;
2410 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2411 _Out_ BOOL Native16BitShaderOpsSupported;
2412 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
2413
2414typedef
2415enum D3D12_HEAP_SERIALIZATION_TIER
2416 {
2417 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
2418 D3D12_HEAP_SERIALIZATION_TIER_10 = 10
2419 } D3D12_HEAP_SERIALIZATION_TIER;
2420
2421typedef struct D3D12_FEATURE_DATA_SERIALIZATION
2422 {
2423 _In_ UINT NodeIndex;
2424 _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
2425 } D3D12_FEATURE_DATA_SERIALIZATION;
2426
2427typedef struct D3D12_FEATURE_DATA_CROSS_NODE
2428 {
2429 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
2430 BOOL AtomicShaderInstructions;
2431 } D3D12_FEATURE_DATA_CROSS_NODE;
2432
2433typedef
2434enum D3D12_RENDER_PASS_TIER
2435 {
2436 D3D12_RENDER_PASS_TIER_0 = 0,
2437 D3D12_RENDER_PASS_TIER_1 = 1,
2438 D3D12_RENDER_PASS_TIER_2 = 2
2439 } D3D12_RENDER_PASS_TIER;
2440
2441typedef
2442enum D3D12_RAYTRACING_TIER
2443 {
2444 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
2445 D3D12_RAYTRACING_TIER_1_0 = 10,
2446 D3D12_RAYTRACING_TIER_1_1 = 11
2447 } D3D12_RAYTRACING_TIER;
2448
2449typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
2450 {
2451 _Out_ BOOL SRVOnlyTiledResourceTier3;
2452 _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
2453 _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
2454 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
2455
2456typedef
2457enum D3D12_VARIABLE_SHADING_RATE_TIER
2458 {
2459 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
2460 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
2461 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
2462 } D3D12_VARIABLE_SHADING_RATE_TIER;
2463
2464typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
2465 {
2466 _Out_ BOOL AdditionalShadingRatesSupported;
2467 _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
2468 _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
2469 _Out_ UINT ShadingRateImageTileSize;
2470 _Out_ BOOL BackgroundProcessingSupported;
2471 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
2472
2473typedef
2474enum D3D12_MESH_SHADER_TIER
2475 {
2476 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
2477 D3D12_MESH_SHADER_TIER_1 = 10
2478 } D3D12_MESH_SHADER_TIER;
2479
2480typedef
2481enum D3D12_SAMPLER_FEEDBACK_TIER
2482 {
2483 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
2484 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
2485 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
2486 } D3D12_SAMPLER_FEEDBACK_TIER;
2487
2488typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
2489 {
2490 _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
2491 _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
2492 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
2493
2494typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
2495 {
2496 _In_ GUID CommandId;
2497 _In_ UINT NodeMask;
2498 _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
2499 _In_ SIZE_T QueryInputDataSizeInBytes;
2500 _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
2501 _In_ SIZE_T QueryOutputDataSizeInBytes;
2502 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
2503
2504typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
2505 {
2506 _Out_ BOOL UnalignedBlockTexturesSupported;
2507 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
2508
2509typedef
2510enum D3D12_WAVE_MMA_TIER
2511 {
2512 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
2513 D3D12_WAVE_MMA_TIER_1_0 = 10
2514 } D3D12_WAVE_MMA_TIER;
2515
2516typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
2517 {
2518 _Out_ BOOL MeshShaderPipelineStatsSupported;
2519 _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
2520 _Out_ BOOL AtomicInt64OnTypedResourceSupported;
2521 _Out_ BOOL AtomicInt64OnGroupSharedSupported;
2522 _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
2523 _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
2524 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
2525
2526typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
2527 {
2528 _Out_ BOOL VariableRateShadingSumCombinerSupported;
2529 _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
2530 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
2531
2532typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
2533 {
2534 _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
2535 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
2536
2537typedef struct D3D12_RESOURCE_ALLOCATION_INFO
2538 {
2539 UINT64 SizeInBytes;
2540 UINT64 Alignment;
2541 } D3D12_RESOURCE_ALLOCATION_INFO;
2542
2543typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
2544 {
2545 UINT64 Offset;
2546 UINT64 Alignment;
2547 UINT64 SizeInBytes;
2548 } D3D12_RESOURCE_ALLOCATION_INFO1;
2549
2550typedef
2551enum D3D12_HEAP_TYPE
2552 {
2553 D3D12_HEAP_TYPE_DEFAULT = 1,
2554 D3D12_HEAP_TYPE_UPLOAD = 2,
2555 D3D12_HEAP_TYPE_READBACK = 3,
2556 D3D12_HEAP_TYPE_CUSTOM = 4
2557 } D3D12_HEAP_TYPE;
2558
2559typedef
2560enum D3D12_CPU_PAGE_PROPERTY
2561 {
2562 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
2563 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
2564 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
2565 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
2566 } D3D12_CPU_PAGE_PROPERTY;
2567
2568typedef
2569enum D3D12_MEMORY_POOL
2570 {
2571 D3D12_MEMORY_POOL_UNKNOWN = 0,
2572 D3D12_MEMORY_POOL_L0 = 1,
2573 D3D12_MEMORY_POOL_L1 = 2
2574 } D3D12_MEMORY_POOL;
2575
2576typedef struct D3D12_HEAP_PROPERTIES
2577 {
2578 D3D12_HEAP_TYPE Type;
2579 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
2580 D3D12_MEMORY_POOL MemoryPoolPreference;
2581 UINT CreationNodeMask;
2582 UINT VisibleNodeMask;
2583 } D3D12_HEAP_PROPERTIES;
2584
2585typedef
2586enum D3D12_HEAP_FLAGS
2587 {
2588 D3D12_HEAP_FLAG_NONE = 0,
2589 D3D12_HEAP_FLAG_SHARED = 0x1,
2590 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
2591 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
2592 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
2593 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
2594 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
2595 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
2596 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
2597 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
2598 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
2599 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
2600 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
2601 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
2602 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
2603 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
2604 } D3D12_HEAP_FLAGS;
2605
2606DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );
2607typedef struct D3D12_HEAP_DESC
2608 {
2609 UINT64 SizeInBytes;
2610 D3D12_HEAP_PROPERTIES Properties;
2611 UINT64 Alignment;
2612 D3D12_HEAP_FLAGS Flags;
2613 } D3D12_HEAP_DESC;
2614
2615typedef
2616enum D3D12_RESOURCE_DIMENSION
2617 {
2618 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
2619 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
2620 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
2621 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
2622 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
2623 } D3D12_RESOURCE_DIMENSION;
2624
2625typedef
2626enum D3D12_TEXTURE_LAYOUT
2627 {
2628 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
2629 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
2630 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
2631 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
2632 } D3D12_TEXTURE_LAYOUT;
2633
2634typedef
2635enum D3D12_RESOURCE_FLAGS
2636 {
2637 D3D12_RESOURCE_FLAG_NONE = 0,
2638 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
2639 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
2640 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
2641 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
2642 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
2643 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
2644 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
2645 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80
2646 } D3D12_RESOURCE_FLAGS;
2647
2648DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );
2649typedef struct D3D12_MIP_REGION
2650 {
2651 UINT Width;
2652 UINT Height;
2653 UINT Depth;
2654 } D3D12_MIP_REGION;
2655
2656typedef struct D3D12_RESOURCE_DESC
2657 {
2658 D3D12_RESOURCE_DIMENSION Dimension;
2659 UINT64 Alignment;
2660 UINT64 Width;
2661 UINT Height;
2662 UINT16 DepthOrArraySize;
2663 UINT16 MipLevels;
2664 DXGI_FORMAT Format;
2665 DXGI_SAMPLE_DESC SampleDesc;
2666 D3D12_TEXTURE_LAYOUT Layout;
2667 D3D12_RESOURCE_FLAGS Flags;
2668 } D3D12_RESOURCE_DESC;
2669
2670typedef struct D3D12_RESOURCE_DESC1
2671 {
2672 D3D12_RESOURCE_DIMENSION Dimension;
2673 UINT64 Alignment;
2674 UINT64 Width;
2675 UINT Height;
2676 UINT16 DepthOrArraySize;
2677 UINT16 MipLevels;
2678 DXGI_FORMAT Format;
2679 DXGI_SAMPLE_DESC SampleDesc;
2680 D3D12_TEXTURE_LAYOUT Layout;
2681 D3D12_RESOURCE_FLAGS Flags;
2682 D3D12_MIP_REGION SamplerFeedbackMipRegion;
2683 } D3D12_RESOURCE_DESC1;
2684
2685typedef struct D3D12_DEPTH_STENCIL_VALUE
2686 {
2687 FLOAT Depth;
2688 UINT8 Stencil;
2689 } D3D12_DEPTH_STENCIL_VALUE;
2690
2691typedef struct D3D12_CLEAR_VALUE
2692 {
2693 DXGI_FORMAT Format;
2694 union
2695 {
2696 FLOAT Color[ 4 ];
2697 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
2698 } ;
2699 } D3D12_CLEAR_VALUE;
2700
2701typedef struct D3D12_RANGE
2702 {
2703 SIZE_T Begin;
2704 SIZE_T End;
2705 } D3D12_RANGE;
2706
2707typedef struct D3D12_RANGE_UINT64
2708 {
2709 UINT64 Begin;
2710 UINT64 End;
2711 } D3D12_RANGE_UINT64;
2712
2713typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
2714 {
2715 UINT Subresource;
2716 D3D12_RANGE_UINT64 Range;
2717 } D3D12_SUBRESOURCE_RANGE_UINT64;
2718
2719typedef struct D3D12_SUBRESOURCE_INFO
2720 {
2721 UINT64 Offset;
2722 UINT RowPitch;
2723 UINT DepthPitch;
2724 } D3D12_SUBRESOURCE_INFO;
2725
2726typedef struct D3D12_TILED_RESOURCE_COORDINATE
2727 {
2728 UINT X;
2729 UINT Y;
2730 UINT Z;
2731 UINT Subresource;
2732 } D3D12_TILED_RESOURCE_COORDINATE;
2733
2734typedef struct D3D12_TILE_REGION_SIZE
2735 {
2736 UINT NumTiles;
2737 BOOL UseBox;
2738 UINT Width;
2739 UINT16 Height;
2740 UINT16 Depth;
2741 } D3D12_TILE_REGION_SIZE;
2742
2743typedef
2744enum D3D12_TILE_RANGE_FLAGS
2745 {
2746 D3D12_TILE_RANGE_FLAG_NONE = 0,
2747 D3D12_TILE_RANGE_FLAG_NULL = 1,
2748 D3D12_TILE_RANGE_FLAG_SKIP = 2,
2749 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
2750 } D3D12_TILE_RANGE_FLAGS;
2751
2752typedef struct D3D12_SUBRESOURCE_TILING
2753 {
2754 UINT WidthInTiles;
2755 UINT16 HeightInTiles;
2756 UINT16 DepthInTiles;
2757 UINT StartTileIndexInOverallResource;
2758 } D3D12_SUBRESOURCE_TILING;
2759
2760typedef struct D3D12_TILE_SHAPE
2761 {
2762 UINT WidthInTexels;
2763 UINT HeightInTexels;
2764 UINT DepthInTexels;
2765 } D3D12_TILE_SHAPE;
2766
2767typedef struct D3D12_PACKED_MIP_INFO
2768 {
2769 UINT8 NumStandardMips;
2770 UINT8 NumPackedMips;
2771 UINT NumTilesForPackedMips;
2772 UINT StartTileIndexInOverallResource;
2773 } D3D12_PACKED_MIP_INFO;
2774
2775typedef
2776enum D3D12_TILE_MAPPING_FLAGS
2777 {
2778 D3D12_TILE_MAPPING_FLAG_NONE = 0,
2779 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
2780 } D3D12_TILE_MAPPING_FLAGS;
2781
2782DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );
2783typedef
2784enum D3D12_TILE_COPY_FLAGS
2785 {
2786 D3D12_TILE_COPY_FLAG_NONE = 0,
2787 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
2788 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
2789 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
2790 } D3D12_TILE_COPY_FLAGS;
2791
2792DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );
2793typedef
2794enum D3D12_RESOURCE_STATES
2795 {
2796 D3D12_RESOURCE_STATE_COMMON = 0,
2797 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
2798 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
2799 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
2800 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
2801 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
2802 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
2803 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
2804 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
2805 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
2806 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
2807 D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
2808 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
2809 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
2810 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
2811 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
2812 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
2813 D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
2814 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
2815 D3D12_RESOURCE_STATE_PRESENT = 0,
2816 D3D12_RESOURCE_STATE_PREDICATION = 0x200,
2817 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
2818 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
2819 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
2820 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
2821 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
2822 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
2823 } D3D12_RESOURCE_STATES;
2824
2825DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );
2826typedef
2827enum D3D12_RESOURCE_BARRIER_TYPE
2828 {
2829 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
2830 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
2831 D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
2832 } D3D12_RESOURCE_BARRIER_TYPE;
2833
2834
2835typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
2836 {
2837 ID3D12Resource *pResource;
2838 UINT Subresource;
2839 D3D12_RESOURCE_STATES StateBefore;
2840 D3D12_RESOURCE_STATES StateAfter;
2841 } D3D12_RESOURCE_TRANSITION_BARRIER;
2842
2843typedef struct D3D12_RESOURCE_ALIASING_BARRIER
2844 {
2845 ID3D12Resource *pResourceBefore;
2846 ID3D12Resource *pResourceAfter;
2847 } D3D12_RESOURCE_ALIASING_BARRIER;
2848
2849typedef struct D3D12_RESOURCE_UAV_BARRIER
2850 {
2851 ID3D12Resource *pResource;
2852 } D3D12_RESOURCE_UAV_BARRIER;
2853
2854typedef
2855enum D3D12_RESOURCE_BARRIER_FLAGS
2856 {
2857 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
2858 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
2859 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
2860 } D3D12_RESOURCE_BARRIER_FLAGS;
2861
2862DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );
2863typedef struct D3D12_RESOURCE_BARRIER
2864 {
2865 D3D12_RESOURCE_BARRIER_TYPE Type;
2866 D3D12_RESOURCE_BARRIER_FLAGS Flags;
2867 union
2868 {
2869 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
2870 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
2871 D3D12_RESOURCE_UAV_BARRIER UAV;
2872 } ;
2873 } D3D12_RESOURCE_BARRIER;
2874
2875typedef struct D3D12_SUBRESOURCE_FOOTPRINT
2876 {
2877 DXGI_FORMAT Format;
2878 UINT Width;
2879 UINT Height;
2880 UINT Depth;
2881 UINT RowPitch;
2882 } D3D12_SUBRESOURCE_FOOTPRINT;
2883
2884typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
2885 {
2886 UINT64 Offset;
2887 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
2888 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
2889
2890typedef
2891enum D3D12_TEXTURE_COPY_TYPE
2892 {
2893 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
2894 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
2895 } D3D12_TEXTURE_COPY_TYPE;
2896
2897typedef struct D3D12_TEXTURE_COPY_LOCATION
2898 {
2899 ID3D12Resource *pResource;
2900 D3D12_TEXTURE_COPY_TYPE Type;
2901 union
2902 {
2903 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
2904 UINT SubresourceIndex;
2905 } ;
2906 } D3D12_TEXTURE_COPY_LOCATION;
2907
2908typedef
2909enum D3D12_RESOLVE_MODE
2910 {
2911 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
2912 D3D12_RESOLVE_MODE_MIN = 1,
2913 D3D12_RESOLVE_MODE_MAX = 2,
2914 D3D12_RESOLVE_MODE_AVERAGE = 3,
2915 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
2916 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
2917 } D3D12_RESOLVE_MODE;
2918
2919typedef struct D3D12_SAMPLE_POSITION
2920 {
2921 INT8 X;
2922 INT8 Y;
2923 } D3D12_SAMPLE_POSITION;
2924
2925typedef struct D3D12_VIEW_INSTANCE_LOCATION
2926 {
2927 UINT ViewportArrayIndex;
2928 UINT RenderTargetArrayIndex;
2929 } D3D12_VIEW_INSTANCE_LOCATION;
2930
2931typedef
2932enum D3D12_VIEW_INSTANCING_FLAGS
2933 {
2934 D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
2935 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
2936 } D3D12_VIEW_INSTANCING_FLAGS;
2937
2938DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS );
2939typedef struct D3D12_VIEW_INSTANCING_DESC
2940 {
2941 UINT ViewInstanceCount;
2942 _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
2943 D3D12_VIEW_INSTANCING_FLAGS Flags;
2944 } D3D12_VIEW_INSTANCING_DESC;
2945
2946typedef
2947enum D3D12_SHADER_COMPONENT_MAPPING
2948 {
2949 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
2950 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
2951 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
2952 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
2953 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
2954 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
2955 } D3D12_SHADER_COMPONENT_MAPPING;
2956
2957#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
2958#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
2959#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
2960#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
2961 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
2962 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
2963 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
2964 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
2965#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
2966#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
2967typedef
2968enum D3D12_BUFFER_SRV_FLAGS
2969 {
2970 D3D12_BUFFER_SRV_FLAG_NONE = 0,
2971 D3D12_BUFFER_SRV_FLAG_RAW = 0x1
2972 } D3D12_BUFFER_SRV_FLAGS;
2973
2974DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );
2975typedef struct D3D12_BUFFER_SRV
2976 {
2977 UINT64 FirstElement;
2978 UINT NumElements;
2979 UINT StructureByteStride;
2980 D3D12_BUFFER_SRV_FLAGS Flags;
2981 } D3D12_BUFFER_SRV;
2982
2983typedef struct D3D12_TEX1D_SRV
2984 {
2985 UINT MostDetailedMip;
2986 UINT MipLevels;
2987 FLOAT ResourceMinLODClamp;
2988 } D3D12_TEX1D_SRV;
2989
2990typedef struct D3D12_TEX1D_ARRAY_SRV
2991 {
2992 UINT MostDetailedMip;
2993 UINT MipLevels;
2994 UINT FirstArraySlice;
2995 UINT ArraySize;
2996 FLOAT ResourceMinLODClamp;
2997 } D3D12_TEX1D_ARRAY_SRV;
2998
2999typedef struct D3D12_TEX2D_SRV
3000 {
3001 UINT MostDetailedMip;
3002 UINT MipLevels;
3003 UINT PlaneSlice;
3004 FLOAT ResourceMinLODClamp;
3005 } D3D12_TEX2D_SRV;
3006
3007typedef struct D3D12_TEX2D_ARRAY_SRV
3008 {
3009 UINT MostDetailedMip;
3010 UINT MipLevels;
3011 UINT FirstArraySlice;
3012 UINT ArraySize;
3013 UINT PlaneSlice;
3014 FLOAT ResourceMinLODClamp;
3015 } D3D12_TEX2D_ARRAY_SRV;
3016
3017typedef struct D3D12_TEX3D_SRV
3018 {
3019 UINT MostDetailedMip;
3020 UINT MipLevels;
3021 FLOAT ResourceMinLODClamp;
3022 } D3D12_TEX3D_SRV;
3023
3024typedef struct D3D12_TEXCUBE_SRV
3025 {
3026 UINT MostDetailedMip;
3027 UINT MipLevels;
3028 FLOAT ResourceMinLODClamp;
3029 } D3D12_TEXCUBE_SRV;
3030
3031typedef struct D3D12_TEXCUBE_ARRAY_SRV
3032 {
3033 UINT MostDetailedMip;
3034 UINT MipLevels;
3035 UINT First2DArrayFace;
3036 UINT NumCubes;
3037 FLOAT ResourceMinLODClamp;
3038 } D3D12_TEXCUBE_ARRAY_SRV;
3039
3040typedef struct D3D12_TEX2DMS_SRV
3041 {
3042 UINT UnusedField_NothingToDefine;
3043 } D3D12_TEX2DMS_SRV;
3044
3045typedef struct D3D12_TEX2DMS_ARRAY_SRV
3046 {
3047 UINT FirstArraySlice;
3048 UINT ArraySize;
3049 } D3D12_TEX2DMS_ARRAY_SRV;
3050
3051typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
3052 {
3053 D3D12_GPU_VIRTUAL_ADDRESS Location;
3054 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
3055
3056typedef
3057enum D3D12_SRV_DIMENSION
3058 {
3059 D3D12_SRV_DIMENSION_UNKNOWN = 0,
3060 D3D12_SRV_DIMENSION_BUFFER = 1,
3061 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
3062 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
3063 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
3064 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
3065 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
3066 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
3067 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
3068 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
3069 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
3070 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
3071 } D3D12_SRV_DIMENSION;
3072
3073typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
3074 {
3075 DXGI_FORMAT Format;
3076 D3D12_SRV_DIMENSION ViewDimension;
3077 UINT Shader4ComponentMapping;
3078 union
3079 {
3080 D3D12_BUFFER_SRV Buffer;
3081 D3D12_TEX1D_SRV Texture1D;
3082 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
3083 D3D12_TEX2D_SRV Texture2D;
3084 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
3085 D3D12_TEX2DMS_SRV Texture2DMS;
3086 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
3087 D3D12_TEX3D_SRV Texture3D;
3088 D3D12_TEXCUBE_SRV TextureCube;
3089 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
3090 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
3091 } ;
3092 } D3D12_SHADER_RESOURCE_VIEW_DESC;
3093
3094typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
3095 {
3096 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3097 UINT SizeInBytes;
3098 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
3099
3100typedef
3101enum D3D12_FILTER
3102 {
3103 D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
3104 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
3105 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
3106 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
3107 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
3108 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
3109 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
3110 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
3111 D3D12_FILTER_ANISOTROPIC = 0x55,
3112 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
3113 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
3114 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
3115 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
3116 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
3117 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
3118 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
3119 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
3120 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
3121 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
3122 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
3123 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
3124 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
3125 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
3126 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
3127 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
3128 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
3129 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
3130 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
3131 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
3132 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
3133 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
3134 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
3135 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
3136 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
3137 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
3138 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
3139 } D3D12_FILTER;
3140
3141typedef
3142enum D3D12_FILTER_TYPE
3143 {
3144 D3D12_FILTER_TYPE_POINT = 0,
3145 D3D12_FILTER_TYPE_LINEAR = 1
3146 } D3D12_FILTER_TYPE;
3147
3148typedef
3149enum D3D12_FILTER_REDUCTION_TYPE
3150 {
3151 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
3152 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
3153 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
3154 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
3155 } D3D12_FILTER_REDUCTION_TYPE;
3156
3157#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
3158
3159#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
3160
3161#define D3D12_FILTER_TYPE_MASK ( 0x3 )
3162
3163#define D3D12_MIN_FILTER_SHIFT ( 4 )
3164
3165#define D3D12_MAG_FILTER_SHIFT ( 2 )
3166
3167#define D3D12_MIP_FILTER_SHIFT ( 0 )
3168
3169#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
3170
3171#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
3172 ( ( D3D12_FILTER ) ( \
3173 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
3174 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
3175 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
3176 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
3177#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
3178 ( ( D3D12_FILTER ) ( \
3179 D3D12_ANISOTROPIC_FILTERING_BIT | \
3180 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3181 D3D12_FILTER_TYPE_LINEAR, \
3182 D3D12_FILTER_TYPE_LINEAR, \
3183 reduction ) ) )
3184#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
3185 ( ( D3D12_FILTER_TYPE ) \
3186 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3187#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
3188 ( ( D3D12_FILTER_TYPE ) \
3189 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3190#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
3191 ( ( D3D12_FILTER_TYPE ) \
3192 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3193#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
3194 ( ( D3D12_FILTER_REDUCTION_TYPE ) \
3195 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
3196#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
3197 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
3198#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
3199 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
3200 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
3201 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \
3202 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) )
3203typedef
3204enum D3D12_TEXTURE_ADDRESS_MODE
3205 {
3206 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
3207 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
3208 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
3209 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
3210 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
3211 } D3D12_TEXTURE_ADDRESS_MODE;
3212
3213typedef struct D3D12_SAMPLER_DESC
3214 {
3215 D3D12_FILTER Filter;
3216 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3217 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3218 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3219 FLOAT MipLODBias;
3220 UINT MaxAnisotropy;
3221 D3D12_COMPARISON_FUNC ComparisonFunc;
3222 FLOAT BorderColor[ 4 ];
3223 FLOAT MinLOD;
3224 FLOAT MaxLOD;
3225 } D3D12_SAMPLER_DESC;
3226
3227typedef
3228enum D3D12_BUFFER_UAV_FLAGS
3229 {
3230 D3D12_BUFFER_UAV_FLAG_NONE = 0,
3231 D3D12_BUFFER_UAV_FLAG_RAW = 0x1
3232 } D3D12_BUFFER_UAV_FLAGS;
3233
3234DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );
3235typedef struct D3D12_BUFFER_UAV
3236 {
3237 UINT64 FirstElement;
3238 UINT NumElements;
3239 UINT StructureByteStride;
3240 UINT64 CounterOffsetInBytes;
3241 D3D12_BUFFER_UAV_FLAGS Flags;
3242 } D3D12_BUFFER_UAV;
3243
3244typedef struct D3D12_TEX1D_UAV
3245 {
3246 UINT MipSlice;
3247 } D3D12_TEX1D_UAV;
3248
3249typedef struct D3D12_TEX1D_ARRAY_UAV
3250 {
3251 UINT MipSlice;
3252 UINT FirstArraySlice;
3253 UINT ArraySize;
3254 } D3D12_TEX1D_ARRAY_UAV;
3255
3256typedef struct D3D12_TEX2D_UAV
3257 {
3258 UINT MipSlice;
3259 UINT PlaneSlice;
3260 } D3D12_TEX2D_UAV;
3261
3262typedef struct D3D12_TEX2D_ARRAY_UAV
3263 {
3264 UINT MipSlice;
3265 UINT FirstArraySlice;
3266 UINT ArraySize;
3267 UINT PlaneSlice;
3268 } D3D12_TEX2D_ARRAY_UAV;
3269
3270typedef struct D3D12_TEX3D_UAV
3271 {
3272 UINT MipSlice;
3273 UINT FirstWSlice;
3274 UINT WSize;
3275 } D3D12_TEX3D_UAV;
3276
3277typedef
3278enum D3D12_UAV_DIMENSION
3279 {
3280 D3D12_UAV_DIMENSION_UNKNOWN = 0,
3281 D3D12_UAV_DIMENSION_BUFFER = 1,
3282 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
3283 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
3284 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
3285 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
3286 D3D12_UAV_DIMENSION_TEXTURE3D = 8
3287 } D3D12_UAV_DIMENSION;
3288
3289typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
3290 {
3291 DXGI_FORMAT Format;
3292 D3D12_UAV_DIMENSION ViewDimension;
3293 union
3294 {
3295 D3D12_BUFFER_UAV Buffer;
3296 D3D12_TEX1D_UAV Texture1D;
3297 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
3298 D3D12_TEX2D_UAV Texture2D;
3299 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
3300 D3D12_TEX3D_UAV Texture3D;
3301 } ;
3302 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
3303
3304typedef struct D3D12_BUFFER_RTV
3305 {
3306 UINT64 FirstElement;
3307 UINT NumElements;
3308 } D3D12_BUFFER_RTV;
3309
3310typedef struct D3D12_TEX1D_RTV
3311 {
3312 UINT MipSlice;
3313 } D3D12_TEX1D_RTV;
3314
3315typedef struct D3D12_TEX1D_ARRAY_RTV
3316 {
3317 UINT MipSlice;
3318 UINT FirstArraySlice;
3319 UINT ArraySize;
3320 } D3D12_TEX1D_ARRAY_RTV;
3321
3322typedef struct D3D12_TEX2D_RTV
3323 {
3324 UINT MipSlice;
3325 UINT PlaneSlice;
3326 } D3D12_TEX2D_RTV;
3327
3328typedef struct D3D12_TEX2DMS_RTV
3329 {
3330 UINT UnusedField_NothingToDefine;
3331 } D3D12_TEX2DMS_RTV;
3332
3333typedef struct D3D12_TEX2D_ARRAY_RTV
3334 {
3335 UINT MipSlice;
3336 UINT FirstArraySlice;
3337 UINT ArraySize;
3338 UINT PlaneSlice;
3339 } D3D12_TEX2D_ARRAY_RTV;
3340
3341typedef struct D3D12_TEX2DMS_ARRAY_RTV
3342 {
3343 UINT FirstArraySlice;
3344 UINT ArraySize;
3345 } D3D12_TEX2DMS_ARRAY_RTV;
3346
3347typedef struct D3D12_TEX3D_RTV
3348 {
3349 UINT MipSlice;
3350 UINT FirstWSlice;
3351 UINT WSize;
3352 } D3D12_TEX3D_RTV;
3353
3354typedef
3355enum D3D12_RTV_DIMENSION
3356 {
3357 D3D12_RTV_DIMENSION_UNKNOWN = 0,
3358 D3D12_RTV_DIMENSION_BUFFER = 1,
3359 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
3360 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
3361 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
3362 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
3363 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
3364 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
3365 D3D12_RTV_DIMENSION_TEXTURE3D = 8
3366 } D3D12_RTV_DIMENSION;
3367
3368typedef struct D3D12_RENDER_TARGET_VIEW_DESC
3369 {
3370 DXGI_FORMAT Format;
3371 D3D12_RTV_DIMENSION ViewDimension;
3372 union
3373 {
3374 D3D12_BUFFER_RTV Buffer;
3375 D3D12_TEX1D_RTV Texture1D;
3376 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
3377 D3D12_TEX2D_RTV Texture2D;
3378 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
3379 D3D12_TEX2DMS_RTV Texture2DMS;
3380 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
3381 D3D12_TEX3D_RTV Texture3D;
3382 } ;
3383 } D3D12_RENDER_TARGET_VIEW_DESC;
3384
3385typedef struct D3D12_TEX1D_DSV
3386 {
3387 UINT MipSlice;
3388 } D3D12_TEX1D_DSV;
3389
3390typedef struct D3D12_TEX1D_ARRAY_DSV
3391 {
3392 UINT MipSlice;
3393 UINT FirstArraySlice;
3394 UINT ArraySize;
3395 } D3D12_TEX1D_ARRAY_DSV;
3396
3397typedef struct D3D12_TEX2D_DSV
3398 {
3399 UINT MipSlice;
3400 } D3D12_TEX2D_DSV;
3401
3402typedef struct D3D12_TEX2D_ARRAY_DSV
3403 {
3404 UINT MipSlice;
3405 UINT FirstArraySlice;
3406 UINT ArraySize;
3407 } D3D12_TEX2D_ARRAY_DSV;
3408
3409typedef struct D3D12_TEX2DMS_DSV
3410 {
3411 UINT UnusedField_NothingToDefine;
3412 } D3D12_TEX2DMS_DSV;
3413
3414typedef struct D3D12_TEX2DMS_ARRAY_DSV
3415 {
3416 UINT FirstArraySlice;
3417 UINT ArraySize;
3418 } D3D12_TEX2DMS_ARRAY_DSV;
3419
3420typedef
3421enum D3D12_DSV_FLAGS
3422 {
3423 D3D12_DSV_FLAG_NONE = 0,
3424 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
3425 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
3426 } D3D12_DSV_FLAGS;
3427
3428DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );
3429typedef
3430enum D3D12_DSV_DIMENSION
3431 {
3432 D3D12_DSV_DIMENSION_UNKNOWN = 0,
3433 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
3434 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
3435 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
3436 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
3437 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
3438 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
3439 } D3D12_DSV_DIMENSION;
3440
3441typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
3442 {
3443 DXGI_FORMAT Format;
3444 D3D12_DSV_DIMENSION ViewDimension;
3445 D3D12_DSV_FLAGS Flags;
3446 union
3447 {
3448 D3D12_TEX1D_DSV Texture1D;
3449 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
3450 D3D12_TEX2D_DSV Texture2D;
3451 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
3452 D3D12_TEX2DMS_DSV Texture2DMS;
3453 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
3454 } ;
3455 } D3D12_DEPTH_STENCIL_VIEW_DESC;
3456
3457typedef
3458enum D3D12_CLEAR_FLAGS
3459 {
3460 D3D12_CLEAR_FLAG_DEPTH = 0x1,
3461 D3D12_CLEAR_FLAG_STENCIL = 0x2
3462 } D3D12_CLEAR_FLAGS;
3463
3464DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );
3465typedef
3466enum D3D12_FENCE_FLAGS
3467 {
3468 D3D12_FENCE_FLAG_NONE = 0,
3469 D3D12_FENCE_FLAG_SHARED = 0x1,
3470 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
3471 D3D12_FENCE_FLAG_NON_MONITORED = 0x4
3472 } D3D12_FENCE_FLAGS;
3473
3474DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );
3475typedef
3476enum D3D12_DESCRIPTOR_HEAP_TYPE
3477 {
3478 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
3479 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
3480 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
3481 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
3482 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
3483 } D3D12_DESCRIPTOR_HEAP_TYPE;
3484
3485typedef
3486enum D3D12_DESCRIPTOR_HEAP_FLAGS
3487 {
3488 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
3489 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
3490 } D3D12_DESCRIPTOR_HEAP_FLAGS;
3491
3492DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );
3493typedef struct D3D12_DESCRIPTOR_HEAP_DESC
3494 {
3495 D3D12_DESCRIPTOR_HEAP_TYPE Type;
3496 UINT NumDescriptors;
3497 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
3498 UINT NodeMask;
3499 } D3D12_DESCRIPTOR_HEAP_DESC;
3500
3501typedef
3502enum D3D12_DESCRIPTOR_RANGE_TYPE
3503 {
3504 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
3505 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
3506 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
3507 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
3508 } D3D12_DESCRIPTOR_RANGE_TYPE;
3509
3510typedef struct D3D12_DESCRIPTOR_RANGE
3511 {
3512 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
3513 UINT NumDescriptors;
3514 UINT BaseShaderRegister;
3515 UINT RegisterSpace;
3516 UINT OffsetInDescriptorsFromTableStart;
3517 } D3D12_DESCRIPTOR_RANGE;
3518
3519typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
3520 {
3521 UINT NumDescriptorRanges;
3522 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
3523 } D3D12_ROOT_DESCRIPTOR_TABLE;
3524
3525typedef struct D3D12_ROOT_CONSTANTS
3526 {
3527 UINT ShaderRegister;
3528 UINT RegisterSpace;
3529 UINT Num32BitValues;
3530 } D3D12_ROOT_CONSTANTS;
3531
3532typedef struct D3D12_ROOT_DESCRIPTOR
3533 {
3534 UINT ShaderRegister;
3535 UINT RegisterSpace;
3536 } D3D12_ROOT_DESCRIPTOR;
3537
3538typedef
3539enum D3D12_SHADER_VISIBILITY
3540 {
3541 D3D12_SHADER_VISIBILITY_ALL = 0,
3542 D3D12_SHADER_VISIBILITY_VERTEX = 1,
3543 D3D12_SHADER_VISIBILITY_HULL = 2,
3544 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
3545 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
3546 D3D12_SHADER_VISIBILITY_PIXEL = 5,
3547 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
3548 D3D12_SHADER_VISIBILITY_MESH = 7
3549 } D3D12_SHADER_VISIBILITY;
3550
3551typedef
3552enum D3D12_ROOT_PARAMETER_TYPE
3553 {
3554 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
3555 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
3556 D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
3557 D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
3558 D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
3559 } D3D12_ROOT_PARAMETER_TYPE;
3560
3561typedef struct D3D12_ROOT_PARAMETER
3562 {
3563 D3D12_ROOT_PARAMETER_TYPE ParameterType;
3564 union
3565 {
3566 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
3567 D3D12_ROOT_CONSTANTS Constants;
3568 D3D12_ROOT_DESCRIPTOR Descriptor;
3569 } ;
3570 D3D12_SHADER_VISIBILITY ShaderVisibility;
3571 } D3D12_ROOT_PARAMETER;
3572
3573typedef
3574enum D3D12_ROOT_SIGNATURE_FLAGS
3575 {
3576 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
3577 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
3578 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
3579 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
3580 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
3581 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
3582 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
3583 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
3584 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
3585 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
3586 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
3587 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
3588 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
3589 } D3D12_ROOT_SIGNATURE_FLAGS;
3590
3591DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );
3592typedef
3593enum D3D12_STATIC_BORDER_COLOR
3594 {
3595 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
3596 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
3597 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 )
3598 } D3D12_STATIC_BORDER_COLOR;
3599
3600typedef struct D3D12_STATIC_SAMPLER_DESC
3601 {
3602 D3D12_FILTER Filter;
3603 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3604 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3605 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3606 FLOAT MipLODBias;
3607 UINT MaxAnisotropy;
3608 D3D12_COMPARISON_FUNC ComparisonFunc;
3609 D3D12_STATIC_BORDER_COLOR BorderColor;
3610 FLOAT MinLOD;
3611 FLOAT MaxLOD;
3612 UINT ShaderRegister;
3613 UINT RegisterSpace;
3614 D3D12_SHADER_VISIBILITY ShaderVisibility;
3615 } D3D12_STATIC_SAMPLER_DESC;
3616
3617typedef struct D3D12_ROOT_SIGNATURE_DESC
3618 {
3619 UINT NumParameters;
3620 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
3621 UINT NumStaticSamplers;
3622 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
3623 D3D12_ROOT_SIGNATURE_FLAGS Flags;
3624 } D3D12_ROOT_SIGNATURE_DESC;
3625
3626typedef
3627enum D3D12_DESCRIPTOR_RANGE_FLAGS
3628 {
3629 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
3630 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
3631 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
3632 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
3633 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
3634 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
3635 } D3D12_DESCRIPTOR_RANGE_FLAGS;
3636
3637DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );
3638typedef struct D3D12_DESCRIPTOR_RANGE1
3639 {
3640 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
3641 UINT NumDescriptors;
3642 UINT BaseShaderRegister;
3643 UINT RegisterSpace;
3644 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
3645 UINT OffsetInDescriptorsFromTableStart;
3646 } D3D12_DESCRIPTOR_RANGE1;
3647
3648typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
3649 {
3650 UINT NumDescriptorRanges;
3651 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
3652 } D3D12_ROOT_DESCRIPTOR_TABLE1;
3653
3654typedef
3655enum D3D12_ROOT_DESCRIPTOR_FLAGS
3656 {
3657 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
3658 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
3659 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
3660 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
3661 } D3D12_ROOT_DESCRIPTOR_FLAGS;
3662
3663DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );
3664typedef struct D3D12_ROOT_DESCRIPTOR1
3665 {
3666 UINT ShaderRegister;
3667 UINT RegisterSpace;
3668 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
3669 } D3D12_ROOT_DESCRIPTOR1;
3670
3671typedef struct D3D12_ROOT_PARAMETER1
3672 {
3673 D3D12_ROOT_PARAMETER_TYPE ParameterType;
3674 union
3675 {
3676 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
3677 D3D12_ROOT_CONSTANTS Constants;
3678 D3D12_ROOT_DESCRIPTOR1 Descriptor;
3679 } ;
3680 D3D12_SHADER_VISIBILITY ShaderVisibility;
3681 } D3D12_ROOT_PARAMETER1;
3682
3683typedef struct D3D12_ROOT_SIGNATURE_DESC1
3684 {
3685 UINT NumParameters;
3686 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
3687 UINT NumStaticSamplers;
3688 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
3689 D3D12_ROOT_SIGNATURE_FLAGS Flags;
3690 } D3D12_ROOT_SIGNATURE_DESC1;
3691
3692typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
3693 {
3694 D3D_ROOT_SIGNATURE_VERSION Version;
3695 union
3696 {
3697 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
3698 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
3699 } ;
3700 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
3701
3702
3703
3704extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
3705extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
3706
3707#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
3708#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
3709
3710/* interface ID3D12RootSignatureDeserializer */
3711/* [unique][local][object][uuid] */
3712
3713
3714EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
3715
3716#if defined(__cplusplus) && !defined(CINTERFACE)
3717
3718 MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
3719 ID3D12RootSignatureDeserializer : public IUnknown
3720 {
3721 public:
3722 virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
3723
3724 };
3725
3726
3727#else /* C style interface */
3728
3729 typedef struct ID3D12RootSignatureDeserializerVtbl
3730 {
3731 BEGIN_INTERFACE
3732
3733 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3734 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3735 ID3D12RootSignatureDeserializer * This,
3736 REFIID riid,
3737 _COM_Outptr_ void **ppvObject);
3738
3739 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3740 ULONG ( STDMETHODCALLTYPE *AddRef )(
3741 ID3D12RootSignatureDeserializer * This);
3742
3743 DECLSPEC_XFGVIRT(IUnknown, Release)
3744 ULONG ( STDMETHODCALLTYPE *Release )(
3745 ID3D12RootSignatureDeserializer * This);
3746
3747 DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
3748 const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
3749 ID3D12RootSignatureDeserializer * This);
3750
3751 END_INTERFACE
3752 } ID3D12RootSignatureDeserializerVtbl;
3753
3754 interface ID3D12RootSignatureDeserializer
3755 {
3756 CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
3757 };
3758
3759
3760
3761#ifdef COBJMACROS
3762
3763
3764#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
3765 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3766
3767#define ID3D12RootSignatureDeserializer_AddRef(This) \
3768 ( (This)->lpVtbl -> AddRef(This) )
3769
3770#define ID3D12RootSignatureDeserializer_Release(This) \
3771 ( (This)->lpVtbl -> Release(This) )
3772
3773
3774#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
3775 ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
3776
3777#endif /* COBJMACROS */
3778
3779
3780#endif /* C style interface */
3781
3782
3783
3784
3785#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
3786
3787
3788#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
3789#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
3790
3791/* interface ID3D12VersionedRootSignatureDeserializer */
3792/* [unique][local][object][uuid] */
3793
3794
3795EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
3796
3797#if defined(__cplusplus) && !defined(CINTERFACE)
3798
3799 MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
3800 ID3D12VersionedRootSignatureDeserializer : public IUnknown
3801 {
3802 public:
3803 virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
3804 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
3805 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
3806
3807 virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
3808
3809 };
3810
3811
3812#else /* C style interface */
3813
3814 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
3815 {
3816 BEGIN_INTERFACE
3817
3818 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3819 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3820 ID3D12VersionedRootSignatureDeserializer * This,
3821 REFIID riid,
3822 _COM_Outptr_ void **ppvObject);
3823
3824 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3825 ULONG ( STDMETHODCALLTYPE *AddRef )(
3826 ID3D12VersionedRootSignatureDeserializer * This);
3827
3828 DECLSPEC_XFGVIRT(IUnknown, Release)
3829 ULONG ( STDMETHODCALLTYPE *Release )(
3830 ID3D12VersionedRootSignatureDeserializer * This);
3831
3832 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
3833 HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
3834 ID3D12VersionedRootSignatureDeserializer * This,
3835 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
3836 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
3837
3838 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
3839 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
3840 ID3D12VersionedRootSignatureDeserializer * This);
3841
3842 END_INTERFACE
3843 } ID3D12VersionedRootSignatureDeserializerVtbl;
3844
3845 interface ID3D12VersionedRootSignatureDeserializer
3846 {
3847 CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
3848 };
3849
3850
3851
3852#ifdef COBJMACROS
3853
3854
3855#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
3856 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3857
3858#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
3859 ( (This)->lpVtbl -> AddRef(This) )
3860
3861#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
3862 ( (This)->lpVtbl -> Release(This) )
3863
3864
3865#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
3866 ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
3867
3868#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
3869 ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
3870
3871#endif /* COBJMACROS */
3872
3873
3874#endif /* C style interface */
3875
3876
3877
3878
3879#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
3880
3881
3882/* interface __MIDL_itf_d3d12_0000_0003 */
3883/* [local] */
3884
3885typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
3886 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
3887 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
3888 _Out_ ID3DBlob** ppBlob,
3889 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3890
3891HRESULT WINAPI D3D12SerializeRootSignature(
3892 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
3893 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
3894 _Out_ ID3DBlob** ppBlob,
3895 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3896
3897typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
3898 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3899 _In_ SIZE_T SrcDataSizeInBytes,
3900 _In_ REFIID pRootSignatureDeserializerInterface,
3901 _Out_ void** ppRootSignatureDeserializer);
3902
3903HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
3904 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3905 _In_ SIZE_T SrcDataSizeInBytes,
3906 _In_ REFIID pRootSignatureDeserializerInterface,
3907 _Out_ void** ppRootSignatureDeserializer);
3908
3909typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
3910 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
3911 _Out_ ID3DBlob** ppBlob,
3912 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3913
3914HRESULT WINAPI D3D12SerializeVersionedRootSignature(
3915 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
3916 _Out_ ID3DBlob** ppBlob,
3917 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
3918
3919typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
3920 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3921 _In_ SIZE_T SrcDataSizeInBytes,
3922 _In_ REFIID pRootSignatureDeserializerInterface,
3923 _Out_ void** ppRootSignatureDeserializer);
3924
3925HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
3926 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
3927 _In_ SIZE_T SrcDataSizeInBytes,
3928 _In_ REFIID pRootSignatureDeserializerInterface,
3929 _Out_ void** ppRootSignatureDeserializer);
3930
3931typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
3932 {
3933 SIZE_T ptr;
3934 } D3D12_CPU_DESCRIPTOR_HANDLE;
3935
3936typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
3937 {
3938 UINT64 ptr;
3939 } D3D12_GPU_DESCRIPTOR_HANDLE;
3940
3941// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
3942// must have 2D subresources with all specified subresources the same dimension.
3943typedef struct D3D12_DISCARD_REGION
3944 {
3945 UINT NumRects;
3946 _In_reads_(NumRects) const D3D12_RECT *pRects;
3947 UINT FirstSubresource;
3948 UINT NumSubresources;
3949 } D3D12_DISCARD_REGION;
3950
3951typedef
3952enum D3D12_QUERY_HEAP_TYPE
3953 {
3954 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
3955 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
3956 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
3957 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
3958 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
3959 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
3960 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
3961 } D3D12_QUERY_HEAP_TYPE;
3962
3963typedef struct D3D12_QUERY_HEAP_DESC
3964 {
3965 D3D12_QUERY_HEAP_TYPE Type;
3966 UINT Count;
3967 UINT NodeMask;
3968 } D3D12_QUERY_HEAP_DESC;
3969
3970typedef
3971enum D3D12_QUERY_TYPE
3972 {
3973 D3D12_QUERY_TYPE_OCCLUSION = 0,
3974 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
3975 D3D12_QUERY_TYPE_TIMESTAMP = 2,
3976 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
3977 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
3978 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
3979 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
3980 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
3981 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
3982 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
3983 } D3D12_QUERY_TYPE;
3984
3985typedef
3986enum D3D12_PREDICATION_OP
3987 {
3988 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
3989 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
3990 } D3D12_PREDICATION_OP;
3991
3992typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
3993 {
3994 UINT64 IAVertices;
3995 UINT64 IAPrimitives;
3996 UINT64 VSInvocations;
3997 UINT64 GSInvocations;
3998 UINT64 GSPrimitives;
3999 UINT64 CInvocations;
4000 UINT64 CPrimitives;
4001 UINT64 PSInvocations;
4002 UINT64 HSInvocations;
4003 UINT64 DSInvocations;
4004 UINT64 CSInvocations;
4005 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
4006
4007typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
4008 {
4009 UINT64 IAVertices;
4010 UINT64 IAPrimitives;
4011 UINT64 VSInvocations;
4012 UINT64 GSInvocations;
4013 UINT64 GSPrimitives;
4014 UINT64 CInvocations;
4015 UINT64 CPrimitives;
4016 UINT64 PSInvocations;
4017 UINT64 HSInvocations;
4018 UINT64 DSInvocations;
4019 UINT64 CSInvocations;
4020 UINT64 ASInvocations;
4021 UINT64 MSInvocations;
4022 UINT64 MSPrimitives;
4023 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
4024
4025typedef struct D3D12_QUERY_DATA_SO_STATISTICS
4026 {
4027 UINT64 NumPrimitivesWritten;
4028 UINT64 PrimitivesStorageNeeded;
4029 } D3D12_QUERY_DATA_SO_STATISTICS;
4030
4031typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
4032 {
4033 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4034 UINT64 SizeInBytes;
4035 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
4036 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
4037
4038typedef struct D3D12_DRAW_ARGUMENTS
4039 {
4040 UINT VertexCountPerInstance;
4041 UINT InstanceCount;
4042 UINT StartVertexLocation;
4043 UINT StartInstanceLocation;
4044 } D3D12_DRAW_ARGUMENTS;
4045
4046typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
4047 {
4048 UINT IndexCountPerInstance;
4049 UINT InstanceCount;
4050 UINT StartIndexLocation;
4051 INT BaseVertexLocation;
4052 UINT StartInstanceLocation;
4053 } D3D12_DRAW_INDEXED_ARGUMENTS;
4054
4055typedef struct D3D12_DISPATCH_ARGUMENTS
4056 {
4057 UINT ThreadGroupCountX;
4058 UINT ThreadGroupCountY;
4059 UINT ThreadGroupCountZ;
4060 } D3D12_DISPATCH_ARGUMENTS;
4061
4062typedef struct D3D12_VERTEX_BUFFER_VIEW
4063 {
4064 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4065 UINT SizeInBytes;
4066 UINT StrideInBytes;
4067 } D3D12_VERTEX_BUFFER_VIEW;
4068
4069typedef struct D3D12_INDEX_BUFFER_VIEW
4070 {
4071 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4072 UINT SizeInBytes;
4073 DXGI_FORMAT Format;
4074 } D3D12_INDEX_BUFFER_VIEW;
4075
4076typedef
4077enum D3D12_INDIRECT_ARGUMENT_TYPE
4078 {
4079 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
4080 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
4081 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
4082 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
4083 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
4084 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
4085 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
4086 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
4087 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
4088 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
4089 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 )
4090 } D3D12_INDIRECT_ARGUMENT_TYPE;
4091
4092typedef struct D3D12_INDIRECT_ARGUMENT_DESC
4093 {
4094 D3D12_INDIRECT_ARGUMENT_TYPE Type;
4095 union
4096 {
4097 struct
4098 {
4099 UINT Slot;
4100 } VertexBuffer;
4101 struct
4102 {
4103 UINT RootParameterIndex;
4104 UINT DestOffsetIn32BitValues;
4105 UINT Num32BitValuesToSet;
4106 } Constant;
4107 struct
4108 {
4109 UINT RootParameterIndex;
4110 } ConstantBufferView;
4111 struct
4112 {
4113 UINT RootParameterIndex;
4114 } ShaderResourceView;
4115 struct
4116 {
4117 UINT RootParameterIndex;
4118 } UnorderedAccessView;
4119 } ;
4120 } D3D12_INDIRECT_ARGUMENT_DESC;
4121
4122typedef struct D3D12_COMMAND_SIGNATURE_DESC
4123 {
4124 UINT ByteStride;
4125 UINT NumArgumentDescs;
4126 _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
4127 UINT NodeMask;
4128 } D3D12_COMMAND_SIGNATURE_DESC;
4129
4130
4131
4132
4133extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
4134extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
4135
4136#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
4137#define __ID3D12Pageable_INTERFACE_DEFINED__
4138
4139/* interface ID3D12Pageable */
4140/* [unique][local][object][uuid] */
4141
4142
4143EXTERN_C const IID IID_ID3D12Pageable;
4144
4145#if defined(__cplusplus) && !defined(CINTERFACE)
4146
4147 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
4148 ID3D12Pageable : public ID3D12DeviceChild
4149 {
4150 public:
4151 };
4152
4153
4154#else /* C style interface */
4155
4156 typedef struct ID3D12PageableVtbl
4157 {
4158 BEGIN_INTERFACE
4159
4160 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4161 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4162 ID3D12Pageable * This,
4163 REFIID riid,
4164 _COM_Outptr_ void **ppvObject);
4165
4166 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4167 ULONG ( STDMETHODCALLTYPE *AddRef )(
4168 ID3D12Pageable * This);
4169
4170 DECLSPEC_XFGVIRT(IUnknown, Release)
4171 ULONG ( STDMETHODCALLTYPE *Release )(
4172 ID3D12Pageable * This);
4173
4174 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4175 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4176 ID3D12Pageable * This,
4177 _In_ REFGUID guid,
4178 _Inout_ UINT *pDataSize,
4179 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4180
4181 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4182 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4183 ID3D12Pageable * This,
4184 _In_ REFGUID guid,
4185 _In_ UINT DataSize,
4186 _In_reads_bytes_opt_( DataSize ) const void *pData);
4187
4188 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4189 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4190 ID3D12Pageable * This,
4191 _In_ REFGUID guid,
4192 _In_opt_ const IUnknown *pData);
4193
4194 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4195 HRESULT ( STDMETHODCALLTYPE *SetName )(
4196 ID3D12Pageable * This,
4197 _In_z_ LPCWSTR Name);
4198
4199 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4200 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4201 ID3D12Pageable * This,
4202 REFIID riid,
4203 _COM_Outptr_opt_ void **ppvDevice);
4204
4205 END_INTERFACE
4206 } ID3D12PageableVtbl;
4207
4208 interface ID3D12Pageable
4209 {
4210 CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
4211 };
4212
4213
4214
4215#ifdef COBJMACROS
4216
4217
4218#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
4219 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4220
4221#define ID3D12Pageable_AddRef(This) \
4222 ( (This)->lpVtbl -> AddRef(This) )
4223
4224#define ID3D12Pageable_Release(This) \
4225 ( (This)->lpVtbl -> Release(This) )
4226
4227
4228#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
4229 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4230
4231#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
4232 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4233
4234#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
4235 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4236
4237#define ID3D12Pageable_SetName(This,Name) \
4238 ( (This)->lpVtbl -> SetName(This,Name) )
4239
4240
4241#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
4242 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4243
4244
4245#endif /* COBJMACROS */
4246
4247
4248#endif /* C style interface */
4249
4250
4251
4252
4253#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
4254
4255
4256#ifndef __ID3D12Heap_INTERFACE_DEFINED__
4257#define __ID3D12Heap_INTERFACE_DEFINED__
4258
4259/* interface ID3D12Heap */
4260/* [unique][local][object][uuid] */
4261
4262
4263EXTERN_C const IID IID_ID3D12Heap;
4264
4265#if defined(__cplusplus) && !defined(CINTERFACE)
4266
4267 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
4268 ID3D12Heap : public ID3D12Pageable
4269 {
4270 public:
4271 virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4272
4273 };
4274
4275
4276#else /* C style interface */
4277
4278 typedef struct ID3D12HeapVtbl
4279 {
4280 BEGIN_INTERFACE
4281
4282 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4283 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4284 ID3D12Heap * This,
4285 REFIID riid,
4286 _COM_Outptr_ void **ppvObject);
4287
4288 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4289 ULONG ( STDMETHODCALLTYPE *AddRef )(
4290 ID3D12Heap * This);
4291
4292 DECLSPEC_XFGVIRT(IUnknown, Release)
4293 ULONG ( STDMETHODCALLTYPE *Release )(
4294 ID3D12Heap * This);
4295
4296 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4297 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4298 ID3D12Heap * This,
4299 _In_ REFGUID guid,
4300 _Inout_ UINT *pDataSize,
4301 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4302
4303 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4304 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4305 ID3D12Heap * This,
4306 _In_ REFGUID guid,
4307 _In_ UINT DataSize,
4308 _In_reads_bytes_opt_( DataSize ) const void *pData);
4309
4310 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4311 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4312 ID3D12Heap * This,
4313 _In_ REFGUID guid,
4314 _In_opt_ const IUnknown *pData);
4315
4316 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4317 HRESULT ( STDMETHODCALLTYPE *SetName )(
4318 ID3D12Heap * This,
4319 _In_z_ LPCWSTR Name);
4320
4321 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4322 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4323 ID3D12Heap * This,
4324 REFIID riid,
4325 _COM_Outptr_opt_ void **ppvDevice);
4326
4327 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
4328 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4329 ID3D12Heap * This,
4330 D3D12_HEAP_DESC * RetVal);
4331
4332 END_INTERFACE
4333 } ID3D12HeapVtbl;
4334
4335 interface ID3D12Heap
4336 {
4337 CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
4338 };
4339
4340
4341
4342#ifdef COBJMACROS
4343
4344
4345#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
4346 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4347
4348#define ID3D12Heap_AddRef(This) \
4349 ( (This)->lpVtbl -> AddRef(This) )
4350
4351#define ID3D12Heap_Release(This) \
4352 ( (This)->lpVtbl -> Release(This) )
4353
4354
4355#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
4356 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4357
4358#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
4359 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4360
4361#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
4362 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4363
4364#define ID3D12Heap_SetName(This,Name) \
4365 ( (This)->lpVtbl -> SetName(This,Name) )
4366
4367
4368#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
4369 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4370
4371
4372
4373#define ID3D12Heap_GetDesc(This,RetVal) \
4374 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4375
4376#endif /* COBJMACROS */
4377
4378
4379#endif /* C style interface */
4380
4381
4382
4383
4384#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
4385
4386
4387#ifndef __ID3D12Resource_INTERFACE_DEFINED__
4388#define __ID3D12Resource_INTERFACE_DEFINED__
4389
4390/* interface ID3D12Resource */
4391/* [unique][local][object][uuid] */
4392
4393
4394EXTERN_C const IID IID_ID3D12Resource;
4395
4396#if defined(__cplusplus) && !defined(CINTERFACE)
4397
4398 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
4399 ID3D12Resource : public ID3D12Pageable
4400 {
4401 public:
4402 virtual HRESULT STDMETHODCALLTYPE Map(
4403 UINT Subresource,
4404 _In_opt_ const D3D12_RANGE *pReadRange,
4405 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
4406
4407 virtual void STDMETHODCALLTYPE Unmap(
4408 UINT Subresource,
4409 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
4410
4411 virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4412
4413 virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
4414
4415 virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
4416 UINT DstSubresource,
4417 _In_opt_ const D3D12_BOX *pDstBox,
4418 _In_ const void *pSrcData,
4419 UINT SrcRowPitch,
4420 UINT SrcDepthPitch) = 0;
4421
4422 virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
4423 _Out_ void *pDstData,
4424 UINT DstRowPitch,
4425 UINT DstDepthPitch,
4426 UINT SrcSubresource,
4427 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
4428
4429 virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
4430 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
4431 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
4432
4433 };
4434
4435
4436#else /* C style interface */
4437
4438 typedef struct ID3D12ResourceVtbl
4439 {
4440 BEGIN_INTERFACE
4441
4442 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4443 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4444 ID3D12Resource * This,
4445 REFIID riid,
4446 _COM_Outptr_ void **ppvObject);
4447
4448 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4449 ULONG ( STDMETHODCALLTYPE *AddRef )(
4450 ID3D12Resource * This);
4451
4452 DECLSPEC_XFGVIRT(IUnknown, Release)
4453 ULONG ( STDMETHODCALLTYPE *Release )(
4454 ID3D12Resource * This);
4455
4456 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4457 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4458 ID3D12Resource * This,
4459 _In_ REFGUID guid,
4460 _Inout_ UINT *pDataSize,
4461 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4462
4463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4464 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4465 ID3D12Resource * This,
4466 _In_ REFGUID guid,
4467 _In_ UINT DataSize,
4468 _In_reads_bytes_opt_( DataSize ) const void *pData);
4469
4470 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4471 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4472 ID3D12Resource * This,
4473 _In_ REFGUID guid,
4474 _In_opt_ const IUnknown *pData);
4475
4476 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4477 HRESULT ( STDMETHODCALLTYPE *SetName )(
4478 ID3D12Resource * This,
4479 _In_z_ LPCWSTR Name);
4480
4481 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4482 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4483 ID3D12Resource * This,
4484 REFIID riid,
4485 _COM_Outptr_opt_ void **ppvDevice);
4486
4487 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
4488 HRESULT ( STDMETHODCALLTYPE *Map )(
4489 ID3D12Resource * This,
4490 UINT Subresource,
4491 _In_opt_ const D3D12_RANGE *pReadRange,
4492 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
4493
4494 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
4495 void ( STDMETHODCALLTYPE *Unmap )(
4496 ID3D12Resource * This,
4497 UINT Subresource,
4498 _In_opt_ const D3D12_RANGE *pWrittenRange);
4499
4500 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
4501 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
4502 ID3D12Resource * This,
4503 D3D12_RESOURCE_DESC * RetVal);
4504
4505 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
4506 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
4507 ID3D12Resource * This);
4508
4509 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
4510 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
4511 ID3D12Resource * This,
4512 UINT DstSubresource,
4513 _In_opt_ const D3D12_BOX *pDstBox,
4514 _In_ const void *pSrcData,
4515 UINT SrcRowPitch,
4516 UINT SrcDepthPitch);
4517
4518 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
4519 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
4520 ID3D12Resource * This,
4521 _Out_ void *pDstData,
4522 UINT DstRowPitch,
4523 UINT DstDepthPitch,
4524 UINT SrcSubresource,
4525 _In_opt_ const D3D12_BOX *pSrcBox);
4526
4527 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
4528 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
4529 ID3D12Resource * This,
4530 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
4531 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
4532
4533 END_INTERFACE
4534 } ID3D12ResourceVtbl;
4535
4536 interface ID3D12Resource
4537 {
4538 CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
4539 };
4540
4541
4542
4543#ifdef COBJMACROS
4544
4545
4546#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
4547 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4548
4549#define ID3D12Resource_AddRef(This) \
4550 ( (This)->lpVtbl -> AddRef(This) )
4551
4552#define ID3D12Resource_Release(This) \
4553 ( (This)->lpVtbl -> Release(This) )
4554
4555
4556#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
4557 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4558
4559#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
4560 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4561
4562#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
4563 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4564
4565#define ID3D12Resource_SetName(This,Name) \
4566 ( (This)->lpVtbl -> SetName(This,Name) )
4567
4568
4569#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
4570 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4571
4572
4573
4574#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
4575 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
4576
4577#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
4578 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
4579
4580#define ID3D12Resource_GetDesc(This,RetVal) \
4581 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4582
4583#define ID3D12Resource_GetGPUVirtualAddress(This) \
4584 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
4585
4586#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
4587 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
4588
4589#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
4590 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
4591
4592#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
4593 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
4594
4595#endif /* COBJMACROS */
4596
4597
4598#endif /* C style interface */
4599
4600
4601
4602
4603#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
4604
4605
4606#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
4607#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
4608
4609/* interface ID3D12CommandAllocator */
4610/* [unique][local][object][uuid] */
4611
4612
4613EXTERN_C const IID IID_ID3D12CommandAllocator;
4614
4615#if defined(__cplusplus) && !defined(CINTERFACE)
4616
4617 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
4618 ID3D12CommandAllocator : public ID3D12Pageable
4619 {
4620 public:
4621 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
4622
4623 };
4624
4625
4626#else /* C style interface */
4627
4628 typedef struct ID3D12CommandAllocatorVtbl
4629 {
4630 BEGIN_INTERFACE
4631
4632 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4633 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4634 ID3D12CommandAllocator * This,
4635 REFIID riid,
4636 _COM_Outptr_ void **ppvObject);
4637
4638 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4639 ULONG ( STDMETHODCALLTYPE *AddRef )(
4640 ID3D12CommandAllocator * This);
4641
4642 DECLSPEC_XFGVIRT(IUnknown, Release)
4643 ULONG ( STDMETHODCALLTYPE *Release )(
4644 ID3D12CommandAllocator * This);
4645
4646 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4647 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4648 ID3D12CommandAllocator * This,
4649 _In_ REFGUID guid,
4650 _Inout_ UINT *pDataSize,
4651 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4652
4653 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4654 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4655 ID3D12CommandAllocator * This,
4656 _In_ REFGUID guid,
4657 _In_ UINT DataSize,
4658 _In_reads_bytes_opt_( DataSize ) const void *pData);
4659
4660 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4661 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4662 ID3D12CommandAllocator * This,
4663 _In_ REFGUID guid,
4664 _In_opt_ const IUnknown *pData);
4665
4666 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4667 HRESULT ( STDMETHODCALLTYPE *SetName )(
4668 ID3D12CommandAllocator * This,
4669 _In_z_ LPCWSTR Name);
4670
4671 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4672 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4673 ID3D12CommandAllocator * This,
4674 REFIID riid,
4675 _COM_Outptr_opt_ void **ppvDevice);
4676
4677 DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
4678 HRESULT ( STDMETHODCALLTYPE *Reset )(
4679 ID3D12CommandAllocator * This);
4680
4681 END_INTERFACE
4682 } ID3D12CommandAllocatorVtbl;
4683
4684 interface ID3D12CommandAllocator
4685 {
4686 CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
4687 };
4688
4689
4690
4691#ifdef COBJMACROS
4692
4693
4694#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
4695 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4696
4697#define ID3D12CommandAllocator_AddRef(This) \
4698 ( (This)->lpVtbl -> AddRef(This) )
4699
4700#define ID3D12CommandAllocator_Release(This) \
4701 ( (This)->lpVtbl -> Release(This) )
4702
4703
4704#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
4705 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4706
4707#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
4708 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4709
4710#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
4711 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4712
4713#define ID3D12CommandAllocator_SetName(This,Name) \
4714 ( (This)->lpVtbl -> SetName(This,Name) )
4715
4716
4717#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
4718 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4719
4720
4721
4722#define ID3D12CommandAllocator_Reset(This) \
4723 ( (This)->lpVtbl -> Reset(This) )
4724
4725#endif /* COBJMACROS */
4726
4727
4728#endif /* C style interface */
4729
4730
4731
4732
4733#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
4734
4735
4736#ifndef __ID3D12Fence_INTERFACE_DEFINED__
4737#define __ID3D12Fence_INTERFACE_DEFINED__
4738
4739/* interface ID3D12Fence */
4740/* [unique][local][object][uuid] */
4741
4742
4743EXTERN_C const IID IID_ID3D12Fence;
4744
4745#if defined(__cplusplus) && !defined(CINTERFACE)
4746
4747 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
4748 ID3D12Fence : public ID3D12Pageable
4749 {
4750 public:
4751 virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
4752
4753 virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
4754 UINT64 Value,
4755 HANDLE hEvent) = 0;
4756
4757 virtual HRESULT STDMETHODCALLTYPE Signal(
4758 UINT64 Value) = 0;
4759
4760 };
4761
4762
4763#else /* C style interface */
4764
4765 typedef struct ID3D12FenceVtbl
4766 {
4767 BEGIN_INTERFACE
4768
4769 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4770 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4771 ID3D12Fence * This,
4772 REFIID riid,
4773 _COM_Outptr_ void **ppvObject);
4774
4775 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4776 ULONG ( STDMETHODCALLTYPE *AddRef )(
4777 ID3D12Fence * This);
4778
4779 DECLSPEC_XFGVIRT(IUnknown, Release)
4780 ULONG ( STDMETHODCALLTYPE *Release )(
4781 ID3D12Fence * This);
4782
4783 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4784 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4785 ID3D12Fence * This,
4786 _In_ REFGUID guid,
4787 _Inout_ UINT *pDataSize,
4788 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4789
4790 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4791 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4792 ID3D12Fence * This,
4793 _In_ REFGUID guid,
4794 _In_ UINT DataSize,
4795 _In_reads_bytes_opt_( DataSize ) const void *pData);
4796
4797 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4798 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4799 ID3D12Fence * This,
4800 _In_ REFGUID guid,
4801 _In_opt_ const IUnknown *pData);
4802
4803 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4804 HRESULT ( STDMETHODCALLTYPE *SetName )(
4805 ID3D12Fence * This,
4806 _In_z_ LPCWSTR Name);
4807
4808 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4809 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4810 ID3D12Fence * This,
4811 REFIID riid,
4812 _COM_Outptr_opt_ void **ppvDevice);
4813
4814 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
4815 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
4816 ID3D12Fence * This);
4817
4818 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
4819 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
4820 ID3D12Fence * This,
4821 UINT64 Value,
4822 HANDLE hEvent);
4823
4824 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
4825 HRESULT ( STDMETHODCALLTYPE *Signal )(
4826 ID3D12Fence * This,
4827 UINT64 Value);
4828
4829 END_INTERFACE
4830 } ID3D12FenceVtbl;
4831
4832 interface ID3D12Fence
4833 {
4834 CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
4835 };
4836
4837
4838
4839#ifdef COBJMACROS
4840
4841
4842#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
4843 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4844
4845#define ID3D12Fence_AddRef(This) \
4846 ( (This)->lpVtbl -> AddRef(This) )
4847
4848#define ID3D12Fence_Release(This) \
4849 ( (This)->lpVtbl -> Release(This) )
4850
4851
4852#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
4853 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4854
4855#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
4856 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4857
4858#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
4859 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4860
4861#define ID3D12Fence_SetName(This,Name) \
4862 ( (This)->lpVtbl -> SetName(This,Name) )
4863
4864
4865#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
4866 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4867
4868
4869
4870#define ID3D12Fence_GetCompletedValue(This) \
4871 ( (This)->lpVtbl -> GetCompletedValue(This) )
4872
4873#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
4874 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
4875
4876#define ID3D12Fence_Signal(This,Value) \
4877 ( (This)->lpVtbl -> Signal(This,Value) )
4878
4879#endif /* COBJMACROS */
4880
4881
4882#endif /* C style interface */
4883
4884
4885
4886
4887#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
4888
4889
4890#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
4891#define __ID3D12Fence1_INTERFACE_DEFINED__
4892
4893/* interface ID3D12Fence1 */
4894/* [unique][local][object][uuid] */
4895
4896
4897EXTERN_C const IID IID_ID3D12Fence1;
4898
4899#if defined(__cplusplus) && !defined(CINTERFACE)
4900
4901 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
4902 ID3D12Fence1 : public ID3D12Fence
4903 {
4904 public:
4905 virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
4906
4907 };
4908
4909
4910#else /* C style interface */
4911
4912 typedef struct ID3D12Fence1Vtbl
4913 {
4914 BEGIN_INTERFACE
4915
4916 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4917 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4918 ID3D12Fence1 * This,
4919 REFIID riid,
4920 _COM_Outptr_ void **ppvObject);
4921
4922 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4923 ULONG ( STDMETHODCALLTYPE *AddRef )(
4924 ID3D12Fence1 * This);
4925
4926 DECLSPEC_XFGVIRT(IUnknown, Release)
4927 ULONG ( STDMETHODCALLTYPE *Release )(
4928 ID3D12Fence1 * This);
4929
4930 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4931 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4932 ID3D12Fence1 * This,
4933 _In_ REFGUID guid,
4934 _Inout_ UINT *pDataSize,
4935 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4936
4937 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4938 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4939 ID3D12Fence1 * This,
4940 _In_ REFGUID guid,
4941 _In_ UINT DataSize,
4942 _In_reads_bytes_opt_( DataSize ) const void *pData);
4943
4944 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4945 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4946 ID3D12Fence1 * This,
4947 _In_ REFGUID guid,
4948 _In_opt_ const IUnknown *pData);
4949
4950 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4951 HRESULT ( STDMETHODCALLTYPE *SetName )(
4952 ID3D12Fence1 * This,
4953 _In_z_ LPCWSTR Name);
4954
4955 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4956 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4957 ID3D12Fence1 * This,
4958 REFIID riid,
4959 _COM_Outptr_opt_ void **ppvDevice);
4960
4961 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
4962 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
4963 ID3D12Fence1 * This);
4964
4965 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
4966 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
4967 ID3D12Fence1 * This,
4968 UINT64 Value,
4969 HANDLE hEvent);
4970
4971 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
4972 HRESULT ( STDMETHODCALLTYPE *Signal )(
4973 ID3D12Fence1 * This,
4974 UINT64 Value);
4975
4976 DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
4977 D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
4978 ID3D12Fence1 * This);
4979
4980 END_INTERFACE
4981 } ID3D12Fence1Vtbl;
4982
4983 interface ID3D12Fence1
4984 {
4985 CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
4986 };
4987
4988
4989
4990#ifdef COBJMACROS
4991
4992
4993#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
4994 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4995
4996#define ID3D12Fence1_AddRef(This) \
4997 ( (This)->lpVtbl -> AddRef(This) )
4998
4999#define ID3D12Fence1_Release(This) \
5000 ( (This)->lpVtbl -> Release(This) )
5001
5002
5003#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
5004 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5005
5006#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
5007 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5008
5009#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
5010 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5011
5012#define ID3D12Fence1_SetName(This,Name) \
5013 ( (This)->lpVtbl -> SetName(This,Name) )
5014
5015
5016#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
5017 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5018
5019
5020
5021#define ID3D12Fence1_GetCompletedValue(This) \
5022 ( (This)->lpVtbl -> GetCompletedValue(This) )
5023
5024#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
5025 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5026
5027#define ID3D12Fence1_Signal(This,Value) \
5028 ( (This)->lpVtbl -> Signal(This,Value) )
5029
5030
5031#define ID3D12Fence1_GetCreationFlags(This) \
5032 ( (This)->lpVtbl -> GetCreationFlags(This) )
5033
5034#endif /* COBJMACROS */
5035
5036
5037#endif /* C style interface */
5038
5039
5040
5041
5042#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
5043
5044
5045#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
5046#define __ID3D12PipelineState_INTERFACE_DEFINED__
5047
5048/* interface ID3D12PipelineState */
5049/* [unique][local][object][uuid] */
5050
5051
5052EXTERN_C const IID IID_ID3D12PipelineState;
5053
5054#if defined(__cplusplus) && !defined(CINTERFACE)
5055
5056 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
5057 ID3D12PipelineState : public ID3D12Pageable
5058 {
5059 public:
5060 virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
5061 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
5062
5063 };
5064
5065
5066#else /* C style interface */
5067
5068 typedef struct ID3D12PipelineStateVtbl
5069 {
5070 BEGIN_INTERFACE
5071
5072 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5073 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5074 ID3D12PipelineState * This,
5075 REFIID riid,
5076 _COM_Outptr_ void **ppvObject);
5077
5078 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5079 ULONG ( STDMETHODCALLTYPE *AddRef )(
5080 ID3D12PipelineState * This);
5081
5082 DECLSPEC_XFGVIRT(IUnknown, Release)
5083 ULONG ( STDMETHODCALLTYPE *Release )(
5084 ID3D12PipelineState * This);
5085
5086 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5087 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5088 ID3D12PipelineState * This,
5089 _In_ REFGUID guid,
5090 _Inout_ UINT *pDataSize,
5091 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5092
5093 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5094 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5095 ID3D12PipelineState * This,
5096 _In_ REFGUID guid,
5097 _In_ UINT DataSize,
5098 _In_reads_bytes_opt_( DataSize ) const void *pData);
5099
5100 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5101 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5102 ID3D12PipelineState * This,
5103 _In_ REFGUID guid,
5104 _In_opt_ const IUnknown *pData);
5105
5106 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5107 HRESULT ( STDMETHODCALLTYPE *SetName )(
5108 ID3D12PipelineState * This,
5109 _In_z_ LPCWSTR Name);
5110
5111 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5112 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5113 ID3D12PipelineState * This,
5114 REFIID riid,
5115 _COM_Outptr_opt_ void **ppvDevice);
5116
5117 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5118 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5119 ID3D12PipelineState * This,
5120 _COM_Outptr_ ID3DBlob **ppBlob);
5121
5122 END_INTERFACE
5123 } ID3D12PipelineStateVtbl;
5124
5125 interface ID3D12PipelineState
5126 {
5127 CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
5128 };
5129
5130
5131
5132#ifdef COBJMACROS
5133
5134
5135#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
5136 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5137
5138#define ID3D12PipelineState_AddRef(This) \
5139 ( (This)->lpVtbl -> AddRef(This) )
5140
5141#define ID3D12PipelineState_Release(This) \
5142 ( (This)->lpVtbl -> Release(This) )
5143
5144
5145#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
5146 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5147
5148#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
5149 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5150
5151#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
5152 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5153
5154#define ID3D12PipelineState_SetName(This,Name) \
5155 ( (This)->lpVtbl -> SetName(This,Name) )
5156
5157
5158#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
5159 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5160
5161
5162
5163#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
5164 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5165
5166#endif /* COBJMACROS */
5167
5168
5169#endif /* C style interface */
5170
5171
5172
5173
5174#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
5175
5176
5177#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5178#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5179
5180/* interface ID3D12DescriptorHeap */
5181/* [unique][local][object][uuid] */
5182
5183
5184EXTERN_C const IID IID_ID3D12DescriptorHeap;
5185
5186#if defined(__cplusplus) && !defined(CINTERFACE)
5187
5188 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
5189 ID3D12DescriptorHeap : public ID3D12Pageable
5190 {
5191 public:
5192 virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5193
5194 virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
5195
5196 virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
5197
5198 };
5199
5200
5201#else /* C style interface */
5202
5203 typedef struct ID3D12DescriptorHeapVtbl
5204 {
5205 BEGIN_INTERFACE
5206
5207 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5208 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5209 ID3D12DescriptorHeap * This,
5210 REFIID riid,
5211 _COM_Outptr_ void **ppvObject);
5212
5213 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5214 ULONG ( STDMETHODCALLTYPE *AddRef )(
5215 ID3D12DescriptorHeap * This);
5216
5217 DECLSPEC_XFGVIRT(IUnknown, Release)
5218 ULONG ( STDMETHODCALLTYPE *Release )(
5219 ID3D12DescriptorHeap * This);
5220
5221 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5222 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5223 ID3D12DescriptorHeap * This,
5224 _In_ REFGUID guid,
5225 _Inout_ UINT *pDataSize,
5226 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5227
5228 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5229 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5230 ID3D12DescriptorHeap * This,
5231 _In_ REFGUID guid,
5232 _In_ UINT DataSize,
5233 _In_reads_bytes_opt_( DataSize ) const void *pData);
5234
5235 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5236 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5237 ID3D12DescriptorHeap * This,
5238 _In_ REFGUID guid,
5239 _In_opt_ const IUnknown *pData);
5240
5241 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5242 HRESULT ( STDMETHODCALLTYPE *SetName )(
5243 ID3D12DescriptorHeap * This,
5244 _In_z_ LPCWSTR Name);
5245
5246 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5247 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5248 ID3D12DescriptorHeap * This,
5249 REFIID riid,
5250 _COM_Outptr_opt_ void **ppvDevice);
5251
5252 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
5253 D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
5254 ID3D12DescriptorHeap * This,
5255 D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
5256
5257 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
5258 D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
5259 ID3D12DescriptorHeap * This,
5260 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
5261
5262 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
5263 D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
5264 ID3D12DescriptorHeap * This,
5265 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
5266
5267 END_INTERFACE
5268 } ID3D12DescriptorHeapVtbl;
5269
5270 interface ID3D12DescriptorHeap
5271 {
5272 CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
5273 };
5274
5275
5276
5277#ifdef COBJMACROS
5278
5279
5280#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
5281 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5282
5283#define ID3D12DescriptorHeap_AddRef(This) \
5284 ( (This)->lpVtbl -> AddRef(This) )
5285
5286#define ID3D12DescriptorHeap_Release(This) \
5287 ( (This)->lpVtbl -> Release(This) )
5288
5289
5290#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
5291 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5292
5293#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
5294 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5295
5296#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
5297 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5298
5299#define ID3D12DescriptorHeap_SetName(This,Name) \
5300 ( (This)->lpVtbl -> SetName(This,Name) )
5301
5302
5303#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
5304 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5305
5306
5307
5308#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
5309 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5310
5311#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
5312 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
5313
5314#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
5315 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
5316
5317#endif /* COBJMACROS */
5318
5319
5320#endif /* C style interface */
5321
5322
5323
5324
5325#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
5326
5327
5328#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
5329#define __ID3D12QueryHeap_INTERFACE_DEFINED__
5330
5331/* interface ID3D12QueryHeap */
5332/* [unique][local][object][uuid] */
5333
5334
5335EXTERN_C const IID IID_ID3D12QueryHeap;
5336
5337#if defined(__cplusplus) && !defined(CINTERFACE)
5338
5339 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
5340 ID3D12QueryHeap : public ID3D12Pageable
5341 {
5342 public:
5343 };
5344
5345
5346#else /* C style interface */
5347
5348 typedef struct ID3D12QueryHeapVtbl
5349 {
5350 BEGIN_INTERFACE
5351
5352 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5353 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5354 ID3D12QueryHeap * This,
5355 REFIID riid,
5356 _COM_Outptr_ void **ppvObject);
5357
5358 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5359 ULONG ( STDMETHODCALLTYPE *AddRef )(
5360 ID3D12QueryHeap * This);
5361
5362 DECLSPEC_XFGVIRT(IUnknown, Release)
5363 ULONG ( STDMETHODCALLTYPE *Release )(
5364 ID3D12QueryHeap * This);
5365
5366 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5367 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5368 ID3D12QueryHeap * This,
5369 _In_ REFGUID guid,
5370 _Inout_ UINT *pDataSize,
5371 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5372
5373 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5374 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5375 ID3D12QueryHeap * This,
5376 _In_ REFGUID guid,
5377 _In_ UINT DataSize,
5378 _In_reads_bytes_opt_( DataSize ) const void *pData);
5379
5380 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5381 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5382 ID3D12QueryHeap * This,
5383 _In_ REFGUID guid,
5384 _In_opt_ const IUnknown *pData);
5385
5386 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5387 HRESULT ( STDMETHODCALLTYPE *SetName )(
5388 ID3D12QueryHeap * This,
5389 _In_z_ LPCWSTR Name);
5390
5391 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5392 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5393 ID3D12QueryHeap * This,
5394 REFIID riid,
5395 _COM_Outptr_opt_ void **ppvDevice);
5396
5397 END_INTERFACE
5398 } ID3D12QueryHeapVtbl;
5399
5400 interface ID3D12QueryHeap
5401 {
5402 CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
5403 };
5404
5405
5406
5407#ifdef COBJMACROS
5408
5409
5410#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
5411 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5412
5413#define ID3D12QueryHeap_AddRef(This) \
5414 ( (This)->lpVtbl -> AddRef(This) )
5415
5416#define ID3D12QueryHeap_Release(This) \
5417 ( (This)->lpVtbl -> Release(This) )
5418
5419
5420#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
5421 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5422
5423#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
5424 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5425
5426#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
5427 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5428
5429#define ID3D12QueryHeap_SetName(This,Name) \
5430 ( (This)->lpVtbl -> SetName(This,Name) )
5431
5432
5433#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
5434 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5435
5436
5437
5438#endif /* COBJMACROS */
5439
5440
5441#endif /* C style interface */
5442
5443
5444
5445
5446#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
5447
5448
5449#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
5450#define __ID3D12CommandSignature_INTERFACE_DEFINED__
5451
5452/* interface ID3D12CommandSignature */
5453/* [unique][local][object][uuid] */
5454
5455
5456EXTERN_C const IID IID_ID3D12CommandSignature;
5457
5458#if defined(__cplusplus) && !defined(CINTERFACE)
5459
5460 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
5461 ID3D12CommandSignature : public ID3D12Pageable
5462 {
5463 public:
5464 };
5465
5466
5467#else /* C style interface */
5468
5469 typedef struct ID3D12CommandSignatureVtbl
5470 {
5471 BEGIN_INTERFACE
5472
5473 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5474 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5475 ID3D12CommandSignature * This,
5476 REFIID riid,
5477 _COM_Outptr_ void **ppvObject);
5478
5479 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5480 ULONG ( STDMETHODCALLTYPE *AddRef )(
5481 ID3D12CommandSignature * This);
5482
5483 DECLSPEC_XFGVIRT(IUnknown, Release)
5484 ULONG ( STDMETHODCALLTYPE *Release )(
5485 ID3D12CommandSignature * This);
5486
5487 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5488 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5489 ID3D12CommandSignature * This,
5490 _In_ REFGUID guid,
5491 _Inout_ UINT *pDataSize,
5492 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5493
5494 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5495 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5496 ID3D12CommandSignature * This,
5497 _In_ REFGUID guid,
5498 _In_ UINT DataSize,
5499 _In_reads_bytes_opt_( DataSize ) const void *pData);
5500
5501 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5502 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5503 ID3D12CommandSignature * This,
5504 _In_ REFGUID guid,
5505 _In_opt_ const IUnknown *pData);
5506
5507 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5508 HRESULT ( STDMETHODCALLTYPE *SetName )(
5509 ID3D12CommandSignature * This,
5510 _In_z_ LPCWSTR Name);
5511
5512 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5513 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5514 ID3D12CommandSignature * This,
5515 REFIID riid,
5516 _COM_Outptr_opt_ void **ppvDevice);
5517
5518 END_INTERFACE
5519 } ID3D12CommandSignatureVtbl;
5520
5521 interface ID3D12CommandSignature
5522 {
5523 CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
5524 };
5525
5526
5527
5528#ifdef COBJMACROS
5529
5530
5531#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
5532 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5533
5534#define ID3D12CommandSignature_AddRef(This) \
5535 ( (This)->lpVtbl -> AddRef(This) )
5536
5537#define ID3D12CommandSignature_Release(This) \
5538 ( (This)->lpVtbl -> Release(This) )
5539
5540
5541#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
5542 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5543
5544#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
5545 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5546
5547#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
5548 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5549
5550#define ID3D12CommandSignature_SetName(This,Name) \
5551 ( (This)->lpVtbl -> SetName(This,Name) )
5552
5553
5554#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
5555 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5556
5557
5558
5559#endif /* COBJMACROS */
5560
5561
5562#endif /* C style interface */
5563
5564
5565
5566
5567#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
5568
5569
5570#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
5571#define __ID3D12CommandList_INTERFACE_DEFINED__
5572
5573/* interface ID3D12CommandList */
5574/* [unique][local][object][uuid] */
5575
5576
5577EXTERN_C const IID IID_ID3D12CommandList;
5578
5579#if defined(__cplusplus) && !defined(CINTERFACE)
5580
5581 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
5582 ID3D12CommandList : public ID3D12DeviceChild
5583 {
5584 public:
5585 virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
5586
5587 };
5588
5589
5590#else /* C style interface */
5591
5592 typedef struct ID3D12CommandListVtbl
5593 {
5594 BEGIN_INTERFACE
5595
5596 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5597 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5598 ID3D12CommandList * This,
5599 REFIID riid,
5600 _COM_Outptr_ void **ppvObject);
5601
5602 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5603 ULONG ( STDMETHODCALLTYPE *AddRef )(
5604 ID3D12CommandList * This);
5605
5606 DECLSPEC_XFGVIRT(IUnknown, Release)
5607 ULONG ( STDMETHODCALLTYPE *Release )(
5608 ID3D12CommandList * This);
5609
5610 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5611 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5612 ID3D12CommandList * This,
5613 _In_ REFGUID guid,
5614 _Inout_ UINT *pDataSize,
5615 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5616
5617 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5618 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5619 ID3D12CommandList * This,
5620 _In_ REFGUID guid,
5621 _In_ UINT DataSize,
5622 _In_reads_bytes_opt_( DataSize ) const void *pData);
5623
5624 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5625 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5626 ID3D12CommandList * This,
5627 _In_ REFGUID guid,
5628 _In_opt_ const IUnknown *pData);
5629
5630 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5631 HRESULT ( STDMETHODCALLTYPE *SetName )(
5632 ID3D12CommandList * This,
5633 _In_z_ LPCWSTR Name);
5634
5635 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5636 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5637 ID3D12CommandList * This,
5638 REFIID riid,
5639 _COM_Outptr_opt_ void **ppvDevice);
5640
5641 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5642 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5643 ID3D12CommandList * This);
5644
5645 END_INTERFACE
5646 } ID3D12CommandListVtbl;
5647
5648 interface ID3D12CommandList
5649 {
5650 CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
5651 };
5652
5653
5654
5655#ifdef COBJMACROS
5656
5657
5658#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
5659 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5660
5661#define ID3D12CommandList_AddRef(This) \
5662 ( (This)->lpVtbl -> AddRef(This) )
5663
5664#define ID3D12CommandList_Release(This) \
5665 ( (This)->lpVtbl -> Release(This) )
5666
5667
5668#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
5669 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5670
5671#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
5672 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5673
5674#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
5675 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5676
5677#define ID3D12CommandList_SetName(This,Name) \
5678 ( (This)->lpVtbl -> SetName(This,Name) )
5679
5680
5681#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
5682 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5683
5684
5685#define ID3D12CommandList_GetType(This) \
5686 ( (This)->lpVtbl -> GetType(This) )
5687
5688#endif /* COBJMACROS */
5689
5690
5691#endif /* C style interface */
5692
5693
5694
5695
5696#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
5697
5698
5699#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
5700#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
5701
5702/* interface ID3D12GraphicsCommandList */
5703/* [unique][local][object][uuid] */
5704
5705
5706EXTERN_C const IID IID_ID3D12GraphicsCommandList;
5707
5708#if defined(__cplusplus) && !defined(CINTERFACE)
5709
5710 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
5711 ID3D12GraphicsCommandList : public ID3D12CommandList
5712 {
5713 public:
5714 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
5715
5716 virtual HRESULT STDMETHODCALLTYPE Reset(
5717 _In_ ID3D12CommandAllocator *pAllocator,
5718 _In_opt_ ID3D12PipelineState *pInitialState) = 0;
5719
5720 virtual void STDMETHODCALLTYPE ClearState(
5721 _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
5722
5723 virtual void STDMETHODCALLTYPE DrawInstanced(
5724 _In_ UINT VertexCountPerInstance,
5725 _In_ UINT InstanceCount,
5726 _In_ UINT StartVertexLocation,
5727 _In_ UINT StartInstanceLocation) = 0;
5728
5729 virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
5730 _In_ UINT IndexCountPerInstance,
5731 _In_ UINT InstanceCount,
5732 _In_ UINT StartIndexLocation,
5733 _In_ INT BaseVertexLocation,
5734 _In_ UINT StartInstanceLocation) = 0;
5735
5736 virtual void STDMETHODCALLTYPE Dispatch(
5737 _In_ UINT ThreadGroupCountX,
5738 _In_ UINT ThreadGroupCountY,
5739 _In_ UINT ThreadGroupCountZ) = 0;
5740
5741 virtual void STDMETHODCALLTYPE CopyBufferRegion(
5742 _In_ ID3D12Resource *pDstBuffer,
5743 UINT64 DstOffset,
5744 _In_ ID3D12Resource *pSrcBuffer,
5745 UINT64 SrcOffset,
5746 UINT64 NumBytes) = 0;
5747
5748 virtual void STDMETHODCALLTYPE CopyTextureRegion(
5749 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
5750 UINT DstX,
5751 UINT DstY,
5752 UINT DstZ,
5753 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
5754 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
5755
5756 virtual void STDMETHODCALLTYPE CopyResource(
5757 _In_ ID3D12Resource *pDstResource,
5758 _In_ ID3D12Resource *pSrcResource) = 0;
5759
5760 virtual void STDMETHODCALLTYPE CopyTiles(
5761 _In_ ID3D12Resource *pTiledResource,
5762 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
5763 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
5764 _In_ ID3D12Resource *pBuffer,
5765 UINT64 BufferStartOffsetInBytes,
5766 D3D12_TILE_COPY_FLAGS Flags) = 0;
5767
5768 virtual void STDMETHODCALLTYPE ResolveSubresource(
5769 _In_ ID3D12Resource *pDstResource,
5770 _In_ UINT DstSubresource,
5771 _In_ ID3D12Resource *pSrcResource,
5772 _In_ UINT SrcSubresource,
5773 _In_ DXGI_FORMAT Format) = 0;
5774
5775 virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
5776 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
5777
5778 virtual void STDMETHODCALLTYPE RSSetViewports(
5779 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
5780 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
5781
5782 virtual void STDMETHODCALLTYPE RSSetScissorRects(
5783 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
5784 _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
5785
5786 virtual void STDMETHODCALLTYPE OMSetBlendFactor(
5787 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
5788
5789 virtual void STDMETHODCALLTYPE OMSetStencilRef(
5790 _In_ UINT StencilRef) = 0;
5791
5792 virtual void STDMETHODCALLTYPE SetPipelineState(
5793 _In_ ID3D12PipelineState *pPipelineState) = 0;
5794
5795 virtual void STDMETHODCALLTYPE ResourceBarrier(
5796 _In_ UINT NumBarriers,
5797 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
5798
5799 virtual void STDMETHODCALLTYPE ExecuteBundle(
5800 _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
5801
5802 virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
5803 _In_ UINT NumDescriptorHeaps,
5804 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
5805
5806 virtual void STDMETHODCALLTYPE SetComputeRootSignature(
5807 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
5808
5809 virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
5810 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
5811
5812 virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
5813 _In_ UINT RootParameterIndex,
5814 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
5815
5816 virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
5817 _In_ UINT RootParameterIndex,
5818 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
5819
5820 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
5821 _In_ UINT RootParameterIndex,
5822 _In_ UINT SrcData,
5823 _In_ UINT DestOffsetIn32BitValues) = 0;
5824
5825 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
5826 _In_ UINT RootParameterIndex,
5827 _In_ UINT SrcData,
5828 _In_ UINT DestOffsetIn32BitValues) = 0;
5829
5830 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
5831 _In_ UINT RootParameterIndex,
5832 _In_ UINT Num32BitValuesToSet,
5833 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
5834 _In_ UINT DestOffsetIn32BitValues) = 0;
5835
5836 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
5837 _In_ UINT RootParameterIndex,
5838 _In_ UINT Num32BitValuesToSet,
5839 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
5840 _In_ UINT DestOffsetIn32BitValues) = 0;
5841
5842 virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
5843 _In_ UINT RootParameterIndex,
5844 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5845
5846 virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
5847 _In_ UINT RootParameterIndex,
5848 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5849
5850 virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
5851 _In_ UINT RootParameterIndex,
5852 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5853
5854 virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
5855 _In_ UINT RootParameterIndex,
5856 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5857
5858 virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
5859 _In_ UINT RootParameterIndex,
5860 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5861
5862 virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
5863 _In_ UINT RootParameterIndex,
5864 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
5865
5866 virtual void STDMETHODCALLTYPE IASetIndexBuffer(
5867 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
5868
5869 virtual void STDMETHODCALLTYPE IASetVertexBuffers(
5870 _In_ UINT StartSlot,
5871 _In_ UINT NumViews,
5872 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
5873
5874 virtual void STDMETHODCALLTYPE SOSetTargets(
5875 _In_ UINT StartSlot,
5876 _In_ UINT NumViews,
5877 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
5878
5879 virtual void STDMETHODCALLTYPE OMSetRenderTargets(
5880 _In_ UINT NumRenderTargetDescriptors,
5881 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
5882 _In_ BOOL RTsSingleHandleToDescriptorRange,
5883 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
5884
5885 virtual void STDMETHODCALLTYPE ClearDepthStencilView(
5886 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
5887 _In_ D3D12_CLEAR_FLAGS ClearFlags,
5888 _In_ FLOAT Depth,
5889 _In_ UINT8 Stencil,
5890 _In_ UINT NumRects,
5891 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5892
5893 virtual void STDMETHODCALLTYPE ClearRenderTargetView(
5894 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
5895 _In_ const FLOAT ColorRGBA[ 4 ],
5896 _In_ UINT NumRects,
5897 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5898
5899 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
5900 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
5901 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
5902 _In_ ID3D12Resource *pResource,
5903 _In_ const UINT Values[ 4 ],
5904 _In_ UINT NumRects,
5905 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5906
5907 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
5908 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
5909 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
5910 _In_ ID3D12Resource *pResource,
5911 _In_ const FLOAT Values[ 4 ],
5912 _In_ UINT NumRects,
5913 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
5914
5915 virtual void STDMETHODCALLTYPE DiscardResource(
5916 _In_ ID3D12Resource *pResource,
5917 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
5918
5919 virtual void STDMETHODCALLTYPE BeginQuery(
5920 _In_ ID3D12QueryHeap *pQueryHeap,
5921 _In_ D3D12_QUERY_TYPE Type,
5922 _In_ UINT Index) = 0;
5923
5924 virtual void STDMETHODCALLTYPE EndQuery(
5925 _In_ ID3D12QueryHeap *pQueryHeap,
5926 _In_ D3D12_QUERY_TYPE Type,
5927 _In_ UINT Index) = 0;
5928
5929 virtual void STDMETHODCALLTYPE ResolveQueryData(
5930 _In_ ID3D12QueryHeap *pQueryHeap,
5931 _In_ D3D12_QUERY_TYPE Type,
5932 _In_ UINT StartIndex,
5933 _In_ UINT NumQueries,
5934 _In_ ID3D12Resource *pDestinationBuffer,
5935 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
5936
5937 virtual void STDMETHODCALLTYPE SetPredication(
5938 _In_opt_ ID3D12Resource *pBuffer,
5939 _In_ UINT64 AlignedBufferOffset,
5940 _In_ D3D12_PREDICATION_OP Operation) = 0;
5941
5942 virtual void STDMETHODCALLTYPE SetMarker(
5943 UINT Metadata,
5944 _In_reads_bytes_opt_(Size) const void *pData,
5945 UINT Size) = 0;
5946
5947 virtual void STDMETHODCALLTYPE BeginEvent(
5948 UINT Metadata,
5949 _In_reads_bytes_opt_(Size) const void *pData,
5950 UINT Size) = 0;
5951
5952 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
5953
5954 virtual void STDMETHODCALLTYPE ExecuteIndirect(
5955 _In_ ID3D12CommandSignature *pCommandSignature,
5956 _In_ UINT MaxCommandCount,
5957 _In_ ID3D12Resource *pArgumentBuffer,
5958 _In_ UINT64 ArgumentBufferOffset,
5959 _In_opt_ ID3D12Resource *pCountBuffer,
5960 _In_ UINT64 CountBufferOffset) = 0;
5961
5962 };
5963
5964
5965#else /* C style interface */
5966
5967 typedef struct ID3D12GraphicsCommandListVtbl
5968 {
5969 BEGIN_INTERFACE
5970
5971 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5972 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5973 ID3D12GraphicsCommandList * This,
5974 REFIID riid,
5975 _COM_Outptr_ void **ppvObject);
5976
5977 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5978 ULONG ( STDMETHODCALLTYPE *AddRef )(
5979 ID3D12GraphicsCommandList * This);
5980
5981 DECLSPEC_XFGVIRT(IUnknown, Release)
5982 ULONG ( STDMETHODCALLTYPE *Release )(
5983 ID3D12GraphicsCommandList * This);
5984
5985 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5986 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5987 ID3D12GraphicsCommandList * This,
5988 _In_ REFGUID guid,
5989 _Inout_ UINT *pDataSize,
5990 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5991
5992 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5993 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5994 ID3D12GraphicsCommandList * This,
5995 _In_ REFGUID guid,
5996 _In_ UINT DataSize,
5997 _In_reads_bytes_opt_( DataSize ) const void *pData);
5998
5999 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6000 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6001 ID3D12GraphicsCommandList * This,
6002 _In_ REFGUID guid,
6003 _In_opt_ const IUnknown *pData);
6004
6005 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6006 HRESULT ( STDMETHODCALLTYPE *SetName )(
6007 ID3D12GraphicsCommandList * This,
6008 _In_z_ LPCWSTR Name);
6009
6010 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6011 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6012 ID3D12GraphicsCommandList * This,
6013 REFIID riid,
6014 _COM_Outptr_opt_ void **ppvDevice);
6015
6016 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6017 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6018 ID3D12GraphicsCommandList * This);
6019
6020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6021 HRESULT ( STDMETHODCALLTYPE *Close )(
6022 ID3D12GraphicsCommandList * This);
6023
6024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6025 HRESULT ( STDMETHODCALLTYPE *Reset )(
6026 ID3D12GraphicsCommandList * This,
6027 _In_ ID3D12CommandAllocator *pAllocator,
6028 _In_opt_ ID3D12PipelineState *pInitialState);
6029
6030 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6031 void ( STDMETHODCALLTYPE *ClearState )(
6032 ID3D12GraphicsCommandList * This,
6033 _In_opt_ ID3D12PipelineState *pPipelineState);
6034
6035 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6036 void ( STDMETHODCALLTYPE *DrawInstanced )(
6037 ID3D12GraphicsCommandList * This,
6038 _In_ UINT VertexCountPerInstance,
6039 _In_ UINT InstanceCount,
6040 _In_ UINT StartVertexLocation,
6041 _In_ UINT StartInstanceLocation);
6042
6043 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6044 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6045 ID3D12GraphicsCommandList * This,
6046 _In_ UINT IndexCountPerInstance,
6047 _In_ UINT InstanceCount,
6048 _In_ UINT StartIndexLocation,
6049 _In_ INT BaseVertexLocation,
6050 _In_ UINT StartInstanceLocation);
6051
6052 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6053 void ( STDMETHODCALLTYPE *Dispatch )(
6054 ID3D12GraphicsCommandList * This,
6055 _In_ UINT ThreadGroupCountX,
6056 _In_ UINT ThreadGroupCountY,
6057 _In_ UINT ThreadGroupCountZ);
6058
6059 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6060 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6061 ID3D12GraphicsCommandList * This,
6062 _In_ ID3D12Resource *pDstBuffer,
6063 UINT64 DstOffset,
6064 _In_ ID3D12Resource *pSrcBuffer,
6065 UINT64 SrcOffset,
6066 UINT64 NumBytes);
6067
6068 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6069 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6070 ID3D12GraphicsCommandList * This,
6071 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6072 UINT DstX,
6073 UINT DstY,
6074 UINT DstZ,
6075 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6076 _In_opt_ const D3D12_BOX *pSrcBox);
6077
6078 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6079 void ( STDMETHODCALLTYPE *CopyResource )(
6080 ID3D12GraphicsCommandList * This,
6081 _In_ ID3D12Resource *pDstResource,
6082 _In_ ID3D12Resource *pSrcResource);
6083
6084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6085 void ( STDMETHODCALLTYPE *CopyTiles )(
6086 ID3D12GraphicsCommandList * This,
6087 _In_ ID3D12Resource *pTiledResource,
6088 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6089 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6090 _In_ ID3D12Resource *pBuffer,
6091 UINT64 BufferStartOffsetInBytes,
6092 D3D12_TILE_COPY_FLAGS Flags);
6093
6094 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6095 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6096 ID3D12GraphicsCommandList * This,
6097 _In_ ID3D12Resource *pDstResource,
6098 _In_ UINT DstSubresource,
6099 _In_ ID3D12Resource *pSrcResource,
6100 _In_ UINT SrcSubresource,
6101 _In_ DXGI_FORMAT Format);
6102
6103 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6104 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6105 ID3D12GraphicsCommandList * This,
6106 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6107
6108 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6109 void ( STDMETHODCALLTYPE *RSSetViewports )(
6110 ID3D12GraphicsCommandList * This,
6111 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6112 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6113
6114 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6115 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6116 ID3D12GraphicsCommandList * This,
6117 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6118 _In_reads_( NumRects) const D3D12_RECT *pRects);
6119
6120 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6121 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6122 ID3D12GraphicsCommandList * This,
6123 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6124
6125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6126 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6127 ID3D12GraphicsCommandList * This,
6128 _In_ UINT StencilRef);
6129
6130 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6131 void ( STDMETHODCALLTYPE *SetPipelineState )(
6132 ID3D12GraphicsCommandList * This,
6133 _In_ ID3D12PipelineState *pPipelineState);
6134
6135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6136 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6137 ID3D12GraphicsCommandList * This,
6138 _In_ UINT NumBarriers,
6139 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6140
6141 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6142 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6143 ID3D12GraphicsCommandList * This,
6144 _In_ ID3D12GraphicsCommandList *pCommandList);
6145
6146 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6147 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6148 ID3D12GraphicsCommandList * This,
6149 _In_ UINT NumDescriptorHeaps,
6150 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6151
6152 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6153 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6154 ID3D12GraphicsCommandList * This,
6155 _In_opt_ ID3D12RootSignature *pRootSignature);
6156
6157 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6158 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6159 ID3D12GraphicsCommandList * This,
6160 _In_opt_ ID3D12RootSignature *pRootSignature);
6161
6162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
6163 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
6164 ID3D12GraphicsCommandList * This,
6165 _In_ UINT RootParameterIndex,
6166 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6167
6168 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
6169 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
6170 ID3D12GraphicsCommandList * This,
6171 _In_ UINT RootParameterIndex,
6172 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6173
6174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
6175 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
6176 ID3D12GraphicsCommandList * This,
6177 _In_ UINT RootParameterIndex,
6178 _In_ UINT SrcData,
6179 _In_ UINT DestOffsetIn32BitValues);
6180
6181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
6182 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
6183 ID3D12GraphicsCommandList * This,
6184 _In_ UINT RootParameterIndex,
6185 _In_ UINT SrcData,
6186 _In_ UINT DestOffsetIn32BitValues);
6187
6188 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
6189 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
6190 ID3D12GraphicsCommandList * This,
6191 _In_ UINT RootParameterIndex,
6192 _In_ UINT Num32BitValuesToSet,
6193 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6194 _In_ UINT DestOffsetIn32BitValues);
6195
6196 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
6197 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
6198 ID3D12GraphicsCommandList * This,
6199 _In_ UINT RootParameterIndex,
6200 _In_ UINT Num32BitValuesToSet,
6201 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6202 _In_ UINT DestOffsetIn32BitValues);
6203
6204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
6205 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
6206 ID3D12GraphicsCommandList * This,
6207 _In_ UINT RootParameterIndex,
6208 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6209
6210 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
6211 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
6212 ID3D12GraphicsCommandList * This,
6213 _In_ UINT RootParameterIndex,
6214 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6215
6216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
6217 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
6218 ID3D12GraphicsCommandList * This,
6219 _In_ UINT RootParameterIndex,
6220 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6221
6222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
6223 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
6224 ID3D12GraphicsCommandList * This,
6225 _In_ UINT RootParameterIndex,
6226 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6227
6228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
6229 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
6230 ID3D12GraphicsCommandList * This,
6231 _In_ UINT RootParameterIndex,
6232 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6233
6234 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
6235 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
6236 ID3D12GraphicsCommandList * This,
6237 _In_ UINT RootParameterIndex,
6238 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6239
6240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
6241 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
6242 ID3D12GraphicsCommandList * This,
6243 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
6244
6245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
6246 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
6247 ID3D12GraphicsCommandList * This,
6248 _In_ UINT StartSlot,
6249 _In_ UINT NumViews,
6250 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
6251
6252 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
6253 void ( STDMETHODCALLTYPE *SOSetTargets )(
6254 ID3D12GraphicsCommandList * This,
6255 _In_ UINT StartSlot,
6256 _In_ UINT NumViews,
6257 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
6258
6259 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
6260 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
6261 ID3D12GraphicsCommandList * This,
6262 _In_ UINT NumRenderTargetDescriptors,
6263 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6264 _In_ BOOL RTsSingleHandleToDescriptorRange,
6265 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
6266
6267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
6268 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
6269 ID3D12GraphicsCommandList * This,
6270 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6271 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6272 _In_ FLOAT Depth,
6273 _In_ UINT8 Stencil,
6274 _In_ UINT NumRects,
6275 _In_reads_(NumRects) const D3D12_RECT *pRects);
6276
6277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
6278 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
6279 ID3D12GraphicsCommandList * This,
6280 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6281 _In_ const FLOAT ColorRGBA[ 4 ],
6282 _In_ UINT NumRects,
6283 _In_reads_(NumRects) const D3D12_RECT *pRects);
6284
6285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
6286 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
6287 ID3D12GraphicsCommandList * This,
6288 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6289 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6290 _In_ ID3D12Resource *pResource,
6291 _In_ const UINT Values[ 4 ],
6292 _In_ UINT NumRects,
6293 _In_reads_(NumRects) const D3D12_RECT *pRects);
6294
6295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
6296 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
6297 ID3D12GraphicsCommandList * This,
6298 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6299 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6300 _In_ ID3D12Resource *pResource,
6301 _In_ const FLOAT Values[ 4 ],
6302 _In_ UINT NumRects,
6303 _In_reads_(NumRects) const D3D12_RECT *pRects);
6304
6305 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
6306 void ( STDMETHODCALLTYPE *DiscardResource )(
6307 ID3D12GraphicsCommandList * This,
6308 _In_ ID3D12Resource *pResource,
6309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6310
6311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
6312 void ( STDMETHODCALLTYPE *BeginQuery )(
6313 ID3D12GraphicsCommandList * This,
6314 _In_ ID3D12QueryHeap *pQueryHeap,
6315 _In_ D3D12_QUERY_TYPE Type,
6316 _In_ UINT Index);
6317
6318 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
6319 void ( STDMETHODCALLTYPE *EndQuery )(
6320 ID3D12GraphicsCommandList * This,
6321 _In_ ID3D12QueryHeap *pQueryHeap,
6322 _In_ D3D12_QUERY_TYPE Type,
6323 _In_ UINT Index);
6324
6325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
6326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6327 ID3D12GraphicsCommandList * This,
6328 _In_ ID3D12QueryHeap *pQueryHeap,
6329 _In_ D3D12_QUERY_TYPE Type,
6330 _In_ UINT StartIndex,
6331 _In_ UINT NumQueries,
6332 _In_ ID3D12Resource *pDestinationBuffer,
6333 _In_ UINT64 AlignedDestinationBufferOffset);
6334
6335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
6336 void ( STDMETHODCALLTYPE *SetPredication )(
6337 ID3D12GraphicsCommandList * This,
6338 _In_opt_ ID3D12Resource *pBuffer,
6339 _In_ UINT64 AlignedBufferOffset,
6340 _In_ D3D12_PREDICATION_OP Operation);
6341
6342 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
6343 void ( STDMETHODCALLTYPE *SetMarker )(
6344 ID3D12GraphicsCommandList * This,
6345 UINT Metadata,
6346 _In_reads_bytes_opt_(Size) const void *pData,
6347 UINT Size);
6348
6349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
6350 void ( STDMETHODCALLTYPE *BeginEvent )(
6351 ID3D12GraphicsCommandList * This,
6352 UINT Metadata,
6353 _In_reads_bytes_opt_(Size) const void *pData,
6354 UINT Size);
6355
6356 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
6357 void ( STDMETHODCALLTYPE *EndEvent )(
6358 ID3D12GraphicsCommandList * This);
6359
6360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
6361 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
6362 ID3D12GraphicsCommandList * This,
6363 _In_ ID3D12CommandSignature *pCommandSignature,
6364 _In_ UINT MaxCommandCount,
6365 _In_ ID3D12Resource *pArgumentBuffer,
6366 _In_ UINT64 ArgumentBufferOffset,
6367 _In_opt_ ID3D12Resource *pCountBuffer,
6368 _In_ UINT64 CountBufferOffset);
6369
6370 END_INTERFACE
6371 } ID3D12GraphicsCommandListVtbl;
6372
6373 interface ID3D12GraphicsCommandList
6374 {
6375 CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
6376 };
6377
6378
6379
6380#ifdef COBJMACROS
6381
6382
6383#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
6384 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6385
6386#define ID3D12GraphicsCommandList_AddRef(This) \
6387 ( (This)->lpVtbl -> AddRef(This) )
6388
6389#define ID3D12GraphicsCommandList_Release(This) \
6390 ( (This)->lpVtbl -> Release(This) )
6391
6392
6393#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
6394 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6395
6396#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
6397 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6398
6399#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
6400 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6401
6402#define ID3D12GraphicsCommandList_SetName(This,Name) \
6403 ( (This)->lpVtbl -> SetName(This,Name) )
6404
6405
6406#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
6407 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6408
6409
6410#define ID3D12GraphicsCommandList_GetType(This) \
6411 ( (This)->lpVtbl -> GetType(This) )
6412
6413
6414#define ID3D12GraphicsCommandList_Close(This) \
6415 ( (This)->lpVtbl -> Close(This) )
6416
6417#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
6418 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
6419
6420#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
6421 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
6422
6423#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
6424 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
6425
6426#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
6427 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
6428
6429#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
6430 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
6431
6432#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
6433 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
6434
6435#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
6436 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
6437
6438#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
6439 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
6440
6441#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
6442 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
6443
6444#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
6445 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
6446
6447#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
6448 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
6449
6450#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
6451 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
6452
6453#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
6454 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
6455
6456#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
6457 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
6458
6459#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
6460 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
6461
6462#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
6463 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
6464
6465#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
6466 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6467
6468#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
6469 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
6470
6471#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
6472 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
6473
6474#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
6475 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
6476
6477#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
6478 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
6479
6480#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
6481 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
6482
6483#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
6484 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
6485
6486#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
6487 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
6488
6489#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
6490 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
6491
6492#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
6493 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
6494
6495#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
6496 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
6497
6498#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
6499 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
6500
6501#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
6502 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
6503
6504#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
6505 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
6506
6507#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
6508 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
6509
6510#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
6511 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
6512
6513#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
6514 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
6515
6516#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
6517 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
6518
6519#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
6520 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
6521
6522#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
6523 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
6524
6525#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
6526 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
6527
6528#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
6529 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
6530
6531#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
6532 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
6533
6534#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
6535 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
6536
6537#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
6538 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
6539
6540#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
6541 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6542
6543#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
6544 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6545
6546#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
6547 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6548
6549#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6550 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6551
6552#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6553 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6554
6555#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
6556 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6557
6558#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
6559 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6560
6561#define ID3D12GraphicsCommandList_EndEvent(This) \
6562 ( (This)->lpVtbl -> EndEvent(This) )
6563
6564#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
6565 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
6566
6567#endif /* COBJMACROS */
6568
6569
6570#endif /* C style interface */
6571
6572
6573
6574
6575#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
6576
6577
6578#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
6579#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
6580
6581/* interface ID3D12GraphicsCommandList1 */
6582/* [unique][local][object][uuid] */
6583
6584
6585EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
6586
6587#if defined(__cplusplus) && !defined(CINTERFACE)
6588
6589 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
6590 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
6591 {
6592 public:
6593 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
6594 _In_ ID3D12Resource *pDstBuffer,
6595 UINT64 DstOffset,
6596 _In_ ID3D12Resource *pSrcBuffer,
6597 UINT64 SrcOffset,
6598 UINT Dependencies,
6599 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
6600 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
6601
6602 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
6603 _In_ ID3D12Resource *pDstBuffer,
6604 UINT64 DstOffset,
6605 _In_ ID3D12Resource *pSrcBuffer,
6606 UINT64 SrcOffset,
6607 UINT Dependencies,
6608 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
6609 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
6610
6611 virtual void STDMETHODCALLTYPE OMSetDepthBounds(
6612 _In_ FLOAT Min,
6613 _In_ FLOAT Max) = 0;
6614
6615 virtual void STDMETHODCALLTYPE SetSamplePositions(
6616 _In_ UINT NumSamplesPerPixel,
6617 _In_ UINT NumPixels,
6618 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
6619
6620 virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
6621 _In_ ID3D12Resource *pDstResource,
6622 _In_ UINT DstSubresource,
6623 _In_ UINT DstX,
6624 _In_ UINT DstY,
6625 _In_ ID3D12Resource *pSrcResource,
6626 _In_ UINT SrcSubresource,
6627 _In_opt_ D3D12_RECT *pSrcRect,
6628 _In_ DXGI_FORMAT Format,
6629 _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
6630
6631 virtual void STDMETHODCALLTYPE SetViewInstanceMask(
6632 _In_ UINT Mask) = 0;
6633
6634 };
6635
6636
6637#else /* C style interface */
6638
6639 typedef struct ID3D12GraphicsCommandList1Vtbl
6640 {
6641 BEGIN_INTERFACE
6642
6643 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6644 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6645 ID3D12GraphicsCommandList1 * This,
6646 REFIID riid,
6647 _COM_Outptr_ void **ppvObject);
6648
6649 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6650 ULONG ( STDMETHODCALLTYPE *AddRef )(
6651 ID3D12GraphicsCommandList1 * This);
6652
6653 DECLSPEC_XFGVIRT(IUnknown, Release)
6654 ULONG ( STDMETHODCALLTYPE *Release )(
6655 ID3D12GraphicsCommandList1 * This);
6656
6657 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6658 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6659 ID3D12GraphicsCommandList1 * This,
6660 _In_ REFGUID guid,
6661 _Inout_ UINT *pDataSize,
6662 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6663
6664 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6665 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6666 ID3D12GraphicsCommandList1 * This,
6667 _In_ REFGUID guid,
6668 _In_ UINT DataSize,
6669 _In_reads_bytes_opt_( DataSize ) const void *pData);
6670
6671 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6672 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6673 ID3D12GraphicsCommandList1 * This,
6674 _In_ REFGUID guid,
6675 _In_opt_ const IUnknown *pData);
6676
6677 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6678 HRESULT ( STDMETHODCALLTYPE *SetName )(
6679 ID3D12GraphicsCommandList1 * This,
6680 _In_z_ LPCWSTR Name);
6681
6682 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6683 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6684 ID3D12GraphicsCommandList1 * This,
6685 REFIID riid,
6686 _COM_Outptr_opt_ void **ppvDevice);
6687
6688 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6689 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6690 ID3D12GraphicsCommandList1 * This);
6691
6692 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6693 HRESULT ( STDMETHODCALLTYPE *Close )(
6694 ID3D12GraphicsCommandList1 * This);
6695
6696 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6697 HRESULT ( STDMETHODCALLTYPE *Reset )(
6698 ID3D12GraphicsCommandList1 * This,
6699 _In_ ID3D12CommandAllocator *pAllocator,
6700 _In_opt_ ID3D12PipelineState *pInitialState);
6701
6702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6703 void ( STDMETHODCALLTYPE *ClearState )(
6704 ID3D12GraphicsCommandList1 * This,
6705 _In_opt_ ID3D12PipelineState *pPipelineState);
6706
6707 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6708 void ( STDMETHODCALLTYPE *DrawInstanced )(
6709 ID3D12GraphicsCommandList1 * This,
6710 _In_ UINT VertexCountPerInstance,
6711 _In_ UINT InstanceCount,
6712 _In_ UINT StartVertexLocation,
6713 _In_ UINT StartInstanceLocation);
6714
6715 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6716 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6717 ID3D12GraphicsCommandList1 * This,
6718 _In_ UINT IndexCountPerInstance,
6719 _In_ UINT InstanceCount,
6720 _In_ UINT StartIndexLocation,
6721 _In_ INT BaseVertexLocation,
6722 _In_ UINT StartInstanceLocation);
6723
6724 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6725 void ( STDMETHODCALLTYPE *Dispatch )(
6726 ID3D12GraphicsCommandList1 * This,
6727 _In_ UINT ThreadGroupCountX,
6728 _In_ UINT ThreadGroupCountY,
6729 _In_ UINT ThreadGroupCountZ);
6730
6731 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6732 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6733 ID3D12GraphicsCommandList1 * This,
6734 _In_ ID3D12Resource *pDstBuffer,
6735 UINT64 DstOffset,
6736 _In_ ID3D12Resource *pSrcBuffer,
6737 UINT64 SrcOffset,
6738 UINT64 NumBytes);
6739
6740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6741 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6742 ID3D12GraphicsCommandList1 * This,
6743 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6744 UINT DstX,
6745 UINT DstY,
6746 UINT DstZ,
6747 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6748 _In_opt_ const D3D12_BOX *pSrcBox);
6749
6750 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6751 void ( STDMETHODCALLTYPE *CopyResource )(
6752 ID3D12GraphicsCommandList1 * This,
6753 _In_ ID3D12Resource *pDstResource,
6754 _In_ ID3D12Resource *pSrcResource);
6755
6756 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6757 void ( STDMETHODCALLTYPE *CopyTiles )(
6758 ID3D12GraphicsCommandList1 * This,
6759 _In_ ID3D12Resource *pTiledResource,
6760 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6761 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6762 _In_ ID3D12Resource *pBuffer,
6763 UINT64 BufferStartOffsetInBytes,
6764 D3D12_TILE_COPY_FLAGS Flags);
6765
6766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6767 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6768 ID3D12GraphicsCommandList1 * This,
6769 _In_ ID3D12Resource *pDstResource,
6770 _In_ UINT DstSubresource,
6771 _In_ ID3D12Resource *pSrcResource,
6772 _In_ UINT SrcSubresource,
6773 _In_ DXGI_FORMAT Format);
6774
6775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6776 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6777 ID3D12GraphicsCommandList1 * This,
6778 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6779
6780 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6781 void ( STDMETHODCALLTYPE *RSSetViewports )(
6782 ID3D12GraphicsCommandList1 * This,
6783 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6784 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6785
6786 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6787 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6788 ID3D12GraphicsCommandList1 * This,
6789 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6790 _In_reads_( NumRects) const D3D12_RECT *pRects);
6791
6792 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6793 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6794 ID3D12GraphicsCommandList1 * This,
6795 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6796
6797 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6798 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6799 ID3D12GraphicsCommandList1 * This,
6800 _In_ UINT StencilRef);
6801
6802 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6803 void ( STDMETHODCALLTYPE *SetPipelineState )(
6804 ID3D12GraphicsCommandList1 * This,
6805 _In_ ID3D12PipelineState *pPipelineState);
6806
6807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6808 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6809 ID3D12GraphicsCommandList1 * This,
6810 _In_ UINT NumBarriers,
6811 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6812
6813 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6814 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6815 ID3D12GraphicsCommandList1 * This,
6816 _In_ ID3D12GraphicsCommandList *pCommandList);
6817
6818 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6819 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6820 ID3D12GraphicsCommandList1 * This,
6821 _In_ UINT NumDescriptorHeaps,
6822 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6823
6824 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6825 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6826 ID3D12GraphicsCommandList1 * This,
6827 _In_opt_ ID3D12RootSignature *pRootSignature);
6828
6829 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6830 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6831 ID3D12GraphicsCommandList1 * This,
6832 _In_opt_ ID3D12RootSignature *pRootSignature);
6833
6834 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
6835 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
6836 ID3D12GraphicsCommandList1 * This,
6837 _In_ UINT RootParameterIndex,
6838 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6839
6840 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
6841 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
6842 ID3D12GraphicsCommandList1 * This,
6843 _In_ UINT RootParameterIndex,
6844 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
6845
6846 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
6847 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
6848 ID3D12GraphicsCommandList1 * This,
6849 _In_ UINT RootParameterIndex,
6850 _In_ UINT SrcData,
6851 _In_ UINT DestOffsetIn32BitValues);
6852
6853 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
6854 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
6855 ID3D12GraphicsCommandList1 * This,
6856 _In_ UINT RootParameterIndex,
6857 _In_ UINT SrcData,
6858 _In_ UINT DestOffsetIn32BitValues);
6859
6860 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
6861 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
6862 ID3D12GraphicsCommandList1 * This,
6863 _In_ UINT RootParameterIndex,
6864 _In_ UINT Num32BitValuesToSet,
6865 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6866 _In_ UINT DestOffsetIn32BitValues);
6867
6868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
6869 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
6870 ID3D12GraphicsCommandList1 * This,
6871 _In_ UINT RootParameterIndex,
6872 _In_ UINT Num32BitValuesToSet,
6873 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6874 _In_ UINT DestOffsetIn32BitValues);
6875
6876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
6877 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
6878 ID3D12GraphicsCommandList1 * This,
6879 _In_ UINT RootParameterIndex,
6880 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6881
6882 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
6883 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
6884 ID3D12GraphicsCommandList1 * This,
6885 _In_ UINT RootParameterIndex,
6886 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6887
6888 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
6889 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
6890 ID3D12GraphicsCommandList1 * This,
6891 _In_ UINT RootParameterIndex,
6892 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6893
6894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
6895 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
6896 ID3D12GraphicsCommandList1 * This,
6897 _In_ UINT RootParameterIndex,
6898 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6899
6900 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
6901 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
6902 ID3D12GraphicsCommandList1 * This,
6903 _In_ UINT RootParameterIndex,
6904 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6905
6906 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
6907 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
6908 ID3D12GraphicsCommandList1 * This,
6909 _In_ UINT RootParameterIndex,
6910 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
6911
6912 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
6913 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
6914 ID3D12GraphicsCommandList1 * This,
6915 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
6916
6917 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
6918 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
6919 ID3D12GraphicsCommandList1 * This,
6920 _In_ UINT StartSlot,
6921 _In_ UINT NumViews,
6922 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
6923
6924 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
6925 void ( STDMETHODCALLTYPE *SOSetTargets )(
6926 ID3D12GraphicsCommandList1 * This,
6927 _In_ UINT StartSlot,
6928 _In_ UINT NumViews,
6929 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
6930
6931 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
6932 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
6933 ID3D12GraphicsCommandList1 * This,
6934 _In_ UINT NumRenderTargetDescriptors,
6935 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6936 _In_ BOOL RTsSingleHandleToDescriptorRange,
6937 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
6938
6939 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
6940 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
6941 ID3D12GraphicsCommandList1 * This,
6942 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6943 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6944 _In_ FLOAT Depth,
6945 _In_ UINT8 Stencil,
6946 _In_ UINT NumRects,
6947 _In_reads_(NumRects) const D3D12_RECT *pRects);
6948
6949 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
6950 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
6951 ID3D12GraphicsCommandList1 * This,
6952 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6953 _In_ const FLOAT ColorRGBA[ 4 ],
6954 _In_ UINT NumRects,
6955 _In_reads_(NumRects) const D3D12_RECT *pRects);
6956
6957 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
6958 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
6959 ID3D12GraphicsCommandList1 * This,
6960 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6961 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6962 _In_ ID3D12Resource *pResource,
6963 _In_ const UINT Values[ 4 ],
6964 _In_ UINT NumRects,
6965 _In_reads_(NumRects) const D3D12_RECT *pRects);
6966
6967 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
6968 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
6969 ID3D12GraphicsCommandList1 * This,
6970 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6971 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6972 _In_ ID3D12Resource *pResource,
6973 _In_ const FLOAT Values[ 4 ],
6974 _In_ UINT NumRects,
6975 _In_reads_(NumRects) const D3D12_RECT *pRects);
6976
6977 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
6978 void ( STDMETHODCALLTYPE *DiscardResource )(
6979 ID3D12GraphicsCommandList1 * This,
6980 _In_ ID3D12Resource *pResource,
6981 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6982
6983 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
6984 void ( STDMETHODCALLTYPE *BeginQuery )(
6985 ID3D12GraphicsCommandList1 * This,
6986 _In_ ID3D12QueryHeap *pQueryHeap,
6987 _In_ D3D12_QUERY_TYPE Type,
6988 _In_ UINT Index);
6989
6990 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
6991 void ( STDMETHODCALLTYPE *EndQuery )(
6992 ID3D12GraphicsCommandList1 * This,
6993 _In_ ID3D12QueryHeap *pQueryHeap,
6994 _In_ D3D12_QUERY_TYPE Type,
6995 _In_ UINT Index);
6996
6997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
6998 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6999 ID3D12GraphicsCommandList1 * This,
7000 _In_ ID3D12QueryHeap *pQueryHeap,
7001 _In_ D3D12_QUERY_TYPE Type,
7002 _In_ UINT StartIndex,
7003 _In_ UINT NumQueries,
7004 _In_ ID3D12Resource *pDestinationBuffer,
7005 _In_ UINT64 AlignedDestinationBufferOffset);
7006
7007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7008 void ( STDMETHODCALLTYPE *SetPredication )(
7009 ID3D12GraphicsCommandList1 * This,
7010 _In_opt_ ID3D12Resource *pBuffer,
7011 _In_ UINT64 AlignedBufferOffset,
7012 _In_ D3D12_PREDICATION_OP Operation);
7013
7014 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7015 void ( STDMETHODCALLTYPE *SetMarker )(
7016 ID3D12GraphicsCommandList1 * This,
7017 UINT Metadata,
7018 _In_reads_bytes_opt_(Size) const void *pData,
7019 UINT Size);
7020
7021 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7022 void ( STDMETHODCALLTYPE *BeginEvent )(
7023 ID3D12GraphicsCommandList1 * This,
7024 UINT Metadata,
7025 _In_reads_bytes_opt_(Size) const void *pData,
7026 UINT Size);
7027
7028 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7029 void ( STDMETHODCALLTYPE *EndEvent )(
7030 ID3D12GraphicsCommandList1 * This);
7031
7032 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7033 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7034 ID3D12GraphicsCommandList1 * This,
7035 _In_ ID3D12CommandSignature *pCommandSignature,
7036 _In_ UINT MaxCommandCount,
7037 _In_ ID3D12Resource *pArgumentBuffer,
7038 _In_ UINT64 ArgumentBufferOffset,
7039 _In_opt_ ID3D12Resource *pCountBuffer,
7040 _In_ UINT64 CountBufferOffset);
7041
7042 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7043 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7044 ID3D12GraphicsCommandList1 * This,
7045 _In_ ID3D12Resource *pDstBuffer,
7046 UINT64 DstOffset,
7047 _In_ ID3D12Resource *pSrcBuffer,
7048 UINT64 SrcOffset,
7049 UINT Dependencies,
7050 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7051 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7052
7053 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7054 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7055 ID3D12GraphicsCommandList1 * This,
7056 _In_ ID3D12Resource *pDstBuffer,
7057 UINT64 DstOffset,
7058 _In_ ID3D12Resource *pSrcBuffer,
7059 UINT64 SrcOffset,
7060 UINT Dependencies,
7061 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7062 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7063
7064 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7065 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7066 ID3D12GraphicsCommandList1 * This,
7067 _In_ FLOAT Min,
7068 _In_ FLOAT Max);
7069
7070 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7071 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7072 ID3D12GraphicsCommandList1 * This,
7073 _In_ UINT NumSamplesPerPixel,
7074 _In_ UINT NumPixels,
7075 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7076
7077 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7078 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7079 ID3D12GraphicsCommandList1 * This,
7080 _In_ ID3D12Resource *pDstResource,
7081 _In_ UINT DstSubresource,
7082 _In_ UINT DstX,
7083 _In_ UINT DstY,
7084 _In_ ID3D12Resource *pSrcResource,
7085 _In_ UINT SrcSubresource,
7086 _In_opt_ D3D12_RECT *pSrcRect,
7087 _In_ DXGI_FORMAT Format,
7088 _In_ D3D12_RESOLVE_MODE ResolveMode);
7089
7090 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7091 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7092 ID3D12GraphicsCommandList1 * This,
7093 _In_ UINT Mask);
7094
7095 END_INTERFACE
7096 } ID3D12GraphicsCommandList1Vtbl;
7097
7098 interface ID3D12GraphicsCommandList1
7099 {
7100 CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
7101 };
7102
7103
7104
7105#ifdef COBJMACROS
7106
7107
7108#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
7109 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7110
7111#define ID3D12GraphicsCommandList1_AddRef(This) \
7112 ( (This)->lpVtbl -> AddRef(This) )
7113
7114#define ID3D12GraphicsCommandList1_Release(This) \
7115 ( (This)->lpVtbl -> Release(This) )
7116
7117
7118#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
7119 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7120
7121#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
7122 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7123
7124#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
7125 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7126
7127#define ID3D12GraphicsCommandList1_SetName(This,Name) \
7128 ( (This)->lpVtbl -> SetName(This,Name) )
7129
7130
7131#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
7132 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7133
7134
7135#define ID3D12GraphicsCommandList1_GetType(This) \
7136 ( (This)->lpVtbl -> GetType(This) )
7137
7138
7139#define ID3D12GraphicsCommandList1_Close(This) \
7140 ( (This)->lpVtbl -> Close(This) )
7141
7142#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
7143 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7144
7145#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
7146 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7147
7148#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7149 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7150
7151#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7152 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7153
7154#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7155 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7156
7157#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7158 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7159
7160#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7161 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7162
7163#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
7164 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7165
7166#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7167 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7168
7169#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7170 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7171
7172#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
7173 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7174
7175#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
7176 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7177
7178#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
7179 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7180
7181#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
7182 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7183
7184#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
7185 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7186
7187#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
7188 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7189
7190#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
7191 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7192
7193#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
7194 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7195
7196#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7197 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7198
7199#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
7200 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7201
7202#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
7203 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7204
7205#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7206 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7207
7208#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7209 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7210
7211#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7212 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7213
7214#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7215 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7216
7217#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7218 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7219
7220#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7221 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7222
7223#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7224 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7225
7226#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7227 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7228
7229#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7230 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7231
7232#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7233 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7234
7235#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7236 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7237
7238#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7239 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7240
7241#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
7242 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7243
7244#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7245 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7246
7247#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
7248 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7249
7250#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7251 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7252
7253#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7254 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7255
7256#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7257 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7258
7259#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7260 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7261
7262#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7263 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7264
7265#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
7266 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
7267
7268#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
7269 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
7270
7271#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
7272 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
7273
7274#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
7275 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
7276
7277#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
7278 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
7279
7280#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
7281 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
7282
7283#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
7284 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
7285
7286#define ID3D12GraphicsCommandList1_EndEvent(This) \
7287 ( (This)->lpVtbl -> EndEvent(This) )
7288
7289#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
7290 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
7291
7292
7293#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
7294 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
7295
7296#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
7297 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
7298
7299#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
7300 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
7301
7302#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
7303 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
7304
7305#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
7306 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
7307
7308#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
7309 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
7310
7311#endif /* COBJMACROS */
7312
7313
7314#endif /* C style interface */
7315
7316
7317
7318
7319#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
7320
7321
7322/* interface __MIDL_itf_d3d12_0000_0018 */
7323/* [local] */
7324
7325typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
7326 {
7327 D3D12_GPU_VIRTUAL_ADDRESS Dest;
7328 UINT32 Value;
7329 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
7330
7331typedef
7332enum D3D12_WRITEBUFFERIMMEDIATE_MODE
7333 {
7334 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
7335 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
7336 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
7337 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
7338
7339
7340
7341extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_c_ifspec;
7342extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_s_ifspec;
7343
7344#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
7345#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
7346
7347/* interface ID3D12GraphicsCommandList2 */
7348/* [unique][local][object][uuid] */
7349
7350
7351EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
7352
7353#if defined(__cplusplus) && !defined(CINTERFACE)
7354
7355 MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
7356 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
7357 {
7358 public:
7359 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
7360 UINT Count,
7361 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
7362 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
7363
7364 };
7365
7366
7367#else /* C style interface */
7368
7369 typedef struct ID3D12GraphicsCommandList2Vtbl
7370 {
7371 BEGIN_INTERFACE
7372
7373 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7374 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7375 ID3D12GraphicsCommandList2 * This,
7376 REFIID riid,
7377 _COM_Outptr_ void **ppvObject);
7378
7379 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7380 ULONG ( STDMETHODCALLTYPE *AddRef )(
7381 ID3D12GraphicsCommandList2 * This);
7382
7383 DECLSPEC_XFGVIRT(IUnknown, Release)
7384 ULONG ( STDMETHODCALLTYPE *Release )(
7385 ID3D12GraphicsCommandList2 * This);
7386
7387 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7388 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7389 ID3D12GraphicsCommandList2 * This,
7390 _In_ REFGUID guid,
7391 _Inout_ UINT *pDataSize,
7392 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7393
7394 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7395 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7396 ID3D12GraphicsCommandList2 * This,
7397 _In_ REFGUID guid,
7398 _In_ UINT DataSize,
7399 _In_reads_bytes_opt_( DataSize ) const void *pData);
7400
7401 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7402 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7403 ID3D12GraphicsCommandList2 * This,
7404 _In_ REFGUID guid,
7405 _In_opt_ const IUnknown *pData);
7406
7407 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7408 HRESULT ( STDMETHODCALLTYPE *SetName )(
7409 ID3D12GraphicsCommandList2 * This,
7410 _In_z_ LPCWSTR Name);
7411
7412 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7413 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7414 ID3D12GraphicsCommandList2 * This,
7415 REFIID riid,
7416 _COM_Outptr_opt_ void **ppvDevice);
7417
7418 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
7419 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
7420 ID3D12GraphicsCommandList2 * This);
7421
7422 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
7423 HRESULT ( STDMETHODCALLTYPE *Close )(
7424 ID3D12GraphicsCommandList2 * This);
7425
7426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
7427 HRESULT ( STDMETHODCALLTYPE *Reset )(
7428 ID3D12GraphicsCommandList2 * This,
7429 _In_ ID3D12CommandAllocator *pAllocator,
7430 _In_opt_ ID3D12PipelineState *pInitialState);
7431
7432 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
7433 void ( STDMETHODCALLTYPE *ClearState )(
7434 ID3D12GraphicsCommandList2 * This,
7435 _In_opt_ ID3D12PipelineState *pPipelineState);
7436
7437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
7438 void ( STDMETHODCALLTYPE *DrawInstanced )(
7439 ID3D12GraphicsCommandList2 * This,
7440 _In_ UINT VertexCountPerInstance,
7441 _In_ UINT InstanceCount,
7442 _In_ UINT StartVertexLocation,
7443 _In_ UINT StartInstanceLocation);
7444
7445 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
7446 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
7447 ID3D12GraphicsCommandList2 * This,
7448 _In_ UINT IndexCountPerInstance,
7449 _In_ UINT InstanceCount,
7450 _In_ UINT StartIndexLocation,
7451 _In_ INT BaseVertexLocation,
7452 _In_ UINT StartInstanceLocation);
7453
7454 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
7455 void ( STDMETHODCALLTYPE *Dispatch )(
7456 ID3D12GraphicsCommandList2 * This,
7457 _In_ UINT ThreadGroupCountX,
7458 _In_ UINT ThreadGroupCountY,
7459 _In_ UINT ThreadGroupCountZ);
7460
7461 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
7462 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
7463 ID3D12GraphicsCommandList2 * This,
7464 _In_ ID3D12Resource *pDstBuffer,
7465 UINT64 DstOffset,
7466 _In_ ID3D12Resource *pSrcBuffer,
7467 UINT64 SrcOffset,
7468 UINT64 NumBytes);
7469
7470 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
7471 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
7472 ID3D12GraphicsCommandList2 * This,
7473 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
7474 UINT DstX,
7475 UINT DstY,
7476 UINT DstZ,
7477 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
7478 _In_opt_ const D3D12_BOX *pSrcBox);
7479
7480 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
7481 void ( STDMETHODCALLTYPE *CopyResource )(
7482 ID3D12GraphicsCommandList2 * This,
7483 _In_ ID3D12Resource *pDstResource,
7484 _In_ ID3D12Resource *pSrcResource);
7485
7486 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
7487 void ( STDMETHODCALLTYPE *CopyTiles )(
7488 ID3D12GraphicsCommandList2 * This,
7489 _In_ ID3D12Resource *pTiledResource,
7490 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
7491 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
7492 _In_ ID3D12Resource *pBuffer,
7493 UINT64 BufferStartOffsetInBytes,
7494 D3D12_TILE_COPY_FLAGS Flags);
7495
7496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
7497 void ( STDMETHODCALLTYPE *ResolveSubresource )(
7498 ID3D12GraphicsCommandList2 * This,
7499 _In_ ID3D12Resource *pDstResource,
7500 _In_ UINT DstSubresource,
7501 _In_ ID3D12Resource *pSrcResource,
7502 _In_ UINT SrcSubresource,
7503 _In_ DXGI_FORMAT Format);
7504
7505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
7506 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
7507 ID3D12GraphicsCommandList2 * This,
7508 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
7509
7510 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
7511 void ( STDMETHODCALLTYPE *RSSetViewports )(
7512 ID3D12GraphicsCommandList2 * This,
7513 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
7514 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
7515
7516 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
7517 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
7518 ID3D12GraphicsCommandList2 * This,
7519 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
7520 _In_reads_( NumRects) const D3D12_RECT *pRects);
7521
7522 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
7523 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
7524 ID3D12GraphicsCommandList2 * This,
7525 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
7526
7527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
7528 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
7529 ID3D12GraphicsCommandList2 * This,
7530 _In_ UINT StencilRef);
7531
7532 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
7533 void ( STDMETHODCALLTYPE *SetPipelineState )(
7534 ID3D12GraphicsCommandList2 * This,
7535 _In_ ID3D12PipelineState *pPipelineState);
7536
7537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
7538 void ( STDMETHODCALLTYPE *ResourceBarrier )(
7539 ID3D12GraphicsCommandList2 * This,
7540 _In_ UINT NumBarriers,
7541 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
7542
7543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
7544 void ( STDMETHODCALLTYPE *ExecuteBundle )(
7545 ID3D12GraphicsCommandList2 * This,
7546 _In_ ID3D12GraphicsCommandList *pCommandList);
7547
7548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
7549 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
7550 ID3D12GraphicsCommandList2 * This,
7551 _In_ UINT NumDescriptorHeaps,
7552 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
7553
7554 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
7555 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
7556 ID3D12GraphicsCommandList2 * This,
7557 _In_opt_ ID3D12RootSignature *pRootSignature);
7558
7559 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7560 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7561 ID3D12GraphicsCommandList2 * This,
7562 _In_opt_ ID3D12RootSignature *pRootSignature);
7563
7564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7565 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7566 ID3D12GraphicsCommandList2 * This,
7567 _In_ UINT RootParameterIndex,
7568 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7569
7570 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7571 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7572 ID3D12GraphicsCommandList2 * This,
7573 _In_ UINT RootParameterIndex,
7574 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7575
7576 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7577 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7578 ID3D12GraphicsCommandList2 * This,
7579 _In_ UINT RootParameterIndex,
7580 _In_ UINT SrcData,
7581 _In_ UINT DestOffsetIn32BitValues);
7582
7583 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7584 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7585 ID3D12GraphicsCommandList2 * This,
7586 _In_ UINT RootParameterIndex,
7587 _In_ UINT SrcData,
7588 _In_ UINT DestOffsetIn32BitValues);
7589
7590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7591 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7592 ID3D12GraphicsCommandList2 * This,
7593 _In_ UINT RootParameterIndex,
7594 _In_ UINT Num32BitValuesToSet,
7595 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7596 _In_ UINT DestOffsetIn32BitValues);
7597
7598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7599 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7600 ID3D12GraphicsCommandList2 * This,
7601 _In_ UINT RootParameterIndex,
7602 _In_ UINT Num32BitValuesToSet,
7603 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7604 _In_ UINT DestOffsetIn32BitValues);
7605
7606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7607 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7608 ID3D12GraphicsCommandList2 * This,
7609 _In_ UINT RootParameterIndex,
7610 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7611
7612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7613 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7614 ID3D12GraphicsCommandList2 * This,
7615 _In_ UINT RootParameterIndex,
7616 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7617
7618 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7619 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7620 ID3D12GraphicsCommandList2 * This,
7621 _In_ UINT RootParameterIndex,
7622 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7623
7624 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7625 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7626 ID3D12GraphicsCommandList2 * This,
7627 _In_ UINT RootParameterIndex,
7628 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7629
7630 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7631 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7632 ID3D12GraphicsCommandList2 * This,
7633 _In_ UINT RootParameterIndex,
7634 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7635
7636 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7637 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7638 ID3D12GraphicsCommandList2 * This,
7639 _In_ UINT RootParameterIndex,
7640 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7641
7642 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7643 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7644 ID3D12GraphicsCommandList2 * This,
7645 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7646
7647 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7648 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7649 ID3D12GraphicsCommandList2 * This,
7650 _In_ UINT StartSlot,
7651 _In_ UINT NumViews,
7652 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7653
7654 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7655 void ( STDMETHODCALLTYPE *SOSetTargets )(
7656 ID3D12GraphicsCommandList2 * This,
7657 _In_ UINT StartSlot,
7658 _In_ UINT NumViews,
7659 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7660
7661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7662 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7663 ID3D12GraphicsCommandList2 * This,
7664 _In_ UINT NumRenderTargetDescriptors,
7665 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7666 _In_ BOOL RTsSingleHandleToDescriptorRange,
7667 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7668
7669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7670 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7671 ID3D12GraphicsCommandList2 * This,
7672 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7673 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7674 _In_ FLOAT Depth,
7675 _In_ UINT8 Stencil,
7676 _In_ UINT NumRects,
7677 _In_reads_(NumRects) const D3D12_RECT *pRects);
7678
7679 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7680 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7681 ID3D12GraphicsCommandList2 * This,
7682 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7683 _In_ const FLOAT ColorRGBA[ 4 ],
7684 _In_ UINT NumRects,
7685 _In_reads_(NumRects) const D3D12_RECT *pRects);
7686
7687 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7688 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7689 ID3D12GraphicsCommandList2 * This,
7690 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7691 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7692 _In_ ID3D12Resource *pResource,
7693 _In_ const UINT Values[ 4 ],
7694 _In_ UINT NumRects,
7695 _In_reads_(NumRects) const D3D12_RECT *pRects);
7696
7697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7698 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7699 ID3D12GraphicsCommandList2 * This,
7700 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7701 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7702 _In_ ID3D12Resource *pResource,
7703 _In_ const FLOAT Values[ 4 ],
7704 _In_ UINT NumRects,
7705 _In_reads_(NumRects) const D3D12_RECT *pRects);
7706
7707 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7708 void ( STDMETHODCALLTYPE *DiscardResource )(
7709 ID3D12GraphicsCommandList2 * This,
7710 _In_ ID3D12Resource *pResource,
7711 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7712
7713 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7714 void ( STDMETHODCALLTYPE *BeginQuery )(
7715 ID3D12GraphicsCommandList2 * This,
7716 _In_ ID3D12QueryHeap *pQueryHeap,
7717 _In_ D3D12_QUERY_TYPE Type,
7718 _In_ UINT Index);
7719
7720 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7721 void ( STDMETHODCALLTYPE *EndQuery )(
7722 ID3D12GraphicsCommandList2 * This,
7723 _In_ ID3D12QueryHeap *pQueryHeap,
7724 _In_ D3D12_QUERY_TYPE Type,
7725 _In_ UINT Index);
7726
7727 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7728 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7729 ID3D12GraphicsCommandList2 * This,
7730 _In_ ID3D12QueryHeap *pQueryHeap,
7731 _In_ D3D12_QUERY_TYPE Type,
7732 _In_ UINT StartIndex,
7733 _In_ UINT NumQueries,
7734 _In_ ID3D12Resource *pDestinationBuffer,
7735 _In_ UINT64 AlignedDestinationBufferOffset);
7736
7737 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7738 void ( STDMETHODCALLTYPE *SetPredication )(
7739 ID3D12GraphicsCommandList2 * This,
7740 _In_opt_ ID3D12Resource *pBuffer,
7741 _In_ UINT64 AlignedBufferOffset,
7742 _In_ D3D12_PREDICATION_OP Operation);
7743
7744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7745 void ( STDMETHODCALLTYPE *SetMarker )(
7746 ID3D12GraphicsCommandList2 * This,
7747 UINT Metadata,
7748 _In_reads_bytes_opt_(Size) const void *pData,
7749 UINT Size);
7750
7751 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7752 void ( STDMETHODCALLTYPE *BeginEvent )(
7753 ID3D12GraphicsCommandList2 * This,
7754 UINT Metadata,
7755 _In_reads_bytes_opt_(Size) const void *pData,
7756 UINT Size);
7757
7758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7759 void ( STDMETHODCALLTYPE *EndEvent )(
7760 ID3D12GraphicsCommandList2 * This);
7761
7762 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7763 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7764 ID3D12GraphicsCommandList2 * This,
7765 _In_ ID3D12CommandSignature *pCommandSignature,
7766 _In_ UINT MaxCommandCount,
7767 _In_ ID3D12Resource *pArgumentBuffer,
7768 _In_ UINT64 ArgumentBufferOffset,
7769 _In_opt_ ID3D12Resource *pCountBuffer,
7770 _In_ UINT64 CountBufferOffset);
7771
7772 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7773 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7774 ID3D12GraphicsCommandList2 * This,
7775 _In_ ID3D12Resource *pDstBuffer,
7776 UINT64 DstOffset,
7777 _In_ ID3D12Resource *pSrcBuffer,
7778 UINT64 SrcOffset,
7779 UINT Dependencies,
7780 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7781 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7782
7783 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7784 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7785 ID3D12GraphicsCommandList2 * This,
7786 _In_ ID3D12Resource *pDstBuffer,
7787 UINT64 DstOffset,
7788 _In_ ID3D12Resource *pSrcBuffer,
7789 UINT64 SrcOffset,
7790 UINT Dependencies,
7791 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7792 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7793
7794 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7795 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7796 ID3D12GraphicsCommandList2 * This,
7797 _In_ FLOAT Min,
7798 _In_ FLOAT Max);
7799
7800 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7801 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7802 ID3D12GraphicsCommandList2 * This,
7803 _In_ UINT NumSamplesPerPixel,
7804 _In_ UINT NumPixels,
7805 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7806
7807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7808 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7809 ID3D12GraphicsCommandList2 * This,
7810 _In_ ID3D12Resource *pDstResource,
7811 _In_ UINT DstSubresource,
7812 _In_ UINT DstX,
7813 _In_ UINT DstY,
7814 _In_ ID3D12Resource *pSrcResource,
7815 _In_ UINT SrcSubresource,
7816 _In_opt_ D3D12_RECT *pSrcRect,
7817 _In_ DXGI_FORMAT Format,
7818 _In_ D3D12_RESOLVE_MODE ResolveMode);
7819
7820 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7821 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7822 ID3D12GraphicsCommandList2 * This,
7823 _In_ UINT Mask);
7824
7825 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
7826 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
7827 ID3D12GraphicsCommandList2 * This,
7828 UINT Count,
7829 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
7830 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
7831
7832 END_INTERFACE
7833 } ID3D12GraphicsCommandList2Vtbl;
7834
7835 interface ID3D12GraphicsCommandList2
7836 {
7837 CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
7838 };
7839
7840
7841
7842#ifdef COBJMACROS
7843
7844
7845#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
7846 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7847
7848#define ID3D12GraphicsCommandList2_AddRef(This) \
7849 ( (This)->lpVtbl -> AddRef(This) )
7850
7851#define ID3D12GraphicsCommandList2_Release(This) \
7852 ( (This)->lpVtbl -> Release(This) )
7853
7854
7855#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
7856 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7857
7858#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
7859 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7860
7861#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
7862 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7863
7864#define ID3D12GraphicsCommandList2_SetName(This,Name) \
7865 ( (This)->lpVtbl -> SetName(This,Name) )
7866
7867
7868#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
7869 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7870
7871
7872#define ID3D12GraphicsCommandList2_GetType(This) \
7873 ( (This)->lpVtbl -> GetType(This) )
7874
7875
7876#define ID3D12GraphicsCommandList2_Close(This) \
7877 ( (This)->lpVtbl -> Close(This) )
7878
7879#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
7880 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7881
7882#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
7883 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7884
7885#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7886 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7887
7888#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7889 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7890
7891#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7892 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7893
7894#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7895 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7896
7897#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7898 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7899
7900#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
7901 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7902
7903#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7904 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7905
7906#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7907 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7908
7909#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
7910 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7911
7912#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
7913 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7914
7915#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
7916 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7917
7918#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
7919 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7920
7921#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
7922 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7923
7924#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
7925 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7926
7927#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
7928 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7929
7930#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
7931 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7932
7933#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7934 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7935
7936#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
7937 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7938
7939#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
7940 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7941
7942#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7943 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7944
7945#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7946 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7947
7948#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7949 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7950
7951#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7952 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7953
7954#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7955 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7956
7957#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7958 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7959
7960#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7961 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7962
7963#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7964 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7965
7966#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7967 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7968
7969#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7970 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7971
7972#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7973 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7974
7975#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7976 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7977
7978#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
7979 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7980
7981#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7982 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7983
7984#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
7985 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7986
7987#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7988 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7989
7990#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7991 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7992
7993#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7994 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7995
7996#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7997 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7998
7999#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8000 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8001
8002#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
8003 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8004
8005#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8006 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8007
8008#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8009 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8010
8011#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8012 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8013
8014#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8015 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8016
8017#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
8018 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8019
8020#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
8021 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8022
8023#define ID3D12GraphicsCommandList2_EndEvent(This) \
8024 ( (This)->lpVtbl -> EndEvent(This) )
8025
8026#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8027 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8028
8029
8030#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8031 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8032
8033#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8034 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8035
8036#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
8037 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8038
8039#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8040 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8041
8042#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8043 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8044
8045#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
8046 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8047
8048
8049#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8050 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8051
8052#endif /* COBJMACROS */
8053
8054
8055#endif /* C style interface */
8056
8057
8058
8059
8060#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
8061
8062
8063#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
8064#define __ID3D12CommandQueue_INTERFACE_DEFINED__
8065
8066/* interface ID3D12CommandQueue */
8067/* [unique][local][object][uuid] */
8068
8069
8070EXTERN_C const IID IID_ID3D12CommandQueue;
8071
8072#if defined(__cplusplus) && !defined(CINTERFACE)
8073
8074 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
8075 ID3D12CommandQueue : public ID3D12Pageable
8076 {
8077 public:
8078 virtual void STDMETHODCALLTYPE UpdateTileMappings(
8079 _In_ ID3D12Resource *pResource,
8080 UINT NumResourceRegions,
8081 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8082 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8083 _In_opt_ ID3D12Heap *pHeap,
8084 UINT NumRanges,
8085 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8086 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8087 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8088 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8089
8090 virtual void STDMETHODCALLTYPE CopyTileMappings(
8091 _In_ ID3D12Resource *pDstResource,
8092 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8093 _In_ ID3D12Resource *pSrcResource,
8094 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8095 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8096 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8097
8098 virtual void STDMETHODCALLTYPE ExecuteCommandLists(
8099 _In_ UINT NumCommandLists,
8100 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
8101
8102 virtual void STDMETHODCALLTYPE SetMarker(
8103 UINT Metadata,
8104 _In_reads_bytes_opt_(Size) const void *pData,
8105 UINT Size) = 0;
8106
8107 virtual void STDMETHODCALLTYPE BeginEvent(
8108 UINT Metadata,
8109 _In_reads_bytes_opt_(Size) const void *pData,
8110 UINT Size) = 0;
8111
8112 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
8113
8114 virtual HRESULT STDMETHODCALLTYPE Signal(
8115 ID3D12Fence *pFence,
8116 UINT64 Value) = 0;
8117
8118 virtual HRESULT STDMETHODCALLTYPE Wait(
8119 ID3D12Fence *pFence,
8120 UINT64 Value) = 0;
8121
8122 virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
8123 _Out_ UINT64 *pFrequency) = 0;
8124
8125 virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
8126 _Out_ UINT64 *pGpuTimestamp,
8127 _Out_ UINT64 *pCpuTimestamp) = 0;
8128
8129 virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
8130
8131 };
8132
8133
8134#else /* C style interface */
8135
8136 typedef struct ID3D12CommandQueueVtbl
8137 {
8138 BEGIN_INTERFACE
8139
8140 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8141 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8142 ID3D12CommandQueue * This,
8143 REFIID riid,
8144 _COM_Outptr_ void **ppvObject);
8145
8146 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8147 ULONG ( STDMETHODCALLTYPE *AddRef )(
8148 ID3D12CommandQueue * This);
8149
8150 DECLSPEC_XFGVIRT(IUnknown, Release)
8151 ULONG ( STDMETHODCALLTYPE *Release )(
8152 ID3D12CommandQueue * This);
8153
8154 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8155 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8156 ID3D12CommandQueue * This,
8157 _In_ REFGUID guid,
8158 _Inout_ UINT *pDataSize,
8159 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8160
8161 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8162 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8163 ID3D12CommandQueue * This,
8164 _In_ REFGUID guid,
8165 _In_ UINT DataSize,
8166 _In_reads_bytes_opt_( DataSize ) const void *pData);
8167
8168 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8169 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8170 ID3D12CommandQueue * This,
8171 _In_ REFGUID guid,
8172 _In_opt_ const IUnknown *pData);
8173
8174 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8175 HRESULT ( STDMETHODCALLTYPE *SetName )(
8176 ID3D12CommandQueue * This,
8177 _In_z_ LPCWSTR Name);
8178
8179 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8180 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8181 ID3D12CommandQueue * This,
8182 REFIID riid,
8183 _COM_Outptr_opt_ void **ppvDevice);
8184
8185 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
8186 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
8187 ID3D12CommandQueue * This,
8188 _In_ ID3D12Resource *pResource,
8189 UINT NumResourceRegions,
8190 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8191 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8192 _In_opt_ ID3D12Heap *pHeap,
8193 UINT NumRanges,
8194 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8195 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8196 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8197 D3D12_TILE_MAPPING_FLAGS Flags);
8198
8199 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
8200 void ( STDMETHODCALLTYPE *CopyTileMappings )(
8201 ID3D12CommandQueue * This,
8202 _In_ ID3D12Resource *pDstResource,
8203 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8204 _In_ ID3D12Resource *pSrcResource,
8205 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8206 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8207 D3D12_TILE_MAPPING_FLAGS Flags);
8208
8209 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
8210 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
8211 ID3D12CommandQueue * This,
8212 _In_ UINT NumCommandLists,
8213 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
8214
8215 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
8216 void ( STDMETHODCALLTYPE *SetMarker )(
8217 ID3D12CommandQueue * This,
8218 UINT Metadata,
8219 _In_reads_bytes_opt_(Size) const void *pData,
8220 UINT Size);
8221
8222 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
8223 void ( STDMETHODCALLTYPE *BeginEvent )(
8224 ID3D12CommandQueue * This,
8225 UINT Metadata,
8226 _In_reads_bytes_opt_(Size) const void *pData,
8227 UINT Size);
8228
8229 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
8230 void ( STDMETHODCALLTYPE *EndEvent )(
8231 ID3D12CommandQueue * This);
8232
8233 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
8234 HRESULT ( STDMETHODCALLTYPE *Signal )(
8235 ID3D12CommandQueue * This,
8236 ID3D12Fence *pFence,
8237 UINT64 Value);
8238
8239 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
8240 HRESULT ( STDMETHODCALLTYPE *Wait )(
8241 ID3D12CommandQueue * This,
8242 ID3D12Fence *pFence,
8243 UINT64 Value);
8244
8245 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
8246 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
8247 ID3D12CommandQueue * This,
8248 _Out_ UINT64 *pFrequency);
8249
8250 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
8251 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
8252 ID3D12CommandQueue * This,
8253 _Out_ UINT64 *pGpuTimestamp,
8254 _Out_ UINT64 *pCpuTimestamp);
8255
8256 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
8257 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
8258 ID3D12CommandQueue * This,
8259 D3D12_COMMAND_QUEUE_DESC * RetVal);
8260
8261 END_INTERFACE
8262 } ID3D12CommandQueueVtbl;
8263
8264 interface ID3D12CommandQueue
8265 {
8266 CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
8267 };
8268
8269
8270
8271#ifdef COBJMACROS
8272
8273
8274#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
8275 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8276
8277#define ID3D12CommandQueue_AddRef(This) \
8278 ( (This)->lpVtbl -> AddRef(This) )
8279
8280#define ID3D12CommandQueue_Release(This) \
8281 ( (This)->lpVtbl -> Release(This) )
8282
8283
8284#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
8285 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8286
8287#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
8288 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8289
8290#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
8291 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8292
8293#define ID3D12CommandQueue_SetName(This,Name) \
8294 ( (This)->lpVtbl -> SetName(This,Name) )
8295
8296
8297#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
8298 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8299
8300
8301
8302#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
8303 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
8304
8305#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
8306 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
8307
8308#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
8309 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
8310
8311#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
8312 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8313
8314#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
8315 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8316
8317#define ID3D12CommandQueue_EndEvent(This) \
8318 ( (This)->lpVtbl -> EndEvent(This) )
8319
8320#define ID3D12CommandQueue_Signal(This,pFence,Value) \
8321 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
8322
8323#define ID3D12CommandQueue_Wait(This,pFence,Value) \
8324 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
8325
8326#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
8327 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
8328
8329#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
8330 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
8331
8332#define ID3D12CommandQueue_GetDesc(This,RetVal) \
8333 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
8334
8335#endif /* COBJMACROS */
8336
8337
8338#endif /* C style interface */
8339
8340
8341
8342
8343#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
8344
8345
8346/* interface __MIDL_itf_d3d12_0000_0020 */
8347/* [local] */
8348
8349#ifdef __midl
8350#ifndef LUID_DEFINED
8351#define LUID_DEFINED 1
8352typedef struct __LUID
8353 {
8354 DWORD LowPart;
8355 LONG HighPart;
8356 } LUID;
8357
8358typedef struct __LUID *PLUID;
8359
8360#endif
8361#endif
8362
8363
8364extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_c_ifspec;
8365extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_s_ifspec;
8366
8367#ifndef __ID3D12Device_INTERFACE_DEFINED__
8368#define __ID3D12Device_INTERFACE_DEFINED__
8369
8370/* interface ID3D12Device */
8371/* [unique][local][object][uuid] */
8372
8373
8374EXTERN_C const IID IID_ID3D12Device;
8375
8376#if defined(__cplusplus) && !defined(CINTERFACE)
8377
8378 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
8379 ID3D12Device : public ID3D12Object
8380 {
8381 public:
8382 virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
8383
8384 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
8385 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
8386 REFIID riid,
8387 _COM_Outptr_ void **ppCommandQueue) = 0;
8388
8389 virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
8390 _In_ D3D12_COMMAND_LIST_TYPE type,
8391 REFIID riid,
8392 _COM_Outptr_ void **ppCommandAllocator) = 0;
8393
8394 virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
8395 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
8396 REFIID riid,
8397 _COM_Outptr_ void **ppPipelineState) = 0;
8398
8399 virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
8400 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
8401 REFIID riid,
8402 _COM_Outptr_ void **ppPipelineState) = 0;
8403
8404 virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
8405 _In_ UINT nodeMask,
8406 _In_ D3D12_COMMAND_LIST_TYPE type,
8407 _In_ ID3D12CommandAllocator *pCommandAllocator,
8408 _In_opt_ ID3D12PipelineState *pInitialState,
8409 REFIID riid,
8410 _COM_Outptr_ void **ppCommandList) = 0;
8411
8412 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
8413 D3D12_FEATURE Feature,
8414 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8415 UINT FeatureSupportDataSize) = 0;
8416
8417 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
8418 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
8419 REFIID riid,
8420 _COM_Outptr_ void **ppvHeap) = 0;
8421
8422 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
8423 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
8424
8425 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
8426 _In_ UINT nodeMask,
8427 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
8428 _In_ SIZE_T blobLengthInBytes,
8429 REFIID riid,
8430 _COM_Outptr_ void **ppvRootSignature) = 0;
8431
8432 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
8433 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
8434 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8435
8436 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
8437 _In_opt_ ID3D12Resource *pResource,
8438 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
8439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8440
8441 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
8442 _In_opt_ ID3D12Resource *pResource,
8443 _In_opt_ ID3D12Resource *pCounterResource,
8444 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
8445 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8446
8447 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
8448 _In_opt_ ID3D12Resource *pResource,
8449 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
8450 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8451
8452 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
8453 _In_opt_ ID3D12Resource *pResource,
8454 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
8455 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8456
8457 virtual void STDMETHODCALLTYPE CreateSampler(
8458 _In_ const D3D12_SAMPLER_DESC *pDesc,
8459 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
8460
8461 virtual void STDMETHODCALLTYPE CopyDescriptors(
8462 _In_ UINT NumDestDescriptorRanges,
8463 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
8464 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
8465 _In_ UINT NumSrcDescriptorRanges,
8466 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
8467 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
8468 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
8469
8470 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
8471 _In_ UINT NumDescriptors,
8472 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
8473 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
8474 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
8475
8476 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
8477 _In_ UINT visibleMask,
8478 _In_ UINT numResourceDescs,
8479 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
8480
8481 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
8482 _In_ UINT nodeMask,
8483 D3D12_HEAP_TYPE heapType) = 0;
8484
8485 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
8486 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
8487 D3D12_HEAP_FLAGS HeapFlags,
8488 _In_ const D3D12_RESOURCE_DESC *pDesc,
8489 D3D12_RESOURCE_STATES InitialResourceState,
8490 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8491 REFIID riidResource,
8492 _COM_Outptr_opt_ void **ppvResource) = 0;
8493
8494 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
8495 _In_ const D3D12_HEAP_DESC *pDesc,
8496 REFIID riid,
8497 _COM_Outptr_opt_ void **ppvHeap) = 0;
8498
8499 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
8500 _In_ ID3D12Heap *pHeap,
8501 UINT64 HeapOffset,
8502 _In_ const D3D12_RESOURCE_DESC *pDesc,
8503 D3D12_RESOURCE_STATES InitialState,
8504 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8505 REFIID riid,
8506 _COM_Outptr_opt_ void **ppvResource) = 0;
8507
8508 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
8509 _In_ const D3D12_RESOURCE_DESC *pDesc,
8510 D3D12_RESOURCE_STATES InitialState,
8511 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8512 REFIID riid,
8513 _COM_Outptr_opt_ void **ppvResource) = 0;
8514
8515 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
8516 _In_ ID3D12DeviceChild *pObject,
8517 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
8518 DWORD Access,
8519 _In_opt_ LPCWSTR Name,
8520 _Out_ HANDLE *pHandle) = 0;
8521
8522 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
8523 _In_ HANDLE NTHandle,
8524 REFIID riid,
8525 _COM_Outptr_opt_ void **ppvObj) = 0;
8526
8527 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
8528 _In_ LPCWSTR Name,
8529 DWORD Access,
8530 /* [annotation][out] */
8531 _Out_ HANDLE *pNTHandle) = 0;
8532
8533 virtual HRESULT STDMETHODCALLTYPE MakeResident(
8534 UINT NumObjects,
8535 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
8536
8537 virtual HRESULT STDMETHODCALLTYPE Evict(
8538 UINT NumObjects,
8539 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
8540
8541 virtual HRESULT STDMETHODCALLTYPE CreateFence(
8542 UINT64 InitialValue,
8543 D3D12_FENCE_FLAGS Flags,
8544 REFIID riid,
8545 _COM_Outptr_ void **ppFence) = 0;
8546
8547 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
8548
8549 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
8550 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
8551 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
8552 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
8553 UINT64 BaseOffset,
8554 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
8555 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
8556 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
8557 _Out_opt_ UINT64 *pTotalBytes) = 0;
8558
8559 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
8560 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
8561 REFIID riid,
8562 _COM_Outptr_opt_ void **ppvHeap) = 0;
8563
8564 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
8565 BOOL Enable) = 0;
8566
8567 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
8568 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
8569 _In_opt_ ID3D12RootSignature *pRootSignature,
8570 REFIID riid,
8571 _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
8572
8573 virtual void STDMETHODCALLTYPE GetResourceTiling(
8574 _In_ ID3D12Resource *pTiledResource,
8575 _Out_opt_ UINT *pNumTilesForEntireResource,
8576 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
8577 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
8578 _Inout_opt_ UINT *pNumSubresourceTilings,
8579 _In_ UINT FirstSubresourceTilingToGet,
8580 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
8581
8582 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
8583
8584 };
8585
8586
8587#else /* C style interface */
8588
8589 typedef struct ID3D12DeviceVtbl
8590 {
8591 BEGIN_INTERFACE
8592
8593 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8594 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8595 ID3D12Device * This,
8596 REFIID riid,
8597 _COM_Outptr_ void **ppvObject);
8598
8599 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8600 ULONG ( STDMETHODCALLTYPE *AddRef )(
8601 ID3D12Device * This);
8602
8603 DECLSPEC_XFGVIRT(IUnknown, Release)
8604 ULONG ( STDMETHODCALLTYPE *Release )(
8605 ID3D12Device * This);
8606
8607 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8608 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8609 ID3D12Device * This,
8610 _In_ REFGUID guid,
8611 _Inout_ UINT *pDataSize,
8612 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8613
8614 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8615 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8616 ID3D12Device * This,
8617 _In_ REFGUID guid,
8618 _In_ UINT DataSize,
8619 _In_reads_bytes_opt_( DataSize ) const void *pData);
8620
8621 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8622 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8623 ID3D12Device * This,
8624 _In_ REFGUID guid,
8625 _In_opt_ const IUnknown *pData);
8626
8627 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8628 HRESULT ( STDMETHODCALLTYPE *SetName )(
8629 ID3D12Device * This,
8630 _In_z_ LPCWSTR Name);
8631
8632 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
8633 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
8634 ID3D12Device * This);
8635
8636 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
8637 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
8638 ID3D12Device * This,
8639 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
8640 REFIID riid,
8641 _COM_Outptr_ void **ppCommandQueue);
8642
8643 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
8644 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
8645 ID3D12Device * This,
8646 _In_ D3D12_COMMAND_LIST_TYPE type,
8647 REFIID riid,
8648 _COM_Outptr_ void **ppCommandAllocator);
8649
8650 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
8651 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
8652 ID3D12Device * This,
8653 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
8654 REFIID riid,
8655 _COM_Outptr_ void **ppPipelineState);
8656
8657 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
8658 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
8659 ID3D12Device * This,
8660 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
8661 REFIID riid,
8662 _COM_Outptr_ void **ppPipelineState);
8663
8664 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
8665 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
8666 ID3D12Device * This,
8667 _In_ UINT nodeMask,
8668 _In_ D3D12_COMMAND_LIST_TYPE type,
8669 _In_ ID3D12CommandAllocator *pCommandAllocator,
8670 _In_opt_ ID3D12PipelineState *pInitialState,
8671 REFIID riid,
8672 _COM_Outptr_ void **ppCommandList);
8673
8674 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
8675 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8676 ID3D12Device * This,
8677 D3D12_FEATURE Feature,
8678 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8679 UINT FeatureSupportDataSize);
8680
8681 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
8682 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
8683 ID3D12Device * This,
8684 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
8685 REFIID riid,
8686 _COM_Outptr_ void **ppvHeap);
8687
8688 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
8689 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
8690 ID3D12Device * This,
8691 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
8692
8693 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
8694 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
8695 ID3D12Device * This,
8696 _In_ UINT nodeMask,
8697 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
8698 _In_ SIZE_T blobLengthInBytes,
8699 REFIID riid,
8700 _COM_Outptr_ void **ppvRootSignature);
8701
8702 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
8703 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
8704 ID3D12Device * This,
8705 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
8706 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8707
8708 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
8709 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
8710 ID3D12Device * This,
8711 _In_opt_ ID3D12Resource *pResource,
8712 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
8713 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8714
8715 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
8716 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
8717 ID3D12Device * This,
8718 _In_opt_ ID3D12Resource *pResource,
8719 _In_opt_ ID3D12Resource *pCounterResource,
8720 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
8721 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8722
8723 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
8724 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
8725 ID3D12Device * This,
8726 _In_opt_ ID3D12Resource *pResource,
8727 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
8728 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8729
8730 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
8731 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
8732 ID3D12Device * This,
8733 _In_opt_ ID3D12Resource *pResource,
8734 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
8735 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8736
8737 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
8738 void ( STDMETHODCALLTYPE *CreateSampler )(
8739 ID3D12Device * This,
8740 _In_ const D3D12_SAMPLER_DESC *pDesc,
8741 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
8742
8743 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
8744 void ( STDMETHODCALLTYPE *CopyDescriptors )(
8745 ID3D12Device * This,
8746 _In_ UINT NumDestDescriptorRanges,
8747 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
8748 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
8749 _In_ UINT NumSrcDescriptorRanges,
8750 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
8751 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
8752 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
8753
8754 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
8755 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
8756 ID3D12Device * This,
8757 _In_ UINT NumDescriptors,
8758 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
8759 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
8760 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
8761
8762 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
8763 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
8764 ID3D12Device * This,
8765 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
8766 _In_ UINT visibleMask,
8767 _In_ UINT numResourceDescs,
8768 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
8769
8770 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
8771 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
8772 ID3D12Device * This,
8773 D3D12_HEAP_PROPERTIES * RetVal,
8774 _In_ UINT nodeMask,
8775 D3D12_HEAP_TYPE heapType);
8776
8777 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
8778 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
8779 ID3D12Device * This,
8780 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
8781 D3D12_HEAP_FLAGS HeapFlags,
8782 _In_ const D3D12_RESOURCE_DESC *pDesc,
8783 D3D12_RESOURCE_STATES InitialResourceState,
8784 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8785 REFIID riidResource,
8786 _COM_Outptr_opt_ void **ppvResource);
8787
8788 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
8789 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
8790 ID3D12Device * This,
8791 _In_ const D3D12_HEAP_DESC *pDesc,
8792 REFIID riid,
8793 _COM_Outptr_opt_ void **ppvHeap);
8794
8795 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
8796 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
8797 ID3D12Device * This,
8798 _In_ ID3D12Heap *pHeap,
8799 UINT64 HeapOffset,
8800 _In_ const D3D12_RESOURCE_DESC *pDesc,
8801 D3D12_RESOURCE_STATES InitialState,
8802 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8803 REFIID riid,
8804 _COM_Outptr_opt_ void **ppvResource);
8805
8806 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
8807 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
8808 ID3D12Device * This,
8809 _In_ const D3D12_RESOURCE_DESC *pDesc,
8810 D3D12_RESOURCE_STATES InitialState,
8811 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
8812 REFIID riid,
8813 _COM_Outptr_opt_ void **ppvResource);
8814
8815 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
8816 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
8817 ID3D12Device * This,
8818 _In_ ID3D12DeviceChild *pObject,
8819 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
8820 DWORD Access,
8821 _In_opt_ LPCWSTR Name,
8822 _Out_ HANDLE *pHandle);
8823
8824 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
8825 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
8826 ID3D12Device * This,
8827 _In_ HANDLE NTHandle,
8828 REFIID riid,
8829 _COM_Outptr_opt_ void **ppvObj);
8830
8831 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
8832 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
8833 ID3D12Device * This,
8834 _In_ LPCWSTR Name,
8835 DWORD Access,
8836 /* [annotation][out] */
8837 _Out_ HANDLE *pNTHandle);
8838
8839 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
8840 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
8841 ID3D12Device * This,
8842 UINT NumObjects,
8843 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
8844
8845 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
8846 HRESULT ( STDMETHODCALLTYPE *Evict )(
8847 ID3D12Device * This,
8848 UINT NumObjects,
8849 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
8850
8851 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
8852 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
8853 ID3D12Device * This,
8854 UINT64 InitialValue,
8855 D3D12_FENCE_FLAGS Flags,
8856 REFIID riid,
8857 _COM_Outptr_ void **ppFence);
8858
8859 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
8860 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
8861 ID3D12Device * This);
8862
8863 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
8864 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
8865 ID3D12Device * This,
8866 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
8867 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
8868 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
8869 UINT64 BaseOffset,
8870 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
8871 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
8872 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
8873 _Out_opt_ UINT64 *pTotalBytes);
8874
8875 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
8876 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
8877 ID3D12Device * This,
8878 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
8879 REFIID riid,
8880 _COM_Outptr_opt_ void **ppvHeap);
8881
8882 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
8883 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
8884 ID3D12Device * This,
8885 BOOL Enable);
8886
8887 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
8888 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
8889 ID3D12Device * This,
8890 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
8891 _In_opt_ ID3D12RootSignature *pRootSignature,
8892 REFIID riid,
8893 _COM_Outptr_opt_ void **ppvCommandSignature);
8894
8895 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
8896 void ( STDMETHODCALLTYPE *GetResourceTiling )(
8897 ID3D12Device * This,
8898 _In_ ID3D12Resource *pTiledResource,
8899 _Out_opt_ UINT *pNumTilesForEntireResource,
8900 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
8901 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
8902 _Inout_opt_ UINT *pNumSubresourceTilings,
8903 _In_ UINT FirstSubresourceTilingToGet,
8904 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
8905
8906 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
8907 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
8908 ID3D12Device * This,
8909 LUID * RetVal);
8910
8911 END_INTERFACE
8912 } ID3D12DeviceVtbl;
8913
8914 interface ID3D12Device
8915 {
8916 CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
8917 };
8918
8919
8920
8921#ifdef COBJMACROS
8922
8923
8924#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
8925 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8926
8927#define ID3D12Device_AddRef(This) \
8928 ( (This)->lpVtbl -> AddRef(This) )
8929
8930#define ID3D12Device_Release(This) \
8931 ( (This)->lpVtbl -> Release(This) )
8932
8933
8934#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
8935 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8936
8937#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
8938 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8939
8940#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
8941 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8942
8943#define ID3D12Device_SetName(This,Name) \
8944 ( (This)->lpVtbl -> SetName(This,Name) )
8945
8946
8947#define ID3D12Device_GetNodeCount(This) \
8948 ( (This)->lpVtbl -> GetNodeCount(This) )
8949
8950#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
8951 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
8952
8953#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
8954 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
8955
8956#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
8957 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
8958
8959#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
8960 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
8961
8962#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
8963 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
8964
8965#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
8966 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
8967
8968#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
8969 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
8970
8971#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
8972 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
8973
8974#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
8975 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
8976
8977#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
8978 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
8979
8980#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
8981 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
8982
8983#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
8984 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
8985
8986#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
8987 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
8988
8989#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
8990 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
8991
8992#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
8993 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
8994
8995#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
8996 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
8997
8998#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
8999 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
9000
9001#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
9002 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
9003
9004#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
9005 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
9006
9007#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
9008 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
9009
9010#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
9011 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
9012
9013#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9014 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9015
9016#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9017 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9018
9019#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
9020 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
9021
9022#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
9023 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
9024
9025#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
9026 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
9027
9028#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
9029 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
9030
9031#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
9032 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
9033
9034#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
9035 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
9036
9037#define ID3D12Device_GetDeviceRemovedReason(This) \
9038 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
9039
9040#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
9041 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
9042
9043#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
9044 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
9045
9046#define ID3D12Device_SetStablePowerState(This,Enable) \
9047 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
9048
9049#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
9050 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
9051
9052#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
9053 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
9054
9055#define ID3D12Device_GetAdapterLuid(This,RetVal) \
9056 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
9057
9058#endif /* COBJMACROS */
9059
9060
9061#endif /* C style interface */
9062
9063
9064
9065
9066#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
9067
9068
9069#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
9070#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
9071
9072/* interface ID3D12PipelineLibrary */
9073/* [unique][local][object][uuid] */
9074
9075
9076EXTERN_C const IID IID_ID3D12PipelineLibrary;
9077
9078#if defined(__cplusplus) && !defined(CINTERFACE)
9079
9080 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
9081 ID3D12PipelineLibrary : public ID3D12DeviceChild
9082 {
9083 public:
9084 virtual HRESULT STDMETHODCALLTYPE StorePipeline(
9085 _In_opt_ LPCWSTR pName,
9086 _In_ ID3D12PipelineState *pPipeline) = 0;
9087
9088 virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
9089 _In_ LPCWSTR pName,
9090 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9091 REFIID riid,
9092 _COM_Outptr_ void **ppPipelineState) = 0;
9093
9094 virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
9095 _In_ LPCWSTR pName,
9096 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9097 REFIID riid,
9098 _COM_Outptr_ void **ppPipelineState) = 0;
9099
9100 virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
9101
9102 virtual HRESULT STDMETHODCALLTYPE Serialize(
9103 _Out_writes_(DataSizeInBytes) void *pData,
9104 SIZE_T DataSizeInBytes) = 0;
9105
9106 };
9107
9108
9109#else /* C style interface */
9110
9111 typedef struct ID3D12PipelineLibraryVtbl
9112 {
9113 BEGIN_INTERFACE
9114
9115 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9116 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9117 ID3D12PipelineLibrary * This,
9118 REFIID riid,
9119 _COM_Outptr_ void **ppvObject);
9120
9121 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9122 ULONG ( STDMETHODCALLTYPE *AddRef )(
9123 ID3D12PipelineLibrary * This);
9124
9125 DECLSPEC_XFGVIRT(IUnknown, Release)
9126 ULONG ( STDMETHODCALLTYPE *Release )(
9127 ID3D12PipelineLibrary * This);
9128
9129 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9130 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9131 ID3D12PipelineLibrary * This,
9132 _In_ REFGUID guid,
9133 _Inout_ UINT *pDataSize,
9134 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9135
9136 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9137 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9138 ID3D12PipelineLibrary * This,
9139 _In_ REFGUID guid,
9140 _In_ UINT DataSize,
9141 _In_reads_bytes_opt_( DataSize ) const void *pData);
9142
9143 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9144 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9145 ID3D12PipelineLibrary * This,
9146 _In_ REFGUID guid,
9147 _In_opt_ const IUnknown *pData);
9148
9149 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9150 HRESULT ( STDMETHODCALLTYPE *SetName )(
9151 ID3D12PipelineLibrary * This,
9152 _In_z_ LPCWSTR Name);
9153
9154 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9155 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9156 ID3D12PipelineLibrary * This,
9157 REFIID riid,
9158 _COM_Outptr_opt_ void **ppvDevice);
9159
9160 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
9161 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
9162 ID3D12PipelineLibrary * This,
9163 _In_opt_ LPCWSTR pName,
9164 _In_ ID3D12PipelineState *pPipeline);
9165
9166 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
9167 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
9168 ID3D12PipelineLibrary * This,
9169 _In_ LPCWSTR pName,
9170 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9171 REFIID riid,
9172 _COM_Outptr_ void **ppPipelineState);
9173
9174 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
9175 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
9176 ID3D12PipelineLibrary * This,
9177 _In_ LPCWSTR pName,
9178 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9179 REFIID riid,
9180 _COM_Outptr_ void **ppPipelineState);
9181
9182 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
9183 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
9184 ID3D12PipelineLibrary * This);
9185
9186 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
9187 HRESULT ( STDMETHODCALLTYPE *Serialize )(
9188 ID3D12PipelineLibrary * This,
9189 _Out_writes_(DataSizeInBytes) void *pData,
9190 SIZE_T DataSizeInBytes);
9191
9192 END_INTERFACE
9193 } ID3D12PipelineLibraryVtbl;
9194
9195 interface ID3D12PipelineLibrary
9196 {
9197 CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
9198 };
9199
9200
9201
9202#ifdef COBJMACROS
9203
9204
9205#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
9206 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9207
9208#define ID3D12PipelineLibrary_AddRef(This) \
9209 ( (This)->lpVtbl -> AddRef(This) )
9210
9211#define ID3D12PipelineLibrary_Release(This) \
9212 ( (This)->lpVtbl -> Release(This) )
9213
9214
9215#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
9216 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9217
9218#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
9219 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9220
9221#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
9222 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9223
9224#define ID3D12PipelineLibrary_SetName(This,Name) \
9225 ( (This)->lpVtbl -> SetName(This,Name) )
9226
9227
9228#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
9229 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9230
9231
9232#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
9233 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
9234
9235#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
9236 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
9237
9238#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
9239 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
9240
9241#define ID3D12PipelineLibrary_GetSerializedSize(This) \
9242 ( (This)->lpVtbl -> GetSerializedSize(This) )
9243
9244#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
9245 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
9246
9247#endif /* COBJMACROS */
9248
9249
9250#endif /* C style interface */
9251
9252
9253
9254
9255#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
9256
9257
9258#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
9259#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
9260
9261/* interface ID3D12PipelineLibrary1 */
9262/* [unique][local][object][uuid] */
9263
9264
9265EXTERN_C const IID IID_ID3D12PipelineLibrary1;
9266
9267#if defined(__cplusplus) && !defined(CINTERFACE)
9268
9269 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
9270 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
9271 {
9272 public:
9273 virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
9274 _In_ LPCWSTR pName,
9275 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
9276 REFIID riid,
9277 _COM_Outptr_ void **ppPipelineState) = 0;
9278
9279 };
9280
9281
9282#else /* C style interface */
9283
9284 typedef struct ID3D12PipelineLibrary1Vtbl
9285 {
9286 BEGIN_INTERFACE
9287
9288 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9289 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9290 ID3D12PipelineLibrary1 * This,
9291 REFIID riid,
9292 _COM_Outptr_ void **ppvObject);
9293
9294 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9295 ULONG ( STDMETHODCALLTYPE *AddRef )(
9296 ID3D12PipelineLibrary1 * This);
9297
9298 DECLSPEC_XFGVIRT(IUnknown, Release)
9299 ULONG ( STDMETHODCALLTYPE *Release )(
9300 ID3D12PipelineLibrary1 * This);
9301
9302 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9303 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9304 ID3D12PipelineLibrary1 * This,
9305 _In_ REFGUID guid,
9306 _Inout_ UINT *pDataSize,
9307 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9308
9309 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9310 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9311 ID3D12PipelineLibrary1 * This,
9312 _In_ REFGUID guid,
9313 _In_ UINT DataSize,
9314 _In_reads_bytes_opt_( DataSize ) const void *pData);
9315
9316 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9317 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9318 ID3D12PipelineLibrary1 * This,
9319 _In_ REFGUID guid,
9320 _In_opt_ const IUnknown *pData);
9321
9322 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9323 HRESULT ( STDMETHODCALLTYPE *SetName )(
9324 ID3D12PipelineLibrary1 * This,
9325 _In_z_ LPCWSTR Name);
9326
9327 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9328 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9329 ID3D12PipelineLibrary1 * This,
9330 REFIID riid,
9331 _COM_Outptr_opt_ void **ppvDevice);
9332
9333 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
9334 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
9335 ID3D12PipelineLibrary1 * This,
9336 _In_opt_ LPCWSTR pName,
9337 _In_ ID3D12PipelineState *pPipeline);
9338
9339 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
9340 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
9341 ID3D12PipelineLibrary1 * This,
9342 _In_ LPCWSTR pName,
9343 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9344 REFIID riid,
9345 _COM_Outptr_ void **ppPipelineState);
9346
9347 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
9348 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
9349 ID3D12PipelineLibrary1 * This,
9350 _In_ LPCWSTR pName,
9351 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9352 REFIID riid,
9353 _COM_Outptr_ void **ppPipelineState);
9354
9355 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
9356 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
9357 ID3D12PipelineLibrary1 * This);
9358
9359 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
9360 HRESULT ( STDMETHODCALLTYPE *Serialize )(
9361 ID3D12PipelineLibrary1 * This,
9362 _Out_writes_(DataSizeInBytes) void *pData,
9363 SIZE_T DataSizeInBytes);
9364
9365 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
9366 HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
9367 ID3D12PipelineLibrary1 * This,
9368 _In_ LPCWSTR pName,
9369 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
9370 REFIID riid,
9371 _COM_Outptr_ void **ppPipelineState);
9372
9373 END_INTERFACE
9374 } ID3D12PipelineLibrary1Vtbl;
9375
9376 interface ID3D12PipelineLibrary1
9377 {
9378 CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
9379 };
9380
9381
9382
9383#ifdef COBJMACROS
9384
9385
9386#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
9387 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9388
9389#define ID3D12PipelineLibrary1_AddRef(This) \
9390 ( (This)->lpVtbl -> AddRef(This) )
9391
9392#define ID3D12PipelineLibrary1_Release(This) \
9393 ( (This)->lpVtbl -> Release(This) )
9394
9395
9396#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
9397 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9398
9399#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
9400 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9401
9402#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
9403 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9404
9405#define ID3D12PipelineLibrary1_SetName(This,Name) \
9406 ( (This)->lpVtbl -> SetName(This,Name) )
9407
9408
9409#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
9410 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9411
9412
9413#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
9414 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
9415
9416#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
9417 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
9418
9419#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
9420 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
9421
9422#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
9423 ( (This)->lpVtbl -> GetSerializedSize(This) )
9424
9425#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
9426 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
9427
9428
9429#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
9430 ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
9431
9432#endif /* COBJMACROS */
9433
9434
9435#endif /* C style interface */
9436
9437
9438
9439
9440#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
9441
9442
9443/* interface __MIDL_itf_d3d12_0000_0023 */
9444/* [local] */
9445
9446typedef
9447enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
9448 {
9449 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
9450 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
9451 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
9452 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
9453
9454DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );
9455typedef
9456enum D3D12_RESIDENCY_PRIORITY
9457 {
9458 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
9459 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
9460 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
9461 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
9462 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
9463 } D3D12_RESIDENCY_PRIORITY;
9464
9465
9466
9467extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_c_ifspec;
9468extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_s_ifspec;
9469
9470#ifndef __ID3D12Device1_INTERFACE_DEFINED__
9471#define __ID3D12Device1_INTERFACE_DEFINED__
9472
9473/* interface ID3D12Device1 */
9474/* [unique][local][object][uuid] */
9475
9476
9477EXTERN_C const IID IID_ID3D12Device1;
9478
9479#if defined(__cplusplus) && !defined(CINTERFACE)
9480
9481 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
9482 ID3D12Device1 : public ID3D12Device
9483 {
9484 public:
9485 virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
9486 _In_reads_(BlobLength) const void *pLibraryBlob,
9487 SIZE_T BlobLength,
9488 REFIID riid,
9489 _COM_Outptr_ void **ppPipelineLibrary) = 0;
9490
9491 virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
9492 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
9493 _In_reads_(NumFences) const UINT64 *pFenceValues,
9494 UINT NumFences,
9495 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
9496 HANDLE hEvent) = 0;
9497
9498 virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
9499 UINT NumObjects,
9500 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
9501 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
9502
9503 };
9504
9505
9506#else /* C style interface */
9507
9508 typedef struct ID3D12Device1Vtbl
9509 {
9510 BEGIN_INTERFACE
9511
9512 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9513 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9514 ID3D12Device1 * This,
9515 REFIID riid,
9516 _COM_Outptr_ void **ppvObject);
9517
9518 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9519 ULONG ( STDMETHODCALLTYPE *AddRef )(
9520 ID3D12Device1 * This);
9521
9522 DECLSPEC_XFGVIRT(IUnknown, Release)
9523 ULONG ( STDMETHODCALLTYPE *Release )(
9524 ID3D12Device1 * This);
9525
9526 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9527 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9528 ID3D12Device1 * This,
9529 _In_ REFGUID guid,
9530 _Inout_ UINT *pDataSize,
9531 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9532
9533 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9534 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9535 ID3D12Device1 * This,
9536 _In_ REFGUID guid,
9537 _In_ UINT DataSize,
9538 _In_reads_bytes_opt_( DataSize ) const void *pData);
9539
9540 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9541 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9542 ID3D12Device1 * This,
9543 _In_ REFGUID guid,
9544 _In_opt_ const IUnknown *pData);
9545
9546 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9547 HRESULT ( STDMETHODCALLTYPE *SetName )(
9548 ID3D12Device1 * This,
9549 _In_z_ LPCWSTR Name);
9550
9551 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
9552 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
9553 ID3D12Device1 * This);
9554
9555 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
9556 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
9557 ID3D12Device1 * This,
9558 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9559 REFIID riid,
9560 _COM_Outptr_ void **ppCommandQueue);
9561
9562 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
9563 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
9564 ID3D12Device1 * This,
9565 _In_ D3D12_COMMAND_LIST_TYPE type,
9566 REFIID riid,
9567 _COM_Outptr_ void **ppCommandAllocator);
9568
9569 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
9570 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
9571 ID3D12Device1 * This,
9572 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9573 REFIID riid,
9574 _COM_Outptr_ void **ppPipelineState);
9575
9576 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
9577 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
9578 ID3D12Device1 * This,
9579 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9580 REFIID riid,
9581 _COM_Outptr_ void **ppPipelineState);
9582
9583 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
9584 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
9585 ID3D12Device1 * This,
9586 _In_ UINT nodeMask,
9587 _In_ D3D12_COMMAND_LIST_TYPE type,
9588 _In_ ID3D12CommandAllocator *pCommandAllocator,
9589 _In_opt_ ID3D12PipelineState *pInitialState,
9590 REFIID riid,
9591 _COM_Outptr_ void **ppCommandList);
9592
9593 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
9594 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9595 ID3D12Device1 * This,
9596 D3D12_FEATURE Feature,
9597 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9598 UINT FeatureSupportDataSize);
9599
9600 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
9601 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
9602 ID3D12Device1 * This,
9603 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9604 REFIID riid,
9605 _COM_Outptr_ void **ppvHeap);
9606
9607 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
9608 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
9609 ID3D12Device1 * This,
9610 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
9611
9612 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
9613 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
9614 ID3D12Device1 * This,
9615 _In_ UINT nodeMask,
9616 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9617 _In_ SIZE_T blobLengthInBytes,
9618 REFIID riid,
9619 _COM_Outptr_ void **ppvRootSignature);
9620
9621 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
9622 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
9623 ID3D12Device1 * This,
9624 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9625 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9626
9627 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
9628 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
9629 ID3D12Device1 * This,
9630 _In_opt_ ID3D12Resource *pResource,
9631 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9632 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9633
9634 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
9635 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
9636 ID3D12Device1 * This,
9637 _In_opt_ ID3D12Resource *pResource,
9638 _In_opt_ ID3D12Resource *pCounterResource,
9639 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9640 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9641
9642 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
9643 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
9644 ID3D12Device1 * This,
9645 _In_opt_ ID3D12Resource *pResource,
9646 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9647 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9648
9649 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
9650 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
9651 ID3D12Device1 * This,
9652 _In_opt_ ID3D12Resource *pResource,
9653 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9654 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9655
9656 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
9657 void ( STDMETHODCALLTYPE *CreateSampler )(
9658 ID3D12Device1 * This,
9659 _In_ const D3D12_SAMPLER_DESC *pDesc,
9660 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9661
9662 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
9663 void ( STDMETHODCALLTYPE *CopyDescriptors )(
9664 ID3D12Device1 * This,
9665 _In_ UINT NumDestDescriptorRanges,
9666 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9667 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9668 _In_ UINT NumSrcDescriptorRanges,
9669 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9670 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9671 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9672
9673 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
9674 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
9675 ID3D12Device1 * This,
9676 _In_ UINT NumDescriptors,
9677 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9678 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9679 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9680
9681 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
9682 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9683 ID3D12Device1 * This,
9684 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9685 _In_ UINT visibleMask,
9686 _In_ UINT numResourceDescs,
9687 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9688
9689 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
9690 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9691 ID3D12Device1 * This,
9692 D3D12_HEAP_PROPERTIES * RetVal,
9693 _In_ UINT nodeMask,
9694 D3D12_HEAP_TYPE heapType);
9695
9696 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
9697 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
9698 ID3D12Device1 * This,
9699 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9700 D3D12_HEAP_FLAGS HeapFlags,
9701 _In_ const D3D12_RESOURCE_DESC *pDesc,
9702 D3D12_RESOURCE_STATES InitialResourceState,
9703 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9704 REFIID riidResource,
9705 _COM_Outptr_opt_ void **ppvResource);
9706
9707 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
9708 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
9709 ID3D12Device1 * This,
9710 _In_ const D3D12_HEAP_DESC *pDesc,
9711 REFIID riid,
9712 _COM_Outptr_opt_ void **ppvHeap);
9713
9714 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
9715 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
9716 ID3D12Device1 * This,
9717 _In_ ID3D12Heap *pHeap,
9718 UINT64 HeapOffset,
9719 _In_ const D3D12_RESOURCE_DESC *pDesc,
9720 D3D12_RESOURCE_STATES InitialState,
9721 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9722 REFIID riid,
9723 _COM_Outptr_opt_ void **ppvResource);
9724
9725 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
9726 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
9727 ID3D12Device1 * This,
9728 _In_ const D3D12_RESOURCE_DESC *pDesc,
9729 D3D12_RESOURCE_STATES InitialState,
9730 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9731 REFIID riid,
9732 _COM_Outptr_opt_ void **ppvResource);
9733
9734 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
9735 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
9736 ID3D12Device1 * This,
9737 _In_ ID3D12DeviceChild *pObject,
9738 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
9739 DWORD Access,
9740 _In_opt_ LPCWSTR Name,
9741 _Out_ HANDLE *pHandle);
9742
9743 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
9744 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
9745 ID3D12Device1 * This,
9746 _In_ HANDLE NTHandle,
9747 REFIID riid,
9748 _COM_Outptr_opt_ void **ppvObj);
9749
9750 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
9751 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
9752 ID3D12Device1 * This,
9753 _In_ LPCWSTR Name,
9754 DWORD Access,
9755 /* [annotation][out] */
9756 _Out_ HANDLE *pNTHandle);
9757
9758 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
9759 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
9760 ID3D12Device1 * This,
9761 UINT NumObjects,
9762 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
9763
9764 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
9765 HRESULT ( STDMETHODCALLTYPE *Evict )(
9766 ID3D12Device1 * This,
9767 UINT NumObjects,
9768 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
9769
9770 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
9771 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
9772 ID3D12Device1 * This,
9773 UINT64 InitialValue,
9774 D3D12_FENCE_FLAGS Flags,
9775 REFIID riid,
9776 _COM_Outptr_ void **ppFence);
9777
9778 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
9779 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
9780 ID3D12Device1 * This);
9781
9782 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
9783 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
9784 ID3D12Device1 * This,
9785 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
9786 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
9787 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
9788 UINT64 BaseOffset,
9789 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
9790 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
9791 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
9792 _Out_opt_ UINT64 *pTotalBytes);
9793
9794 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
9795 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
9796 ID3D12Device1 * This,
9797 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
9798 REFIID riid,
9799 _COM_Outptr_opt_ void **ppvHeap);
9800
9801 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
9802 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
9803 ID3D12Device1 * This,
9804 BOOL Enable);
9805
9806 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
9807 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
9808 ID3D12Device1 * This,
9809 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
9810 _In_opt_ ID3D12RootSignature *pRootSignature,
9811 REFIID riid,
9812 _COM_Outptr_opt_ void **ppvCommandSignature);
9813
9814 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
9815 void ( STDMETHODCALLTYPE *GetResourceTiling )(
9816 ID3D12Device1 * This,
9817 _In_ ID3D12Resource *pTiledResource,
9818 _Out_opt_ UINT *pNumTilesForEntireResource,
9819 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
9820 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
9821 _Inout_opt_ UINT *pNumSubresourceTilings,
9822 _In_ UINT FirstSubresourceTilingToGet,
9823 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
9824
9825 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
9826 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
9827 ID3D12Device1 * This,
9828 LUID * RetVal);
9829
9830 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
9831 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
9832 ID3D12Device1 * This,
9833 _In_reads_(BlobLength) const void *pLibraryBlob,
9834 SIZE_T BlobLength,
9835 REFIID riid,
9836 _COM_Outptr_ void **ppPipelineLibrary);
9837
9838 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
9839 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
9840 ID3D12Device1 * This,
9841 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
9842 _In_reads_(NumFences) const UINT64 *pFenceValues,
9843 UINT NumFences,
9844 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
9845 HANDLE hEvent);
9846
9847 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
9848 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
9849 ID3D12Device1 * This,
9850 UINT NumObjects,
9851 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
9852 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
9853
9854 END_INTERFACE
9855 } ID3D12Device1Vtbl;
9856
9857 interface ID3D12Device1
9858 {
9859 CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
9860 };
9861
9862
9863
9864#ifdef COBJMACROS
9865
9866
9867#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
9868 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9869
9870#define ID3D12Device1_AddRef(This) \
9871 ( (This)->lpVtbl -> AddRef(This) )
9872
9873#define ID3D12Device1_Release(This) \
9874 ( (This)->lpVtbl -> Release(This) )
9875
9876
9877#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
9878 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9879
9880#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
9881 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9882
9883#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
9884 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9885
9886#define ID3D12Device1_SetName(This,Name) \
9887 ( (This)->lpVtbl -> SetName(This,Name) )
9888
9889
9890#define ID3D12Device1_GetNodeCount(This) \
9891 ( (This)->lpVtbl -> GetNodeCount(This) )
9892
9893#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
9894 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
9895
9896#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
9897 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
9898
9899#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
9900 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
9901
9902#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
9903 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
9904
9905#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
9906 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
9907
9908#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
9909 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
9910
9911#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
9912 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
9913
9914#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
9915 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
9916
9917#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
9918 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
9919
9920#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
9921 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
9922
9923#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
9924 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
9925
9926#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
9927 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
9928
9929#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
9930 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
9931
9932#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
9933 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
9934
9935#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
9936 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
9937
9938#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
9939 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
9940
9941#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
9942 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
9943
9944#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
9945 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
9946
9947#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
9948 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
9949
9950#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
9951 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
9952
9953#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
9954 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
9955
9956#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9957 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9958
9959#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
9960 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
9961
9962#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
9963 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
9964
9965#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
9966 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
9967
9968#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
9969 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
9970
9971#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
9972 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
9973
9974#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
9975 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
9976
9977#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
9978 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
9979
9980#define ID3D12Device1_GetDeviceRemovedReason(This) \
9981 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
9982
9983#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
9984 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
9985
9986#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
9987 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
9988
9989#define ID3D12Device1_SetStablePowerState(This,Enable) \
9990 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
9991
9992#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
9993 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
9994
9995#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
9996 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
9997
9998#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
9999 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10000
10001
10002#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
10003 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
10004
10005#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
10006 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
10007
10008#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
10009 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
10010
10011#endif /* COBJMACROS */
10012
10013
10014#endif /* C style interface */
10015
10016
10017
10018
10019#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
10020
10021
10022#ifndef __ID3D12Device2_INTERFACE_DEFINED__
10023#define __ID3D12Device2_INTERFACE_DEFINED__
10024
10025/* interface ID3D12Device2 */
10026/* [unique][local][object][uuid] */
10027
10028
10029EXTERN_C const IID IID_ID3D12Device2;
10030
10031#if defined(__cplusplus) && !defined(CINTERFACE)
10032
10033 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
10034 ID3D12Device2 : public ID3D12Device1
10035 {
10036 public:
10037 virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
10038 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10039 REFIID riid,
10040 _COM_Outptr_ void **ppPipelineState) = 0;
10041
10042 };
10043
10044
10045#else /* C style interface */
10046
10047 typedef struct ID3D12Device2Vtbl
10048 {
10049 BEGIN_INTERFACE
10050
10051 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10052 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10053 ID3D12Device2 * This,
10054 REFIID riid,
10055 _COM_Outptr_ void **ppvObject);
10056
10057 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10058 ULONG ( STDMETHODCALLTYPE *AddRef )(
10059 ID3D12Device2 * This);
10060
10061 DECLSPEC_XFGVIRT(IUnknown, Release)
10062 ULONG ( STDMETHODCALLTYPE *Release )(
10063 ID3D12Device2 * This);
10064
10065 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10066 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10067 ID3D12Device2 * This,
10068 _In_ REFGUID guid,
10069 _Inout_ UINT *pDataSize,
10070 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10071
10072 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10073 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10074 ID3D12Device2 * This,
10075 _In_ REFGUID guid,
10076 _In_ UINT DataSize,
10077 _In_reads_bytes_opt_( DataSize ) const void *pData);
10078
10079 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10080 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10081 ID3D12Device2 * This,
10082 _In_ REFGUID guid,
10083 _In_opt_ const IUnknown *pData);
10084
10085 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10086 HRESULT ( STDMETHODCALLTYPE *SetName )(
10087 ID3D12Device2 * This,
10088 _In_z_ LPCWSTR Name);
10089
10090 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10091 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10092 ID3D12Device2 * This);
10093
10094 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10095 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10096 ID3D12Device2 * This,
10097 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10098 REFIID riid,
10099 _COM_Outptr_ void **ppCommandQueue);
10100
10101 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10102 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10103 ID3D12Device2 * This,
10104 _In_ D3D12_COMMAND_LIST_TYPE type,
10105 REFIID riid,
10106 _COM_Outptr_ void **ppCommandAllocator);
10107
10108 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10109 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10110 ID3D12Device2 * This,
10111 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10112 REFIID riid,
10113 _COM_Outptr_ void **ppPipelineState);
10114
10115 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10116 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10117 ID3D12Device2 * This,
10118 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10119 REFIID riid,
10120 _COM_Outptr_ void **ppPipelineState);
10121
10122 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10123 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10124 ID3D12Device2 * This,
10125 _In_ UINT nodeMask,
10126 _In_ D3D12_COMMAND_LIST_TYPE type,
10127 _In_ ID3D12CommandAllocator *pCommandAllocator,
10128 _In_opt_ ID3D12PipelineState *pInitialState,
10129 REFIID riid,
10130 _COM_Outptr_ void **ppCommandList);
10131
10132 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10133 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10134 ID3D12Device2 * This,
10135 D3D12_FEATURE Feature,
10136 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10137 UINT FeatureSupportDataSize);
10138
10139 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10140 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10141 ID3D12Device2 * This,
10142 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10143 REFIID riid,
10144 _COM_Outptr_ void **ppvHeap);
10145
10146 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10147 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10148 ID3D12Device2 * This,
10149 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10150
10151 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10152 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10153 ID3D12Device2 * This,
10154 _In_ UINT nodeMask,
10155 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10156 _In_ SIZE_T blobLengthInBytes,
10157 REFIID riid,
10158 _COM_Outptr_ void **ppvRootSignature);
10159
10160 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10161 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10162 ID3D12Device2 * This,
10163 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10164 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10165
10166 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10167 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10168 ID3D12Device2 * This,
10169 _In_opt_ ID3D12Resource *pResource,
10170 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10171 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10172
10173 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10174 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10175 ID3D12Device2 * This,
10176 _In_opt_ ID3D12Resource *pResource,
10177 _In_opt_ ID3D12Resource *pCounterResource,
10178 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10179 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10180
10181 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10182 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10183 ID3D12Device2 * This,
10184 _In_opt_ ID3D12Resource *pResource,
10185 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10186 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10187
10188 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10189 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10190 ID3D12Device2 * This,
10191 _In_opt_ ID3D12Resource *pResource,
10192 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10193 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10194
10195 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10196 void ( STDMETHODCALLTYPE *CreateSampler )(
10197 ID3D12Device2 * This,
10198 _In_ const D3D12_SAMPLER_DESC *pDesc,
10199 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10200
10201 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10202 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10203 ID3D12Device2 * This,
10204 _In_ UINT NumDestDescriptorRanges,
10205 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10206 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10207 _In_ UINT NumSrcDescriptorRanges,
10208 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10209 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10210 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10211
10212 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10213 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10214 ID3D12Device2 * This,
10215 _In_ UINT NumDescriptors,
10216 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10217 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10218 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10219
10220 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10221 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10222 ID3D12Device2 * This,
10223 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10224 _In_ UINT visibleMask,
10225 _In_ UINT numResourceDescs,
10226 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10227
10228 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10229 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10230 ID3D12Device2 * This,
10231 D3D12_HEAP_PROPERTIES * RetVal,
10232 _In_ UINT nodeMask,
10233 D3D12_HEAP_TYPE heapType);
10234
10235 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10236 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10237 ID3D12Device2 * This,
10238 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10239 D3D12_HEAP_FLAGS HeapFlags,
10240 _In_ const D3D12_RESOURCE_DESC *pDesc,
10241 D3D12_RESOURCE_STATES InitialResourceState,
10242 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10243 REFIID riidResource,
10244 _COM_Outptr_opt_ void **ppvResource);
10245
10246 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10247 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10248 ID3D12Device2 * This,
10249 _In_ const D3D12_HEAP_DESC *pDesc,
10250 REFIID riid,
10251 _COM_Outptr_opt_ void **ppvHeap);
10252
10253 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10254 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10255 ID3D12Device2 * This,
10256 _In_ ID3D12Heap *pHeap,
10257 UINT64 HeapOffset,
10258 _In_ const D3D12_RESOURCE_DESC *pDesc,
10259 D3D12_RESOURCE_STATES InitialState,
10260 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10261 REFIID riid,
10262 _COM_Outptr_opt_ void **ppvResource);
10263
10264 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10265 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10266 ID3D12Device2 * This,
10267 _In_ const D3D12_RESOURCE_DESC *pDesc,
10268 D3D12_RESOURCE_STATES InitialState,
10269 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10270 REFIID riid,
10271 _COM_Outptr_opt_ void **ppvResource);
10272
10273 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10274 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10275 ID3D12Device2 * This,
10276 _In_ ID3D12DeviceChild *pObject,
10277 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10278 DWORD Access,
10279 _In_opt_ LPCWSTR Name,
10280 _Out_ HANDLE *pHandle);
10281
10282 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10283 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10284 ID3D12Device2 * This,
10285 _In_ HANDLE NTHandle,
10286 REFIID riid,
10287 _COM_Outptr_opt_ void **ppvObj);
10288
10289 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10290 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10291 ID3D12Device2 * This,
10292 _In_ LPCWSTR Name,
10293 DWORD Access,
10294 /* [annotation][out] */
10295 _Out_ HANDLE *pNTHandle);
10296
10297 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10298 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10299 ID3D12Device2 * This,
10300 UINT NumObjects,
10301 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10302
10303 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10304 HRESULT ( STDMETHODCALLTYPE *Evict )(
10305 ID3D12Device2 * This,
10306 UINT NumObjects,
10307 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10308
10309 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10310 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10311 ID3D12Device2 * This,
10312 UINT64 InitialValue,
10313 D3D12_FENCE_FLAGS Flags,
10314 REFIID riid,
10315 _COM_Outptr_ void **ppFence);
10316
10317 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10318 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10319 ID3D12Device2 * This);
10320
10321 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10322 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10323 ID3D12Device2 * This,
10324 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10325 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10326 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10327 UINT64 BaseOffset,
10328 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10329 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10330 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10331 _Out_opt_ UINT64 *pTotalBytes);
10332
10333 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10334 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10335 ID3D12Device2 * This,
10336 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10337 REFIID riid,
10338 _COM_Outptr_opt_ void **ppvHeap);
10339
10340 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10341 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10342 ID3D12Device2 * This,
10343 BOOL Enable);
10344
10345 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10346 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10347 ID3D12Device2 * This,
10348 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10349 _In_opt_ ID3D12RootSignature *pRootSignature,
10350 REFIID riid,
10351 _COM_Outptr_opt_ void **ppvCommandSignature);
10352
10353 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10354 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10355 ID3D12Device2 * This,
10356 _In_ ID3D12Resource *pTiledResource,
10357 _Out_opt_ UINT *pNumTilesForEntireResource,
10358 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10359 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10360 _Inout_opt_ UINT *pNumSubresourceTilings,
10361 _In_ UINT FirstSubresourceTilingToGet,
10362 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10365 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10366 ID3D12Device2 * This,
10367 LUID * RetVal);
10368
10369 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
10370 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
10371 ID3D12Device2 * This,
10372 _In_reads_(BlobLength) const void *pLibraryBlob,
10373 SIZE_T BlobLength,
10374 REFIID riid,
10375 _COM_Outptr_ void **ppPipelineLibrary);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
10378 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
10379 ID3D12Device2 * This,
10380 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10381 _In_reads_(NumFences) const UINT64 *pFenceValues,
10382 UINT NumFences,
10383 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10384 HANDLE hEvent);
10385
10386 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
10387 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
10388 ID3D12Device2 * This,
10389 UINT NumObjects,
10390 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10391 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
10392
10393 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
10394 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
10395 ID3D12Device2 * This,
10396 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10397 REFIID riid,
10398 _COM_Outptr_ void **ppPipelineState);
10399
10400 END_INTERFACE
10401 } ID3D12Device2Vtbl;
10402
10403 interface ID3D12Device2
10404 {
10405 CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
10406 };
10407
10408
10409
10410#ifdef COBJMACROS
10411
10412
10413#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
10414 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10415
10416#define ID3D12Device2_AddRef(This) \
10417 ( (This)->lpVtbl -> AddRef(This) )
10418
10419#define ID3D12Device2_Release(This) \
10420 ( (This)->lpVtbl -> Release(This) )
10421
10422
10423#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
10424 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10425
10426#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
10427 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10428
10429#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
10430 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10431
10432#define ID3D12Device2_SetName(This,Name) \
10433 ( (This)->lpVtbl -> SetName(This,Name) )
10434
10435
10436#define ID3D12Device2_GetNodeCount(This) \
10437 ( (This)->lpVtbl -> GetNodeCount(This) )
10438
10439#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
10440 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
10441
10442#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
10443 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
10444
10445#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
10446 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
10447
10448#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
10449 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
10450
10451#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
10452 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
10453
10454#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
10455 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
10456
10457#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
10458 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
10459
10460#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
10461 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
10462
10463#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
10464 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
10465
10466#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
10467 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
10468
10469#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
10470 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
10471
10472#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
10473 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
10474
10475#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
10476 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
10477
10478#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
10479 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
10480
10481#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
10482 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
10483
10484#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
10485 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
10486
10487#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
10488 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
10489
10490#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
10491 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
10492
10493#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
10494 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
10495
10496#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
10497 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
10498
10499#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
10500 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
10501
10502#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10503 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10504
10505#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10506 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10507
10508#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
10509 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
10510
10511#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
10512 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
10513
10514#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
10515 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
10516
10517#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
10518 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
10519
10520#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
10521 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
10522
10523#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
10524 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
10525
10526#define ID3D12Device2_GetDeviceRemovedReason(This) \
10527 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
10528
10529#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
10530 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
10531
10532#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
10533 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
10534
10535#define ID3D12Device2_SetStablePowerState(This,Enable) \
10536 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
10537
10538#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
10539 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
10540
10541#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
10542 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
10543
10544#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
10545 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10546
10547
10548#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
10549 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
10550
10551#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
10552 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
10553
10554#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
10555 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
10556
10557
10558#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
10559 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
10560
10561#endif /* COBJMACROS */
10562
10563
10564#endif /* C style interface */
10565
10566
10567
10568
10569#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
10570
10571
10572/* interface __MIDL_itf_d3d12_0000_0025 */
10573/* [local] */
10574
10575typedef
10576enum D3D12_RESIDENCY_FLAGS
10577 {
10578 D3D12_RESIDENCY_FLAG_NONE = 0,
10579 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
10580 } D3D12_RESIDENCY_FLAGS;
10581
10582DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS );
10583
10584
10585extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
10586extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
10587
10588#ifndef __ID3D12Device3_INTERFACE_DEFINED__
10589#define __ID3D12Device3_INTERFACE_DEFINED__
10590
10591/* interface ID3D12Device3 */
10592/* [unique][local][object][uuid] */
10593
10594
10595EXTERN_C const IID IID_ID3D12Device3;
10596
10597#if defined(__cplusplus) && !defined(CINTERFACE)
10598
10599 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
10600 ID3D12Device3 : public ID3D12Device2
10601 {
10602 public:
10603 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
10604 _In_ const void *pAddress,
10605 REFIID riid,
10606 _COM_Outptr_ void **ppvHeap) = 0;
10607
10608 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
10609 _In_ HANDLE hFileMapping,
10610 REFIID riid,
10611 _COM_Outptr_ void **ppvHeap) = 0;
10612
10613 virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
10614 D3D12_RESIDENCY_FLAGS Flags,
10615 UINT NumObjects,
10616 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10617 _In_ ID3D12Fence *pFenceToSignal,
10618 UINT64 FenceValueToSignal) = 0;
10619
10620 };
10621
10622
10623#else /* C style interface */
10624
10625 typedef struct ID3D12Device3Vtbl
10626 {
10627 BEGIN_INTERFACE
10628
10629 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10630 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10631 ID3D12Device3 * This,
10632 REFIID riid,
10633 _COM_Outptr_ void **ppvObject);
10634
10635 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10636 ULONG ( STDMETHODCALLTYPE *AddRef )(
10637 ID3D12Device3 * This);
10638
10639 DECLSPEC_XFGVIRT(IUnknown, Release)
10640 ULONG ( STDMETHODCALLTYPE *Release )(
10641 ID3D12Device3 * This);
10642
10643 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10644 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10645 ID3D12Device3 * This,
10646 _In_ REFGUID guid,
10647 _Inout_ UINT *pDataSize,
10648 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10649
10650 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10651 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10652 ID3D12Device3 * This,
10653 _In_ REFGUID guid,
10654 _In_ UINT DataSize,
10655 _In_reads_bytes_opt_( DataSize ) const void *pData);
10656
10657 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10658 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10659 ID3D12Device3 * This,
10660 _In_ REFGUID guid,
10661 _In_opt_ const IUnknown *pData);
10662
10663 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10664 HRESULT ( STDMETHODCALLTYPE *SetName )(
10665 ID3D12Device3 * This,
10666 _In_z_ LPCWSTR Name);
10667
10668 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10669 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10670 ID3D12Device3 * This);
10671
10672 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10673 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10674 ID3D12Device3 * This,
10675 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10676 REFIID riid,
10677 _COM_Outptr_ void **ppCommandQueue);
10678
10679 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10680 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10681 ID3D12Device3 * This,
10682 _In_ D3D12_COMMAND_LIST_TYPE type,
10683 REFIID riid,
10684 _COM_Outptr_ void **ppCommandAllocator);
10685
10686 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10687 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10688 ID3D12Device3 * This,
10689 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10690 REFIID riid,
10691 _COM_Outptr_ void **ppPipelineState);
10692
10693 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10694 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10695 ID3D12Device3 * This,
10696 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10697 REFIID riid,
10698 _COM_Outptr_ void **ppPipelineState);
10699
10700 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10701 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10702 ID3D12Device3 * This,
10703 _In_ UINT nodeMask,
10704 _In_ D3D12_COMMAND_LIST_TYPE type,
10705 _In_ ID3D12CommandAllocator *pCommandAllocator,
10706 _In_opt_ ID3D12PipelineState *pInitialState,
10707 REFIID riid,
10708 _COM_Outptr_ void **ppCommandList);
10709
10710 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10711 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10712 ID3D12Device3 * This,
10713 D3D12_FEATURE Feature,
10714 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10715 UINT FeatureSupportDataSize);
10716
10717 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10718 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10719 ID3D12Device3 * This,
10720 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10721 REFIID riid,
10722 _COM_Outptr_ void **ppvHeap);
10723
10724 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10725 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10726 ID3D12Device3 * This,
10727 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10728
10729 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10730 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10731 ID3D12Device3 * This,
10732 _In_ UINT nodeMask,
10733 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10734 _In_ SIZE_T blobLengthInBytes,
10735 REFIID riid,
10736 _COM_Outptr_ void **ppvRootSignature);
10737
10738 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10739 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10740 ID3D12Device3 * This,
10741 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10742 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10743
10744 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10745 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10746 ID3D12Device3 * This,
10747 _In_opt_ ID3D12Resource *pResource,
10748 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10749 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10750
10751 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10752 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10753 ID3D12Device3 * This,
10754 _In_opt_ ID3D12Resource *pResource,
10755 _In_opt_ ID3D12Resource *pCounterResource,
10756 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10757 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10758
10759 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10760 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10761 ID3D12Device3 * This,
10762 _In_opt_ ID3D12Resource *pResource,
10763 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10764 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10765
10766 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10767 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10768 ID3D12Device3 * This,
10769 _In_opt_ ID3D12Resource *pResource,
10770 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10771 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10772
10773 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10774 void ( STDMETHODCALLTYPE *CreateSampler )(
10775 ID3D12Device3 * This,
10776 _In_ const D3D12_SAMPLER_DESC *pDesc,
10777 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10778
10779 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10780 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10781 ID3D12Device3 * This,
10782 _In_ UINT NumDestDescriptorRanges,
10783 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10784 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10785 _In_ UINT NumSrcDescriptorRanges,
10786 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10787 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10788 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10789
10790 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10791 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10792 ID3D12Device3 * This,
10793 _In_ UINT NumDescriptors,
10794 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10795 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10796 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10797
10798 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10799 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10800 ID3D12Device3 * This,
10801 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10802 _In_ UINT visibleMask,
10803 _In_ UINT numResourceDescs,
10804 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10805
10806 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10807 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10808 ID3D12Device3 * This,
10809 D3D12_HEAP_PROPERTIES * RetVal,
10810 _In_ UINT nodeMask,
10811 D3D12_HEAP_TYPE heapType);
10812
10813 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10814 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10815 ID3D12Device3 * This,
10816 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10817 D3D12_HEAP_FLAGS HeapFlags,
10818 _In_ const D3D12_RESOURCE_DESC *pDesc,
10819 D3D12_RESOURCE_STATES InitialResourceState,
10820 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10821 REFIID riidResource,
10822 _COM_Outptr_opt_ void **ppvResource);
10823
10824 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10825 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10826 ID3D12Device3 * This,
10827 _In_ const D3D12_HEAP_DESC *pDesc,
10828 REFIID riid,
10829 _COM_Outptr_opt_ void **ppvHeap);
10830
10831 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10832 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10833 ID3D12Device3 * This,
10834 _In_ ID3D12Heap *pHeap,
10835 UINT64 HeapOffset,
10836 _In_ const D3D12_RESOURCE_DESC *pDesc,
10837 D3D12_RESOURCE_STATES InitialState,
10838 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10839 REFIID riid,
10840 _COM_Outptr_opt_ void **ppvResource);
10841
10842 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10843 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10844 ID3D12Device3 * This,
10845 _In_ const D3D12_RESOURCE_DESC *pDesc,
10846 D3D12_RESOURCE_STATES InitialState,
10847 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10848 REFIID riid,
10849 _COM_Outptr_opt_ void **ppvResource);
10850
10851 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10852 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10853 ID3D12Device3 * This,
10854 _In_ ID3D12DeviceChild *pObject,
10855 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10856 DWORD Access,
10857 _In_opt_ LPCWSTR Name,
10858 _Out_ HANDLE *pHandle);
10859
10860 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10861 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10862 ID3D12Device3 * This,
10863 _In_ HANDLE NTHandle,
10864 REFIID riid,
10865 _COM_Outptr_opt_ void **ppvObj);
10866
10867 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10868 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10869 ID3D12Device3 * This,
10870 _In_ LPCWSTR Name,
10871 DWORD Access,
10872 /* [annotation][out] */
10873 _Out_ HANDLE *pNTHandle);
10874
10875 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10876 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10877 ID3D12Device3 * This,
10878 UINT NumObjects,
10879 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10880
10881 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10882 HRESULT ( STDMETHODCALLTYPE *Evict )(
10883 ID3D12Device3 * This,
10884 UINT NumObjects,
10885 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10886
10887 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10888 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10889 ID3D12Device3 * This,
10890 UINT64 InitialValue,
10891 D3D12_FENCE_FLAGS Flags,
10892 REFIID riid,
10893 _COM_Outptr_ void **ppFence);
10894
10895 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10896 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10897 ID3D12Device3 * This);
10898
10899 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10900 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10901 ID3D12Device3 * This,
10902 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10903 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10904 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10905 UINT64 BaseOffset,
10906 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10907 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10908 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10909 _Out_opt_ UINT64 *pTotalBytes);
10910
10911 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10912 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10913 ID3D12Device3 * This,
10914 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10915 REFIID riid,
10916 _COM_Outptr_opt_ void **ppvHeap);
10917
10918 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10919 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10920 ID3D12Device3 * This,
10921 BOOL Enable);
10922
10923 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10924 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10925 ID3D12Device3 * This,
10926 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10927 _In_opt_ ID3D12RootSignature *pRootSignature,
10928 REFIID riid,
10929 _COM_Outptr_opt_ void **ppvCommandSignature);
10930
10931 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10932 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10933 ID3D12Device3 * This,
10934 _In_ ID3D12Resource *pTiledResource,
10935 _Out_opt_ UINT *pNumTilesForEntireResource,
10936 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10937 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10938 _Inout_opt_ UINT *pNumSubresourceTilings,
10939 _In_ UINT FirstSubresourceTilingToGet,
10940 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10941
10942 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10943 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10944 ID3D12Device3 * This,
10945 LUID * RetVal);
10946
10947 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
10948 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
10949 ID3D12Device3 * This,
10950 _In_reads_(BlobLength) const void *pLibraryBlob,
10951 SIZE_T BlobLength,
10952 REFIID riid,
10953 _COM_Outptr_ void **ppPipelineLibrary);
10954
10955 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
10956 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
10957 ID3D12Device3 * This,
10958 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10959 _In_reads_(NumFences) const UINT64 *pFenceValues,
10960 UINT NumFences,
10961 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10962 HANDLE hEvent);
10963
10964 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
10965 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
10966 ID3D12Device3 * This,
10967 UINT NumObjects,
10968 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10969 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
10970
10971 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
10972 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
10973 ID3D12Device3 * This,
10974 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10975 REFIID riid,
10976 _COM_Outptr_ void **ppPipelineState);
10977
10978 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
10979 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
10980 ID3D12Device3 * This,
10981 _In_ const void *pAddress,
10982 REFIID riid,
10983 _COM_Outptr_ void **ppvHeap);
10984
10985 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
10986 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
10987 ID3D12Device3 * This,
10988 _In_ HANDLE hFileMapping,
10989 REFIID riid,
10990 _COM_Outptr_ void **ppvHeap);
10991
10992 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
10993 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
10994 ID3D12Device3 * This,
10995 D3D12_RESIDENCY_FLAGS Flags,
10996 UINT NumObjects,
10997 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10998 _In_ ID3D12Fence *pFenceToSignal,
10999 UINT64 FenceValueToSignal);
11000
11001 END_INTERFACE
11002 } ID3D12Device3Vtbl;
11003
11004 interface ID3D12Device3
11005 {
11006 CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
11007 };
11008
11009
11010
11011#ifdef COBJMACROS
11012
11013
11014#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
11015 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11016
11017#define ID3D12Device3_AddRef(This) \
11018 ( (This)->lpVtbl -> AddRef(This) )
11019
11020#define ID3D12Device3_Release(This) \
11021 ( (This)->lpVtbl -> Release(This) )
11022
11023
11024#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
11025 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11026
11027#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
11028 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11029
11030#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
11031 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11032
11033#define ID3D12Device3_SetName(This,Name) \
11034 ( (This)->lpVtbl -> SetName(This,Name) )
11035
11036
11037#define ID3D12Device3_GetNodeCount(This) \
11038 ( (This)->lpVtbl -> GetNodeCount(This) )
11039
11040#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11041 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11042
11043#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11044 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11045
11046#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11047 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11048
11049#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11050 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11051
11052#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11053 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11054
11055#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11056 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11057
11058#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11059 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11060
11061#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11062 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11063
11064#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11065 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11066
11067#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11068 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11069
11070#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11071 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11072
11073#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11074 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11075
11076#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11077 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11078
11079#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11080 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11081
11082#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
11083 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11084
11085#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11086 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11087
11088#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11089 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11090
11091#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11092 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11093
11094#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11095 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11096
11097#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11098 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11099
11100#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
11101 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11102
11103#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11104 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11105
11106#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11107 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11108
11109#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11110 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11111
11112#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11113 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11114
11115#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11116 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11117
11118#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
11119 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11120
11121#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
11122 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11123
11124#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11125 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11126
11127#define ID3D12Device3_GetDeviceRemovedReason(This) \
11128 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11129
11130#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11131 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11132
11133#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11134 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11135
11136#define ID3D12Device3_SetStablePowerState(This,Enable) \
11137 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11138
11139#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11140 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11141
11142#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11143 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11144
11145#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
11146 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11147
11148
11149#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11150 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11151
11152#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11153 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11154
11155#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11156 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11157
11158
11159#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
11160 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
11161
11162
11163#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
11164 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
11165
11166#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
11167 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
11168
11169#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
11170 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
11171
11172#endif /* COBJMACROS */
11173
11174
11175#endif /* C style interface */
11176
11177
11178
11179
11180#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
11181
11182
11183/* interface __MIDL_itf_d3d12_0000_0026 */
11184/* [local] */
11185
11186typedef
11187enum D3D12_COMMAND_LIST_FLAGS
11188 {
11189 D3D12_COMMAND_LIST_FLAG_NONE = 0
11190 } D3D12_COMMAND_LIST_FLAGS;
11191
11192DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS );
11193typedef
11194enum D3D12_COMMAND_POOL_FLAGS
11195 {
11196 D3D12_COMMAND_POOL_FLAG_NONE = 0
11197 } D3D12_COMMAND_POOL_FLAGS;
11198
11199DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS );
11200typedef
11201enum D3D12_COMMAND_RECORDER_FLAGS
11202 {
11203 D3D12_COMMAND_RECORDER_FLAG_NONE = 0
11204 } D3D12_COMMAND_RECORDER_FLAGS;
11205
11206DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS );
11207typedef
11208enum D3D12_PROTECTED_SESSION_STATUS
11209 {
11210 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
11211 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
11212 } D3D12_PROTECTED_SESSION_STATUS;
11213
11214
11215
11216extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_c_ifspec;
11217extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_s_ifspec;
11218
11219#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
11220#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
11221
11222/* interface ID3D12ProtectedSession */
11223/* [unique][local][object][uuid] */
11224
11225
11226EXTERN_C const IID IID_ID3D12ProtectedSession;
11227
11228#if defined(__cplusplus) && !defined(CINTERFACE)
11229
11230 MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
11231 ID3D12ProtectedSession : public ID3D12DeviceChild
11232 {
11233 public:
11234 virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
11235 REFIID riid,
11236 _COM_Outptr_opt_ void **ppFence) = 0;
11237
11238 virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
11239
11240 };
11241
11242
11243#else /* C style interface */
11244
11245 typedef struct ID3D12ProtectedSessionVtbl
11246 {
11247 BEGIN_INTERFACE
11248
11249 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11250 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11251 ID3D12ProtectedSession * This,
11252 REFIID riid,
11253 _COM_Outptr_ void **ppvObject);
11254
11255 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11256 ULONG ( STDMETHODCALLTYPE *AddRef )(
11257 ID3D12ProtectedSession * This);
11258
11259 DECLSPEC_XFGVIRT(IUnknown, Release)
11260 ULONG ( STDMETHODCALLTYPE *Release )(
11261 ID3D12ProtectedSession * This);
11262
11263 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11264 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11265 ID3D12ProtectedSession * This,
11266 _In_ REFGUID guid,
11267 _Inout_ UINT *pDataSize,
11268 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11269
11270 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11271 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11272 ID3D12ProtectedSession * This,
11273 _In_ REFGUID guid,
11274 _In_ UINT DataSize,
11275 _In_reads_bytes_opt_( DataSize ) const void *pData);
11276
11277 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11278 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11279 ID3D12ProtectedSession * This,
11280 _In_ REFGUID guid,
11281 _In_opt_ const IUnknown *pData);
11282
11283 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11284 HRESULT ( STDMETHODCALLTYPE *SetName )(
11285 ID3D12ProtectedSession * This,
11286 _In_z_ LPCWSTR Name);
11287
11288 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
11289 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
11290 ID3D12ProtectedSession * This,
11291 REFIID riid,
11292 _COM_Outptr_opt_ void **ppvDevice);
11293
11294 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
11295 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
11296 ID3D12ProtectedSession * This,
11297 REFIID riid,
11298 _COM_Outptr_opt_ void **ppFence);
11299
11300 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
11301 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
11302 ID3D12ProtectedSession * This);
11303
11304 END_INTERFACE
11305 } ID3D12ProtectedSessionVtbl;
11306
11307 interface ID3D12ProtectedSession
11308 {
11309 CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
11310 };
11311
11312
11313
11314#ifdef COBJMACROS
11315
11316
11317#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
11318 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11319
11320#define ID3D12ProtectedSession_AddRef(This) \
11321 ( (This)->lpVtbl -> AddRef(This) )
11322
11323#define ID3D12ProtectedSession_Release(This) \
11324 ( (This)->lpVtbl -> Release(This) )
11325
11326
11327#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
11328 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11329
11330#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
11331 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11332
11333#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
11334 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11335
11336#define ID3D12ProtectedSession_SetName(This,Name) \
11337 ( (This)->lpVtbl -> SetName(This,Name) )
11338
11339
11340#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
11341 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
11342
11343
11344#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
11345 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
11346
11347#define ID3D12ProtectedSession_GetSessionStatus(This) \
11348 ( (This)->lpVtbl -> GetSessionStatus(This) )
11349
11350#endif /* COBJMACROS */
11351
11352
11353#endif /* C style interface */
11354
11355
11356
11357
11358#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
11359
11360
11361/* interface __MIDL_itf_d3d12_0000_0027 */
11362/* [local] */
11363
11364typedef
11365enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
11366 {
11367 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
11368 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
11369 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
11370
11371DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS );
11372typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
11373 {
11374 UINT NodeIndex;
11375 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
11376 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
11377
11378typedef
11379enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
11380 {
11381 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
11382 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
11383
11384DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS );
11385typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
11386 {
11387 UINT NodeMask;
11388 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
11389 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
11390
11391
11392
11393extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
11394extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
11395
11396#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
11397#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
11398
11399/* interface ID3D12ProtectedResourceSession */
11400/* [unique][local][object][uuid] */
11401
11402
11403EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
11404
11405#if defined(__cplusplus) && !defined(CINTERFACE)
11406
11407 MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
11408 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
11409 {
11410 public:
11411 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
11412
11413 };
11414
11415
11416#else /* C style interface */
11417
11418 typedef struct ID3D12ProtectedResourceSessionVtbl
11419 {
11420 BEGIN_INTERFACE
11421
11422 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11423 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11424 ID3D12ProtectedResourceSession * This,
11425 REFIID riid,
11426 _COM_Outptr_ void **ppvObject);
11427
11428 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11429 ULONG ( STDMETHODCALLTYPE *AddRef )(
11430 ID3D12ProtectedResourceSession * This);
11431
11432 DECLSPEC_XFGVIRT(IUnknown, Release)
11433 ULONG ( STDMETHODCALLTYPE *Release )(
11434 ID3D12ProtectedResourceSession * This);
11435
11436 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11437 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11438 ID3D12ProtectedResourceSession * This,
11439 _In_ REFGUID guid,
11440 _Inout_ UINT *pDataSize,
11441 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11442
11443 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11444 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11445 ID3D12ProtectedResourceSession * This,
11446 _In_ REFGUID guid,
11447 _In_ UINT DataSize,
11448 _In_reads_bytes_opt_( DataSize ) const void *pData);
11449
11450 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11451 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11452 ID3D12ProtectedResourceSession * This,
11453 _In_ REFGUID guid,
11454 _In_opt_ const IUnknown *pData);
11455
11456 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11457 HRESULT ( STDMETHODCALLTYPE *SetName )(
11458 ID3D12ProtectedResourceSession * This,
11459 _In_z_ LPCWSTR Name);
11460
11461 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
11462 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
11463 ID3D12ProtectedResourceSession * This,
11464 REFIID riid,
11465 _COM_Outptr_opt_ void **ppvDevice);
11466
11467 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
11468 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
11469 ID3D12ProtectedResourceSession * This,
11470 REFIID riid,
11471 _COM_Outptr_opt_ void **ppFence);
11472
11473 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
11474 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
11475 ID3D12ProtectedResourceSession * This);
11476
11477 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
11478 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
11479 ID3D12ProtectedResourceSession * This,
11480 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
11481
11482 END_INTERFACE
11483 } ID3D12ProtectedResourceSessionVtbl;
11484
11485 interface ID3D12ProtectedResourceSession
11486 {
11487 CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
11488 };
11489
11490
11491
11492#ifdef COBJMACROS
11493
11494
11495#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
11496 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11497
11498#define ID3D12ProtectedResourceSession_AddRef(This) \
11499 ( (This)->lpVtbl -> AddRef(This) )
11500
11501#define ID3D12ProtectedResourceSession_Release(This) \
11502 ( (This)->lpVtbl -> Release(This) )
11503
11504
11505#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
11506 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11507
11508#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
11509 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11510
11511#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
11512 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11513
11514#define ID3D12ProtectedResourceSession_SetName(This,Name) \
11515 ( (This)->lpVtbl -> SetName(This,Name) )
11516
11517
11518#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
11519 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
11520
11521
11522#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
11523 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
11524
11525#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
11526 ( (This)->lpVtbl -> GetSessionStatus(This) )
11527
11528
11529#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
11530 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
11531
11532#endif /* COBJMACROS */
11533
11534
11535#endif /* C style interface */
11536
11537
11538
11539
11540#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
11541
11542
11543#ifndef __ID3D12Device4_INTERFACE_DEFINED__
11544#define __ID3D12Device4_INTERFACE_DEFINED__
11545
11546/* interface ID3D12Device4 */
11547/* [unique][local][object][uuid] */
11548
11549
11550EXTERN_C const IID IID_ID3D12Device4;
11551
11552#if defined(__cplusplus) && !defined(CINTERFACE)
11553
11554 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
11555 ID3D12Device4 : public ID3D12Device3
11556 {
11557 public:
11558 virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
11559 _In_ UINT nodeMask,
11560 _In_ D3D12_COMMAND_LIST_TYPE type,
11561 _In_ D3D12_COMMAND_LIST_FLAGS flags,
11562 REFIID riid,
11563 _COM_Outptr_ void **ppCommandList) = 0;
11564
11565 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
11566 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
11567 _In_ REFIID riid,
11568 _COM_Outptr_ void **ppSession) = 0;
11569
11570 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
11571 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11572 D3D12_HEAP_FLAGS HeapFlags,
11573 _In_ const D3D12_RESOURCE_DESC *pDesc,
11574 D3D12_RESOURCE_STATES InitialResourceState,
11575 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11576 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11577 REFIID riidResource,
11578 _COM_Outptr_opt_ void **ppvResource) = 0;
11579
11580 virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
11581 _In_ const D3D12_HEAP_DESC *pDesc,
11582 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11583 REFIID riid,
11584 _COM_Outptr_opt_ void **ppvHeap) = 0;
11585
11586 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
11587 _In_ const D3D12_RESOURCE_DESC *pDesc,
11588 D3D12_RESOURCE_STATES InitialState,
11589 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11590 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
11591 REFIID riid,
11592 _COM_Outptr_opt_ void **ppvResource) = 0;
11593
11594 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
11595 UINT visibleMask,
11596 UINT numResourceDescs,
11597 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
11598 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
11599
11600 };
11601
11602
11603#else /* C style interface */
11604
11605 typedef struct ID3D12Device4Vtbl
11606 {
11607 BEGIN_INTERFACE
11608
11609 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11610 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11611 ID3D12Device4 * This,
11612 REFIID riid,
11613 _COM_Outptr_ void **ppvObject);
11614
11615 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11616 ULONG ( STDMETHODCALLTYPE *AddRef )(
11617 ID3D12Device4 * This);
11618
11619 DECLSPEC_XFGVIRT(IUnknown, Release)
11620 ULONG ( STDMETHODCALLTYPE *Release )(
11621 ID3D12Device4 * This);
11622
11623 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11624 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11625 ID3D12Device4 * This,
11626 _In_ REFGUID guid,
11627 _Inout_ UINT *pDataSize,
11628 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11629
11630 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11631 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11632 ID3D12Device4 * This,
11633 _In_ REFGUID guid,
11634 _In_ UINT DataSize,
11635 _In_reads_bytes_opt_( DataSize ) const void *pData);
11636
11637 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11638 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11639 ID3D12Device4 * This,
11640 _In_ REFGUID guid,
11641 _In_opt_ const IUnknown *pData);
11642
11643 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11644 HRESULT ( STDMETHODCALLTYPE *SetName )(
11645 ID3D12Device4 * This,
11646 _In_z_ LPCWSTR Name);
11647
11648 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11649 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11650 ID3D12Device4 * This);
11651
11652 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11653 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11654 ID3D12Device4 * This,
11655 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11656 REFIID riid,
11657 _COM_Outptr_ void **ppCommandQueue);
11658
11659 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11660 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11661 ID3D12Device4 * This,
11662 _In_ D3D12_COMMAND_LIST_TYPE type,
11663 REFIID riid,
11664 _COM_Outptr_ void **ppCommandAllocator);
11665
11666 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11667 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11668 ID3D12Device4 * This,
11669 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11670 REFIID riid,
11671 _COM_Outptr_ void **ppPipelineState);
11672
11673 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
11674 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
11675 ID3D12Device4 * This,
11676 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
11677 REFIID riid,
11678 _COM_Outptr_ void **ppPipelineState);
11679
11680 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
11681 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
11682 ID3D12Device4 * This,
11683 _In_ UINT nodeMask,
11684 _In_ D3D12_COMMAND_LIST_TYPE type,
11685 _In_ ID3D12CommandAllocator *pCommandAllocator,
11686 _In_opt_ ID3D12PipelineState *pInitialState,
11687 REFIID riid,
11688 _COM_Outptr_ void **ppCommandList);
11689
11690 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
11691 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
11692 ID3D12Device4 * This,
11693 D3D12_FEATURE Feature,
11694 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
11695 UINT FeatureSupportDataSize);
11696
11697 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
11698 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
11699 ID3D12Device4 * This,
11700 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
11701 REFIID riid,
11702 _COM_Outptr_ void **ppvHeap);
11703
11704 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
11705 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
11706 ID3D12Device4 * This,
11707 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
11708
11709 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
11710 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
11711 ID3D12Device4 * This,
11712 _In_ UINT nodeMask,
11713 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
11714 _In_ SIZE_T blobLengthInBytes,
11715 REFIID riid,
11716 _COM_Outptr_ void **ppvRootSignature);
11717
11718 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
11719 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
11720 ID3D12Device4 * This,
11721 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
11722 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11723
11724 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
11725 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
11726 ID3D12Device4 * This,
11727 _In_opt_ ID3D12Resource *pResource,
11728 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
11729 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11730
11731 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
11732 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
11733 ID3D12Device4 * This,
11734 _In_opt_ ID3D12Resource *pResource,
11735 _In_opt_ ID3D12Resource *pCounterResource,
11736 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
11737 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11738
11739 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
11740 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
11741 ID3D12Device4 * This,
11742 _In_opt_ ID3D12Resource *pResource,
11743 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
11744 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11745
11746 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
11747 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
11748 ID3D12Device4 * This,
11749 _In_opt_ ID3D12Resource *pResource,
11750 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
11751 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11752
11753 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
11754 void ( STDMETHODCALLTYPE *CreateSampler )(
11755 ID3D12Device4 * This,
11756 _In_ const D3D12_SAMPLER_DESC *pDesc,
11757 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11758
11759 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
11760 void ( STDMETHODCALLTYPE *CopyDescriptors )(
11761 ID3D12Device4 * This,
11762 _In_ UINT NumDestDescriptorRanges,
11763 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
11764 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
11765 _In_ UINT NumSrcDescriptorRanges,
11766 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
11767 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
11768 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11769
11770 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
11771 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
11772 ID3D12Device4 * This,
11773 _In_ UINT NumDescriptors,
11774 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
11775 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
11776 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11777
11778 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
11779 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11780 ID3D12Device4 * This,
11781 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
11782 _In_ UINT visibleMask,
11783 _In_ UINT numResourceDescs,
11784 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11785
11786 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
11787 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11788 ID3D12Device4 * This,
11789 D3D12_HEAP_PROPERTIES * RetVal,
11790 _In_ UINT nodeMask,
11791 D3D12_HEAP_TYPE heapType);
11792
11793 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
11794 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
11795 ID3D12Device4 * This,
11796 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11797 D3D12_HEAP_FLAGS HeapFlags,
11798 _In_ const D3D12_RESOURCE_DESC *pDesc,
11799 D3D12_RESOURCE_STATES InitialResourceState,
11800 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11801 REFIID riidResource,
11802 _COM_Outptr_opt_ void **ppvResource);
11803
11804 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
11805 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
11806 ID3D12Device4 * This,
11807 _In_ const D3D12_HEAP_DESC *pDesc,
11808 REFIID riid,
11809 _COM_Outptr_opt_ void **ppvHeap);
11810
11811 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
11812 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
11813 ID3D12Device4 * This,
11814 _In_ ID3D12Heap *pHeap,
11815 UINT64 HeapOffset,
11816 _In_ const D3D12_RESOURCE_DESC *pDesc,
11817 D3D12_RESOURCE_STATES InitialState,
11818 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11819 REFIID riid,
11820 _COM_Outptr_opt_ void **ppvResource);
11821
11822 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
11823 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
11824 ID3D12Device4 * This,
11825 _In_ const D3D12_RESOURCE_DESC *pDesc,
11826 D3D12_RESOURCE_STATES InitialState,
11827 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11828 REFIID riid,
11829 _COM_Outptr_opt_ void **ppvResource);
11830
11831 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
11832 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
11833 ID3D12Device4 * This,
11834 _In_ ID3D12DeviceChild *pObject,
11835 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
11836 DWORD Access,
11837 _In_opt_ LPCWSTR Name,
11838 _Out_ HANDLE *pHandle);
11839
11840 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
11841 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
11842 ID3D12Device4 * This,
11843 _In_ HANDLE NTHandle,
11844 REFIID riid,
11845 _COM_Outptr_opt_ void **ppvObj);
11846
11847 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11848 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11849 ID3D12Device4 * This,
11850 _In_ LPCWSTR Name,
11851 DWORD Access,
11852 /* [annotation][out] */
11853 _Out_ HANDLE *pNTHandle);
11854
11855 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11856 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11857 ID3D12Device4 * This,
11858 UINT NumObjects,
11859 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11860
11861 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11862 HRESULT ( STDMETHODCALLTYPE *Evict )(
11863 ID3D12Device4 * This,
11864 UINT NumObjects,
11865 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11866
11867 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11868 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11869 ID3D12Device4 * This,
11870 UINT64 InitialValue,
11871 D3D12_FENCE_FLAGS Flags,
11872 REFIID riid,
11873 _COM_Outptr_ void **ppFence);
11874
11875 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11876 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11877 ID3D12Device4 * This);
11878
11879 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11880 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11881 ID3D12Device4 * This,
11882 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11883 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11884 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11885 UINT64 BaseOffset,
11886 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11887 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11888 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11889 _Out_opt_ UINT64 *pTotalBytes);
11890
11891 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11892 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11893 ID3D12Device4 * This,
11894 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11895 REFIID riid,
11896 _COM_Outptr_opt_ void **ppvHeap);
11897
11898 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11899 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11900 ID3D12Device4 * This,
11901 BOOL Enable);
11902
11903 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11904 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11905 ID3D12Device4 * This,
11906 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11907 _In_opt_ ID3D12RootSignature *pRootSignature,
11908 REFIID riid,
11909 _COM_Outptr_opt_ void **ppvCommandSignature);
11910
11911 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11912 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11913 ID3D12Device4 * This,
11914 _In_ ID3D12Resource *pTiledResource,
11915 _Out_opt_ UINT *pNumTilesForEntireResource,
11916 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11917 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11918 _Inout_opt_ UINT *pNumSubresourceTilings,
11919 _In_ UINT FirstSubresourceTilingToGet,
11920 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11921
11922 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11923 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11924 ID3D12Device4 * This,
11925 LUID * RetVal);
11926
11927 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11928 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11929 ID3D12Device4 * This,
11930 _In_reads_(BlobLength) const void *pLibraryBlob,
11931 SIZE_T BlobLength,
11932 REFIID riid,
11933 _COM_Outptr_ void **ppPipelineLibrary);
11934
11935 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11936 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11937 ID3D12Device4 * This,
11938 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11939 _In_reads_(NumFences) const UINT64 *pFenceValues,
11940 UINT NumFences,
11941 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11942 HANDLE hEvent);
11943
11944 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11945 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11946 ID3D12Device4 * This,
11947 UINT NumObjects,
11948 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11949 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11950
11951 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
11952 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
11953 ID3D12Device4 * This,
11954 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11955 REFIID riid,
11956 _COM_Outptr_ void **ppPipelineState);
11957
11958 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
11959 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
11960 ID3D12Device4 * This,
11961 _In_ const void *pAddress,
11962 REFIID riid,
11963 _COM_Outptr_ void **ppvHeap);
11964
11965 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
11966 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
11967 ID3D12Device4 * This,
11968 _In_ HANDLE hFileMapping,
11969 REFIID riid,
11970 _COM_Outptr_ void **ppvHeap);
11971
11972 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
11973 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
11974 ID3D12Device4 * This,
11975 D3D12_RESIDENCY_FLAGS Flags,
11976 UINT NumObjects,
11977 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11978 _In_ ID3D12Fence *pFenceToSignal,
11979 UINT64 FenceValueToSignal);
11980
11981 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
11982 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
11983 ID3D12Device4 * This,
11984 _In_ UINT nodeMask,
11985 _In_ D3D12_COMMAND_LIST_TYPE type,
11986 _In_ D3D12_COMMAND_LIST_FLAGS flags,
11987 REFIID riid,
11988 _COM_Outptr_ void **ppCommandList);
11989
11990 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
11991 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
11992 ID3D12Device4 * This,
11993 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
11994 _In_ REFIID riid,
11995 _COM_Outptr_ void **ppSession);
11996
11997 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
11998 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
11999 ID3D12Device4 * This,
12000 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12001 D3D12_HEAP_FLAGS HeapFlags,
12002 _In_ const D3D12_RESOURCE_DESC *pDesc,
12003 D3D12_RESOURCE_STATES InitialResourceState,
12004 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12005 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12006 REFIID riidResource,
12007 _COM_Outptr_opt_ void **ppvResource);
12008
12009 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
12010 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
12011 ID3D12Device4 * This,
12012 _In_ const D3D12_HEAP_DESC *pDesc,
12013 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12014 REFIID riid,
12015 _COM_Outptr_opt_ void **ppvHeap);
12016
12017 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
12018 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
12019 ID3D12Device4 * This,
12020 _In_ const D3D12_RESOURCE_DESC *pDesc,
12021 D3D12_RESOURCE_STATES InitialState,
12022 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12023 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12024 REFIID riid,
12025 _COM_Outptr_opt_ void **ppvResource);
12026
12027 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
12028 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
12029 ID3D12Device4 * This,
12030 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12031 UINT visibleMask,
12032 UINT numResourceDescs,
12033 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12034 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
12035
12036 END_INTERFACE
12037 } ID3D12Device4Vtbl;
12038
12039 interface ID3D12Device4
12040 {
12041 CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
12042 };
12043
12044
12045
12046#ifdef COBJMACROS
12047
12048
12049#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
12050 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12051
12052#define ID3D12Device4_AddRef(This) \
12053 ( (This)->lpVtbl -> AddRef(This) )
12054
12055#define ID3D12Device4_Release(This) \
12056 ( (This)->lpVtbl -> Release(This) )
12057
12058
12059#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
12060 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12061
12062#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
12063 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12064
12065#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
12066 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12067
12068#define ID3D12Device4_SetName(This,Name) \
12069 ( (This)->lpVtbl -> SetName(This,Name) )
12070
12071
12072#define ID3D12Device4_GetNodeCount(This) \
12073 ( (This)->lpVtbl -> GetNodeCount(This) )
12074
12075#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
12076 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
12077
12078#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
12079 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
12080
12081#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
12082 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
12083
12084#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
12085 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
12086
12087#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
12088 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
12089
12090#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
12091 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
12092
12093#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
12094 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
12095
12096#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
12097 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
12098
12099#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
12100 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
12101
12102#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
12103 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
12104
12105#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
12106 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
12107
12108#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
12109 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
12110
12111#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
12112 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
12113
12114#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
12115 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
12116
12117#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
12118 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
12119
12120#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
12121 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
12122
12123#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
12124 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
12125
12126#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
12127 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
12128
12129#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
12130 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
12131
12132#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
12133 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
12134
12135#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
12136 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
12137
12138#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12139 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12140
12141#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12142 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12143
12144#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
12145 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
12146
12147#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
12148 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
12149
12150#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
12151 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
12152
12153#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
12154 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
12155
12156#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
12157 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
12158
12159#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
12160 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
12161
12162#define ID3D12Device4_GetDeviceRemovedReason(This) \
12163 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
12164
12165#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
12166 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
12167
12168#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
12169 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
12170
12171#define ID3D12Device4_SetStablePowerState(This,Enable) \
12172 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
12173
12174#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
12175 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
12176
12177#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
12178 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
12179
12180#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
12181 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
12182
12183
12184#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
12185 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
12186
12187#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
12188 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
12189
12190#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
12191 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
12192
12193
12194#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
12195 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
12196
12197
12198#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
12199 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
12200
12201#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
12202 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
12203
12204#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
12205 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
12206
12207
12208#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
12209 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
12210
12211#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
12212 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
12213
12214#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
12215 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
12216
12217#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
12218 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
12219
12220#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
12221 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
12222
12223#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
12224 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
12225
12226#endif /* COBJMACROS */
12227
12228
12229#endif /* C style interface */
12230
12231
12232
12233
12234#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
12235
12236
12237/* interface __MIDL_itf_d3d12_0000_0029 */
12238/* [local] */
12239
12240typedef
12241enum D3D12_LIFETIME_STATE
12242 {
12243 D3D12_LIFETIME_STATE_IN_USE = 0,
12244 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
12245 } D3D12_LIFETIME_STATE;
12246
12247
12248
12249
12250extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
12251extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
12252
12253#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
12254#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
12255
12256/* interface ID3D12LifetimeOwner */
12257/* [unique][local][object][uuid] */
12258
12259
12260EXTERN_C const IID IID_ID3D12LifetimeOwner;
12261
12262#if defined(__cplusplus) && !defined(CINTERFACE)
12263
12264 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
12265 ID3D12LifetimeOwner : public IUnknown
12266 {
12267 public:
12268 virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
12269 D3D12_LIFETIME_STATE NewState) = 0;
12270
12271 };
12272
12273
12274#else /* C style interface */
12275
12276 typedef struct ID3D12LifetimeOwnerVtbl
12277 {
12278 BEGIN_INTERFACE
12279
12280 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12281 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12282 ID3D12LifetimeOwner * This,
12283 REFIID riid,
12284 _COM_Outptr_ void **ppvObject);
12285
12286 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12287 ULONG ( STDMETHODCALLTYPE *AddRef )(
12288 ID3D12LifetimeOwner * This);
12289
12290 DECLSPEC_XFGVIRT(IUnknown, Release)
12291 ULONG ( STDMETHODCALLTYPE *Release )(
12292 ID3D12LifetimeOwner * This);
12293
12294 DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
12295 void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
12296 ID3D12LifetimeOwner * This,
12297 D3D12_LIFETIME_STATE NewState);
12298
12299 END_INTERFACE
12300 } ID3D12LifetimeOwnerVtbl;
12301
12302 interface ID3D12LifetimeOwner
12303 {
12304 CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
12305 };
12306
12307
12308
12309#ifdef COBJMACROS
12310
12311
12312#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
12313 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12314
12315#define ID3D12LifetimeOwner_AddRef(This) \
12316 ( (This)->lpVtbl -> AddRef(This) )
12317
12318#define ID3D12LifetimeOwner_Release(This) \
12319 ( (This)->lpVtbl -> Release(This) )
12320
12321
12322#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
12323 ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
12324
12325#endif /* COBJMACROS */
12326
12327
12328#endif /* C style interface */
12329
12330
12331
12332
12333#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
12334
12335
12336#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
12337#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
12338
12339/* interface ID3D12SwapChainAssistant */
12340/* [unique][local][object][uuid] */
12341
12342
12343EXTERN_C const IID IID_ID3D12SwapChainAssistant;
12344
12345#if defined(__cplusplus) && !defined(CINTERFACE)
12346
12347 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
12348 ID3D12SwapChainAssistant : public IUnknown
12349 {
12350 public:
12351 virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
12352
12353 virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
12354 REFIID riid,
12355 _COM_Outptr_ void **ppv) = 0;
12356
12357 virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
12358 REFIID riidResource,
12359 _COM_Outptr_ void **ppvResource,
12360 REFIID riidQueue,
12361 _COM_Outptr_ void **ppvQueue) = 0;
12362
12363 virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
12364
12365 };
12366
12367
12368#else /* C style interface */
12369
12370 typedef struct ID3D12SwapChainAssistantVtbl
12371 {
12372 BEGIN_INTERFACE
12373
12374 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12375 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12376 ID3D12SwapChainAssistant * This,
12377 REFIID riid,
12378 _COM_Outptr_ void **ppvObject);
12379
12380 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12381 ULONG ( STDMETHODCALLTYPE *AddRef )(
12382 ID3D12SwapChainAssistant * This);
12383
12384 DECLSPEC_XFGVIRT(IUnknown, Release)
12385 ULONG ( STDMETHODCALLTYPE *Release )(
12386 ID3D12SwapChainAssistant * This);
12387
12388 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
12389 LUID *( STDMETHODCALLTYPE *GetLUID )(
12390 ID3D12SwapChainAssistant * This,
12391 LUID * RetVal);
12392
12393 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
12394 HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
12395 ID3D12SwapChainAssistant * This,
12396 REFIID riid,
12397 _COM_Outptr_ void **ppv);
12398
12399 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
12400 HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
12401 ID3D12SwapChainAssistant * This,
12402 REFIID riidResource,
12403 _COM_Outptr_ void **ppvResource,
12404 REFIID riidQueue,
12405 _COM_Outptr_ void **ppvQueue);
12406
12407 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
12408 HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
12409 ID3D12SwapChainAssistant * This);
12410
12411 END_INTERFACE
12412 } ID3D12SwapChainAssistantVtbl;
12413
12414 interface ID3D12SwapChainAssistant
12415 {
12416 CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
12417 };
12418
12419
12420
12421#ifdef COBJMACROS
12422
12423
12424#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
12425 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12426
12427#define ID3D12SwapChainAssistant_AddRef(This) \
12428 ( (This)->lpVtbl -> AddRef(This) )
12429
12430#define ID3D12SwapChainAssistant_Release(This) \
12431 ( (This)->lpVtbl -> Release(This) )
12432
12433
12434#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
12435 ( (This)->lpVtbl -> GetLUID(This,RetVal) )
12436
12437#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
12438 ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
12439
12440#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
12441 ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
12442
12443#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
12444 ( (This)->lpVtbl -> InsertImplicitSync(This) )
12445
12446#endif /* COBJMACROS */
12447
12448
12449#endif /* C style interface */
12450
12451
12452
12453
12454#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
12455
12456
12457#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
12458#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
12459
12460/* interface ID3D12LifetimeTracker */
12461/* [unique][local][object][uuid] */
12462
12463
12464EXTERN_C const IID IID_ID3D12LifetimeTracker;
12465
12466#if defined(__cplusplus) && !defined(CINTERFACE)
12467
12468 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
12469 ID3D12LifetimeTracker : public ID3D12DeviceChild
12470 {
12471 public:
12472 virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
12473 _In_ ID3D12DeviceChild *pObject) = 0;
12474
12475 };
12476
12477
12478#else /* C style interface */
12479
12480 typedef struct ID3D12LifetimeTrackerVtbl
12481 {
12482 BEGIN_INTERFACE
12483
12484 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12485 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12486 ID3D12LifetimeTracker * This,
12487 REFIID riid,
12488 _COM_Outptr_ void **ppvObject);
12489
12490 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12491 ULONG ( STDMETHODCALLTYPE *AddRef )(
12492 ID3D12LifetimeTracker * This);
12493
12494 DECLSPEC_XFGVIRT(IUnknown, Release)
12495 ULONG ( STDMETHODCALLTYPE *Release )(
12496 ID3D12LifetimeTracker * This);
12497
12498 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12499 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12500 ID3D12LifetimeTracker * This,
12501 _In_ REFGUID guid,
12502 _Inout_ UINT *pDataSize,
12503 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12504
12505 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12506 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12507 ID3D12LifetimeTracker * This,
12508 _In_ REFGUID guid,
12509 _In_ UINT DataSize,
12510 _In_reads_bytes_opt_( DataSize ) const void *pData);
12511
12512 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12513 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12514 ID3D12LifetimeTracker * This,
12515 _In_ REFGUID guid,
12516 _In_opt_ const IUnknown *pData);
12517
12518 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12519 HRESULT ( STDMETHODCALLTYPE *SetName )(
12520 ID3D12LifetimeTracker * This,
12521 _In_z_ LPCWSTR Name);
12522
12523 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12524 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12525 ID3D12LifetimeTracker * This,
12526 REFIID riid,
12527 _COM_Outptr_opt_ void **ppvDevice);
12528
12529 DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
12530 HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
12531 ID3D12LifetimeTracker * This,
12532 _In_ ID3D12DeviceChild *pObject);
12533
12534 END_INTERFACE
12535 } ID3D12LifetimeTrackerVtbl;
12536
12537 interface ID3D12LifetimeTracker
12538 {
12539 CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
12540 };
12541
12542
12543
12544#ifdef COBJMACROS
12545
12546
12547#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
12548 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12549
12550#define ID3D12LifetimeTracker_AddRef(This) \
12551 ( (This)->lpVtbl -> AddRef(This) )
12552
12553#define ID3D12LifetimeTracker_Release(This) \
12554 ( (This)->lpVtbl -> Release(This) )
12555
12556
12557#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
12558 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12559
12560#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
12561 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12562
12563#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
12564 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12565
12566#define ID3D12LifetimeTracker_SetName(This,Name) \
12567 ( (This)->lpVtbl -> SetName(This,Name) )
12568
12569
12570#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
12571 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12572
12573
12574#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
12575 ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
12576
12577#endif /* COBJMACROS */
12578
12579
12580#endif /* C style interface */
12581
12582
12583
12584
12585#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
12586
12587
12588/* interface __MIDL_itf_d3d12_0000_0032 */
12589/* [local] */
12590
12591typedef
12592enum D3D12_META_COMMAND_PARAMETER_TYPE
12593 {
12594 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
12595 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
12596 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
12597 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
12598 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
12599 } D3D12_META_COMMAND_PARAMETER_TYPE;
12600
12601typedef
12602enum D3D12_META_COMMAND_PARAMETER_FLAGS
12603 {
12604 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
12605 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
12606 } D3D12_META_COMMAND_PARAMETER_FLAGS;
12607
12608DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS );
12609typedef
12610enum D3D12_META_COMMAND_PARAMETER_STAGE
12611 {
12612 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
12613 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
12614 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
12615 } D3D12_META_COMMAND_PARAMETER_STAGE;
12616
12617typedef struct D3D12_META_COMMAND_PARAMETER_DESC
12618 {
12619 LPCWSTR Name;
12620 D3D12_META_COMMAND_PARAMETER_TYPE Type;
12621 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
12622 D3D12_RESOURCE_STATES RequiredResourceState;
12623 UINT StructureOffset;
12624 } D3D12_META_COMMAND_PARAMETER_DESC;
12625
12626typedef
12627enum D3D12_GRAPHICS_STATES
12628 {
12629 D3D12_GRAPHICS_STATE_NONE = 0,
12630 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
12631 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
12632 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
12633 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
12634 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
12635 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
12636 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
12637 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
12638 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
12639 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
12640 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
12641 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
12642 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
12643 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
12644 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
12645 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
12646 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
12647 } D3D12_GRAPHICS_STATES;
12648
12649DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES );
12650typedef struct D3D12_META_COMMAND_DESC
12651 {
12652 GUID Id;
12653 LPCWSTR Name;
12654 D3D12_GRAPHICS_STATES InitializationDirtyState;
12655 D3D12_GRAPHICS_STATES ExecutionDirtyState;
12656 } D3D12_META_COMMAND_DESC;
12657
12658
12659
12660extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_c_ifspec;
12661extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_s_ifspec;
12662
12663#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
12664#define __ID3D12StateObject_INTERFACE_DEFINED__
12665
12666/* interface ID3D12StateObject */
12667/* [unique][local][object][uuid] */
12668
12669
12670EXTERN_C const IID IID_ID3D12StateObject;
12671
12672#if defined(__cplusplus) && !defined(CINTERFACE)
12673
12674 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
12675 ID3D12StateObject : public ID3D12Pageable
12676 {
12677 public:
12678 };
12679
12680
12681#else /* C style interface */
12682
12683 typedef struct ID3D12StateObjectVtbl
12684 {
12685 BEGIN_INTERFACE
12686
12687 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12688 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12689 ID3D12StateObject * This,
12690 REFIID riid,
12691 _COM_Outptr_ void **ppvObject);
12692
12693 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12694 ULONG ( STDMETHODCALLTYPE *AddRef )(
12695 ID3D12StateObject * This);
12696
12697 DECLSPEC_XFGVIRT(IUnknown, Release)
12698 ULONG ( STDMETHODCALLTYPE *Release )(
12699 ID3D12StateObject * This);
12700
12701 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12702 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12703 ID3D12StateObject * This,
12704 _In_ REFGUID guid,
12705 _Inout_ UINT *pDataSize,
12706 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12707
12708 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12709 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12710 ID3D12StateObject * This,
12711 _In_ REFGUID guid,
12712 _In_ UINT DataSize,
12713 _In_reads_bytes_opt_( DataSize ) const void *pData);
12714
12715 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12716 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12717 ID3D12StateObject * This,
12718 _In_ REFGUID guid,
12719 _In_opt_ const IUnknown *pData);
12720
12721 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12722 HRESULT ( STDMETHODCALLTYPE *SetName )(
12723 ID3D12StateObject * This,
12724 _In_z_ LPCWSTR Name);
12725
12726 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12727 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12728 ID3D12StateObject * This,
12729 REFIID riid,
12730 _COM_Outptr_opt_ void **ppvDevice);
12731
12732 END_INTERFACE
12733 } ID3D12StateObjectVtbl;
12734
12735 interface ID3D12StateObject
12736 {
12737 CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
12738 };
12739
12740
12741
12742#ifdef COBJMACROS
12743
12744
12745#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
12746 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12747
12748#define ID3D12StateObject_AddRef(This) \
12749 ( (This)->lpVtbl -> AddRef(This) )
12750
12751#define ID3D12StateObject_Release(This) \
12752 ( (This)->lpVtbl -> Release(This) )
12753
12754
12755#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
12756 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12757
12758#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
12759 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12760
12761#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
12762 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12763
12764#define ID3D12StateObject_SetName(This,Name) \
12765 ( (This)->lpVtbl -> SetName(This,Name) )
12766
12767
12768#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
12769 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12770
12771
12772
12773#endif /* COBJMACROS */
12774
12775
12776#endif /* C style interface */
12777
12778
12779
12780
12781#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
12782
12783
12784#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
12785#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
12786
12787/* interface ID3D12StateObjectProperties */
12788/* [unique][local][object][uuid] */
12789
12790
12791EXTERN_C const IID IID_ID3D12StateObjectProperties;
12792
12793#if defined(__cplusplus) && !defined(CINTERFACE)
12794
12795 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
12796 ID3D12StateObjectProperties : public IUnknown
12797 {
12798 public:
12799 virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
12800 _In_ LPCWSTR pExportName) = 0;
12801
12802 virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
12803 _In_ LPCWSTR pExportName) = 0;
12804
12805 virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
12806
12807 virtual void STDMETHODCALLTYPE SetPipelineStackSize(
12808 UINT64 PipelineStackSizeInBytes) = 0;
12809
12810 };
12811
12812
12813#else /* C style interface */
12814
12815 typedef struct ID3D12StateObjectPropertiesVtbl
12816 {
12817 BEGIN_INTERFACE
12818
12819 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12820 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12821 ID3D12StateObjectProperties * This,
12822 REFIID riid,
12823 _COM_Outptr_ void **ppvObject);
12824
12825 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12826 ULONG ( STDMETHODCALLTYPE *AddRef )(
12827 ID3D12StateObjectProperties * This);
12828
12829 DECLSPEC_XFGVIRT(IUnknown, Release)
12830 ULONG ( STDMETHODCALLTYPE *Release )(
12831 ID3D12StateObjectProperties * This);
12832
12833 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
12834 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
12835 ID3D12StateObjectProperties * This,
12836 _In_ LPCWSTR pExportName);
12837
12838 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
12839 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
12840 ID3D12StateObjectProperties * This,
12841 _In_ LPCWSTR pExportName);
12842
12843 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
12844 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
12845 ID3D12StateObjectProperties * This);
12846
12847 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
12848 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
12849 ID3D12StateObjectProperties * This,
12850 UINT64 PipelineStackSizeInBytes);
12851
12852 END_INTERFACE
12853 } ID3D12StateObjectPropertiesVtbl;
12854
12855 interface ID3D12StateObjectProperties
12856 {
12857 CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
12858 };
12859
12860
12861
12862#ifdef COBJMACROS
12863
12864
12865#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
12866 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12867
12868#define ID3D12StateObjectProperties_AddRef(This) \
12869 ( (This)->lpVtbl -> AddRef(This) )
12870
12871#define ID3D12StateObjectProperties_Release(This) \
12872 ( (This)->lpVtbl -> Release(This) )
12873
12874
12875#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
12876 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
12877
12878#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
12879 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
12880
12881#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
12882 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
12883
12884#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
12885 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
12886
12887#endif /* COBJMACROS */
12888
12889
12890#endif /* C style interface */
12891
12892
12893
12894
12895#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
12896
12897
12898/* interface __MIDL_itf_d3d12_0000_0034 */
12899/* [local] */
12900
12901typedef
12902enum D3D12_STATE_SUBOBJECT_TYPE
12903 {
12904 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
12905 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
12906 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
12907 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
12908 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
12909 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
12910 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
12911 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
12912 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
12913 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
12914 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
12915 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
12916 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 + 1 )
12917 } D3D12_STATE_SUBOBJECT_TYPE;
12918
12919typedef struct D3D12_STATE_SUBOBJECT
12920 {
12921 D3D12_STATE_SUBOBJECT_TYPE Type;
12922 const void *pDesc;
12923 } D3D12_STATE_SUBOBJECT;
12924
12925typedef
12926enum D3D12_STATE_OBJECT_FLAGS
12927 {
12928 D3D12_STATE_OBJECT_FLAG_NONE = 0,
12929 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
12930 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
12931 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
12932 } D3D12_STATE_OBJECT_FLAGS;
12933
12934DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS );
12935typedef struct D3D12_STATE_OBJECT_CONFIG
12936 {
12937 D3D12_STATE_OBJECT_FLAGS Flags;
12938 } D3D12_STATE_OBJECT_CONFIG;
12939
12940typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
12941 {
12942 ID3D12RootSignature *pGlobalRootSignature;
12943 } D3D12_GLOBAL_ROOT_SIGNATURE;
12944
12945typedef struct D3D12_LOCAL_ROOT_SIGNATURE
12946 {
12947 ID3D12RootSignature *pLocalRootSignature;
12948 } D3D12_LOCAL_ROOT_SIGNATURE;
12949
12950typedef struct D3D12_NODE_MASK
12951 {
12952 UINT NodeMask;
12953 } D3D12_NODE_MASK;
12954
12955typedef
12956enum D3D12_EXPORT_FLAGS
12957 {
12958 D3D12_EXPORT_FLAG_NONE = 0
12959 } D3D12_EXPORT_FLAGS;
12960
12961DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS );
12962typedef struct D3D12_EXPORT_DESC
12963 {
12964 LPCWSTR Name;
12965 _In_opt_ LPCWSTR ExportToRename;
12966 D3D12_EXPORT_FLAGS Flags;
12967 } D3D12_EXPORT_DESC;
12968
12969typedef struct D3D12_DXIL_LIBRARY_DESC
12970 {
12971 D3D12_SHADER_BYTECODE DXILLibrary;
12972 UINT NumExports;
12973 _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports;
12974 } D3D12_DXIL_LIBRARY_DESC;
12975
12976typedef struct D3D12_EXISTING_COLLECTION_DESC
12977 {
12978 ID3D12StateObject *pExistingCollection;
12979 UINT NumExports;
12980 _In_reads_(NumExports) D3D12_EXPORT_DESC *pExports;
12981 } D3D12_EXISTING_COLLECTION_DESC;
12982
12983typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
12984 {
12985 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
12986 UINT NumExports;
12987 _In_reads_(NumExports) LPCWSTR *pExports;
12988 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
12989
12990typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
12991 {
12992 LPCWSTR SubobjectToAssociate;
12993 UINT NumExports;
12994 _In_reads_(NumExports) LPCWSTR *pExports;
12995 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
12996
12997typedef
12998enum D3D12_HIT_GROUP_TYPE
12999 {
13000 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
13001 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
13002 } D3D12_HIT_GROUP_TYPE;
13003
13004typedef struct D3D12_HIT_GROUP_DESC
13005 {
13006 LPCWSTR HitGroupExport;
13007 D3D12_HIT_GROUP_TYPE Type;
13008 _In_opt_ LPCWSTR AnyHitShaderImport;
13009 _In_opt_ LPCWSTR ClosestHitShaderImport;
13010 _In_opt_ LPCWSTR IntersectionShaderImport;
13011 } D3D12_HIT_GROUP_DESC;
13012
13013typedef struct D3D12_RAYTRACING_SHADER_CONFIG
13014 {
13015 UINT MaxPayloadSizeInBytes;
13016 UINT MaxAttributeSizeInBytes;
13017 } D3D12_RAYTRACING_SHADER_CONFIG;
13018
13019typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
13020 {
13021 UINT MaxTraceRecursionDepth;
13022 } D3D12_RAYTRACING_PIPELINE_CONFIG;
13023
13024typedef
13025enum D3D12_RAYTRACING_PIPELINE_FLAGS
13026 {
13027 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
13028 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
13029 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
13030 } D3D12_RAYTRACING_PIPELINE_FLAGS;
13031
13032DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS );
13033typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
13034 {
13035 UINT MaxTraceRecursionDepth;
13036 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
13037 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
13038
13039typedef
13040enum D3D12_STATE_OBJECT_TYPE
13041 {
13042 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
13043 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3
13044 } D3D12_STATE_OBJECT_TYPE;
13045
13046typedef struct D3D12_STATE_OBJECT_DESC
13047 {
13048 D3D12_STATE_OBJECT_TYPE Type;
13049 UINT NumSubobjects;
13050 _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
13051 } D3D12_STATE_OBJECT_DESC;
13052
13053typedef
13054enum D3D12_RAYTRACING_GEOMETRY_FLAGS
13055 {
13056 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
13057 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
13058 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
13059 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
13060
13061DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS );
13062typedef
13063enum D3D12_RAYTRACING_GEOMETRY_TYPE
13064 {
13065 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
13066 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 )
13067 } D3D12_RAYTRACING_GEOMETRY_TYPE;
13068
13069typedef
13070enum D3D12_RAYTRACING_INSTANCE_FLAGS
13071 {
13072 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
13073 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
13074 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
13075 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
13076 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
13077 } D3D12_RAYTRACING_INSTANCE_FLAGS;
13078
13079DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS );
13080typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
13081 {
13082 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13083 UINT64 StrideInBytes;
13084 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
13085
13086typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
13087 {
13088 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13089 UINT64 SizeInBytes;
13090 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
13091
13092typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
13093 {
13094 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
13095 UINT64 SizeInBytes;
13096 UINT64 StrideInBytes;
13097 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
13098
13099typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
13100 {
13101 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
13102 DXGI_FORMAT IndexFormat;
13103 DXGI_FORMAT VertexFormat;
13104 UINT IndexCount;
13105 UINT VertexCount;
13106 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
13107 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
13108 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
13109
13110typedef struct D3D12_RAYTRACING_AABB
13111 {
13112 FLOAT MinX;
13113 FLOAT MinY;
13114 FLOAT MinZ;
13115 FLOAT MaxX;
13116 FLOAT MaxY;
13117 FLOAT MaxZ;
13118 } D3D12_RAYTRACING_AABB;
13119
13120typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
13121 {
13122 UINT64 AABBCount;
13123 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
13124 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
13125
13126typedef
13127enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
13128 {
13129 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
13130 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
13131 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
13132 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
13133 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
13134 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
13135 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
13136 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
13137
13138DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS );
13139typedef
13140enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
13141 {
13142 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
13143 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
13144 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
13145 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
13146 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
13147 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
13148
13149typedef
13150enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
13151 {
13152 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
13153 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
13154 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
13155
13156typedef
13157enum D3D12_ELEMENTS_LAYOUT
13158 {
13159 D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
13160 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
13161 } D3D12_ELEMENTS_LAYOUT;
13162
13163typedef
13164enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
13165 {
13166 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
13167 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
13168 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
13169 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
13170 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
13171
13172typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
13173 {
13174 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
13175 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
13176 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
13177
13178typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
13179 {
13180 UINT64 CompactedSizeInBytes;
13181 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
13182
13183typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
13184 {
13185 UINT64 DecodedSizeInBytes;
13186 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
13187
13188typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
13189 {
13190 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
13191 UINT NumDescs;
13192 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
13193
13194// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
13195// depending on Type field, NumDescs above is followed by either:
13196// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
13197// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
13198// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
13199
13200typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
13201 {
13202 UINT64 SerializedSizeInBytes;
13203 UINT64 NumBottomLevelAccelerationStructurePointers;
13204 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
13205
13206typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
13207 {
13208 GUID DriverOpaqueGUID;
13209 BYTE DriverOpaqueVersioningData[ 16 ];
13210 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
13211
13212typedef
13213enum D3D12_SERIALIZED_DATA_TYPE
13214 {
13215 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0
13216 } D3D12_SERIALIZED_DATA_TYPE;
13217
13218typedef
13219enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
13220 {
13221 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
13222 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
13223 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
13224 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
13225 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
13226 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
13227
13228typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
13229 {
13230 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
13231 UINT64 SerializedSizeInBytesIncludingHeader;
13232 UINT64 DeserializedSizeInBytes;
13233 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
13234 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
13235
13236typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
13237 {
13238 UINT64 CurrentSizeInBytes;
13239 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
13240
13241typedef struct D3D12_RAYTRACING_INSTANCE_DESC
13242 {
13243 FLOAT Transform[ 3 ][ 4 ];
13244 UINT InstanceID : 24;
13245 UINT InstanceMask : 8;
13246 UINT InstanceContributionToHitGroupIndex : 24;
13247 UINT Flags : 8;
13248 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
13249 } D3D12_RAYTRACING_INSTANCE_DESC;
13250
13251typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
13252 {
13253 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
13254 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
13255 union
13256 {
13257 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
13258 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
13259 } ;
13260 } D3D12_RAYTRACING_GEOMETRY_DESC;
13261
13262typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
13263 {
13264 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
13265 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
13266 UINT NumDescs;
13267 D3D12_ELEMENTS_LAYOUT DescsLayout;
13268 union
13269 {
13270 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
13271 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
13272 const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
13273 } ;
13274 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
13275
13276typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
13277 {
13278 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
13279 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
13280 _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
13281 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
13282 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
13283
13284typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
13285 {
13286 UINT64 ResultDataMaxSizeInBytes;
13287 UINT64 ScratchDataSizeInBytes;
13288 UINT64 UpdateScratchDataSizeInBytes;
13289 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
13290
13291typedef
13292enum D3D12_RAY_FLAGS
13293 {
13294 D3D12_RAY_FLAG_NONE = 0,
13295 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
13296 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
13297 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
13298 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
13299 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
13300 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
13301 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
13302 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
13303 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
13304 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
13305 } D3D12_RAY_FLAGS;
13306
13307DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS );
13308typedef
13309enum D3D12_HIT_KIND
13310 {
13311 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
13312 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
13313 } D3D12_HIT_KIND;
13314
13315
13316
13317extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
13318extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
13319
13320#ifndef __ID3D12Device5_INTERFACE_DEFINED__
13321#define __ID3D12Device5_INTERFACE_DEFINED__
13322
13323/* interface ID3D12Device5 */
13324/* [unique][local][object][uuid] */
13325
13326
13327EXTERN_C const IID IID_ID3D12Device5;
13328
13329#if defined(__cplusplus) && !defined(CINTERFACE)
13330
13331 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
13332 ID3D12Device5 : public ID3D12Device4
13333 {
13334 public:
13335 virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
13336 _In_ ID3D12LifetimeOwner *pOwner,
13337 REFIID riid,
13338 _COM_Outptr_ void **ppvTracker) = 0;
13339
13340 virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
13341
13342 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
13343 _Inout_ UINT *pNumMetaCommands,
13344 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
13345
13346 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
13347 _In_ REFGUID CommandId,
13348 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
13349 _Out_opt_ UINT *pTotalStructureSizeInBytes,
13350 _Inout_ UINT *pParameterCount,
13351 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
13352
13353 virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
13354 _In_ REFGUID CommandId,
13355 _In_ UINT NodeMask,
13356 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
13357 _In_ SIZE_T CreationParametersDataSizeInBytes,
13358 REFIID riid,
13359 _COM_Outptr_ void **ppMetaCommand) = 0;
13360
13361 virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
13362 const D3D12_STATE_OBJECT_DESC *pDesc,
13363 REFIID riid,
13364 _COM_Outptr_ void **ppStateObject) = 0;
13365
13366 virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
13367 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
13368 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
13369
13370 virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
13371 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
13372 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
13373
13374 };
13375
13376
13377#else /* C style interface */
13378
13379 typedef struct ID3D12Device5Vtbl
13380 {
13381 BEGIN_INTERFACE
13382
13383 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13384 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13385 ID3D12Device5 * This,
13386 REFIID riid,
13387 _COM_Outptr_ void **ppvObject);
13388
13389 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13390 ULONG ( STDMETHODCALLTYPE *AddRef )(
13391 ID3D12Device5 * This);
13392
13393 DECLSPEC_XFGVIRT(IUnknown, Release)
13394 ULONG ( STDMETHODCALLTYPE *Release )(
13395 ID3D12Device5 * This);
13396
13397 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13398 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13399 ID3D12Device5 * This,
13400 _In_ REFGUID guid,
13401 _Inout_ UINT *pDataSize,
13402 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13403
13404 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13405 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13406 ID3D12Device5 * This,
13407 _In_ REFGUID guid,
13408 _In_ UINT DataSize,
13409 _In_reads_bytes_opt_( DataSize ) const void *pData);
13410
13411 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13412 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13413 ID3D12Device5 * This,
13414 _In_ REFGUID guid,
13415 _In_opt_ const IUnknown *pData);
13416
13417 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13418 HRESULT ( STDMETHODCALLTYPE *SetName )(
13419 ID3D12Device5 * This,
13420 _In_z_ LPCWSTR Name);
13421
13422 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
13423 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
13424 ID3D12Device5 * This);
13425
13426 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
13427 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
13428 ID3D12Device5 * This,
13429 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
13430 REFIID riid,
13431 _COM_Outptr_ void **ppCommandQueue);
13432
13433 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
13434 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
13435 ID3D12Device5 * This,
13436 _In_ D3D12_COMMAND_LIST_TYPE type,
13437 REFIID riid,
13438 _COM_Outptr_ void **ppCommandAllocator);
13439
13440 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
13441 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
13442 ID3D12Device5 * This,
13443 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
13444 REFIID riid,
13445 _COM_Outptr_ void **ppPipelineState);
13446
13447 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
13448 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
13449 ID3D12Device5 * This,
13450 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
13451 REFIID riid,
13452 _COM_Outptr_ void **ppPipelineState);
13453
13454 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
13455 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
13456 ID3D12Device5 * This,
13457 _In_ UINT nodeMask,
13458 _In_ D3D12_COMMAND_LIST_TYPE type,
13459 _In_ ID3D12CommandAllocator *pCommandAllocator,
13460 _In_opt_ ID3D12PipelineState *pInitialState,
13461 REFIID riid,
13462 _COM_Outptr_ void **ppCommandList);
13463
13464 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
13465 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
13466 ID3D12Device5 * This,
13467 D3D12_FEATURE Feature,
13468 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
13469 UINT FeatureSupportDataSize);
13470
13471 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
13472 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
13473 ID3D12Device5 * This,
13474 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
13475 REFIID riid,
13476 _COM_Outptr_ void **ppvHeap);
13477
13478 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
13479 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
13480 ID3D12Device5 * This,
13481 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
13482
13483 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
13484 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
13485 ID3D12Device5 * This,
13486 _In_ UINT nodeMask,
13487 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
13488 _In_ SIZE_T blobLengthInBytes,
13489 REFIID riid,
13490 _COM_Outptr_ void **ppvRootSignature);
13491
13492 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
13493 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
13494 ID3D12Device5 * This,
13495 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
13496 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13497
13498 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
13499 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
13500 ID3D12Device5 * This,
13501 _In_opt_ ID3D12Resource *pResource,
13502 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
13503 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13504
13505 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
13506 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
13507 ID3D12Device5 * This,
13508 _In_opt_ ID3D12Resource *pResource,
13509 _In_opt_ ID3D12Resource *pCounterResource,
13510 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
13511 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13512
13513 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
13514 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
13515 ID3D12Device5 * This,
13516 _In_opt_ ID3D12Resource *pResource,
13517 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
13518 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13519
13520 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
13521 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
13522 ID3D12Device5 * This,
13523 _In_opt_ ID3D12Resource *pResource,
13524 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
13525 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13526
13527 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
13528 void ( STDMETHODCALLTYPE *CreateSampler )(
13529 ID3D12Device5 * This,
13530 _In_ const D3D12_SAMPLER_DESC *pDesc,
13531 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13532
13533 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
13534 void ( STDMETHODCALLTYPE *CopyDescriptors )(
13535 ID3D12Device5 * This,
13536 _In_ UINT NumDestDescriptorRanges,
13537 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
13538 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
13539 _In_ UINT NumSrcDescriptorRanges,
13540 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
13541 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
13542 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13543
13544 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
13545 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
13546 ID3D12Device5 * This,
13547 _In_ UINT NumDescriptors,
13548 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
13549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
13550 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13551
13552 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
13553 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13554 ID3D12Device5 * This,
13555 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13556 _In_ UINT visibleMask,
13557 _In_ UINT numResourceDescs,
13558 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13559
13560 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
13561 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13562 ID3D12Device5 * This,
13563 D3D12_HEAP_PROPERTIES * RetVal,
13564 _In_ UINT nodeMask,
13565 D3D12_HEAP_TYPE heapType);
13566
13567 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
13568 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
13569 ID3D12Device5 * This,
13570 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13571 D3D12_HEAP_FLAGS HeapFlags,
13572 _In_ const D3D12_RESOURCE_DESC *pDesc,
13573 D3D12_RESOURCE_STATES InitialResourceState,
13574 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13575 REFIID riidResource,
13576 _COM_Outptr_opt_ void **ppvResource);
13577
13578 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
13579 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
13580 ID3D12Device5 * This,
13581 _In_ const D3D12_HEAP_DESC *pDesc,
13582 REFIID riid,
13583 _COM_Outptr_opt_ void **ppvHeap);
13584
13585 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
13586 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
13587 ID3D12Device5 * This,
13588 _In_ ID3D12Heap *pHeap,
13589 UINT64 HeapOffset,
13590 _In_ const D3D12_RESOURCE_DESC *pDesc,
13591 D3D12_RESOURCE_STATES InitialState,
13592 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13593 REFIID riid,
13594 _COM_Outptr_opt_ void **ppvResource);
13595
13596 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
13597 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
13598 ID3D12Device5 * This,
13599 _In_ const D3D12_RESOURCE_DESC *pDesc,
13600 D3D12_RESOURCE_STATES InitialState,
13601 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13602 REFIID riid,
13603 _COM_Outptr_opt_ void **ppvResource);
13604
13605 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
13606 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
13607 ID3D12Device5 * This,
13608 _In_ ID3D12DeviceChild *pObject,
13609 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
13610 DWORD Access,
13611 _In_opt_ LPCWSTR Name,
13612 _Out_ HANDLE *pHandle);
13613
13614 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
13615 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
13616 ID3D12Device5 * This,
13617 _In_ HANDLE NTHandle,
13618 REFIID riid,
13619 _COM_Outptr_opt_ void **ppvObj);
13620
13621 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
13622 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
13623 ID3D12Device5 * This,
13624 _In_ LPCWSTR Name,
13625 DWORD Access,
13626 /* [annotation][out] */
13627 _Out_ HANDLE *pNTHandle);
13628
13629 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
13630 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
13631 ID3D12Device5 * This,
13632 UINT NumObjects,
13633 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13634
13635 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
13636 HRESULT ( STDMETHODCALLTYPE *Evict )(
13637 ID3D12Device5 * This,
13638 UINT NumObjects,
13639 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13640
13641 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
13642 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
13643 ID3D12Device5 * This,
13644 UINT64 InitialValue,
13645 D3D12_FENCE_FLAGS Flags,
13646 REFIID riid,
13647 _COM_Outptr_ void **ppFence);
13648
13649 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
13650 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
13651 ID3D12Device5 * This);
13652
13653 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
13654 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
13655 ID3D12Device5 * This,
13656 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
13657 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
13658 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
13659 UINT64 BaseOffset,
13660 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
13661 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
13662 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
13663 _Out_opt_ UINT64 *pTotalBytes);
13664
13665 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
13666 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
13667 ID3D12Device5 * This,
13668 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
13669 REFIID riid,
13670 _COM_Outptr_opt_ void **ppvHeap);
13671
13672 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
13673 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
13674 ID3D12Device5 * This,
13675 BOOL Enable);
13676
13677 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
13678 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
13679 ID3D12Device5 * This,
13680 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
13681 _In_opt_ ID3D12RootSignature *pRootSignature,
13682 REFIID riid,
13683 _COM_Outptr_opt_ void **ppvCommandSignature);
13684
13685 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
13686 void ( STDMETHODCALLTYPE *GetResourceTiling )(
13687 ID3D12Device5 * This,
13688 _In_ ID3D12Resource *pTiledResource,
13689 _Out_opt_ UINT *pNumTilesForEntireResource,
13690 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
13691 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
13692 _Inout_opt_ UINT *pNumSubresourceTilings,
13693 _In_ UINT FirstSubresourceTilingToGet,
13694 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
13695
13696 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
13697 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
13698 ID3D12Device5 * This,
13699 LUID * RetVal);
13700
13701 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
13702 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
13703 ID3D12Device5 * This,
13704 _In_reads_(BlobLength) const void *pLibraryBlob,
13705 SIZE_T BlobLength,
13706 REFIID riid,
13707 _COM_Outptr_ void **ppPipelineLibrary);
13708
13709 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
13710 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
13711 ID3D12Device5 * This,
13712 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
13713 _In_reads_(NumFences) const UINT64 *pFenceValues,
13714 UINT NumFences,
13715 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
13716 HANDLE hEvent);
13717
13718 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
13719 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
13720 ID3D12Device5 * This,
13721 UINT NumObjects,
13722 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13723 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
13724
13725 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
13726 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
13727 ID3D12Device5 * This,
13728 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
13729 REFIID riid,
13730 _COM_Outptr_ void **ppPipelineState);
13731
13732 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
13733 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
13734 ID3D12Device5 * This,
13735 _In_ const void *pAddress,
13736 REFIID riid,
13737 _COM_Outptr_ void **ppvHeap);
13738
13739 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
13740 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
13741 ID3D12Device5 * This,
13742 _In_ HANDLE hFileMapping,
13743 REFIID riid,
13744 _COM_Outptr_ void **ppvHeap);
13745
13746 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
13747 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
13748 ID3D12Device5 * This,
13749 D3D12_RESIDENCY_FLAGS Flags,
13750 UINT NumObjects,
13751 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13752 _In_ ID3D12Fence *pFenceToSignal,
13753 UINT64 FenceValueToSignal);
13754
13755 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
13756 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
13757 ID3D12Device5 * This,
13758 _In_ UINT nodeMask,
13759 _In_ D3D12_COMMAND_LIST_TYPE type,
13760 _In_ D3D12_COMMAND_LIST_FLAGS flags,
13761 REFIID riid,
13762 _COM_Outptr_ void **ppCommandList);
13763
13764 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
13765 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
13766 ID3D12Device5 * This,
13767 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
13768 _In_ REFIID riid,
13769 _COM_Outptr_ void **ppSession);
13770
13771 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
13772 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
13773 ID3D12Device5 * This,
13774 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13775 D3D12_HEAP_FLAGS HeapFlags,
13776 _In_ const D3D12_RESOURCE_DESC *pDesc,
13777 D3D12_RESOURCE_STATES InitialResourceState,
13778 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13779 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13780 REFIID riidResource,
13781 _COM_Outptr_opt_ void **ppvResource);
13782
13783 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
13784 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
13785 ID3D12Device5 * This,
13786 _In_ const D3D12_HEAP_DESC *pDesc,
13787 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13788 REFIID riid,
13789 _COM_Outptr_opt_ void **ppvHeap);
13790
13791 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
13792 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
13793 ID3D12Device5 * This,
13794 _In_ const D3D12_RESOURCE_DESC *pDesc,
13795 D3D12_RESOURCE_STATES InitialState,
13796 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13797 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13798 REFIID riid,
13799 _COM_Outptr_opt_ void **ppvResource);
13800
13801 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
13802 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13803 ID3D12Device5 * This,
13804 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13805 UINT visibleMask,
13806 UINT numResourceDescs,
13807 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13808 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13809
13810 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
13811 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
13812 ID3D12Device5 * This,
13813 _In_ ID3D12LifetimeOwner *pOwner,
13814 REFIID riid,
13815 _COM_Outptr_ void **ppvTracker);
13816
13817 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
13818 void ( STDMETHODCALLTYPE *RemoveDevice )(
13819 ID3D12Device5 * This);
13820
13821 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
13822 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
13823 ID3D12Device5 * This,
13824 _Inout_ UINT *pNumMetaCommands,
13825 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
13826
13827 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
13828 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
13829 ID3D12Device5 * This,
13830 _In_ REFGUID CommandId,
13831 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
13832 _Out_opt_ UINT *pTotalStructureSizeInBytes,
13833 _Inout_ UINT *pParameterCount,
13834 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
13835
13836 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
13837 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
13838 ID3D12Device5 * This,
13839 _In_ REFGUID CommandId,
13840 _In_ UINT NodeMask,
13841 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
13842 _In_ SIZE_T CreationParametersDataSizeInBytes,
13843 REFIID riid,
13844 _COM_Outptr_ void **ppMetaCommand);
13845
13846 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
13847 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
13848 ID3D12Device5 * This,
13849 const D3D12_STATE_OBJECT_DESC *pDesc,
13850 REFIID riid,
13851 _COM_Outptr_ void **ppStateObject);
13852
13853 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
13854 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
13855 ID3D12Device5 * This,
13856 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
13857 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
13858
13859 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
13860 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
13861 ID3D12Device5 * This,
13862 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
13863 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
13864
13865 END_INTERFACE
13866 } ID3D12Device5Vtbl;
13867
13868 interface ID3D12Device5
13869 {
13870 CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
13871 };
13872
13873
13874
13875#ifdef COBJMACROS
13876
13877
13878#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
13879 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13880
13881#define ID3D12Device5_AddRef(This) \
13882 ( (This)->lpVtbl -> AddRef(This) )
13883
13884#define ID3D12Device5_Release(This) \
13885 ( (This)->lpVtbl -> Release(This) )
13886
13887
13888#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
13889 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
13890
13891#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
13892 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
13893
13894#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
13895 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
13896
13897#define ID3D12Device5_SetName(This,Name) \
13898 ( (This)->lpVtbl -> SetName(This,Name) )
13899
13900
13901#define ID3D12Device5_GetNodeCount(This) \
13902 ( (This)->lpVtbl -> GetNodeCount(This) )
13903
13904#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
13905 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
13906
13907#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
13908 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
13909
13910#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
13911 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
13912
13913#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
13914 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
13915
13916#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
13917 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
13918
13919#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
13920 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
13921
13922#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
13923 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
13924
13925#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
13926 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
13927
13928#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
13929 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
13930
13931#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
13932 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
13933
13934#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
13935 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
13936
13937#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
13938 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
13939
13940#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
13941 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
13942
13943#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
13944 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
13945
13946#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
13947 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
13948
13949#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
13950 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
13951
13952#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
13953 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
13954
13955#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
13956 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
13957
13958#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
13959 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
13960
13961#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
13962 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
13963
13964#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
13965 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
13966
13967#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13968 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13969
13970#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13971 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13972
13973#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
13974 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
13975
13976#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
13977 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
13978
13979#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
13980 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
13981
13982#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
13983 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
13984
13985#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
13986 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
13987
13988#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
13989 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
13990
13991#define ID3D12Device5_GetDeviceRemovedReason(This) \
13992 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
13993
13994#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
13995 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
13996
13997#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
13998 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
13999
14000#define ID3D12Device5_SetStablePowerState(This,Enable) \
14001 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
14002
14003#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
14004 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
14005
14006#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
14007 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
14008
14009#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
14010 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
14011
14012
14013#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
14014 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
14015
14016#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
14017 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
14018
14019#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
14020 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
14021
14022
14023#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
14024 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
14025
14026
14027#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
14028 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
14029
14030#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
14031 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
14032
14033#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
14034 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
14035
14036
14037#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
14038 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
14039
14040#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
14041 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
14042
14043#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
14044 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
14045
14046#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
14047 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
14048
14049#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
14050 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
14051
14052#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
14053 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
14054
14055
14056#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
14057 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
14058
14059#define ID3D12Device5_RemoveDevice(This) \
14060 ( (This)->lpVtbl -> RemoveDevice(This) )
14061
14062#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
14063 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
14064
14065#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
14066 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
14067
14068#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
14069 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
14070
14071#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
14072 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
14073
14074#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
14075 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
14076
14077#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
14078 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
14079
14080#endif /* COBJMACROS */
14081
14082
14083#endif /* C style interface */
14084
14085
14086
14087
14088#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
14089
14090
14091/* interface __MIDL_itf_d3d12_0000_0035 */
14092/* [local] */
14093
14094typedef
14095enum D3D12_AUTO_BREADCRUMB_OP
14096 {
14097 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
14098 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
14099 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
14100 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
14101 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
14102 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
14103 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
14104 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
14105 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
14106 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
14107 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
14108 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
14109 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
14110 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
14111 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
14112 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
14113 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
14114 D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
14115 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
14116 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
14117 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
14118 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
14119 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
14120 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
14121 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
14122 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
14123 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
14124 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
14125 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
14126 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
14127 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
14128 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
14129 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
14130 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
14131 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
14132 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
14133 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
14134 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
14135 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
14136 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
14137 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
14138 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
14139 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
14140 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
14141 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44
14142 } D3D12_AUTO_BREADCRUMB_OP;
14143
14144typedef struct D3D12_AUTO_BREADCRUMB_NODE
14145 {
14146 const char *pCommandListDebugNameA;
14147 const wchar_t *pCommandListDebugNameW;
14148 const char *pCommandQueueDebugNameA;
14149 const wchar_t *pCommandQueueDebugNameW;
14150 ID3D12GraphicsCommandList *pCommandList;
14151 ID3D12CommandQueue *pCommandQueue;
14152 UINT32 BreadcrumbCount;
14153 const UINT32 *pLastBreadcrumbValue;
14154 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
14155 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
14156 } D3D12_AUTO_BREADCRUMB_NODE;
14157
14158typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
14159 {
14160 UINT BreadcrumbIndex;
14161 const wchar_t *pContextString;
14162 } D3D12_DRED_BREADCRUMB_CONTEXT;
14163
14164typedef struct D3D12_AUTO_BREADCRUMB_NODE1
14165 {
14166 const char *pCommandListDebugNameA;
14167 const wchar_t *pCommandListDebugNameW;
14168 const char *pCommandQueueDebugNameA;
14169 const wchar_t *pCommandQueueDebugNameW;
14170 ID3D12GraphicsCommandList *pCommandList;
14171 ID3D12CommandQueue *pCommandQueue;
14172 UINT BreadcrumbCount;
14173 const UINT *pLastBreadcrumbValue;
14174 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
14175 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
14176 UINT BreadcrumbContextsCount;
14177 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
14178 } D3D12_AUTO_BREADCRUMB_NODE1;
14179
14180typedef
14181enum D3D12_DRED_VERSION
14182 {
14183 D3D12_DRED_VERSION_1_0 = 0x1,
14184 D3D12_DRED_VERSION_1_1 = 0x2,
14185 D3D12_DRED_VERSION_1_2 = 0x3,
14186 D3D12_DRED_VERSION_1_3 = 0x4
14187 } D3D12_DRED_VERSION;
14188
14189typedef
14190enum D3D12_DRED_FLAGS
14191 {
14192 D3D12_DRED_FLAG_NONE = 0,
14193 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
14194 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
14195 } D3D12_DRED_FLAGS;
14196
14197DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS );
14198typedef
14199enum D3D12_DRED_ENABLEMENT
14200 {
14201 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
14202 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
14203 D3D12_DRED_ENABLEMENT_FORCED_ON = 2
14204 } D3D12_DRED_ENABLEMENT;
14205
14206typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
14207 {
14208 _In_ D3D12_DRED_FLAGS Flags;
14209 _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14210 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
14211
14212typedef
14213enum D3D12_DRED_ALLOCATION_TYPE
14214 {
14215 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
14216 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
14217 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
14218 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
14219 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
14220 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
14221 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
14222 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
14223 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
14224 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
14225 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
14226 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
14227 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
14228 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
14229 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
14230 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
14231 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
14232 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
14233 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
14234 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
14235 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
14236 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
14237 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
14238 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
14239 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
14240 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
14241 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
14242 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
14243 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
14244 } D3D12_DRED_ALLOCATION_TYPE;
14245
14246typedef struct D3D12_DRED_ALLOCATION_NODE
14247 {
14248 const char *ObjectNameA;
14249 const wchar_t *ObjectNameW;
14250 D3D12_DRED_ALLOCATION_TYPE AllocationType;
14251 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
14252 } D3D12_DRED_ALLOCATION_NODE;
14253
14254typedef struct D3D12_DRED_ALLOCATION_NODE1
14255 {
14256 const char *ObjectNameA;
14257 const wchar_t *ObjectNameW;
14258 D3D12_DRED_ALLOCATION_TYPE AllocationType;
14259 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
14260 const IUnknown *pObject;
14261 } D3D12_DRED_ALLOCATION_NODE1;
14262
14263typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
14264 {
14265 _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
14266 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
14267
14268typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
14269 {
14270 _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
14271 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
14272
14273typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
14274 {
14275 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14276 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
14277 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
14278 } D3D12_DRED_PAGE_FAULT_OUTPUT;
14279
14280typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
14281 {
14282 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14283 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
14284 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
14285 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
14286
14287typedef
14288enum D3D12_DRED_PAGE_FAULT_FLAGS
14289 {
14290 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
14291 } D3D12_DRED_PAGE_FAULT_FLAGS;
14292
14293DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS );
14294typedef
14295enum D3D12_DRED_DEVICE_STATE
14296 {
14297 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
14298 D3D12_DRED_DEVICE_STATE_HUNG = 3,
14299 D3D12_DRED_DEVICE_STATE_FAULT = 6,
14300 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
14301 } D3D12_DRED_DEVICE_STATE;
14302
14303typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
14304 {
14305 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
14306 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
14307 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
14308 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
14309 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
14310
14311typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
14312 {
14313 HRESULT DeviceRemovedReason;
14314 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
14315 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
14316 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
14317
14318typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
14319 {
14320 HRESULT DeviceRemovedReason;
14321 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
14322 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
14323 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
14324
14325typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
14326 {
14327 HRESULT DeviceRemovedReason;
14328 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
14329 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
14330 D3D12_DRED_DEVICE_STATE DeviceState;
14331 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
14332
14333typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
14334 {
14335 D3D12_DRED_VERSION Version;
14336 union
14337 {
14338 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
14339 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
14340 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
14341 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
14342 } ;
14343 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
14344
14345
14346
14347extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_c_ifspec;
14348extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_s_ifspec;
14349
14350#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
14351#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
14352
14353/* interface ID3D12DeviceRemovedExtendedDataSettings */
14354/* [unique][local][object][uuid] */
14355
14356
14357EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
14358
14359#if defined(__cplusplus) && !defined(CINTERFACE)
14360
14361 MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
14362 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
14363 {
14364 public:
14365 virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
14366 D3D12_DRED_ENABLEMENT Enablement) = 0;
14367
14368 virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
14369 D3D12_DRED_ENABLEMENT Enablement) = 0;
14370
14371 virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
14372 D3D12_DRED_ENABLEMENT Enablement) = 0;
14373
14374 };
14375
14376
14377#else /* C style interface */
14378
14379 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
14380 {
14381 BEGIN_INTERFACE
14382
14383 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14384 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14385 ID3D12DeviceRemovedExtendedDataSettings * This,
14386 REFIID riid,
14387 _COM_Outptr_ void **ppvObject);
14388
14389 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14390 ULONG ( STDMETHODCALLTYPE *AddRef )(
14391 ID3D12DeviceRemovedExtendedDataSettings * This);
14392
14393 DECLSPEC_XFGVIRT(IUnknown, Release)
14394 ULONG ( STDMETHODCALLTYPE *Release )(
14395 ID3D12DeviceRemovedExtendedDataSettings * This);
14396
14397 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
14398 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
14399 ID3D12DeviceRemovedExtendedDataSettings * This,
14400 D3D12_DRED_ENABLEMENT Enablement);
14401
14402 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
14403 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
14404 ID3D12DeviceRemovedExtendedDataSettings * This,
14405 D3D12_DRED_ENABLEMENT Enablement);
14406
14407 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
14408 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
14409 ID3D12DeviceRemovedExtendedDataSettings * This,
14410 D3D12_DRED_ENABLEMENT Enablement);
14411
14412 END_INTERFACE
14413 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
14414
14415 interface ID3D12DeviceRemovedExtendedDataSettings
14416 {
14417 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
14418 };
14419
14420
14421
14422#ifdef COBJMACROS
14423
14424
14425#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
14426 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14427
14428#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
14429 ( (This)->lpVtbl -> AddRef(This) )
14430
14431#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
14432 ( (This)->lpVtbl -> Release(This) )
14433
14434
14435#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
14436 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
14437
14438#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
14439 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
14440
14441#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
14442 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
14443
14444#endif /* COBJMACROS */
14445
14446
14447#endif /* C style interface */
14448
14449
14450
14451
14452#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
14453
14454
14455#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
14456#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
14457
14458/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
14459/* [unique][local][object][uuid] */
14460
14461
14462EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
14463
14464#if defined(__cplusplus) && !defined(CINTERFACE)
14465
14466 MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
14467 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
14468 {
14469 public:
14470 virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
14471 D3D12_DRED_ENABLEMENT Enablement) = 0;
14472
14473 };
14474
14475
14476#else /* C style interface */
14477
14478 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
14479 {
14480 BEGIN_INTERFACE
14481
14482 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14483 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14484 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14485 REFIID riid,
14486 _COM_Outptr_ void **ppvObject);
14487
14488 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14489 ULONG ( STDMETHODCALLTYPE *AddRef )(
14490 ID3D12DeviceRemovedExtendedDataSettings1 * This);
14491
14492 DECLSPEC_XFGVIRT(IUnknown, Release)
14493 ULONG ( STDMETHODCALLTYPE *Release )(
14494 ID3D12DeviceRemovedExtendedDataSettings1 * This);
14495
14496 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
14497 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
14498 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14499 D3D12_DRED_ENABLEMENT Enablement);
14500
14501 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
14502 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
14503 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14504 D3D12_DRED_ENABLEMENT Enablement);
14505
14506 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
14507 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
14508 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14509 D3D12_DRED_ENABLEMENT Enablement);
14510
14511 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
14512 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
14513 ID3D12DeviceRemovedExtendedDataSettings1 * This,
14514 D3D12_DRED_ENABLEMENT Enablement);
14515
14516 END_INTERFACE
14517 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
14518
14519 interface ID3D12DeviceRemovedExtendedDataSettings1
14520 {
14521 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
14522 };
14523
14524
14525
14526#ifdef COBJMACROS
14527
14528
14529#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
14530 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14531
14532#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
14533 ( (This)->lpVtbl -> AddRef(This) )
14534
14535#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
14536 ( (This)->lpVtbl -> Release(This) )
14537
14538
14539#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
14540 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
14541
14542#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
14543 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
14544
14545#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
14546 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
14547
14548
14549#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
14550 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
14551
14552#endif /* COBJMACROS */
14553
14554
14555#endif /* C style interface */
14556
14557
14558
14559
14560#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
14561
14562
14563#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
14564#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
14565
14566/* interface ID3D12DeviceRemovedExtendedData */
14567/* [unique][local][object][uuid] */
14568
14569
14570EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
14571
14572#if defined(__cplusplus) && !defined(CINTERFACE)
14573
14574 MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
14575 ID3D12DeviceRemovedExtendedData : public IUnknown
14576 {
14577 public:
14578 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
14579 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
14580
14581 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
14582 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
14583
14584 };
14585
14586
14587#else /* C style interface */
14588
14589 typedef struct ID3D12DeviceRemovedExtendedDataVtbl
14590 {
14591 BEGIN_INTERFACE
14592
14593 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14594 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14595 ID3D12DeviceRemovedExtendedData * This,
14596 REFIID riid,
14597 _COM_Outptr_ void **ppvObject);
14598
14599 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14600 ULONG ( STDMETHODCALLTYPE *AddRef )(
14601 ID3D12DeviceRemovedExtendedData * This);
14602
14603 DECLSPEC_XFGVIRT(IUnknown, Release)
14604 ULONG ( STDMETHODCALLTYPE *Release )(
14605 ID3D12DeviceRemovedExtendedData * This);
14606
14607 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14608 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14609 ID3D12DeviceRemovedExtendedData * This,
14610 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14611
14612 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14613 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14614 ID3D12DeviceRemovedExtendedData * This,
14615 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14616
14617 END_INTERFACE
14618 } ID3D12DeviceRemovedExtendedDataVtbl;
14619
14620 interface ID3D12DeviceRemovedExtendedData
14621 {
14622 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
14623 };
14624
14625
14626
14627#ifdef COBJMACROS
14628
14629
14630#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
14631 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14632
14633#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
14634 ( (This)->lpVtbl -> AddRef(This) )
14635
14636#define ID3D12DeviceRemovedExtendedData_Release(This) \
14637 ( (This)->lpVtbl -> Release(This) )
14638
14639
14640#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
14641 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14642
14643#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
14644 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14645
14646#endif /* COBJMACROS */
14647
14648
14649#endif /* C style interface */
14650
14651
14652
14653
14654#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
14655
14656
14657#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
14658#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
14659
14660/* interface ID3D12DeviceRemovedExtendedData1 */
14661/* [unique][local][object][uuid] */
14662
14663
14664EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
14665
14666#if defined(__cplusplus) && !defined(CINTERFACE)
14667
14668 MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
14669 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
14670 {
14671 public:
14672 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
14673 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
14674
14675 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
14676 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
14677
14678 };
14679
14680
14681#else /* C style interface */
14682
14683 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
14684 {
14685 BEGIN_INTERFACE
14686
14687 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14688 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14689 ID3D12DeviceRemovedExtendedData1 * This,
14690 REFIID riid,
14691 _COM_Outptr_ void **ppvObject);
14692
14693 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14694 ULONG ( STDMETHODCALLTYPE *AddRef )(
14695 ID3D12DeviceRemovedExtendedData1 * This);
14696
14697 DECLSPEC_XFGVIRT(IUnknown, Release)
14698 ULONG ( STDMETHODCALLTYPE *Release )(
14699 ID3D12DeviceRemovedExtendedData1 * This);
14700
14701 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14702 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14703 ID3D12DeviceRemovedExtendedData1 * This,
14704 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14705
14706 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14707 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14708 ID3D12DeviceRemovedExtendedData1 * This,
14709 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14710
14711 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
14712 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
14713 ID3D12DeviceRemovedExtendedData1 * This,
14714 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
14715
14716 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
14717 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
14718 ID3D12DeviceRemovedExtendedData1 * This,
14719 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
14720
14721 END_INTERFACE
14722 } ID3D12DeviceRemovedExtendedData1Vtbl;
14723
14724 interface ID3D12DeviceRemovedExtendedData1
14725 {
14726 CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
14727 };
14728
14729
14730
14731#ifdef COBJMACROS
14732
14733
14734#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
14735 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14736
14737#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
14738 ( (This)->lpVtbl -> AddRef(This) )
14739
14740#define ID3D12DeviceRemovedExtendedData1_Release(This) \
14741 ( (This)->lpVtbl -> Release(This) )
14742
14743
14744#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
14745 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14746
14747#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
14748 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14749
14750
14751#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
14752 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
14753
14754#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
14755 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
14756
14757#endif /* COBJMACROS */
14758
14759
14760#endif /* C style interface */
14761
14762
14763
14764
14765#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
14766
14767
14768#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
14769#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
14770
14771/* interface ID3D12DeviceRemovedExtendedData2 */
14772/* [unique][local][object][uuid] */
14773
14774
14775EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
14776
14777#if defined(__cplusplus) && !defined(CINTERFACE)
14778
14779 MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
14780 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
14781 {
14782 public:
14783 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
14784 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
14785
14786 virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
14787
14788 };
14789
14790
14791#else /* C style interface */
14792
14793 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
14794 {
14795 BEGIN_INTERFACE
14796
14797 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14798 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14799 ID3D12DeviceRemovedExtendedData2 * This,
14800 REFIID riid,
14801 _COM_Outptr_ void **ppvObject);
14802
14803 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14804 ULONG ( STDMETHODCALLTYPE *AddRef )(
14805 ID3D12DeviceRemovedExtendedData2 * This);
14806
14807 DECLSPEC_XFGVIRT(IUnknown, Release)
14808 ULONG ( STDMETHODCALLTYPE *Release )(
14809 ID3D12DeviceRemovedExtendedData2 * This);
14810
14811 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
14812 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
14813 ID3D12DeviceRemovedExtendedData2 * This,
14814 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
14815
14816 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
14817 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
14818 ID3D12DeviceRemovedExtendedData2 * This,
14819 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
14820
14821 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
14822 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
14823 ID3D12DeviceRemovedExtendedData2 * This,
14824 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
14825
14826 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
14827 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
14828 ID3D12DeviceRemovedExtendedData2 * This,
14829 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
14830
14831 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
14832 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
14833 ID3D12DeviceRemovedExtendedData2 * This,
14834 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
14835
14836 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
14837 D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
14838 ID3D12DeviceRemovedExtendedData2 * This);
14839
14840 END_INTERFACE
14841 } ID3D12DeviceRemovedExtendedData2Vtbl;
14842
14843 interface ID3D12DeviceRemovedExtendedData2
14844 {
14845 CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
14846 };
14847
14848
14849
14850#ifdef COBJMACROS
14851
14852
14853#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
14854 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14855
14856#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
14857 ( (This)->lpVtbl -> AddRef(This) )
14858
14859#define ID3D12DeviceRemovedExtendedData2_Release(This) \
14860 ( (This)->lpVtbl -> Release(This) )
14861
14862
14863#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
14864 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
14865
14866#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
14867 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
14868
14869
14870#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
14871 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
14872
14873#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
14874 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
14875
14876
14877#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
14878 ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
14879
14880#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
14881 ( (This)->lpVtbl -> GetDeviceState(This) )
14882
14883#endif /* COBJMACROS */
14884
14885
14886#endif /* C style interface */
14887
14888
14889
14890
14891#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
14892
14893
14894/* interface __MIDL_itf_d3d12_0000_0040 */
14895/* [local] */
14896
14897typedef
14898enum D3D12_BACKGROUND_PROCESSING_MODE
14899 {
14900 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
14901 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
14902 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
14903 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
14904 } D3D12_BACKGROUND_PROCESSING_MODE;
14905
14906typedef
14907enum D3D12_MEASUREMENTS_ACTION
14908 {
14909 D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
14910 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
14911 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
14912 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
14913 } D3D12_MEASUREMENTS_ACTION;
14914
14915
14916
14917extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
14918extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
14919
14920#ifndef __ID3D12Device6_INTERFACE_DEFINED__
14921#define __ID3D12Device6_INTERFACE_DEFINED__
14922
14923/* interface ID3D12Device6 */
14924/* [unique][local][object][uuid] */
14925
14926
14927EXTERN_C const IID IID_ID3D12Device6;
14928
14929#if defined(__cplusplus) && !defined(CINTERFACE)
14930
14931 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
14932 ID3D12Device6 : public ID3D12Device5
14933 {
14934 public:
14935 virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
14936 D3D12_BACKGROUND_PROCESSING_MODE Mode,
14937 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
14938 _In_opt_ HANDLE hEventToSignalUponCompletion,
14939 _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
14940
14941 };
14942
14943
14944#else /* C style interface */
14945
14946 typedef struct ID3D12Device6Vtbl
14947 {
14948 BEGIN_INTERFACE
14949
14950 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14951 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14952 ID3D12Device6 * This,
14953 REFIID riid,
14954 _COM_Outptr_ void **ppvObject);
14955
14956 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14957 ULONG ( STDMETHODCALLTYPE *AddRef )(
14958 ID3D12Device6 * This);
14959
14960 DECLSPEC_XFGVIRT(IUnknown, Release)
14961 ULONG ( STDMETHODCALLTYPE *Release )(
14962 ID3D12Device6 * This);
14963
14964 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
14965 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
14966 ID3D12Device6 * This,
14967 _In_ REFGUID guid,
14968 _Inout_ UINT *pDataSize,
14969 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
14970
14971 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
14972 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
14973 ID3D12Device6 * This,
14974 _In_ REFGUID guid,
14975 _In_ UINT DataSize,
14976 _In_reads_bytes_opt_( DataSize ) const void *pData);
14977
14978 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
14979 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
14980 ID3D12Device6 * This,
14981 _In_ REFGUID guid,
14982 _In_opt_ const IUnknown *pData);
14983
14984 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
14985 HRESULT ( STDMETHODCALLTYPE *SetName )(
14986 ID3D12Device6 * This,
14987 _In_z_ LPCWSTR Name);
14988
14989 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
14990 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
14991 ID3D12Device6 * This);
14992
14993 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
14994 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
14995 ID3D12Device6 * This,
14996 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
14997 REFIID riid,
14998 _COM_Outptr_ void **ppCommandQueue);
14999
15000 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15001 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15002 ID3D12Device6 * This,
15003 _In_ D3D12_COMMAND_LIST_TYPE type,
15004 REFIID riid,
15005 _COM_Outptr_ void **ppCommandAllocator);
15006
15007 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15008 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15009 ID3D12Device6 * This,
15010 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15011 REFIID riid,
15012 _COM_Outptr_ void **ppPipelineState);
15013
15014 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15015 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15016 ID3D12Device6 * This,
15017 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15018 REFIID riid,
15019 _COM_Outptr_ void **ppPipelineState);
15020
15021 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15022 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15023 ID3D12Device6 * This,
15024 _In_ UINT nodeMask,
15025 _In_ D3D12_COMMAND_LIST_TYPE type,
15026 _In_ ID3D12CommandAllocator *pCommandAllocator,
15027 _In_opt_ ID3D12PipelineState *pInitialState,
15028 REFIID riid,
15029 _COM_Outptr_ void **ppCommandList);
15030
15031 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15032 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15033 ID3D12Device6 * This,
15034 D3D12_FEATURE Feature,
15035 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15036 UINT FeatureSupportDataSize);
15037
15038 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15039 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15040 ID3D12Device6 * This,
15041 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15042 REFIID riid,
15043 _COM_Outptr_ void **ppvHeap);
15044
15045 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15046 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15047 ID3D12Device6 * This,
15048 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15049
15050 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15051 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15052 ID3D12Device6 * This,
15053 _In_ UINT nodeMask,
15054 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15055 _In_ SIZE_T blobLengthInBytes,
15056 REFIID riid,
15057 _COM_Outptr_ void **ppvRootSignature);
15058
15059 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
15060 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
15061 ID3D12Device6 * This,
15062 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
15063 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15064
15065 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
15066 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
15067 ID3D12Device6 * This,
15068 _In_opt_ ID3D12Resource *pResource,
15069 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
15070 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15071
15072 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
15073 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
15074 ID3D12Device6 * This,
15075 _In_opt_ ID3D12Resource *pResource,
15076 _In_opt_ ID3D12Resource *pCounterResource,
15077 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
15078 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15079
15080 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
15081 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
15082 ID3D12Device6 * This,
15083 _In_opt_ ID3D12Resource *pResource,
15084 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
15085 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15086
15087 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
15088 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
15089 ID3D12Device6 * This,
15090 _In_opt_ ID3D12Resource *pResource,
15091 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
15092 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15093
15094 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
15095 void ( STDMETHODCALLTYPE *CreateSampler )(
15096 ID3D12Device6 * This,
15097 _In_ const D3D12_SAMPLER_DESC *pDesc,
15098 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15099
15100 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
15101 void ( STDMETHODCALLTYPE *CopyDescriptors )(
15102 ID3D12Device6 * This,
15103 _In_ UINT NumDestDescriptorRanges,
15104 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
15105 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
15106 _In_ UINT NumSrcDescriptorRanges,
15107 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
15108 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
15109 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15110
15111 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
15112 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
15113 ID3D12Device6 * This,
15114 _In_ UINT NumDescriptors,
15115 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
15116 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
15117 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15118
15119 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
15120 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15121 ID3D12Device6 * This,
15122 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15123 _In_ UINT visibleMask,
15124 _In_ UINT numResourceDescs,
15125 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15126
15127 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
15128 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15129 ID3D12Device6 * This,
15130 D3D12_HEAP_PROPERTIES * RetVal,
15131 _In_ UINT nodeMask,
15132 D3D12_HEAP_TYPE heapType);
15133
15134 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
15135 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
15136 ID3D12Device6 * This,
15137 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15138 D3D12_HEAP_FLAGS HeapFlags,
15139 _In_ const D3D12_RESOURCE_DESC *pDesc,
15140 D3D12_RESOURCE_STATES InitialResourceState,
15141 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15142 REFIID riidResource,
15143 _COM_Outptr_opt_ void **ppvResource);
15144
15145 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
15146 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
15147 ID3D12Device6 * This,
15148 _In_ const D3D12_HEAP_DESC *pDesc,
15149 REFIID riid,
15150 _COM_Outptr_opt_ void **ppvHeap);
15151
15152 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
15153 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
15154 ID3D12Device6 * This,
15155 _In_ ID3D12Heap *pHeap,
15156 UINT64 HeapOffset,
15157 _In_ const D3D12_RESOURCE_DESC *pDesc,
15158 D3D12_RESOURCE_STATES InitialState,
15159 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15160 REFIID riid,
15161 _COM_Outptr_opt_ void **ppvResource);
15162
15163 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
15164 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
15165 ID3D12Device6 * This,
15166 _In_ const D3D12_RESOURCE_DESC *pDesc,
15167 D3D12_RESOURCE_STATES InitialState,
15168 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15169 REFIID riid,
15170 _COM_Outptr_opt_ void **ppvResource);
15171
15172 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
15173 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
15174 ID3D12Device6 * This,
15175 _In_ ID3D12DeviceChild *pObject,
15176 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
15177 DWORD Access,
15178 _In_opt_ LPCWSTR Name,
15179 _Out_ HANDLE *pHandle);
15180
15181 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
15182 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
15183 ID3D12Device6 * This,
15184 _In_ HANDLE NTHandle,
15185 REFIID riid,
15186 _COM_Outptr_opt_ void **ppvObj);
15187
15188 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
15189 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
15190 ID3D12Device6 * This,
15191 _In_ LPCWSTR Name,
15192 DWORD Access,
15193 /* [annotation][out] */
15194 _Out_ HANDLE *pNTHandle);
15195
15196 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
15197 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
15198 ID3D12Device6 * This,
15199 UINT NumObjects,
15200 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15201
15202 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
15203 HRESULT ( STDMETHODCALLTYPE *Evict )(
15204 ID3D12Device6 * This,
15205 UINT NumObjects,
15206 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15207
15208 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
15209 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
15210 ID3D12Device6 * This,
15211 UINT64 InitialValue,
15212 D3D12_FENCE_FLAGS Flags,
15213 REFIID riid,
15214 _COM_Outptr_ void **ppFence);
15215
15216 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
15217 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
15218 ID3D12Device6 * This);
15219
15220 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
15221 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
15222 ID3D12Device6 * This,
15223 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
15224 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
15225 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
15226 UINT64 BaseOffset,
15227 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
15228 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
15229 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
15230 _Out_opt_ UINT64 *pTotalBytes);
15231
15232 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
15233 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
15234 ID3D12Device6 * This,
15235 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
15236 REFIID riid,
15237 _COM_Outptr_opt_ void **ppvHeap);
15238
15239 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
15240 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
15241 ID3D12Device6 * This,
15242 BOOL Enable);
15243
15244 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
15245 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
15246 ID3D12Device6 * This,
15247 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
15248 _In_opt_ ID3D12RootSignature *pRootSignature,
15249 REFIID riid,
15250 _COM_Outptr_opt_ void **ppvCommandSignature);
15251
15252 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
15253 void ( STDMETHODCALLTYPE *GetResourceTiling )(
15254 ID3D12Device6 * This,
15255 _In_ ID3D12Resource *pTiledResource,
15256 _Out_opt_ UINT *pNumTilesForEntireResource,
15257 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
15258 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
15259 _Inout_opt_ UINT *pNumSubresourceTilings,
15260 _In_ UINT FirstSubresourceTilingToGet,
15261 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
15262
15263 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
15264 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
15265 ID3D12Device6 * This,
15266 LUID * RetVal);
15267
15268 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
15269 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
15270 ID3D12Device6 * This,
15271 _In_reads_(BlobLength) const void *pLibraryBlob,
15272 SIZE_T BlobLength,
15273 REFIID riid,
15274 _COM_Outptr_ void **ppPipelineLibrary);
15275
15276 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
15277 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
15278 ID3D12Device6 * This,
15279 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
15280 _In_reads_(NumFences) const UINT64 *pFenceValues,
15281 UINT NumFences,
15282 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
15283 HANDLE hEvent);
15284
15285 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
15286 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
15287 ID3D12Device6 * This,
15288 UINT NumObjects,
15289 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
15290 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
15291
15292 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
15293 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
15294 ID3D12Device6 * This,
15295 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
15296 REFIID riid,
15297 _COM_Outptr_ void **ppPipelineState);
15298
15299 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
15300 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
15301 ID3D12Device6 * This,
15302 _In_ const void *pAddress,
15303 REFIID riid,
15304 _COM_Outptr_ void **ppvHeap);
15305
15306 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
15307 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
15308 ID3D12Device6 * This,
15309 _In_ HANDLE hFileMapping,
15310 REFIID riid,
15311 _COM_Outptr_ void **ppvHeap);
15312
15313 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
15314 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
15315 ID3D12Device6 * This,
15316 D3D12_RESIDENCY_FLAGS Flags,
15317 UINT NumObjects,
15318 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
15319 _In_ ID3D12Fence *pFenceToSignal,
15320 UINT64 FenceValueToSignal);
15321
15322 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
15323 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
15324 ID3D12Device6 * This,
15325 _In_ UINT nodeMask,
15326 _In_ D3D12_COMMAND_LIST_TYPE type,
15327 _In_ D3D12_COMMAND_LIST_FLAGS flags,
15328 REFIID riid,
15329 _COM_Outptr_ void **ppCommandList);
15330
15331 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
15332 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
15333 ID3D12Device6 * This,
15334 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
15335 _In_ REFIID riid,
15336 _COM_Outptr_ void **ppSession);
15337
15338 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
15339 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
15340 ID3D12Device6 * This,
15341 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15342 D3D12_HEAP_FLAGS HeapFlags,
15343 _In_ const D3D12_RESOURCE_DESC *pDesc,
15344 D3D12_RESOURCE_STATES InitialResourceState,
15345 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15346 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15347 REFIID riidResource,
15348 _COM_Outptr_opt_ void **ppvResource);
15349
15350 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
15351 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
15352 ID3D12Device6 * This,
15353 _In_ const D3D12_HEAP_DESC *pDesc,
15354 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15355 REFIID riid,
15356 _COM_Outptr_opt_ void **ppvHeap);
15357
15358 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
15359 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
15360 ID3D12Device6 * This,
15361 _In_ const D3D12_RESOURCE_DESC *pDesc,
15362 D3D12_RESOURCE_STATES InitialState,
15363 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15364 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
15365 REFIID riid,
15366 _COM_Outptr_opt_ void **ppvResource);
15367
15368 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
15369 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
15370 ID3D12Device6 * This,
15371 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15372 UINT visibleMask,
15373 UINT numResourceDescs,
15374 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
15375 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
15376
15377 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
15378 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
15379 ID3D12Device6 * This,
15380 _In_ ID3D12LifetimeOwner *pOwner,
15381 REFIID riid,
15382 _COM_Outptr_ void **ppvTracker);
15383
15384 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
15385 void ( STDMETHODCALLTYPE *RemoveDevice )(
15386 ID3D12Device6 * This);
15387
15388 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
15389 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
15390 ID3D12Device6 * This,
15391 _Inout_ UINT *pNumMetaCommands,
15392 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
15393
15394 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
15395 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
15396 ID3D12Device6 * This,
15397 _In_ REFGUID CommandId,
15398 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
15399 _Out_opt_ UINT *pTotalStructureSizeInBytes,
15400 _Inout_ UINT *pParameterCount,
15401 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
15402
15403 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
15404 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
15405 ID3D12Device6 * This,
15406 _In_ REFGUID CommandId,
15407 _In_ UINT NodeMask,
15408 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
15409 _In_ SIZE_T CreationParametersDataSizeInBytes,
15410 REFIID riid,
15411 _COM_Outptr_ void **ppMetaCommand);
15412
15413 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
15414 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
15415 ID3D12Device6 * This,
15416 const D3D12_STATE_OBJECT_DESC *pDesc,
15417 REFIID riid,
15418 _COM_Outptr_ void **ppStateObject);
15419
15420 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
15421 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
15422 ID3D12Device6 * This,
15423 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
15424 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
15425
15426 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
15427 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
15428 ID3D12Device6 * This,
15429 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
15430 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
15431
15432 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
15433 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
15434 ID3D12Device6 * This,
15435 D3D12_BACKGROUND_PROCESSING_MODE Mode,
15436 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
15437 _In_opt_ HANDLE hEventToSignalUponCompletion,
15438 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
15439
15440 END_INTERFACE
15441 } ID3D12Device6Vtbl;
15442
15443 interface ID3D12Device6
15444 {
15445 CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
15446 };
15447
15448
15449
15450#ifdef COBJMACROS
15451
15452
15453#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
15454 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
15455
15456#define ID3D12Device6_AddRef(This) \
15457 ( (This)->lpVtbl -> AddRef(This) )
15458
15459#define ID3D12Device6_Release(This) \
15460 ( (This)->lpVtbl -> Release(This) )
15461
15462
15463#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
15464 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
15465
15466#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
15467 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
15468
15469#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
15470 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
15471
15472#define ID3D12Device6_SetName(This,Name) \
15473 ( (This)->lpVtbl -> SetName(This,Name) )
15474
15475
15476#define ID3D12Device6_GetNodeCount(This) \
15477 ( (This)->lpVtbl -> GetNodeCount(This) )
15478
15479#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
15480 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
15481
15482#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
15483 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
15484
15485#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
15486 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
15487
15488#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
15489 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
15490
15491#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
15492 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
15493
15494#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
15495 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
15496
15497#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
15498 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
15499
15500#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
15501 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
15502
15503#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
15504 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
15505
15506#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
15507 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
15508
15509#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
15510 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
15511
15512#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
15513 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
15514
15515#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
15516 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
15517
15518#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
15519 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
15520
15521#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
15522 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
15523
15524#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
15525 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
15526
15527#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
15528 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
15529
15530#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
15531 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
15532
15533#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
15534 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
15535
15536#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
15537 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
15538
15539#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
15540 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
15541
15542#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
15543 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
15544
15545#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
15546 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
15547
15548#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
15549 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
15550
15551#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
15552 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
15553
15554#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
15555 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
15556
15557#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
15558 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
15559
15560#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
15561 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
15562
15563#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
15564 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
15565
15566#define ID3D12Device6_GetDeviceRemovedReason(This) \
15567 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
15568
15569#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
15570 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
15571
15572#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
15573 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
15574
15575#define ID3D12Device6_SetStablePowerState(This,Enable) \
15576 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
15577
15578#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
15579 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
15580
15581#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
15582 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
15583
15584#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
15585 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
15586
15587
15588#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
15589 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
15590
15591#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
15592 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
15593
15594#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
15595 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
15596
15597
15598#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
15599 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
15600
15601
15602#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
15603 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
15604
15605#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
15606 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
15607
15608#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
15609 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
15610
15611
15612#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
15613 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
15614
15615#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
15616 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
15617
15618#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
15619 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
15620
15621#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
15622 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
15623
15624#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
15625 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
15626
15627#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
15628 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
15629
15630
15631#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
15632 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
15633
15634#define ID3D12Device6_RemoveDevice(This) \
15635 ( (This)->lpVtbl -> RemoveDevice(This) )
15636
15637#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
15638 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
15639
15640#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
15641 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
15642
15643#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
15644 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
15645
15646#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
15647 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
15648
15649#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
15650 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
15651
15652#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
15653 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
15654
15655
15656#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
15657 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
15658
15659#endif /* COBJMACROS */
15660
15661
15662#endif /* C style interface */
15663
15664
15665
15666
15667#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
15668
15669
15670/* interface __MIDL_itf_d3d12_0000_0041 */
15671/* [local] */
15672
15673DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
15674typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
15675 {
15676 UINT NodeIndex;
15677 UINT Count;
15678 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
15679
15680typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
15681 {
15682 UINT NodeIndex;
15683 UINT Count;
15684 GUID *pTypes;
15685 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
15686
15687typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
15688 {
15689 UINT NodeMask;
15690 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
15691 GUID ProtectionType;
15692 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
15693
15694
15695
15696extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_c_ifspec;
15697extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_s_ifspec;
15698
15699#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
15700#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
15701
15702/* interface ID3D12ProtectedResourceSession1 */
15703/* [unique][local][object][uuid] */
15704
15705
15706EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
15707
15708#if defined(__cplusplus) && !defined(CINTERFACE)
15709
15710 MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
15711 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
15712 {
15713 public:
15714 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
15715
15716 };
15717
15718
15719#else /* C style interface */
15720
15721 typedef struct ID3D12ProtectedResourceSession1Vtbl
15722 {
15723 BEGIN_INTERFACE
15724
15725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15727 ID3D12ProtectedResourceSession1 * This,
15728 REFIID riid,
15729 _COM_Outptr_ void **ppvObject);
15730
15731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15732 ULONG ( STDMETHODCALLTYPE *AddRef )(
15733 ID3D12ProtectedResourceSession1 * This);
15734
15735 DECLSPEC_XFGVIRT(IUnknown, Release)
15736 ULONG ( STDMETHODCALLTYPE *Release )(
15737 ID3D12ProtectedResourceSession1 * This);
15738
15739 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15740 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15741 ID3D12ProtectedResourceSession1 * This,
15742 _In_ REFGUID guid,
15743 _Inout_ UINT *pDataSize,
15744 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15745
15746 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15747 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15748 ID3D12ProtectedResourceSession1 * This,
15749 _In_ REFGUID guid,
15750 _In_ UINT DataSize,
15751 _In_reads_bytes_opt_( DataSize ) const void *pData);
15752
15753 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15754 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15755 ID3D12ProtectedResourceSession1 * This,
15756 _In_ REFGUID guid,
15757 _In_opt_ const IUnknown *pData);
15758
15759 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15760 HRESULT ( STDMETHODCALLTYPE *SetName )(
15761 ID3D12ProtectedResourceSession1 * This,
15762 _In_z_ LPCWSTR Name);
15763
15764 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
15765 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
15766 ID3D12ProtectedResourceSession1 * This,
15767 REFIID riid,
15768 _COM_Outptr_opt_ void **ppvDevice);
15769
15770 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
15771 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
15772 ID3D12ProtectedResourceSession1 * This,
15773 REFIID riid,
15774 _COM_Outptr_opt_ void **ppFence);
15775
15776 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
15777 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
15778 ID3D12ProtectedResourceSession1 * This);
15779
15780 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
15781 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
15782 ID3D12ProtectedResourceSession1 * This,
15783 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
15784
15785 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
15786 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
15787 ID3D12ProtectedResourceSession1 * This,
15788 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
15789
15790 END_INTERFACE
15791 } ID3D12ProtectedResourceSession1Vtbl;
15792
15793 interface ID3D12ProtectedResourceSession1
15794 {
15795 CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
15796 };
15797
15798
15799
15800#ifdef COBJMACROS
15801
15802
15803#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
15804 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
15805
15806#define ID3D12ProtectedResourceSession1_AddRef(This) \
15807 ( (This)->lpVtbl -> AddRef(This) )
15808
15809#define ID3D12ProtectedResourceSession1_Release(This) \
15810 ( (This)->lpVtbl -> Release(This) )
15811
15812
15813#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
15814 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
15815
15816#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
15817 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
15818
15819#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
15820 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
15821
15822#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
15823 ( (This)->lpVtbl -> SetName(This,Name) )
15824
15825
15826#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
15827 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
15828
15829
15830#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
15831 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
15832
15833#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
15834 ( (This)->lpVtbl -> GetSessionStatus(This) )
15835
15836
15837#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
15838 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
15839
15840
15841#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
15842 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
15843
15844#endif /* COBJMACROS */
15845
15846
15847#endif /* C style interface */
15848
15849
15850
15851
15852#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
15853
15854
15855#ifndef __ID3D12Device7_INTERFACE_DEFINED__
15856#define __ID3D12Device7_INTERFACE_DEFINED__
15857
15858/* interface ID3D12Device7 */
15859/* [unique][local][object][uuid] */
15860
15861
15862EXTERN_C const IID IID_ID3D12Device7;
15863
15864#if defined(__cplusplus) && !defined(CINTERFACE)
15865
15866 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
15867 ID3D12Device7 : public ID3D12Device6
15868 {
15869 public:
15870 virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
15871 const D3D12_STATE_OBJECT_DESC *pAddition,
15872 ID3D12StateObject *pStateObjectToGrowFrom,
15873 REFIID riid,
15874 _COM_Outptr_ void **ppNewStateObject) = 0;
15875
15876 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
15877 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
15878 _In_ REFIID riid,
15879 _COM_Outptr_ void **ppSession) = 0;
15880
15881 };
15882
15883
15884#else /* C style interface */
15885
15886 typedef struct ID3D12Device7Vtbl
15887 {
15888 BEGIN_INTERFACE
15889
15890 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15891 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15892 ID3D12Device7 * This,
15893 REFIID riid,
15894 _COM_Outptr_ void **ppvObject);
15895
15896 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15897 ULONG ( STDMETHODCALLTYPE *AddRef )(
15898 ID3D12Device7 * This);
15899
15900 DECLSPEC_XFGVIRT(IUnknown, Release)
15901 ULONG ( STDMETHODCALLTYPE *Release )(
15902 ID3D12Device7 * This);
15903
15904 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15905 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15906 ID3D12Device7 * This,
15907 _In_ REFGUID guid,
15908 _Inout_ UINT *pDataSize,
15909 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15910
15911 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15912 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15913 ID3D12Device7 * This,
15914 _In_ REFGUID guid,
15915 _In_ UINT DataSize,
15916 _In_reads_bytes_opt_( DataSize ) const void *pData);
15917
15918 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15919 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15920 ID3D12Device7 * This,
15921 _In_ REFGUID guid,
15922 _In_opt_ const IUnknown *pData);
15923
15924 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15925 HRESULT ( STDMETHODCALLTYPE *SetName )(
15926 ID3D12Device7 * This,
15927 _In_z_ LPCWSTR Name);
15928
15929 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
15930 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
15931 ID3D12Device7 * This);
15932
15933 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
15934 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
15935 ID3D12Device7 * This,
15936 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
15937 REFIID riid,
15938 _COM_Outptr_ void **ppCommandQueue);
15939
15940 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15941 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15942 ID3D12Device7 * This,
15943 _In_ D3D12_COMMAND_LIST_TYPE type,
15944 REFIID riid,
15945 _COM_Outptr_ void **ppCommandAllocator);
15946
15947 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15948 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15949 ID3D12Device7 * This,
15950 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15951 REFIID riid,
15952 _COM_Outptr_ void **ppPipelineState);
15953
15954 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15955 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15956 ID3D12Device7 * This,
15957 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15958 REFIID riid,
15959 _COM_Outptr_ void **ppPipelineState);
15960
15961 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15962 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15963 ID3D12Device7 * This,
15964 _In_ UINT nodeMask,
15965 _In_ D3D12_COMMAND_LIST_TYPE type,
15966 _In_ ID3D12CommandAllocator *pCommandAllocator,
15967 _In_opt_ ID3D12PipelineState *pInitialState,
15968 REFIID riid,
15969 _COM_Outptr_ void **ppCommandList);
15970
15971 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15972 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15973 ID3D12Device7 * This,
15974 D3D12_FEATURE Feature,
15975 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15976 UINT FeatureSupportDataSize);
15977
15978 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15979 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15980 ID3D12Device7 * This,
15981 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15982 REFIID riid,
15983 _COM_Outptr_ void **ppvHeap);
15984
15985 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15986 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15987 ID3D12Device7 * This,
15988 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15989
15990 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15991 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15992 ID3D12Device7 * This,
15993 _In_ UINT nodeMask,
15994 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15995 _In_ SIZE_T blobLengthInBytes,
15996 REFIID riid,
15997 _COM_Outptr_ void **ppvRootSignature);
15998
15999 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
16000 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
16001 ID3D12Device7 * This,
16002 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
16003 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16004
16005 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
16006 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
16007 ID3D12Device7 * This,
16008 _In_opt_ ID3D12Resource *pResource,
16009 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
16010 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16011
16012 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
16013 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
16014 ID3D12Device7 * This,
16015 _In_opt_ ID3D12Resource *pResource,
16016 _In_opt_ ID3D12Resource *pCounterResource,
16017 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
16018 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16019
16020 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
16021 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
16022 ID3D12Device7 * This,
16023 _In_opt_ ID3D12Resource *pResource,
16024 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
16025 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16026
16027 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
16028 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
16029 ID3D12Device7 * This,
16030 _In_opt_ ID3D12Resource *pResource,
16031 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
16032 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16033
16034 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
16035 void ( STDMETHODCALLTYPE *CreateSampler )(
16036 ID3D12Device7 * This,
16037 _In_ const D3D12_SAMPLER_DESC *pDesc,
16038 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16039
16040 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
16041 void ( STDMETHODCALLTYPE *CopyDescriptors )(
16042 ID3D12Device7 * This,
16043 _In_ UINT NumDestDescriptorRanges,
16044 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
16045 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
16046 _In_ UINT NumSrcDescriptorRanges,
16047 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
16048 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
16049 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16050
16051 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
16052 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
16053 ID3D12Device7 * This,
16054 _In_ UINT NumDescriptors,
16055 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
16056 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
16057 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16058
16059 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
16060 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
16061 ID3D12Device7 * This,
16062 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16063 _In_ UINT visibleMask,
16064 _In_ UINT numResourceDescs,
16065 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
16066
16067 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
16068 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
16069 ID3D12Device7 * This,
16070 D3D12_HEAP_PROPERTIES * RetVal,
16071 _In_ UINT nodeMask,
16072 D3D12_HEAP_TYPE heapType);
16073
16074 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
16075 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
16076 ID3D12Device7 * This,
16077 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16078 D3D12_HEAP_FLAGS HeapFlags,
16079 _In_ const D3D12_RESOURCE_DESC *pDesc,
16080 D3D12_RESOURCE_STATES InitialResourceState,
16081 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16082 REFIID riidResource,
16083 _COM_Outptr_opt_ void **ppvResource);
16084
16085 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
16086 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
16087 ID3D12Device7 * This,
16088 _In_ const D3D12_HEAP_DESC *pDesc,
16089 REFIID riid,
16090 _COM_Outptr_opt_ void **ppvHeap);
16091
16092 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
16093 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
16094 ID3D12Device7 * This,
16095 _In_ ID3D12Heap *pHeap,
16096 UINT64 HeapOffset,
16097 _In_ const D3D12_RESOURCE_DESC *pDesc,
16098 D3D12_RESOURCE_STATES InitialState,
16099 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16100 REFIID riid,
16101 _COM_Outptr_opt_ void **ppvResource);
16102
16103 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
16104 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
16105 ID3D12Device7 * This,
16106 _In_ const D3D12_RESOURCE_DESC *pDesc,
16107 D3D12_RESOURCE_STATES InitialState,
16108 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16109 REFIID riid,
16110 _COM_Outptr_opt_ void **ppvResource);
16111
16112 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
16113 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
16114 ID3D12Device7 * This,
16115 _In_ ID3D12DeviceChild *pObject,
16116 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
16117 DWORD Access,
16118 _In_opt_ LPCWSTR Name,
16119 _Out_ HANDLE *pHandle);
16120
16121 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
16122 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
16123 ID3D12Device7 * This,
16124 _In_ HANDLE NTHandle,
16125 REFIID riid,
16126 _COM_Outptr_opt_ void **ppvObj);
16127
16128 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
16129 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
16130 ID3D12Device7 * This,
16131 _In_ LPCWSTR Name,
16132 DWORD Access,
16133 /* [annotation][out] */
16134 _Out_ HANDLE *pNTHandle);
16135
16136 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
16137 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
16138 ID3D12Device7 * This,
16139 UINT NumObjects,
16140 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16141
16142 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16143 HRESULT ( STDMETHODCALLTYPE *Evict )(
16144 ID3D12Device7 * This,
16145 UINT NumObjects,
16146 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16147
16148 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16149 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16150 ID3D12Device7 * This,
16151 UINT64 InitialValue,
16152 D3D12_FENCE_FLAGS Flags,
16153 REFIID riid,
16154 _COM_Outptr_ void **ppFence);
16155
16156 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16157 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16158 ID3D12Device7 * This);
16159
16160 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16161 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16162 ID3D12Device7 * This,
16163 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16166 UINT64 BaseOffset,
16167 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16168 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16169 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16170 _Out_opt_ UINT64 *pTotalBytes);
16171
16172 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16173 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16174 ID3D12Device7 * This,
16175 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16176 REFIID riid,
16177 _COM_Outptr_opt_ void **ppvHeap);
16178
16179 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16180 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16181 ID3D12Device7 * This,
16182 BOOL Enable);
16183
16184 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16185 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16186 ID3D12Device7 * This,
16187 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16188 _In_opt_ ID3D12RootSignature *pRootSignature,
16189 REFIID riid,
16190 _COM_Outptr_opt_ void **ppvCommandSignature);
16191
16192 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16193 void ( STDMETHODCALLTYPE *GetResourceTiling )(
16194 ID3D12Device7 * This,
16195 _In_ ID3D12Resource *pTiledResource,
16196 _Out_opt_ UINT *pNumTilesForEntireResource,
16197 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
16198 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
16199 _Inout_opt_ UINT *pNumSubresourceTilings,
16200 _In_ UINT FirstSubresourceTilingToGet,
16201 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
16202
16203 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
16204 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
16205 ID3D12Device7 * This,
16206 LUID * RetVal);
16207
16208 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
16209 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
16210 ID3D12Device7 * This,
16211 _In_reads_(BlobLength) const void *pLibraryBlob,
16212 SIZE_T BlobLength,
16213 REFIID riid,
16214 _COM_Outptr_ void **ppPipelineLibrary);
16215
16216 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
16217 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
16218 ID3D12Device7 * This,
16219 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
16220 _In_reads_(NumFences) const UINT64 *pFenceValues,
16221 UINT NumFences,
16222 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
16223 HANDLE hEvent);
16224
16225 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
16226 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
16227 ID3D12Device7 * This,
16228 UINT NumObjects,
16229 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16230 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
16231
16232 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
16233 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
16234 ID3D12Device7 * This,
16235 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
16236 REFIID riid,
16237 _COM_Outptr_ void **ppPipelineState);
16238
16239 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
16240 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
16241 ID3D12Device7 * This,
16242 _In_ const void *pAddress,
16243 REFIID riid,
16244 _COM_Outptr_ void **ppvHeap);
16245
16246 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
16247 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
16248 ID3D12Device7 * This,
16249 _In_ HANDLE hFileMapping,
16250 REFIID riid,
16251 _COM_Outptr_ void **ppvHeap);
16252
16253 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
16254 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
16255 ID3D12Device7 * This,
16256 D3D12_RESIDENCY_FLAGS Flags,
16257 UINT NumObjects,
16258 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16259 _In_ ID3D12Fence *pFenceToSignal,
16260 UINT64 FenceValueToSignal);
16261
16262 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
16263 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
16264 ID3D12Device7 * This,
16265 _In_ UINT nodeMask,
16266 _In_ D3D12_COMMAND_LIST_TYPE type,
16267 _In_ D3D12_COMMAND_LIST_FLAGS flags,
16268 REFIID riid,
16269 _COM_Outptr_ void **ppCommandList);
16270
16271 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
16272 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
16273 ID3D12Device7 * This,
16274 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
16275 _In_ REFIID riid,
16276 _COM_Outptr_ void **ppSession);
16277
16278 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
16279 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
16280 ID3D12Device7 * This,
16281 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16282 D3D12_HEAP_FLAGS HeapFlags,
16283 _In_ const D3D12_RESOURCE_DESC *pDesc,
16284 D3D12_RESOURCE_STATES InitialResourceState,
16285 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16286 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16287 REFIID riidResource,
16288 _COM_Outptr_opt_ void **ppvResource);
16289
16290 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
16291 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
16292 ID3D12Device7 * This,
16293 _In_ const D3D12_HEAP_DESC *pDesc,
16294 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16295 REFIID riid,
16296 _COM_Outptr_opt_ void **ppvHeap);
16297
16298 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
16299 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
16300 ID3D12Device7 * This,
16301 _In_ const D3D12_RESOURCE_DESC *pDesc,
16302 D3D12_RESOURCE_STATES InitialState,
16303 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16304 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16305 REFIID riid,
16306 _COM_Outptr_opt_ void **ppvResource);
16307
16308 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
16309 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16310 ID3D12Device7 * This,
16311 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16312 UINT visibleMask,
16313 UINT numResourceDescs,
16314 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16315 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16316
16317 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
16318 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
16319 ID3D12Device7 * This,
16320 _In_ ID3D12LifetimeOwner *pOwner,
16321 REFIID riid,
16322 _COM_Outptr_ void **ppvTracker);
16323
16324 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
16325 void ( STDMETHODCALLTYPE *RemoveDevice )(
16326 ID3D12Device7 * This);
16327
16328 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
16329 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
16330 ID3D12Device7 * This,
16331 _Inout_ UINT *pNumMetaCommands,
16332 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
16333
16334 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
16335 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
16336 ID3D12Device7 * This,
16337 _In_ REFGUID CommandId,
16338 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
16339 _Out_opt_ UINT *pTotalStructureSizeInBytes,
16340 _Inout_ UINT *pParameterCount,
16341 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
16342
16343 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
16344 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
16345 ID3D12Device7 * This,
16346 _In_ REFGUID CommandId,
16347 _In_ UINT NodeMask,
16348 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
16349 _In_ SIZE_T CreationParametersDataSizeInBytes,
16350 REFIID riid,
16351 _COM_Outptr_ void **ppMetaCommand);
16352
16353 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
16354 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
16355 ID3D12Device7 * This,
16356 const D3D12_STATE_OBJECT_DESC *pDesc,
16357 REFIID riid,
16358 _COM_Outptr_ void **ppStateObject);
16359
16360 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
16361 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
16362 ID3D12Device7 * This,
16363 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
16364 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
16365
16366 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
16367 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
16368 ID3D12Device7 * This,
16369 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
16370 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
16371
16372 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
16373 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
16374 ID3D12Device7 * This,
16375 D3D12_BACKGROUND_PROCESSING_MODE Mode,
16376 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
16377 _In_opt_ HANDLE hEventToSignalUponCompletion,
16378 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
16379
16380 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
16381 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
16382 ID3D12Device7 * This,
16383 const D3D12_STATE_OBJECT_DESC *pAddition,
16384 ID3D12StateObject *pStateObjectToGrowFrom,
16385 REFIID riid,
16386 _COM_Outptr_ void **ppNewStateObject);
16387
16388 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
16389 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
16390 ID3D12Device7 * This,
16391 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
16392 _In_ REFIID riid,
16393 _COM_Outptr_ void **ppSession);
16394
16395 END_INTERFACE
16396 } ID3D12Device7Vtbl;
16397
16398 interface ID3D12Device7
16399 {
16400 CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
16401 };
16402
16403
16404
16405#ifdef COBJMACROS
16406
16407
16408#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
16409 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16410
16411#define ID3D12Device7_AddRef(This) \
16412 ( (This)->lpVtbl -> AddRef(This) )
16413
16414#define ID3D12Device7_Release(This) \
16415 ( (This)->lpVtbl -> Release(This) )
16416
16417
16418#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
16419 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
16420
16421#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
16422 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
16423
16424#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
16425 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
16426
16427#define ID3D12Device7_SetName(This,Name) \
16428 ( (This)->lpVtbl -> SetName(This,Name) )
16429
16430
16431#define ID3D12Device7_GetNodeCount(This) \
16432 ( (This)->lpVtbl -> GetNodeCount(This) )
16433
16434#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
16435 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
16436
16437#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
16438 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
16439
16440#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
16441 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
16442
16443#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
16444 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
16445
16446#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
16447 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
16448
16449#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
16450 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
16451
16452#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
16453 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
16454
16455#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
16456 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
16457
16458#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
16459 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
16460
16461#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
16462 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
16463
16464#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
16465 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
16466
16467#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
16468 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
16469
16470#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
16471 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
16472
16473#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
16474 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
16475
16476#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
16477 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
16478
16479#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
16480 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
16481
16482#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
16483 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
16484
16485#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
16486 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
16487
16488#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
16489 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
16490
16491#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
16492 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
16493
16494#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
16495 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
16496
16497#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16498 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16499
16500#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16501 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16502
16503#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
16504 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
16505
16506#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
16507 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
16508
16509#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
16510 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
16511
16512#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
16513 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
16514
16515#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
16516 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
16517
16518#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
16519 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
16520
16521#define ID3D12Device7_GetDeviceRemovedReason(This) \
16522 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
16523
16524#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
16525 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
16526
16527#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
16528 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
16529
16530#define ID3D12Device7_SetStablePowerState(This,Enable) \
16531 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
16532
16533#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
16534 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
16535
16536#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
16537 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
16538
16539#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
16540 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
16541
16542
16543#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
16544 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
16545
16546#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
16547 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
16548
16549#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
16550 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
16551
16552
16553#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
16554 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
16555
16556
16557#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
16558 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
16559
16560#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
16561 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
16562
16563#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
16564 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
16565
16566
16567#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
16568 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
16569
16570#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
16571 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
16572
16573#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
16574 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
16575
16576#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
16577 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
16578
16579#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
16580 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
16581
16582#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16583 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16584
16585
16586#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
16587 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
16588
16589#define ID3D12Device7_RemoveDevice(This) \
16590 ( (This)->lpVtbl -> RemoveDevice(This) )
16591
16592#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
16593 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
16594
16595#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
16596 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
16597
16598#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
16599 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
16600
16601#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
16602 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
16603
16604#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
16605 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
16606
16607#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
16608 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
16609
16610
16611#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
16612 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
16613
16614
16615#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
16616 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
16617
16618#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
16619 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
16620
16621#endif /* COBJMACROS */
16622
16623
16624#endif /* C style interface */
16625
16626
16627
16628
16629#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
16630
16631
16632#ifndef __ID3D12Device8_INTERFACE_DEFINED__
16633#define __ID3D12Device8_INTERFACE_DEFINED__
16634
16635/* interface ID3D12Device8 */
16636/* [unique][local][object][uuid] */
16637
16638
16639EXTERN_C const IID IID_ID3D12Device8;
16640
16641#if defined(__cplusplus) && !defined(CINTERFACE)
16642
16643 MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
16644 ID3D12Device8 : public ID3D12Device7
16645 {
16646 public:
16647 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
16648 UINT visibleMask,
16649 UINT numResourceDescs,
16650 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
16651 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
16652
16653 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
16654 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16655 D3D12_HEAP_FLAGS HeapFlags,
16656 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
16657 D3D12_RESOURCE_STATES InitialResourceState,
16658 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16659 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16660 REFIID riidResource,
16661 _COM_Outptr_opt_ void **ppvResource) = 0;
16662
16663 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
16664 _In_ ID3D12Heap *pHeap,
16665 UINT64 HeapOffset,
16666 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
16667 D3D12_RESOURCE_STATES InitialState,
16668 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16669 REFIID riid,
16670 _COM_Outptr_opt_ void **ppvResource) = 0;
16671
16672 virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
16673 _In_opt_ ID3D12Resource *pTargetedResource,
16674 _In_opt_ ID3D12Resource *pFeedbackResource,
16675 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
16676
16677 virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
16678 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
16679 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16680 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16681 UINT64 BaseOffset,
16682 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16683 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16684 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16685 _Out_opt_ UINT64 *pTotalBytes) = 0;
16686
16687 };
16688
16689
16690#else /* C style interface */
16691
16692 typedef struct ID3D12Device8Vtbl
16693 {
16694 BEGIN_INTERFACE
16695
16696 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16697 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16698 ID3D12Device8 * This,
16699 REFIID riid,
16700 _COM_Outptr_ void **ppvObject);
16701
16702 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16703 ULONG ( STDMETHODCALLTYPE *AddRef )(
16704 ID3D12Device8 * This);
16705
16706 DECLSPEC_XFGVIRT(IUnknown, Release)
16707 ULONG ( STDMETHODCALLTYPE *Release )(
16708 ID3D12Device8 * This);
16709
16710 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
16711 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
16712 ID3D12Device8 * This,
16713 _In_ REFGUID guid,
16714 _Inout_ UINT *pDataSize,
16715 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
16716
16717 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
16718 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
16719 ID3D12Device8 * This,
16720 _In_ REFGUID guid,
16721 _In_ UINT DataSize,
16722 _In_reads_bytes_opt_( DataSize ) const void *pData);
16723
16724 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
16725 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
16726 ID3D12Device8 * This,
16727 _In_ REFGUID guid,
16728 _In_opt_ const IUnknown *pData);
16729
16730 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
16731 HRESULT ( STDMETHODCALLTYPE *SetName )(
16732 ID3D12Device8 * This,
16733 _In_z_ LPCWSTR Name);
16734
16735 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
16736 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
16737 ID3D12Device8 * This);
16738
16739 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
16740 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
16741 ID3D12Device8 * This,
16742 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
16743 REFIID riid,
16744 _COM_Outptr_ void **ppCommandQueue);
16745
16746 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
16747 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
16748 ID3D12Device8 * This,
16749 _In_ D3D12_COMMAND_LIST_TYPE type,
16750 REFIID riid,
16751 _COM_Outptr_ void **ppCommandAllocator);
16752
16753 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
16754 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
16755 ID3D12Device8 * This,
16756 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
16757 REFIID riid,
16758 _COM_Outptr_ void **ppPipelineState);
16759
16760 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
16761 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
16762 ID3D12Device8 * This,
16763 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
16764 REFIID riid,
16765 _COM_Outptr_ void **ppPipelineState);
16766
16767 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
16768 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
16769 ID3D12Device8 * This,
16770 _In_ UINT nodeMask,
16771 _In_ D3D12_COMMAND_LIST_TYPE type,
16772 _In_ ID3D12CommandAllocator *pCommandAllocator,
16773 _In_opt_ ID3D12PipelineState *pInitialState,
16774 REFIID riid,
16775 _COM_Outptr_ void **ppCommandList);
16776
16777 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
16778 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
16779 ID3D12Device8 * This,
16780 D3D12_FEATURE Feature,
16781 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
16782 UINT FeatureSupportDataSize);
16783
16784 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
16785 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
16786 ID3D12Device8 * This,
16787 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
16788 REFIID riid,
16789 _COM_Outptr_ void **ppvHeap);
16790
16791 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
16792 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
16793 ID3D12Device8 * This,
16794 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
16795
16796 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
16797 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
16798 ID3D12Device8 * This,
16799 _In_ UINT nodeMask,
16800 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
16801 _In_ SIZE_T blobLengthInBytes,
16802 REFIID riid,
16803 _COM_Outptr_ void **ppvRootSignature);
16804
16805 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
16806 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
16807 ID3D12Device8 * This,
16808 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
16809 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16810
16811 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
16812 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
16813 ID3D12Device8 * This,
16814 _In_opt_ ID3D12Resource *pResource,
16815 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
16816 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16817
16818 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
16819 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
16820 ID3D12Device8 * This,
16821 _In_opt_ ID3D12Resource *pResource,
16822 _In_opt_ ID3D12Resource *pCounterResource,
16823 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
16824 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16825
16826 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
16827 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
16828 ID3D12Device8 * This,
16829 _In_opt_ ID3D12Resource *pResource,
16830 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
16831 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16832
16833 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
16834 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
16835 ID3D12Device8 * This,
16836 _In_opt_ ID3D12Resource *pResource,
16837 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
16838 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16839
16840 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
16841 void ( STDMETHODCALLTYPE *CreateSampler )(
16842 ID3D12Device8 * This,
16843 _In_ const D3D12_SAMPLER_DESC *pDesc,
16844 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
16845
16846 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
16847 void ( STDMETHODCALLTYPE *CopyDescriptors )(
16848 ID3D12Device8 * This,
16849 _In_ UINT NumDestDescriptorRanges,
16850 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
16851 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
16852 _In_ UINT NumSrcDescriptorRanges,
16853 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
16854 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
16855 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16856
16857 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
16858 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
16859 ID3D12Device8 * This,
16860 _In_ UINT NumDescriptors,
16861 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
16862 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
16863 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
16864
16865 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
16866 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
16867 ID3D12Device8 * This,
16868 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16869 _In_ UINT visibleMask,
16870 _In_ UINT numResourceDescs,
16871 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
16872
16873 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
16874 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
16875 ID3D12Device8 * This,
16876 D3D12_HEAP_PROPERTIES * RetVal,
16877 _In_ UINT nodeMask,
16878 D3D12_HEAP_TYPE heapType);
16879
16880 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
16881 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
16882 ID3D12Device8 * This,
16883 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16884 D3D12_HEAP_FLAGS HeapFlags,
16885 _In_ const D3D12_RESOURCE_DESC *pDesc,
16886 D3D12_RESOURCE_STATES InitialResourceState,
16887 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16888 REFIID riidResource,
16889 _COM_Outptr_opt_ void **ppvResource);
16890
16891 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
16892 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
16893 ID3D12Device8 * This,
16894 _In_ const D3D12_HEAP_DESC *pDesc,
16895 REFIID riid,
16896 _COM_Outptr_opt_ void **ppvHeap);
16897
16898 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
16899 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
16900 ID3D12Device8 * This,
16901 _In_ ID3D12Heap *pHeap,
16902 UINT64 HeapOffset,
16903 _In_ const D3D12_RESOURCE_DESC *pDesc,
16904 D3D12_RESOURCE_STATES InitialState,
16905 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16906 REFIID riid,
16907 _COM_Outptr_opt_ void **ppvResource);
16908
16909 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
16910 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
16911 ID3D12Device8 * This,
16912 _In_ const D3D12_RESOURCE_DESC *pDesc,
16913 D3D12_RESOURCE_STATES InitialState,
16914 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16915 REFIID riid,
16916 _COM_Outptr_opt_ void **ppvResource);
16917
16918 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
16919 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
16920 ID3D12Device8 * This,
16921 _In_ ID3D12DeviceChild *pObject,
16922 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
16923 DWORD Access,
16924 _In_opt_ LPCWSTR Name,
16925 _Out_ HANDLE *pHandle);
16926
16927 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
16928 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
16929 ID3D12Device8 * This,
16930 _In_ HANDLE NTHandle,
16931 REFIID riid,
16932 _COM_Outptr_opt_ void **ppvObj);
16933
16934 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
16935 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
16936 ID3D12Device8 * This,
16937 _In_ LPCWSTR Name,
16938 DWORD Access,
16939 /* [annotation][out] */
16940 _Out_ HANDLE *pNTHandle);
16941
16942 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
16943 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
16944 ID3D12Device8 * This,
16945 UINT NumObjects,
16946 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16947
16948 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16949 HRESULT ( STDMETHODCALLTYPE *Evict )(
16950 ID3D12Device8 * This,
16951 UINT NumObjects,
16952 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16953
16954 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16955 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16956 ID3D12Device8 * This,
16957 UINT64 InitialValue,
16958 D3D12_FENCE_FLAGS Flags,
16959 REFIID riid,
16960 _COM_Outptr_ void **ppFence);
16961
16962 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16963 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16964 ID3D12Device8 * This);
16965
16966 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16967 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16968 ID3D12Device8 * This,
16969 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16970 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16971 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16972 UINT64 BaseOffset,
16973 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16974 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16975 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16976 _Out_opt_ UINT64 *pTotalBytes);
16977
16978 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16979 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16980 ID3D12Device8 * This,
16981 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16982 REFIID riid,
16983 _COM_Outptr_opt_ void **ppvHeap);
16984
16985 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16986 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16987 ID3D12Device8 * This,
16988 BOOL Enable);
16989
16990 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16991 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16992 ID3D12Device8 * This,
16993 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16994 _In_opt_ ID3D12RootSignature *pRootSignature,
16995 REFIID riid,
16996 _COM_Outptr_opt_ void **ppvCommandSignature);
16997
16998 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16999 void ( STDMETHODCALLTYPE *GetResourceTiling )(
17000 ID3D12Device8 * This,
17001 _In_ ID3D12Resource *pTiledResource,
17002 _Out_opt_ UINT *pNumTilesForEntireResource,
17003 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
17004 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
17005 _Inout_opt_ UINT *pNumSubresourceTilings,
17006 _In_ UINT FirstSubresourceTilingToGet,
17007 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
17008
17009 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
17010 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
17011 ID3D12Device8 * This,
17012 LUID * RetVal);
17013
17014 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
17015 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
17016 ID3D12Device8 * This,
17017 _In_reads_(BlobLength) const void *pLibraryBlob,
17018 SIZE_T BlobLength,
17019 REFIID riid,
17020 _COM_Outptr_ void **ppPipelineLibrary);
17021
17022 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
17023 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
17024 ID3D12Device8 * This,
17025 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
17026 _In_reads_(NumFences) const UINT64 *pFenceValues,
17027 UINT NumFences,
17028 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
17029 HANDLE hEvent);
17030
17031 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
17032 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
17033 ID3D12Device8 * This,
17034 UINT NumObjects,
17035 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17036 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
17037
17038 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
17039 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
17040 ID3D12Device8 * This,
17041 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
17042 REFIID riid,
17043 _COM_Outptr_ void **ppPipelineState);
17044
17045 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
17046 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
17047 ID3D12Device8 * This,
17048 _In_ const void *pAddress,
17049 REFIID riid,
17050 _COM_Outptr_ void **ppvHeap);
17051
17052 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
17053 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
17054 ID3D12Device8 * This,
17055 _In_ HANDLE hFileMapping,
17056 REFIID riid,
17057 _COM_Outptr_ void **ppvHeap);
17058
17059 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
17060 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
17061 ID3D12Device8 * This,
17062 D3D12_RESIDENCY_FLAGS Flags,
17063 UINT NumObjects,
17064 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17065 _In_ ID3D12Fence *pFenceToSignal,
17066 UINT64 FenceValueToSignal);
17067
17068 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
17069 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
17070 ID3D12Device8 * This,
17071 _In_ UINT nodeMask,
17072 _In_ D3D12_COMMAND_LIST_TYPE type,
17073 _In_ D3D12_COMMAND_LIST_FLAGS flags,
17074 REFIID riid,
17075 _COM_Outptr_ void **ppCommandList);
17076
17077 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
17078 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
17079 ID3D12Device8 * This,
17080 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
17081 _In_ REFIID riid,
17082 _COM_Outptr_ void **ppSession);
17083
17084 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
17085 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
17086 ID3D12Device8 * This,
17087 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17088 D3D12_HEAP_FLAGS HeapFlags,
17089 _In_ const D3D12_RESOURCE_DESC *pDesc,
17090 D3D12_RESOURCE_STATES InitialResourceState,
17091 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17092 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17093 REFIID riidResource,
17094 _COM_Outptr_opt_ void **ppvResource);
17095
17096 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
17097 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
17098 ID3D12Device8 * This,
17099 _In_ const D3D12_HEAP_DESC *pDesc,
17100 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17101 REFIID riid,
17102 _COM_Outptr_opt_ void **ppvHeap);
17103
17104 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
17105 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
17106 ID3D12Device8 * This,
17107 _In_ const D3D12_RESOURCE_DESC *pDesc,
17108 D3D12_RESOURCE_STATES InitialState,
17109 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17110 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17111 REFIID riid,
17112 _COM_Outptr_opt_ void **ppvResource);
17113
17114 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
17115 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17116 ID3D12Device8 * This,
17117 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17118 UINT visibleMask,
17119 UINT numResourceDescs,
17120 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17121 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17122
17123 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
17124 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
17125 ID3D12Device8 * This,
17126 _In_ ID3D12LifetimeOwner *pOwner,
17127 REFIID riid,
17128 _COM_Outptr_ void **ppvTracker);
17129
17130 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
17131 void ( STDMETHODCALLTYPE *RemoveDevice )(
17132 ID3D12Device8 * This);
17133
17134 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
17135 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
17136 ID3D12Device8 * This,
17137 _Inout_ UINT *pNumMetaCommands,
17138 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
17139
17140 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
17141 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
17142 ID3D12Device8 * This,
17143 _In_ REFGUID CommandId,
17144 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
17145 _Out_opt_ UINT *pTotalStructureSizeInBytes,
17146 _Inout_ UINT *pParameterCount,
17147 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
17148
17149 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
17150 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
17151 ID3D12Device8 * This,
17152 _In_ REFGUID CommandId,
17153 _In_ UINT NodeMask,
17154 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
17155 _In_ SIZE_T CreationParametersDataSizeInBytes,
17156 REFIID riid,
17157 _COM_Outptr_ void **ppMetaCommand);
17158
17159 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
17160 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
17161 ID3D12Device8 * This,
17162 const D3D12_STATE_OBJECT_DESC *pDesc,
17163 REFIID riid,
17164 _COM_Outptr_ void **ppStateObject);
17165
17166 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
17167 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
17168 ID3D12Device8 * This,
17169 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
17170 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
17171
17172 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
17173 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
17174 ID3D12Device8 * This,
17175 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
17176 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
17177
17178 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
17179 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
17180 ID3D12Device8 * This,
17181 D3D12_BACKGROUND_PROCESSING_MODE Mode,
17182 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
17183 _In_opt_ HANDLE hEventToSignalUponCompletion,
17184 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
17185
17186 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
17187 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
17188 ID3D12Device8 * This,
17189 const D3D12_STATE_OBJECT_DESC *pAddition,
17190 ID3D12StateObject *pStateObjectToGrowFrom,
17191 REFIID riid,
17192 _COM_Outptr_ void **ppNewStateObject);
17193
17194 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
17195 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
17196 ID3D12Device8 * This,
17197 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
17198 _In_ REFIID riid,
17199 _COM_Outptr_ void **ppSession);
17200
17201 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
17202 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
17203 ID3D12Device8 * This,
17204 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17205 UINT visibleMask,
17206 UINT numResourceDescs,
17207 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
17208 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17209
17210 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
17211 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
17212 ID3D12Device8 * This,
17213 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17214 D3D12_HEAP_FLAGS HeapFlags,
17215 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
17216 D3D12_RESOURCE_STATES InitialResourceState,
17217 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17219 REFIID riidResource,
17220 _COM_Outptr_opt_ void **ppvResource);
17221
17222 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
17223 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
17224 ID3D12Device8 * This,
17225 _In_ ID3D12Heap *pHeap,
17226 UINT64 HeapOffset,
17227 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
17228 D3D12_RESOURCE_STATES InitialState,
17229 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17230 REFIID riid,
17231 _COM_Outptr_opt_ void **ppvResource);
17232
17233 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
17234 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
17235 ID3D12Device8 * This,
17236 _In_opt_ ID3D12Resource *pTargetedResource,
17237 _In_opt_ ID3D12Resource *pFeedbackResource,
17238 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17239
17240 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
17241 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
17242 ID3D12Device8 * This,
17243 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
17244 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
17245 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
17246 UINT64 BaseOffset,
17247 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
17248 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
17249 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
17250 _Out_opt_ UINT64 *pTotalBytes);
17251
17252 END_INTERFACE
17253 } ID3D12Device8Vtbl;
17254
17255 interface ID3D12Device8
17256 {
17257 CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
17258 };
17259
17260
17261
17262#ifdef COBJMACROS
17263
17264
17265#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
17266 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17267
17268#define ID3D12Device8_AddRef(This) \
17269 ( (This)->lpVtbl -> AddRef(This) )
17270
17271#define ID3D12Device8_Release(This) \
17272 ( (This)->lpVtbl -> Release(This) )
17273
17274
17275#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
17276 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17277
17278#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
17279 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17280
17281#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
17282 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17283
17284#define ID3D12Device8_SetName(This,Name) \
17285 ( (This)->lpVtbl -> SetName(This,Name) )
17286
17287
17288#define ID3D12Device8_GetNodeCount(This) \
17289 ( (This)->lpVtbl -> GetNodeCount(This) )
17290
17291#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
17292 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
17293
17294#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
17295 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
17296
17297#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
17298 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
17299
17300#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
17301 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
17302
17303#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
17304 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
17305
17306#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
17307 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
17308
17309#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
17310 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
17311
17312#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
17313 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
17314
17315#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
17316 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
17317
17318#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
17319 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
17320
17321#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
17322 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
17323
17324#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
17325 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
17326
17327#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
17328 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
17329
17330#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
17331 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
17332
17333#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
17334 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
17335
17336#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
17337 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
17338
17339#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
17340 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
17341
17342#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
17343 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
17344
17345#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
17346 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
17347
17348#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
17349 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
17350
17351#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
17352 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
17353
17354#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17355 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17356
17357#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17358 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17359
17360#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
17361 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
17362
17363#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
17364 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
17365
17366#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
17367 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
17368
17369#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
17370 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
17371
17372#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
17373 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
17374
17375#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
17376 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
17377
17378#define ID3D12Device8_GetDeviceRemovedReason(This) \
17379 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
17380
17381#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
17382 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
17383
17384#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
17385 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
17386
17387#define ID3D12Device8_SetStablePowerState(This,Enable) \
17388 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
17389
17390#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
17391 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
17392
17393#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
17394 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
17395
17396#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
17397 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
17398
17399
17400#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
17401 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
17402
17403#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
17404 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
17405
17406#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
17407 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
17408
17409
17410#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
17411 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
17412
17413
17414#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
17415 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
17416
17417#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
17418 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
17419
17420#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
17421 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
17422
17423
17424#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
17425 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
17426
17427#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
17428 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
17429
17430#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
17431 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
17432
17433#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
17434 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
17435
17436#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
17437 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
17438
17439#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
17440 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
17441
17442
17443#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
17444 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
17445
17446#define ID3D12Device8_RemoveDevice(This) \
17447 ( (This)->lpVtbl -> RemoveDevice(This) )
17448
17449#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
17450 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
17451
17452#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
17453 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
17454
17455#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
17456 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
17457
17458#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
17459 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
17460
17461#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
17462 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
17463
17464#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
17465 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
17466
17467
17468#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
17469 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
17470
17471
17472#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
17473 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
17474
17475#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
17476 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
17477
17478
17479#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
17480 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
17481
17482#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
17483 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
17484
17485#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
17486 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
17487
17488#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
17489 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
17490
17491#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
17492 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
17493
17494#endif /* COBJMACROS */
17495
17496
17497#endif /* C style interface */
17498
17499
17500
17501
17502#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
17503
17504
17505#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
17506#define __ID3D12Resource1_INTERFACE_DEFINED__
17507
17508/* interface ID3D12Resource1 */
17509/* [unique][local][object][uuid] */
17510
17511
17512EXTERN_C const IID IID_ID3D12Resource1;
17513
17514#if defined(__cplusplus) && !defined(CINTERFACE)
17515
17516 MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
17517 ID3D12Resource1 : public ID3D12Resource
17518 {
17519 public:
17520 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
17521 REFIID riid,
17522 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
17523
17524 };
17525
17526
17527#else /* C style interface */
17528
17529 typedef struct ID3D12Resource1Vtbl
17530 {
17531 BEGIN_INTERFACE
17532
17533 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17534 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17535 ID3D12Resource1 * This,
17536 REFIID riid,
17537 _COM_Outptr_ void **ppvObject);
17538
17539 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17540 ULONG ( STDMETHODCALLTYPE *AddRef )(
17541 ID3D12Resource1 * This);
17542
17543 DECLSPEC_XFGVIRT(IUnknown, Release)
17544 ULONG ( STDMETHODCALLTYPE *Release )(
17545 ID3D12Resource1 * This);
17546
17547 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17548 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17549 ID3D12Resource1 * This,
17550 _In_ REFGUID guid,
17551 _Inout_ UINT *pDataSize,
17552 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17553
17554 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17555 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17556 ID3D12Resource1 * This,
17557 _In_ REFGUID guid,
17558 _In_ UINT DataSize,
17559 _In_reads_bytes_opt_( DataSize ) const void *pData);
17560
17561 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17562 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17563 ID3D12Resource1 * This,
17564 _In_ REFGUID guid,
17565 _In_opt_ const IUnknown *pData);
17566
17567 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17568 HRESULT ( STDMETHODCALLTYPE *SetName )(
17569 ID3D12Resource1 * This,
17570 _In_z_ LPCWSTR Name);
17571
17572 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17573 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17574 ID3D12Resource1 * This,
17575 REFIID riid,
17576 _COM_Outptr_opt_ void **ppvDevice);
17577
17578 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
17579 HRESULT ( STDMETHODCALLTYPE *Map )(
17580 ID3D12Resource1 * This,
17581 UINT Subresource,
17582 _In_opt_ const D3D12_RANGE *pReadRange,
17583 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
17584
17585 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
17586 void ( STDMETHODCALLTYPE *Unmap )(
17587 ID3D12Resource1 * This,
17588 UINT Subresource,
17589 _In_opt_ const D3D12_RANGE *pWrittenRange);
17590
17591 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
17592 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
17593 ID3D12Resource1 * This,
17594 D3D12_RESOURCE_DESC * RetVal);
17595
17596 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
17597 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
17598 ID3D12Resource1 * This);
17599
17600 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
17601 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
17602 ID3D12Resource1 * This,
17603 UINT DstSubresource,
17604 _In_opt_ const D3D12_BOX *pDstBox,
17605 _In_ const void *pSrcData,
17606 UINT SrcRowPitch,
17607 UINT SrcDepthPitch);
17608
17609 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
17610 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
17611 ID3D12Resource1 * This,
17612 _Out_ void *pDstData,
17613 UINT DstRowPitch,
17614 UINT DstDepthPitch,
17615 UINT SrcSubresource,
17616 _In_opt_ const D3D12_BOX *pSrcBox);
17617
17618 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
17619 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
17620 ID3D12Resource1 * This,
17621 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
17622 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
17623
17624 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
17625 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17626 ID3D12Resource1 * This,
17627 REFIID riid,
17628 _COM_Outptr_opt_ void **ppProtectedSession);
17629
17630 END_INTERFACE
17631 } ID3D12Resource1Vtbl;
17632
17633 interface ID3D12Resource1
17634 {
17635 CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
17636 };
17637
17638
17639
17640#ifdef COBJMACROS
17641
17642
17643#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
17644 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17645
17646#define ID3D12Resource1_AddRef(This) \
17647 ( (This)->lpVtbl -> AddRef(This) )
17648
17649#define ID3D12Resource1_Release(This) \
17650 ( (This)->lpVtbl -> Release(This) )
17651
17652
17653#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
17654 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17655
17656#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
17657 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17658
17659#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
17660 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17661
17662#define ID3D12Resource1_SetName(This,Name) \
17663 ( (This)->lpVtbl -> SetName(This,Name) )
17664
17665
17666#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
17667 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
17668
17669
17670
17671#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
17672 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
17673
17674#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
17675 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
17676
17677#define ID3D12Resource1_GetDesc(This,RetVal) \
17678 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
17679
17680#define ID3D12Resource1_GetGPUVirtualAddress(This) \
17681 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
17682
17683#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
17684 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
17685
17686#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
17687 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
17688
17689#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
17690 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
17691
17692
17693#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
17694 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
17695
17696#endif /* COBJMACROS */
17697
17698
17699#endif /* C style interface */
17700
17701
17702
17703
17704#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
17705
17706
17707#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
17708#define __ID3D12Resource2_INTERFACE_DEFINED__
17709
17710/* interface ID3D12Resource2 */
17711/* [unique][local][object][uuid] */
17712
17713
17714EXTERN_C const IID IID_ID3D12Resource2;
17715
17716#if defined(__cplusplus) && !defined(CINTERFACE)
17717
17718 MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
17719 ID3D12Resource2 : public ID3D12Resource1
17720 {
17721 public:
17722 virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
17723
17724 };
17725
17726
17727#else /* C style interface */
17728
17729 typedef struct ID3D12Resource2Vtbl
17730 {
17731 BEGIN_INTERFACE
17732
17733 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17734 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17735 ID3D12Resource2 * This,
17736 REFIID riid,
17737 _COM_Outptr_ void **ppvObject);
17738
17739 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17740 ULONG ( STDMETHODCALLTYPE *AddRef )(
17741 ID3D12Resource2 * This);
17742
17743 DECLSPEC_XFGVIRT(IUnknown, Release)
17744 ULONG ( STDMETHODCALLTYPE *Release )(
17745 ID3D12Resource2 * This);
17746
17747 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17748 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17749 ID3D12Resource2 * This,
17750 _In_ REFGUID guid,
17751 _Inout_ UINT *pDataSize,
17752 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17753
17754 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17755 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17756 ID3D12Resource2 * This,
17757 _In_ REFGUID guid,
17758 _In_ UINT DataSize,
17759 _In_reads_bytes_opt_( DataSize ) const void *pData);
17760
17761 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17762 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17763 ID3D12Resource2 * This,
17764 _In_ REFGUID guid,
17765 _In_opt_ const IUnknown *pData);
17766
17767 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17768 HRESULT ( STDMETHODCALLTYPE *SetName )(
17769 ID3D12Resource2 * This,
17770 _In_z_ LPCWSTR Name);
17771
17772 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17773 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17774 ID3D12Resource2 * This,
17775 REFIID riid,
17776 _COM_Outptr_opt_ void **ppvDevice);
17777
17778 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
17779 HRESULT ( STDMETHODCALLTYPE *Map )(
17780 ID3D12Resource2 * This,
17781 UINT Subresource,
17782 _In_opt_ const D3D12_RANGE *pReadRange,
17783 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
17784
17785 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
17786 void ( STDMETHODCALLTYPE *Unmap )(
17787 ID3D12Resource2 * This,
17788 UINT Subresource,
17789 _In_opt_ const D3D12_RANGE *pWrittenRange);
17790
17791 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
17792 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
17793 ID3D12Resource2 * This,
17794 D3D12_RESOURCE_DESC * RetVal);
17795
17796 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
17797 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
17798 ID3D12Resource2 * This);
17799
17800 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
17801 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
17802 ID3D12Resource2 * This,
17803 UINT DstSubresource,
17804 _In_opt_ const D3D12_BOX *pDstBox,
17805 _In_ const void *pSrcData,
17806 UINT SrcRowPitch,
17807 UINT SrcDepthPitch);
17808
17809 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
17810 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
17811 ID3D12Resource2 * This,
17812 _Out_ void *pDstData,
17813 UINT DstRowPitch,
17814 UINT DstDepthPitch,
17815 UINT SrcSubresource,
17816 _In_opt_ const D3D12_BOX *pSrcBox);
17817
17818 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
17819 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
17820 ID3D12Resource2 * This,
17821 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
17822 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
17823
17824 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
17825 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17826 ID3D12Resource2 * This,
17827 REFIID riid,
17828 _COM_Outptr_opt_ void **ppProtectedSession);
17829
17830 DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
17831 D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
17832 ID3D12Resource2 * This,
17833 D3D12_RESOURCE_DESC1 * RetVal);
17834
17835 END_INTERFACE
17836 } ID3D12Resource2Vtbl;
17837
17838 interface ID3D12Resource2
17839 {
17840 CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
17841 };
17842
17843
17844
17845#ifdef COBJMACROS
17846
17847
17848#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
17849 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17850
17851#define ID3D12Resource2_AddRef(This) \
17852 ( (This)->lpVtbl -> AddRef(This) )
17853
17854#define ID3D12Resource2_Release(This) \
17855 ( (This)->lpVtbl -> Release(This) )
17856
17857
17858#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
17859 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
17860
17861#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
17862 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
17863
17864#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
17865 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
17866
17867#define ID3D12Resource2_SetName(This,Name) \
17868 ( (This)->lpVtbl -> SetName(This,Name) )
17869
17870
17871#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
17872 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
17873
17874
17875
17876#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
17877 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
17878
17879#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
17880 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
17881
17882#define ID3D12Resource2_GetDesc(This,RetVal) \
17883 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
17884
17885#define ID3D12Resource2_GetGPUVirtualAddress(This) \
17886 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
17887
17888#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
17889 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
17890
17891#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
17892 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
17893
17894#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
17895 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
17896
17897
17898#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
17899 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
17900
17901
17902#define ID3D12Resource2_GetDesc1(This,RetVal) \
17903 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
17904
17905#endif /* COBJMACROS */
17906
17907
17908#endif /* C style interface */
17909
17910
17911
17912
17913#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
17914
17915
17916#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
17917#define __ID3D12Heap1_INTERFACE_DEFINED__
17918
17919/* interface ID3D12Heap1 */
17920/* [unique][local][object][uuid] */
17921
17922
17923EXTERN_C const IID IID_ID3D12Heap1;
17924
17925#if defined(__cplusplus) && !defined(CINTERFACE)
17926
17927 MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
17928 ID3D12Heap1 : public ID3D12Heap
17929 {
17930 public:
17931 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
17932 REFIID riid,
17933 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
17934
17935 };
17936
17937
17938#else /* C style interface */
17939
17940 typedef struct ID3D12Heap1Vtbl
17941 {
17942 BEGIN_INTERFACE
17943
17944 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17945 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17946 ID3D12Heap1 * This,
17947 REFIID riid,
17948 _COM_Outptr_ void **ppvObject);
17949
17950 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17951 ULONG ( STDMETHODCALLTYPE *AddRef )(
17952 ID3D12Heap1 * This);
17953
17954 DECLSPEC_XFGVIRT(IUnknown, Release)
17955 ULONG ( STDMETHODCALLTYPE *Release )(
17956 ID3D12Heap1 * This);
17957
17958 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17959 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17960 ID3D12Heap1 * This,
17961 _In_ REFGUID guid,
17962 _Inout_ UINT *pDataSize,
17963 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17964
17965 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17966 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17967 ID3D12Heap1 * This,
17968 _In_ REFGUID guid,
17969 _In_ UINT DataSize,
17970 _In_reads_bytes_opt_( DataSize ) const void *pData);
17971
17972 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17973 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17974 ID3D12Heap1 * This,
17975 _In_ REFGUID guid,
17976 _In_opt_ const IUnknown *pData);
17977
17978 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17979 HRESULT ( STDMETHODCALLTYPE *SetName )(
17980 ID3D12Heap1 * This,
17981 _In_z_ LPCWSTR Name);
17982
17983 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
17984 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
17985 ID3D12Heap1 * This,
17986 REFIID riid,
17987 _COM_Outptr_opt_ void **ppvDevice);
17988
17989 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
17990 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
17991 ID3D12Heap1 * This,
17992 D3D12_HEAP_DESC * RetVal);
17993
17994 DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
17995 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
17996 ID3D12Heap1 * This,
17997 REFIID riid,
17998 _COM_Outptr_opt_ void **ppProtectedSession);
17999
18000 END_INTERFACE
18001 } ID3D12Heap1Vtbl;
18002
18003 interface ID3D12Heap1
18004 {
18005 CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
18006 };
18007
18008
18009
18010#ifdef COBJMACROS
18011
18012
18013#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
18014 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18015
18016#define ID3D12Heap1_AddRef(This) \
18017 ( (This)->lpVtbl -> AddRef(This) )
18018
18019#define ID3D12Heap1_Release(This) \
18020 ( (This)->lpVtbl -> Release(This) )
18021
18022
18023#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
18024 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18025
18026#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
18027 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18028
18029#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
18030 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18031
18032#define ID3D12Heap1_SetName(This,Name) \
18033 ( (This)->lpVtbl -> SetName(This,Name) )
18034
18035
18036#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
18037 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18038
18039
18040
18041#define ID3D12Heap1_GetDesc(This,RetVal) \
18042 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
18043
18044
18045#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
18046 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
18047
18048#endif /* COBJMACROS */
18049
18050
18051#endif /* C style interface */
18052
18053
18054
18055
18056#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
18057
18058
18059#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
18060#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
18061
18062/* interface ID3D12GraphicsCommandList3 */
18063/* [unique][local][object][uuid] */
18064
18065
18066EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
18067
18068#if defined(__cplusplus) && !defined(CINTERFACE)
18069
18070 MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
18071 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
18072 {
18073 public:
18074 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
18075 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
18076
18077 };
18078
18079
18080#else /* C style interface */
18081
18082 typedef struct ID3D12GraphicsCommandList3Vtbl
18083 {
18084 BEGIN_INTERFACE
18085
18086 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18087 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18088 ID3D12GraphicsCommandList3 * This,
18089 REFIID riid,
18090 _COM_Outptr_ void **ppvObject);
18091
18092 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18093 ULONG ( STDMETHODCALLTYPE *AddRef )(
18094 ID3D12GraphicsCommandList3 * This);
18095
18096 DECLSPEC_XFGVIRT(IUnknown, Release)
18097 ULONG ( STDMETHODCALLTYPE *Release )(
18098 ID3D12GraphicsCommandList3 * This);
18099
18100 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18101 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18102 ID3D12GraphicsCommandList3 * This,
18103 _In_ REFGUID guid,
18104 _Inout_ UINT *pDataSize,
18105 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18106
18107 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18108 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18109 ID3D12GraphicsCommandList3 * This,
18110 _In_ REFGUID guid,
18111 _In_ UINT DataSize,
18112 _In_reads_bytes_opt_( DataSize ) const void *pData);
18113
18114 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18115 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18116 ID3D12GraphicsCommandList3 * This,
18117 _In_ REFGUID guid,
18118 _In_opt_ const IUnknown *pData);
18119
18120 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18121 HRESULT ( STDMETHODCALLTYPE *SetName )(
18122 ID3D12GraphicsCommandList3 * This,
18123 _In_z_ LPCWSTR Name);
18124
18125 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18126 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18127 ID3D12GraphicsCommandList3 * This,
18128 REFIID riid,
18129 _COM_Outptr_opt_ void **ppvDevice);
18130
18131 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
18132 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
18133 ID3D12GraphicsCommandList3 * This);
18134
18135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
18136 HRESULT ( STDMETHODCALLTYPE *Close )(
18137 ID3D12GraphicsCommandList3 * This);
18138
18139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
18140 HRESULT ( STDMETHODCALLTYPE *Reset )(
18141 ID3D12GraphicsCommandList3 * This,
18142 _In_ ID3D12CommandAllocator *pAllocator,
18143 _In_opt_ ID3D12PipelineState *pInitialState);
18144
18145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
18146 void ( STDMETHODCALLTYPE *ClearState )(
18147 ID3D12GraphicsCommandList3 * This,
18148 _In_opt_ ID3D12PipelineState *pPipelineState);
18149
18150 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
18151 void ( STDMETHODCALLTYPE *DrawInstanced )(
18152 ID3D12GraphicsCommandList3 * This,
18153 _In_ UINT VertexCountPerInstance,
18154 _In_ UINT InstanceCount,
18155 _In_ UINT StartVertexLocation,
18156 _In_ UINT StartInstanceLocation);
18157
18158 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
18159 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
18160 ID3D12GraphicsCommandList3 * This,
18161 _In_ UINT IndexCountPerInstance,
18162 _In_ UINT InstanceCount,
18163 _In_ UINT StartIndexLocation,
18164 _In_ INT BaseVertexLocation,
18165 _In_ UINT StartInstanceLocation);
18166
18167 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
18168 void ( STDMETHODCALLTYPE *Dispatch )(
18169 ID3D12GraphicsCommandList3 * This,
18170 _In_ UINT ThreadGroupCountX,
18171 _In_ UINT ThreadGroupCountY,
18172 _In_ UINT ThreadGroupCountZ);
18173
18174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
18175 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
18176 ID3D12GraphicsCommandList3 * This,
18177 _In_ ID3D12Resource *pDstBuffer,
18178 UINT64 DstOffset,
18179 _In_ ID3D12Resource *pSrcBuffer,
18180 UINT64 SrcOffset,
18181 UINT64 NumBytes);
18182
18183 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
18184 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
18185 ID3D12GraphicsCommandList3 * This,
18186 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
18187 UINT DstX,
18188 UINT DstY,
18189 UINT DstZ,
18190 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
18191 _In_opt_ const D3D12_BOX *pSrcBox);
18192
18193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
18194 void ( STDMETHODCALLTYPE *CopyResource )(
18195 ID3D12GraphicsCommandList3 * This,
18196 _In_ ID3D12Resource *pDstResource,
18197 _In_ ID3D12Resource *pSrcResource);
18198
18199 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
18200 void ( STDMETHODCALLTYPE *CopyTiles )(
18201 ID3D12GraphicsCommandList3 * This,
18202 _In_ ID3D12Resource *pTiledResource,
18203 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
18204 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
18205 _In_ ID3D12Resource *pBuffer,
18206 UINT64 BufferStartOffsetInBytes,
18207 D3D12_TILE_COPY_FLAGS Flags);
18208
18209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
18210 void ( STDMETHODCALLTYPE *ResolveSubresource )(
18211 ID3D12GraphicsCommandList3 * This,
18212 _In_ ID3D12Resource *pDstResource,
18213 _In_ UINT DstSubresource,
18214 _In_ ID3D12Resource *pSrcResource,
18215 _In_ UINT SrcSubresource,
18216 _In_ DXGI_FORMAT Format);
18217
18218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
18219 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
18220 ID3D12GraphicsCommandList3 * This,
18221 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
18222
18223 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
18224 void ( STDMETHODCALLTYPE *RSSetViewports )(
18225 ID3D12GraphicsCommandList3 * This,
18226 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
18227 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
18228
18229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
18230 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
18231 ID3D12GraphicsCommandList3 * This,
18232 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
18233 _In_reads_( NumRects) const D3D12_RECT *pRects);
18234
18235 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
18236 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
18237 ID3D12GraphicsCommandList3 * This,
18238 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
18239
18240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
18241 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
18242 ID3D12GraphicsCommandList3 * This,
18243 _In_ UINT StencilRef);
18244
18245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
18246 void ( STDMETHODCALLTYPE *SetPipelineState )(
18247 ID3D12GraphicsCommandList3 * This,
18248 _In_ ID3D12PipelineState *pPipelineState);
18249
18250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
18251 void ( STDMETHODCALLTYPE *ResourceBarrier )(
18252 ID3D12GraphicsCommandList3 * This,
18253 _In_ UINT NumBarriers,
18254 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
18255
18256 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
18257 void ( STDMETHODCALLTYPE *ExecuteBundle )(
18258 ID3D12GraphicsCommandList3 * This,
18259 _In_ ID3D12GraphicsCommandList *pCommandList);
18260
18261 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
18262 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
18263 ID3D12GraphicsCommandList3 * This,
18264 _In_ UINT NumDescriptorHeaps,
18265 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
18266
18267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
18268 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
18269 ID3D12GraphicsCommandList3 * This,
18270 _In_opt_ ID3D12RootSignature *pRootSignature);
18271
18272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
18273 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
18274 ID3D12GraphicsCommandList3 * This,
18275 _In_opt_ ID3D12RootSignature *pRootSignature);
18276
18277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
18278 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
18279 ID3D12GraphicsCommandList3 * This,
18280 _In_ UINT RootParameterIndex,
18281 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
18282
18283 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
18284 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
18285 ID3D12GraphicsCommandList3 * This,
18286 _In_ UINT RootParameterIndex,
18287 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
18288
18289 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
18290 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
18291 ID3D12GraphicsCommandList3 * This,
18292 _In_ UINT RootParameterIndex,
18293 _In_ UINT SrcData,
18294 _In_ UINT DestOffsetIn32BitValues);
18295
18296 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
18297 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
18298 ID3D12GraphicsCommandList3 * This,
18299 _In_ UINT RootParameterIndex,
18300 _In_ UINT SrcData,
18301 _In_ UINT DestOffsetIn32BitValues);
18302
18303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
18304 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
18305 ID3D12GraphicsCommandList3 * This,
18306 _In_ UINT RootParameterIndex,
18307 _In_ UINT Num32BitValuesToSet,
18308 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
18309 _In_ UINT DestOffsetIn32BitValues);
18310
18311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
18312 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
18313 ID3D12GraphicsCommandList3 * This,
18314 _In_ UINT RootParameterIndex,
18315 _In_ UINT Num32BitValuesToSet,
18316 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
18317 _In_ UINT DestOffsetIn32BitValues);
18318
18319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
18320 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
18321 ID3D12GraphicsCommandList3 * This,
18322 _In_ UINT RootParameterIndex,
18323 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18324
18325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
18326 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
18327 ID3D12GraphicsCommandList3 * This,
18328 _In_ UINT RootParameterIndex,
18329 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18330
18331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
18332 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
18333 ID3D12GraphicsCommandList3 * This,
18334 _In_ UINT RootParameterIndex,
18335 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18336
18337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
18338 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
18339 ID3D12GraphicsCommandList3 * This,
18340 _In_ UINT RootParameterIndex,
18341 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18342
18343 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
18344 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
18345 ID3D12GraphicsCommandList3 * This,
18346 _In_ UINT RootParameterIndex,
18347 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18348
18349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
18350 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
18351 ID3D12GraphicsCommandList3 * This,
18352 _In_ UINT RootParameterIndex,
18353 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
18354
18355 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
18356 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
18357 ID3D12GraphicsCommandList3 * This,
18358 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
18359
18360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
18361 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
18362 ID3D12GraphicsCommandList3 * This,
18363 _In_ UINT StartSlot,
18364 _In_ UINT NumViews,
18365 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
18366
18367 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
18368 void ( STDMETHODCALLTYPE *SOSetTargets )(
18369 ID3D12GraphicsCommandList3 * This,
18370 _In_ UINT StartSlot,
18371 _In_ UINT NumViews,
18372 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
18373
18374 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
18375 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
18376 ID3D12GraphicsCommandList3 * This,
18377 _In_ UINT NumRenderTargetDescriptors,
18378 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
18379 _In_ BOOL RTsSingleHandleToDescriptorRange,
18380 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
18381
18382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
18383 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
18384 ID3D12GraphicsCommandList3 * This,
18385 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
18386 _In_ D3D12_CLEAR_FLAGS ClearFlags,
18387 _In_ FLOAT Depth,
18388 _In_ UINT8 Stencil,
18389 _In_ UINT NumRects,
18390 _In_reads_(NumRects) const D3D12_RECT *pRects);
18391
18392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
18393 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
18394 ID3D12GraphicsCommandList3 * This,
18395 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
18396 _In_ const FLOAT ColorRGBA[ 4 ],
18397 _In_ UINT NumRects,
18398 _In_reads_(NumRects) const D3D12_RECT *pRects);
18399
18400 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
18401 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
18402 ID3D12GraphicsCommandList3 * This,
18403 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
18404 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
18405 _In_ ID3D12Resource *pResource,
18406 _In_ const UINT Values[ 4 ],
18407 _In_ UINT NumRects,
18408 _In_reads_(NumRects) const D3D12_RECT *pRects);
18409
18410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
18411 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
18412 ID3D12GraphicsCommandList3 * This,
18413 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
18414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
18415 _In_ ID3D12Resource *pResource,
18416 _In_ const FLOAT Values[ 4 ],
18417 _In_ UINT NumRects,
18418 _In_reads_(NumRects) const D3D12_RECT *pRects);
18419
18420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
18421 void ( STDMETHODCALLTYPE *DiscardResource )(
18422 ID3D12GraphicsCommandList3 * This,
18423 _In_ ID3D12Resource *pResource,
18424 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
18425
18426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
18427 void ( STDMETHODCALLTYPE *BeginQuery )(
18428 ID3D12GraphicsCommandList3 * This,
18429 _In_ ID3D12QueryHeap *pQueryHeap,
18430 _In_ D3D12_QUERY_TYPE Type,
18431 _In_ UINT Index);
18432
18433 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
18434 void ( STDMETHODCALLTYPE *EndQuery )(
18435 ID3D12GraphicsCommandList3 * This,
18436 _In_ ID3D12QueryHeap *pQueryHeap,
18437 _In_ D3D12_QUERY_TYPE Type,
18438 _In_ UINT Index);
18439
18440 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
18441 void ( STDMETHODCALLTYPE *ResolveQueryData )(
18442 ID3D12GraphicsCommandList3 * This,
18443 _In_ ID3D12QueryHeap *pQueryHeap,
18444 _In_ D3D12_QUERY_TYPE Type,
18445 _In_ UINT StartIndex,
18446 _In_ UINT NumQueries,
18447 _In_ ID3D12Resource *pDestinationBuffer,
18448 _In_ UINT64 AlignedDestinationBufferOffset);
18449
18450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
18451 void ( STDMETHODCALLTYPE *SetPredication )(
18452 ID3D12GraphicsCommandList3 * This,
18453 _In_opt_ ID3D12Resource *pBuffer,
18454 _In_ UINT64 AlignedBufferOffset,
18455 _In_ D3D12_PREDICATION_OP Operation);
18456
18457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
18458 void ( STDMETHODCALLTYPE *SetMarker )(
18459 ID3D12GraphicsCommandList3 * This,
18460 UINT Metadata,
18461 _In_reads_bytes_opt_(Size) const void *pData,
18462 UINT Size);
18463
18464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
18465 void ( STDMETHODCALLTYPE *BeginEvent )(
18466 ID3D12GraphicsCommandList3 * This,
18467 UINT Metadata,
18468 _In_reads_bytes_opt_(Size) const void *pData,
18469 UINT Size);
18470
18471 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
18472 void ( STDMETHODCALLTYPE *EndEvent )(
18473 ID3D12GraphicsCommandList3 * This);
18474
18475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
18476 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
18477 ID3D12GraphicsCommandList3 * This,
18478 _In_ ID3D12CommandSignature *pCommandSignature,
18479 _In_ UINT MaxCommandCount,
18480 _In_ ID3D12Resource *pArgumentBuffer,
18481 _In_ UINT64 ArgumentBufferOffset,
18482 _In_opt_ ID3D12Resource *pCountBuffer,
18483 _In_ UINT64 CountBufferOffset);
18484
18485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
18486 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
18487 ID3D12GraphicsCommandList3 * This,
18488 _In_ ID3D12Resource *pDstBuffer,
18489 UINT64 DstOffset,
18490 _In_ ID3D12Resource *pSrcBuffer,
18491 UINT64 SrcOffset,
18492 UINT Dependencies,
18493 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
18494 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
18495
18496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
18497 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
18498 ID3D12GraphicsCommandList3 * This,
18499 _In_ ID3D12Resource *pDstBuffer,
18500 UINT64 DstOffset,
18501 _In_ ID3D12Resource *pSrcBuffer,
18502 UINT64 SrcOffset,
18503 UINT Dependencies,
18504 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
18505 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
18506
18507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
18508 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
18509 ID3D12GraphicsCommandList3 * This,
18510 _In_ FLOAT Min,
18511 _In_ FLOAT Max);
18512
18513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
18514 void ( STDMETHODCALLTYPE *SetSamplePositions )(
18515 ID3D12GraphicsCommandList3 * This,
18516 _In_ UINT NumSamplesPerPixel,
18517 _In_ UINT NumPixels,
18518 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
18519
18520 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
18521 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
18522 ID3D12GraphicsCommandList3 * This,
18523 _In_ ID3D12Resource *pDstResource,
18524 _In_ UINT DstSubresource,
18525 _In_ UINT DstX,
18526 _In_ UINT DstY,
18527 _In_ ID3D12Resource *pSrcResource,
18528 _In_ UINT SrcSubresource,
18529 _In_opt_ D3D12_RECT *pSrcRect,
18530 _In_ DXGI_FORMAT Format,
18531 _In_ D3D12_RESOLVE_MODE ResolveMode);
18532
18533 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
18534 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
18535 ID3D12GraphicsCommandList3 * This,
18536 _In_ UINT Mask);
18537
18538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
18539 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
18540 ID3D12GraphicsCommandList3 * This,
18541 UINT Count,
18542 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
18543 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
18544
18545 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
18546 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
18547 ID3D12GraphicsCommandList3 * This,
18548 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
18549
18550 END_INTERFACE
18551 } ID3D12GraphicsCommandList3Vtbl;
18552
18553 interface ID3D12GraphicsCommandList3
18554 {
18555 CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
18556 };
18557
18558
18559
18560#ifdef COBJMACROS
18561
18562
18563#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
18564 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18565
18566#define ID3D12GraphicsCommandList3_AddRef(This) \
18567 ( (This)->lpVtbl -> AddRef(This) )
18568
18569#define ID3D12GraphicsCommandList3_Release(This) \
18570 ( (This)->lpVtbl -> Release(This) )
18571
18572
18573#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
18574 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18575
18576#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
18577 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18578
18579#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
18580 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18581
18582#define ID3D12GraphicsCommandList3_SetName(This,Name) \
18583 ( (This)->lpVtbl -> SetName(This,Name) )
18584
18585
18586#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
18587 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18588
18589
18590#define ID3D12GraphicsCommandList3_GetType(This) \
18591 ( (This)->lpVtbl -> GetType(This) )
18592
18593
18594#define ID3D12GraphicsCommandList3_Close(This) \
18595 ( (This)->lpVtbl -> Close(This) )
18596
18597#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
18598 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
18599
18600#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
18601 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
18602
18603#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
18604 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
18605
18606#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
18607 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
18608
18609#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
18610 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
18611
18612#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
18613 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
18614
18615#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
18616 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
18617
18618#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
18619 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
18620
18621#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
18622 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
18623
18624#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
18625 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
18626
18627#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
18628 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
18629
18630#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
18631 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
18632
18633#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
18634 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
18635
18636#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
18637 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
18638
18639#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
18640 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
18641
18642#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
18643 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
18644
18645#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
18646 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
18647
18648#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
18649 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
18650
18651#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
18652 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
18653
18654#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
18655 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
18656
18657#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
18658 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
18659
18660#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
18661 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
18662
18663#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
18664 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
18665
18666#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
18667 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
18668
18669#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
18670 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
18671
18672#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
18673 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
18674
18675#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
18676 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
18677
18678#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
18679 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
18680
18681#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
18682 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
18683
18684#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
18685 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
18686
18687#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
18688 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
18689
18690#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
18691 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
18692
18693#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
18694 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
18695
18696#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
18697 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
18698
18699#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
18700 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
18701
18702#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
18703 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
18704
18705#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
18706 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
18707
18708#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
18709 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
18710
18711#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
18712 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
18713
18714#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
18715 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
18716
18717#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
18718 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
18719
18720#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
18721 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
18722
18723#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
18724 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
18725
18726#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
18727 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
18728
18729#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
18730 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
18731
18732#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
18733 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
18734
18735#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
18736 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
18737
18738#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
18739 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
18740
18741#define ID3D12GraphicsCommandList3_EndEvent(This) \
18742 ( (This)->lpVtbl -> EndEvent(This) )
18743
18744#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
18745 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
18746
18747
18748#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
18749 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
18750
18751#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
18752 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
18753
18754#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
18755 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
18756
18757#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
18758 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
18759
18760#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
18761 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
18762
18763#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
18764 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
18765
18766
18767#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
18768 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
18769
18770
18771#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
18772 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
18773
18774#endif /* COBJMACROS */
18775
18776
18777#endif /* C style interface */
18778
18779
18780
18781
18782#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
18783
18784
18785/* interface __MIDL_itf_d3d12_0000_0048 */
18786/* [local] */
18787
18788typedef
18789enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
18790 {
18791 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
18792 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
18793 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
18794 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 )
18795 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
18796
18797typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
18798 {
18799 D3D12_CLEAR_VALUE ClearValue;
18800 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
18801
18802typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
18803 {
18804 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
18805 union
18806 {
18807 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
18808 } ;
18809 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
18810
18811typedef
18812enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
18813 {
18814 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
18815 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
18816 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
18817 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 )
18818 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
18819
18820typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
18821 {
18822 UINT SrcSubresource;
18823 UINT DstSubresource;
18824 UINT DstX;
18825 UINT DstY;
18826 D3D12_RECT SrcRect;
18827 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
18828
18829typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
18830 {
18831 ID3D12Resource *pSrcResource;
18832 ID3D12Resource *pDstResource;
18833 UINT SubresourceCount;
18834 _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
18835 DXGI_FORMAT Format;
18836 D3D12_RESOLVE_MODE ResolveMode;
18837 BOOL PreserveResolveSource;
18838 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
18839
18840typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
18841 {
18842 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
18843 union
18844 {
18845 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
18846 } ;
18847 } D3D12_RENDER_PASS_ENDING_ACCESS;
18848
18849typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
18850 {
18851 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
18852 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
18853 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
18854 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
18855
18856typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
18857 {
18858 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
18859 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
18860 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
18861 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
18862 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
18863 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
18864
18865typedef
18866enum D3D12_RENDER_PASS_FLAGS
18867 {
18868 D3D12_RENDER_PASS_FLAG_NONE = 0,
18869 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
18870 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
18871 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
18872 } D3D12_RENDER_PASS_FLAGS;
18873
18874DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS );
18875
18876
18877extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0048_v0_0_c_ifspec;
18878extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0048_v0_0_s_ifspec;
18879
18880#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
18881#define __ID3D12MetaCommand_INTERFACE_DEFINED__
18882
18883/* interface ID3D12MetaCommand */
18884/* [unique][local][object][uuid] */
18885
18886
18887EXTERN_C const IID IID_ID3D12MetaCommand;
18888
18889#if defined(__cplusplus) && !defined(CINTERFACE)
18890
18891 MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
18892 ID3D12MetaCommand : public ID3D12Pageable
18893 {
18894 public:
18895 virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
18896 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18897 _In_ UINT ParameterIndex) = 0;
18898
18899 };
18900
18901
18902#else /* C style interface */
18903
18904 typedef struct ID3D12MetaCommandVtbl
18905 {
18906 BEGIN_INTERFACE
18907
18908 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18909 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18910 ID3D12MetaCommand * This,
18911 REFIID riid,
18912 _COM_Outptr_ void **ppvObject);
18913
18914 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18915 ULONG ( STDMETHODCALLTYPE *AddRef )(
18916 ID3D12MetaCommand * This);
18917
18918 DECLSPEC_XFGVIRT(IUnknown, Release)
18919 ULONG ( STDMETHODCALLTYPE *Release )(
18920 ID3D12MetaCommand * This);
18921
18922 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18923 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18924 ID3D12MetaCommand * This,
18925 _In_ REFGUID guid,
18926 _Inout_ UINT *pDataSize,
18927 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18928
18929 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18930 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18931 ID3D12MetaCommand * This,
18932 _In_ REFGUID guid,
18933 _In_ UINT DataSize,
18934 _In_reads_bytes_opt_( DataSize ) const void *pData);
18935
18936 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18937 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18938 ID3D12MetaCommand * This,
18939 _In_ REFGUID guid,
18940 _In_opt_ const IUnknown *pData);
18941
18942 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18943 HRESULT ( STDMETHODCALLTYPE *SetName )(
18944 ID3D12MetaCommand * This,
18945 _In_z_ LPCWSTR Name);
18946
18947 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18948 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18949 ID3D12MetaCommand * This,
18950 REFIID riid,
18951 _COM_Outptr_opt_ void **ppvDevice);
18952
18953 DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
18954 UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
18955 ID3D12MetaCommand * This,
18956 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18957 _In_ UINT ParameterIndex);
18958
18959 END_INTERFACE
18960 } ID3D12MetaCommandVtbl;
18961
18962 interface ID3D12MetaCommand
18963 {
18964 CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
18965 };
18966
18967
18968
18969#ifdef COBJMACROS
18970
18971
18972#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
18973 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18974
18975#define ID3D12MetaCommand_AddRef(This) \
18976 ( (This)->lpVtbl -> AddRef(This) )
18977
18978#define ID3D12MetaCommand_Release(This) \
18979 ( (This)->lpVtbl -> Release(This) )
18980
18981
18982#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
18983 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18984
18985#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
18986 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18987
18988#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
18989 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18990
18991#define ID3D12MetaCommand_SetName(This,Name) \
18992 ( (This)->lpVtbl -> SetName(This,Name) )
18993
18994
18995#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
18996 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18997
18998
18999
19000#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
19001 ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
19002
19003#endif /* COBJMACROS */
19004
19005
19006#endif /* C style interface */
19007
19008
19009
19010
19011#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
19012
19013
19014/* interface __MIDL_itf_d3d12_0000_0049 */
19015/* [local] */
19016
19017typedef struct D3D12_DISPATCH_RAYS_DESC
19018 {
19019 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
19020 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
19021 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
19022 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
19023 UINT Width;
19024 UINT Height;
19025 UINT Depth;
19026 } D3D12_DISPATCH_RAYS_DESC;
19027
19028
19029
19030extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_c_ifspec;
19031extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_s_ifspec;
19032
19033#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
19034#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
19035
19036/* interface ID3D12GraphicsCommandList4 */
19037/* [unique][local][object][uuid] */
19038
19039
19040EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
19041
19042#if defined(__cplusplus) && !defined(CINTERFACE)
19043
19044 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
19045 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
19046 {
19047 public:
19048 virtual void STDMETHODCALLTYPE BeginRenderPass(
19049 _In_ UINT NumRenderTargets,
19050 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
19051 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
19052 D3D12_RENDER_PASS_FLAGS Flags) = 0;
19053
19054 virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
19055
19056 virtual void STDMETHODCALLTYPE InitializeMetaCommand(
19057 _In_ ID3D12MetaCommand *pMetaCommand,
19058 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
19059 _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
19060
19061 virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
19062 _In_ ID3D12MetaCommand *pMetaCommand,
19063 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
19064 _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
19065
19066 virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
19067 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
19068 _In_ UINT NumPostbuildInfoDescs,
19069 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
19070
19071 virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
19072 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
19073 _In_ UINT NumSourceAccelerationStructures,
19074 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
19075
19076 virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
19077 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
19078 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
19079 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
19080
19081 virtual void STDMETHODCALLTYPE SetPipelineState1(
19082 _In_ ID3D12StateObject *pStateObject) = 0;
19083
19084 virtual void STDMETHODCALLTYPE DispatchRays(
19085 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
19086
19087 };
19088
19089
19090#else /* C style interface */
19091
19092 typedef struct ID3D12GraphicsCommandList4Vtbl
19093 {
19094 BEGIN_INTERFACE
19095
19096 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19097 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19098 ID3D12GraphicsCommandList4 * This,
19099 REFIID riid,
19100 _COM_Outptr_ void **ppvObject);
19101
19102 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19103 ULONG ( STDMETHODCALLTYPE *AddRef )(
19104 ID3D12GraphicsCommandList4 * This);
19105
19106 DECLSPEC_XFGVIRT(IUnknown, Release)
19107 ULONG ( STDMETHODCALLTYPE *Release )(
19108 ID3D12GraphicsCommandList4 * This);
19109
19110 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19111 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19112 ID3D12GraphicsCommandList4 * This,
19113 _In_ REFGUID guid,
19114 _Inout_ UINT *pDataSize,
19115 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19116
19117 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19118 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19119 ID3D12GraphicsCommandList4 * This,
19120 _In_ REFGUID guid,
19121 _In_ UINT DataSize,
19122 _In_reads_bytes_opt_( DataSize ) const void *pData);
19123
19124 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19125 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19126 ID3D12GraphicsCommandList4 * This,
19127 _In_ REFGUID guid,
19128 _In_opt_ const IUnknown *pData);
19129
19130 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19131 HRESULT ( STDMETHODCALLTYPE *SetName )(
19132 ID3D12GraphicsCommandList4 * This,
19133 _In_z_ LPCWSTR Name);
19134
19135 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
19136 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
19137 ID3D12GraphicsCommandList4 * This,
19138 REFIID riid,
19139 _COM_Outptr_opt_ void **ppvDevice);
19140
19141 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
19142 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
19143 ID3D12GraphicsCommandList4 * This);
19144
19145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
19146 HRESULT ( STDMETHODCALLTYPE *Close )(
19147 ID3D12GraphicsCommandList4 * This);
19148
19149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
19150 HRESULT ( STDMETHODCALLTYPE *Reset )(
19151 ID3D12GraphicsCommandList4 * This,
19152 _In_ ID3D12CommandAllocator *pAllocator,
19153 _In_opt_ ID3D12PipelineState *pInitialState);
19154
19155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
19156 void ( STDMETHODCALLTYPE *ClearState )(
19157 ID3D12GraphicsCommandList4 * This,
19158 _In_opt_ ID3D12PipelineState *pPipelineState);
19159
19160 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
19161 void ( STDMETHODCALLTYPE *DrawInstanced )(
19162 ID3D12GraphicsCommandList4 * This,
19163 _In_ UINT VertexCountPerInstance,
19164 _In_ UINT InstanceCount,
19165 _In_ UINT StartVertexLocation,
19166 _In_ UINT StartInstanceLocation);
19167
19168 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
19169 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
19170 ID3D12GraphicsCommandList4 * This,
19171 _In_ UINT IndexCountPerInstance,
19172 _In_ UINT InstanceCount,
19173 _In_ UINT StartIndexLocation,
19174 _In_ INT BaseVertexLocation,
19175 _In_ UINT StartInstanceLocation);
19176
19177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
19178 void ( STDMETHODCALLTYPE *Dispatch )(
19179 ID3D12GraphicsCommandList4 * This,
19180 _In_ UINT ThreadGroupCountX,
19181 _In_ UINT ThreadGroupCountY,
19182 _In_ UINT ThreadGroupCountZ);
19183
19184 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
19185 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
19186 ID3D12GraphicsCommandList4 * This,
19187 _In_ ID3D12Resource *pDstBuffer,
19188 UINT64 DstOffset,
19189 _In_ ID3D12Resource *pSrcBuffer,
19190 UINT64 SrcOffset,
19191 UINT64 NumBytes);
19192
19193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
19194 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
19195 ID3D12GraphicsCommandList4 * This,
19196 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
19197 UINT DstX,
19198 UINT DstY,
19199 UINT DstZ,
19200 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
19201 _In_opt_ const D3D12_BOX *pSrcBox);
19202
19203 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
19204 void ( STDMETHODCALLTYPE *CopyResource )(
19205 ID3D12GraphicsCommandList4 * This,
19206 _In_ ID3D12Resource *pDstResource,
19207 _In_ ID3D12Resource *pSrcResource);
19208
19209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
19210 void ( STDMETHODCALLTYPE *CopyTiles )(
19211 ID3D12GraphicsCommandList4 * This,
19212 _In_ ID3D12Resource *pTiledResource,
19213 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
19214 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
19215 _In_ ID3D12Resource *pBuffer,
19216 UINT64 BufferStartOffsetInBytes,
19217 D3D12_TILE_COPY_FLAGS Flags);
19218
19219 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
19220 void ( STDMETHODCALLTYPE *ResolveSubresource )(
19221 ID3D12GraphicsCommandList4 * This,
19222 _In_ ID3D12Resource *pDstResource,
19223 _In_ UINT DstSubresource,
19224 _In_ ID3D12Resource *pSrcResource,
19225 _In_ UINT SrcSubresource,
19226 _In_ DXGI_FORMAT Format);
19227
19228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
19229 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
19230 ID3D12GraphicsCommandList4 * This,
19231 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
19232
19233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
19234 void ( STDMETHODCALLTYPE *RSSetViewports )(
19235 ID3D12GraphicsCommandList4 * This,
19236 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
19237 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
19238
19239 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
19240 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
19241 ID3D12GraphicsCommandList4 * This,
19242 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
19243 _In_reads_( NumRects) const D3D12_RECT *pRects);
19244
19245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
19246 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
19247 ID3D12GraphicsCommandList4 * This,
19248 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
19249
19250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
19251 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
19252 ID3D12GraphicsCommandList4 * This,
19253 _In_ UINT StencilRef);
19254
19255 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
19256 void ( STDMETHODCALLTYPE *SetPipelineState )(
19257 ID3D12GraphicsCommandList4 * This,
19258 _In_ ID3D12PipelineState *pPipelineState);
19259
19260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
19261 void ( STDMETHODCALLTYPE *ResourceBarrier )(
19262 ID3D12GraphicsCommandList4 * This,
19263 _In_ UINT NumBarriers,
19264 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
19265
19266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
19267 void ( STDMETHODCALLTYPE *ExecuteBundle )(
19268 ID3D12GraphicsCommandList4 * This,
19269 _In_ ID3D12GraphicsCommandList *pCommandList);
19270
19271 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
19272 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
19273 ID3D12GraphicsCommandList4 * This,
19274 _In_ UINT NumDescriptorHeaps,
19275 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
19276
19277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
19278 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
19279 ID3D12GraphicsCommandList4 * This,
19280 _In_opt_ ID3D12RootSignature *pRootSignature);
19281
19282 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
19283 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
19284 ID3D12GraphicsCommandList4 * This,
19285 _In_opt_ ID3D12RootSignature *pRootSignature);
19286
19287 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
19288 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
19289 ID3D12GraphicsCommandList4 * This,
19290 _In_ UINT RootParameterIndex,
19291 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
19292
19293 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
19294 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
19295 ID3D12GraphicsCommandList4 * This,
19296 _In_ UINT RootParameterIndex,
19297 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
19298
19299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
19300 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
19301 ID3D12GraphicsCommandList4 * This,
19302 _In_ UINT RootParameterIndex,
19303 _In_ UINT SrcData,
19304 _In_ UINT DestOffsetIn32BitValues);
19305
19306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
19307 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
19308 ID3D12GraphicsCommandList4 * This,
19309 _In_ UINT RootParameterIndex,
19310 _In_ UINT SrcData,
19311 _In_ UINT DestOffsetIn32BitValues);
19312
19313 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
19314 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
19315 ID3D12GraphicsCommandList4 * This,
19316 _In_ UINT RootParameterIndex,
19317 _In_ UINT Num32BitValuesToSet,
19318 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
19319 _In_ UINT DestOffsetIn32BitValues);
19320
19321 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
19322 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
19323 ID3D12GraphicsCommandList4 * This,
19324 _In_ UINT RootParameterIndex,
19325 _In_ UINT Num32BitValuesToSet,
19326 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
19327 _In_ UINT DestOffsetIn32BitValues);
19328
19329 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
19330 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
19331 ID3D12GraphicsCommandList4 * This,
19332 _In_ UINT RootParameterIndex,
19333 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19334
19335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
19336 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
19337 ID3D12GraphicsCommandList4 * This,
19338 _In_ UINT RootParameterIndex,
19339 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19340
19341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
19342 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
19343 ID3D12GraphicsCommandList4 * This,
19344 _In_ UINT RootParameterIndex,
19345 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19346
19347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
19348 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
19349 ID3D12GraphicsCommandList4 * This,
19350 _In_ UINT RootParameterIndex,
19351 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19352
19353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
19354 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
19355 ID3D12GraphicsCommandList4 * This,
19356 _In_ UINT RootParameterIndex,
19357 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19358
19359 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
19360 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
19361 ID3D12GraphicsCommandList4 * This,
19362 _In_ UINT RootParameterIndex,
19363 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
19364
19365 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
19366 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
19367 ID3D12GraphicsCommandList4 * This,
19368 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
19369
19370 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
19371 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
19372 ID3D12GraphicsCommandList4 * This,
19373 _In_ UINT StartSlot,
19374 _In_ UINT NumViews,
19375 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
19376
19377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
19378 void ( STDMETHODCALLTYPE *SOSetTargets )(
19379 ID3D12GraphicsCommandList4 * This,
19380 _In_ UINT StartSlot,
19381 _In_ UINT NumViews,
19382 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
19383
19384 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
19385 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
19386 ID3D12GraphicsCommandList4 * This,
19387 _In_ UINT NumRenderTargetDescriptors,
19388 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
19389 _In_ BOOL RTsSingleHandleToDescriptorRange,
19390 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
19391
19392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
19393 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
19394 ID3D12GraphicsCommandList4 * This,
19395 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
19396 _In_ D3D12_CLEAR_FLAGS ClearFlags,
19397 _In_ FLOAT Depth,
19398 _In_ UINT8 Stencil,
19399 _In_ UINT NumRects,
19400 _In_reads_(NumRects) const D3D12_RECT *pRects);
19401
19402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
19403 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
19404 ID3D12GraphicsCommandList4 * This,
19405 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
19406 _In_ const FLOAT ColorRGBA[ 4 ],
19407 _In_ UINT NumRects,
19408 _In_reads_(NumRects) const D3D12_RECT *pRects);
19409
19410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
19411 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
19412 ID3D12GraphicsCommandList4 * This,
19413 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
19414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
19415 _In_ ID3D12Resource *pResource,
19416 _In_ const UINT Values[ 4 ],
19417 _In_ UINT NumRects,
19418 _In_reads_(NumRects) const D3D12_RECT *pRects);
19419
19420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
19421 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
19422 ID3D12GraphicsCommandList4 * This,
19423 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
19424 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
19425 _In_ ID3D12Resource *pResource,
19426 _In_ const FLOAT Values[ 4 ],
19427 _In_ UINT NumRects,
19428 _In_reads_(NumRects) const D3D12_RECT *pRects);
19429
19430 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
19431 void ( STDMETHODCALLTYPE *DiscardResource )(
19432 ID3D12GraphicsCommandList4 * This,
19433 _In_ ID3D12Resource *pResource,
19434 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
19435
19436 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
19437 void ( STDMETHODCALLTYPE *BeginQuery )(
19438 ID3D12GraphicsCommandList4 * This,
19439 _In_ ID3D12QueryHeap *pQueryHeap,
19440 _In_ D3D12_QUERY_TYPE Type,
19441 _In_ UINT Index);
19442
19443 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
19444 void ( STDMETHODCALLTYPE *EndQuery )(
19445 ID3D12GraphicsCommandList4 * This,
19446 _In_ ID3D12QueryHeap *pQueryHeap,
19447 _In_ D3D12_QUERY_TYPE Type,
19448 _In_ UINT Index);
19449
19450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
19451 void ( STDMETHODCALLTYPE *ResolveQueryData )(
19452 ID3D12GraphicsCommandList4 * This,
19453 _In_ ID3D12QueryHeap *pQueryHeap,
19454 _In_ D3D12_QUERY_TYPE Type,
19455 _In_ UINT StartIndex,
19456 _In_ UINT NumQueries,
19457 _In_ ID3D12Resource *pDestinationBuffer,
19458 _In_ UINT64 AlignedDestinationBufferOffset);
19459
19460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
19461 void ( STDMETHODCALLTYPE *SetPredication )(
19462 ID3D12GraphicsCommandList4 * This,
19463 _In_opt_ ID3D12Resource *pBuffer,
19464 _In_ UINT64 AlignedBufferOffset,
19465 _In_ D3D12_PREDICATION_OP Operation);
19466
19467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
19468 void ( STDMETHODCALLTYPE *SetMarker )(
19469 ID3D12GraphicsCommandList4 * This,
19470 UINT Metadata,
19471 _In_reads_bytes_opt_(Size) const void *pData,
19472 UINT Size);
19473
19474 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
19475 void ( STDMETHODCALLTYPE *BeginEvent )(
19476 ID3D12GraphicsCommandList4 * This,
19477 UINT Metadata,
19478 _In_reads_bytes_opt_(Size) const void *pData,
19479 UINT Size);
19480
19481 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
19482 void ( STDMETHODCALLTYPE *EndEvent )(
19483 ID3D12GraphicsCommandList4 * This);
19484
19485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
19486 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
19487 ID3D12GraphicsCommandList4 * This,
19488 _In_ ID3D12CommandSignature *pCommandSignature,
19489 _In_ UINT MaxCommandCount,
19490 _In_ ID3D12Resource *pArgumentBuffer,
19491 _In_ UINT64 ArgumentBufferOffset,
19492 _In_opt_ ID3D12Resource *pCountBuffer,
19493 _In_ UINT64 CountBufferOffset);
19494
19495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
19496 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
19497 ID3D12GraphicsCommandList4 * This,
19498 _In_ ID3D12Resource *pDstBuffer,
19499 UINT64 DstOffset,
19500 _In_ ID3D12Resource *pSrcBuffer,
19501 UINT64 SrcOffset,
19502 UINT Dependencies,
19503 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
19504 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
19505
19506 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
19507 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
19508 ID3D12GraphicsCommandList4 * This,
19509 _In_ ID3D12Resource *pDstBuffer,
19510 UINT64 DstOffset,
19511 _In_ ID3D12Resource *pSrcBuffer,
19512 UINT64 SrcOffset,
19513 UINT Dependencies,
19514 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
19515 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
19516
19517 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
19518 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
19519 ID3D12GraphicsCommandList4 * This,
19520 _In_ FLOAT Min,
19521 _In_ FLOAT Max);
19522
19523 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
19524 void ( STDMETHODCALLTYPE *SetSamplePositions )(
19525 ID3D12GraphicsCommandList4 * This,
19526 _In_ UINT NumSamplesPerPixel,
19527 _In_ UINT NumPixels,
19528 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
19529
19530 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
19531 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
19532 ID3D12GraphicsCommandList4 * This,
19533 _In_ ID3D12Resource *pDstResource,
19534 _In_ UINT DstSubresource,
19535 _In_ UINT DstX,
19536 _In_ UINT DstY,
19537 _In_ ID3D12Resource *pSrcResource,
19538 _In_ UINT SrcSubresource,
19539 _In_opt_ D3D12_RECT *pSrcRect,
19540 _In_ DXGI_FORMAT Format,
19541 _In_ D3D12_RESOLVE_MODE ResolveMode);
19542
19543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
19544 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
19545 ID3D12GraphicsCommandList4 * This,
19546 _In_ UINT Mask);
19547
19548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
19549 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
19550 ID3D12GraphicsCommandList4 * This,
19551 UINT Count,
19552 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
19553 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
19554
19555 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
19556 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
19557 ID3D12GraphicsCommandList4 * This,
19558 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
19559
19560 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
19561 void ( STDMETHODCALLTYPE *BeginRenderPass )(
19562 ID3D12GraphicsCommandList4 * This,
19563 _In_ UINT NumRenderTargets,
19564 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
19565 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
19566 D3D12_RENDER_PASS_FLAGS Flags);
19567
19568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
19569 void ( STDMETHODCALLTYPE *EndRenderPass )(
19570 ID3D12GraphicsCommandList4 * This);
19571
19572 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
19573 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
19574 ID3D12GraphicsCommandList4 * This,
19575 _In_ ID3D12MetaCommand *pMetaCommand,
19576 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
19577 _In_ SIZE_T InitializationParametersDataSizeInBytes);
19578
19579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
19580 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
19581 ID3D12GraphicsCommandList4 * This,
19582 _In_ ID3D12MetaCommand *pMetaCommand,
19583 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
19584 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
19585
19586 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
19587 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
19588 ID3D12GraphicsCommandList4 * This,
19589 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
19590 _In_ UINT NumPostbuildInfoDescs,
19591 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
19592
19593 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
19594 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
19595 ID3D12GraphicsCommandList4 * This,
19596 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
19597 _In_ UINT NumSourceAccelerationStructures,
19598 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
19599
19600 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
19601 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
19602 ID3D12GraphicsCommandList4 * This,
19603 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
19604 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
19605 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
19606
19607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
19608 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
19609 ID3D12GraphicsCommandList4 * This,
19610 _In_ ID3D12StateObject *pStateObject);
19611
19612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
19613 void ( STDMETHODCALLTYPE *DispatchRays )(
19614 ID3D12GraphicsCommandList4 * This,
19615 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
19616
19617 END_INTERFACE
19618 } ID3D12GraphicsCommandList4Vtbl;
19619
19620 interface ID3D12GraphicsCommandList4
19621 {
19622 CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
19623 };
19624
19625
19626
19627#ifdef COBJMACROS
19628
19629
19630#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
19631 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
19632
19633#define ID3D12GraphicsCommandList4_AddRef(This) \
19634 ( (This)->lpVtbl -> AddRef(This) )
19635
19636#define ID3D12GraphicsCommandList4_Release(This) \
19637 ( (This)->lpVtbl -> Release(This) )
19638
19639
19640#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
19641 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
19642
19643#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
19644 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
19645
19646#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
19647 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
19648
19649#define ID3D12GraphicsCommandList4_SetName(This,Name) \
19650 ( (This)->lpVtbl -> SetName(This,Name) )
19651
19652
19653#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
19654 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
19655
19656
19657#define ID3D12GraphicsCommandList4_GetType(This) \
19658 ( (This)->lpVtbl -> GetType(This) )
19659
19660
19661#define ID3D12GraphicsCommandList4_Close(This) \
19662 ( (This)->lpVtbl -> Close(This) )
19663
19664#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
19665 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
19666
19667#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
19668 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
19669
19670#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
19671 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
19672
19673#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
19674 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
19675
19676#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
19677 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
19678
19679#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
19680 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
19681
19682#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
19683 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
19684
19685#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
19686 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
19687
19688#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
19689 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
19690
19691#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
19692 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
19693
19694#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
19695 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
19696
19697#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
19698 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
19699
19700#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
19701 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
19702
19703#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
19704 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
19705
19706#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
19707 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
19708
19709#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
19710 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
19711
19712#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
19713 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
19714
19715#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
19716 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
19717
19718#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
19719 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
19720
19721#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
19722 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
19723
19724#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
19725 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
19726
19727#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
19728 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
19729
19730#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
19731 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
19732
19733#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
19734 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
19735
19736#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
19737 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
19738
19739#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
19740 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
19741
19742#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
19743 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
19744
19745#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
19746 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
19747
19748#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
19749 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
19750
19751#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
19752 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
19753
19754#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
19755 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
19756
19757#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
19758 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
19759
19760#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
19761 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
19762
19763#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
19764 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
19765
19766#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
19767 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
19768
19769#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
19770 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
19771
19772#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
19773 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
19774
19775#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
19776 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
19777
19778#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
19779 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
19780
19781#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
19782 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
19783
19784#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
19785 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
19786
19787#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
19788 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
19789
19790#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
19791 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
19792
19793#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
19794 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
19795
19796#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
19797 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
19798
19799#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
19800 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
19801
19802#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
19803 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
19804
19805#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
19806 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
19807
19808#define ID3D12GraphicsCommandList4_EndEvent(This) \
19809 ( (This)->lpVtbl -> EndEvent(This) )
19810
19811#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
19812 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
19813
19814
19815#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
19816 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
19817
19818#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
19819 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
19820
19821#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
19822 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
19823
19824#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
19825 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
19826
19827#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
19828 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
19829
19830#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
19831 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
19832
19833
19834#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
19835 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
19836
19837
19838#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
19839 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
19840
19841
19842#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
19843 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
19844
19845#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
19846 ( (This)->lpVtbl -> EndRenderPass(This) )
19847
19848#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
19849 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
19850
19851#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
19852 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
19853
19854#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
19855 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
19856
19857#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
19858 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
19859
19860#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
19861 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
19862
19863#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
19864 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
19865
19866#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
19867 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
19868
19869#endif /* COBJMACROS */
19870
19871
19872#endif /* C style interface */
19873
19874
19875
19876
19877#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
19878
19879
19880/* interface __MIDL_itf_d3d12_0000_0050 */
19881/* [local] */
19882
19883typedef
19884enum D3D12_SHADER_CACHE_MODE
19885 {
19886 D3D12_SHADER_CACHE_MODE_MEMORY = 0,
19887 D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
19888 } D3D12_SHADER_CACHE_MODE;
19889
19890typedef
19891enum D3D12_SHADER_CACHE_FLAGS
19892 {
19893 D3D12_SHADER_CACHE_FLAG_NONE = 0,
19894 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
19895 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
19896 } D3D12_SHADER_CACHE_FLAGS;
19897
19898DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS );
19899typedef struct D3D12_SHADER_CACHE_SESSION_DESC
19900 {
19901 GUID Identifier;
19902 D3D12_SHADER_CACHE_MODE Mode;
19903 D3D12_SHADER_CACHE_FLAGS Flags;
19904 UINT MaximumInMemoryCacheSizeBytes;
19905 UINT MaximumInMemoryCacheEntries;
19906 UINT MaximumValueFileSizeBytes;
19907 UINT64 Version;
19908 } D3D12_SHADER_CACHE_SESSION_DESC;
19909
19910
19911
19912extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_c_ifspec;
19913extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_s_ifspec;
19914
19915#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
19916#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
19917
19918/* interface ID3D12ShaderCacheSession */
19919/* [unique][local][object][uuid] */
19920
19921
19922EXTERN_C const IID IID_ID3D12ShaderCacheSession;
19923
19924#if defined(__cplusplus) && !defined(CINTERFACE)
19925
19926 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
19927 ID3D12ShaderCacheSession : public ID3D12DeviceChild
19928 {
19929 public:
19930 virtual HRESULT STDMETHODCALLTYPE FindValue(
19931 /* [annotation][in] */
19932 _In_reads_bytes_(KeySize) const void *pKey,
19933 UINT KeySize,
19934 /* [annotation][out] */
19935 _Out_writes_bytes_(*pValueSize) void *pValue,
19936 _Inout_ UINT *pValueSize) = 0;
19937
19938 virtual HRESULT STDMETHODCALLTYPE StoreValue(
19939 /* [annotation][in] */
19940 _In_reads_bytes_(KeySize) const void *pKey,
19941 UINT KeySize,
19942 /* [annotation][in] */
19943 _In_reads_bytes_(ValueSize) const void *pValue,
19944 UINT ValueSize) = 0;
19945
19946 virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
19947
19948 virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
19949
19950 };
19951
19952
19953#else /* C style interface */
19954
19955 typedef struct ID3D12ShaderCacheSessionVtbl
19956 {
19957 BEGIN_INTERFACE
19958
19959 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19960 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19961 ID3D12ShaderCacheSession * This,
19962 REFIID riid,
19963 _COM_Outptr_ void **ppvObject);
19964
19965 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19966 ULONG ( STDMETHODCALLTYPE *AddRef )(
19967 ID3D12ShaderCacheSession * This);
19968
19969 DECLSPEC_XFGVIRT(IUnknown, Release)
19970 ULONG ( STDMETHODCALLTYPE *Release )(
19971 ID3D12ShaderCacheSession * This);
19972
19973 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19974 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19975 ID3D12ShaderCacheSession * This,
19976 _In_ REFGUID guid,
19977 _Inout_ UINT *pDataSize,
19978 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19979
19980 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19981 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19982 ID3D12ShaderCacheSession * This,
19983 _In_ REFGUID guid,
19984 _In_ UINT DataSize,
19985 _In_reads_bytes_opt_( DataSize ) const void *pData);
19986
19987 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19988 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19989 ID3D12ShaderCacheSession * This,
19990 _In_ REFGUID guid,
19991 _In_opt_ const IUnknown *pData);
19992
19993 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19994 HRESULT ( STDMETHODCALLTYPE *SetName )(
19995 ID3D12ShaderCacheSession * This,
19996 _In_z_ LPCWSTR Name);
19997
19998 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
19999 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20000 ID3D12ShaderCacheSession * This,
20001 REFIID riid,
20002 _COM_Outptr_opt_ void **ppvDevice);
20003
20004 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
20005 HRESULT ( STDMETHODCALLTYPE *FindValue )(
20006 ID3D12ShaderCacheSession * This,
20007 /* [annotation][in] */
20008 _In_reads_bytes_(KeySize) const void *pKey,
20009 UINT KeySize,
20010 /* [annotation][out] */
20011 _Out_writes_bytes_(*pValueSize) void *pValue,
20012 _Inout_ UINT *pValueSize);
20013
20014 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
20015 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
20016 ID3D12ShaderCacheSession * This,
20017 /* [annotation][in] */
20018 _In_reads_bytes_(KeySize) const void *pKey,
20019 UINT KeySize,
20020 /* [annotation][in] */
20021 _In_reads_bytes_(ValueSize) const void *pValue,
20022 UINT ValueSize);
20023
20024 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
20025 void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
20026 ID3D12ShaderCacheSession * This);
20027
20028 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
20029 D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
20030 ID3D12ShaderCacheSession * This,
20031 D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
20032
20033 END_INTERFACE
20034 } ID3D12ShaderCacheSessionVtbl;
20035
20036 interface ID3D12ShaderCacheSession
20037 {
20038 CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
20039 };
20040
20041
20042
20043#ifdef COBJMACROS
20044
20045
20046#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
20047 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20048
20049#define ID3D12ShaderCacheSession_AddRef(This) \
20050 ( (This)->lpVtbl -> AddRef(This) )
20051
20052#define ID3D12ShaderCacheSession_Release(This) \
20053 ( (This)->lpVtbl -> Release(This) )
20054
20055
20056#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
20057 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20058
20059#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
20060 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20061
20062#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
20063 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20064
20065#define ID3D12ShaderCacheSession_SetName(This,Name) \
20066 ( (This)->lpVtbl -> SetName(This,Name) )
20067
20068
20069#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
20070 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20071
20072
20073#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
20074 ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
20075
20076#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
20077 ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
20078
20079#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
20080 ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
20081
20082#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
20083 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20084
20085#endif /* COBJMACROS */
20086
20087
20088#endif /* C style interface */
20089
20090
20091
20092
20093#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
20094
20095
20096/* interface __MIDL_itf_d3d12_0000_0051 */
20097/* [local] */
20098
20099typedef
20100enum D3D12_SHADER_CACHE_KIND_FLAGS
20101 {
20102 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
20103 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
20104 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
20105 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
20106 } D3D12_SHADER_CACHE_KIND_FLAGS;
20107
20108DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS );
20109typedef
20110enum D3D12_SHADER_CACHE_CONTROL_FLAGS
20111 {
20112 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
20113 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
20114 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
20115 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
20116
20117DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS );
20118
20119
20120extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_c_ifspec;
20121extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_s_ifspec;
20122
20123#ifndef __ID3D12Device9_INTERFACE_DEFINED__
20124#define __ID3D12Device9_INTERFACE_DEFINED__
20125
20126/* interface ID3D12Device9 */
20127/* [unique][local][object][uuid] */
20128
20129
20130EXTERN_C const IID IID_ID3D12Device9;
20131
20132#if defined(__cplusplus) && !defined(CINTERFACE)
20133
20134 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
20135 ID3D12Device9 : public ID3D12Device8
20136 {
20137 public:
20138 virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
20139 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
20140 REFIID riid,
20141 _COM_Outptr_opt_ void **ppvSession) = 0;
20142
20143 virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
20144 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
20145 D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
20146
20147 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
20148 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20149 REFIID CreatorID,
20150 REFIID riid,
20151 _COM_Outptr_ void **ppCommandQueue) = 0;
20152
20153 };
20154
20155
20156#else /* C style interface */
20157
20158 typedef struct ID3D12Device9Vtbl
20159 {
20160 BEGIN_INTERFACE
20161
20162 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20163 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20164 ID3D12Device9 * This,
20165 REFIID riid,
20166 _COM_Outptr_ void **ppvObject);
20167
20168 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20169 ULONG ( STDMETHODCALLTYPE *AddRef )(
20170 ID3D12Device9 * This);
20171
20172 DECLSPEC_XFGVIRT(IUnknown, Release)
20173 ULONG ( STDMETHODCALLTYPE *Release )(
20174 ID3D12Device9 * This);
20175
20176 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20177 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20178 ID3D12Device9 * This,
20179 _In_ REFGUID guid,
20180 _Inout_ UINT *pDataSize,
20181 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20182
20183 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20184 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20185 ID3D12Device9 * This,
20186 _In_ REFGUID guid,
20187 _In_ UINT DataSize,
20188 _In_reads_bytes_opt_( DataSize ) const void *pData);
20189
20190 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20191 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20192 ID3D12Device9 * This,
20193 _In_ REFGUID guid,
20194 _In_opt_ const IUnknown *pData);
20195
20196 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20197 HRESULT ( STDMETHODCALLTYPE *SetName )(
20198 ID3D12Device9 * This,
20199 _In_z_ LPCWSTR Name);
20200
20201 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
20202 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
20203 ID3D12Device9 * This);
20204
20205 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
20206 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
20207 ID3D12Device9 * This,
20208 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20209 REFIID riid,
20210 _COM_Outptr_ void **ppCommandQueue);
20211
20212 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
20213 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
20214 ID3D12Device9 * This,
20215 _In_ D3D12_COMMAND_LIST_TYPE type,
20216 REFIID riid,
20217 _COM_Outptr_ void **ppCommandAllocator);
20218
20219 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
20220 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
20221 ID3D12Device9 * This,
20222 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
20223 REFIID riid,
20224 _COM_Outptr_ void **ppPipelineState);
20225
20226 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
20227 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
20228 ID3D12Device9 * This,
20229 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
20230 REFIID riid,
20231 _COM_Outptr_ void **ppPipelineState);
20232
20233 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
20234 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
20235 ID3D12Device9 * This,
20236 _In_ UINT nodeMask,
20237 _In_ D3D12_COMMAND_LIST_TYPE type,
20238 _In_ ID3D12CommandAllocator *pCommandAllocator,
20239 _In_opt_ ID3D12PipelineState *pInitialState,
20240 REFIID riid,
20241 _COM_Outptr_ void **ppCommandList);
20242
20243 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
20244 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
20245 ID3D12Device9 * This,
20246 D3D12_FEATURE Feature,
20247 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
20248 UINT FeatureSupportDataSize);
20249
20250 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
20251 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
20252 ID3D12Device9 * This,
20253 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
20254 REFIID riid,
20255 _COM_Outptr_ void **ppvHeap);
20256
20257 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
20258 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
20259 ID3D12Device9 * This,
20260 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
20261
20262 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
20263 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
20264 ID3D12Device9 * This,
20265 _In_ UINT nodeMask,
20266 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
20267 _In_ SIZE_T blobLengthInBytes,
20268 REFIID riid,
20269 _COM_Outptr_ void **ppvRootSignature);
20270
20271 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
20272 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
20273 ID3D12Device9 * This,
20274 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
20275 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20276
20277 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
20278 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
20279 ID3D12Device9 * This,
20280 _In_opt_ ID3D12Resource *pResource,
20281 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
20282 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20283
20284 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
20285 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
20286 ID3D12Device9 * This,
20287 _In_opt_ ID3D12Resource *pResource,
20288 _In_opt_ ID3D12Resource *pCounterResource,
20289 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
20290 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20291
20292 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
20293 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
20294 ID3D12Device9 * This,
20295 _In_opt_ ID3D12Resource *pResource,
20296 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
20297 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20298
20299 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
20300 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
20301 ID3D12Device9 * This,
20302 _In_opt_ ID3D12Resource *pResource,
20303 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
20304 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20305
20306 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
20307 void ( STDMETHODCALLTYPE *CreateSampler )(
20308 ID3D12Device9 * This,
20309 _In_ const D3D12_SAMPLER_DESC *pDesc,
20310 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20311
20312 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
20313 void ( STDMETHODCALLTYPE *CopyDescriptors )(
20314 ID3D12Device9 * This,
20315 _In_ UINT NumDestDescriptorRanges,
20316 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
20317 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
20318 _In_ UINT NumSrcDescriptorRanges,
20319 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
20320 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
20321 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
20322
20323 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
20324 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
20325 ID3D12Device9 * This,
20326 _In_ UINT NumDescriptors,
20327 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
20328 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
20329 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
20330
20331 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
20332 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
20333 ID3D12Device9 * This,
20334 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20335 _In_ UINT visibleMask,
20336 _In_ UINT numResourceDescs,
20337 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
20338
20339 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
20340 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
20341 ID3D12Device9 * This,
20342 D3D12_HEAP_PROPERTIES * RetVal,
20343 _In_ UINT nodeMask,
20344 D3D12_HEAP_TYPE heapType);
20345
20346 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
20347 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
20348 ID3D12Device9 * This,
20349 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20350 D3D12_HEAP_FLAGS HeapFlags,
20351 _In_ const D3D12_RESOURCE_DESC *pDesc,
20352 D3D12_RESOURCE_STATES InitialResourceState,
20353 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20354 REFIID riidResource,
20355 _COM_Outptr_opt_ void **ppvResource);
20356
20357 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
20358 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
20359 ID3D12Device9 * This,
20360 _In_ const D3D12_HEAP_DESC *pDesc,
20361 REFIID riid,
20362 _COM_Outptr_opt_ void **ppvHeap);
20363
20364 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
20365 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
20366 ID3D12Device9 * This,
20367 _In_ ID3D12Heap *pHeap,
20368 UINT64 HeapOffset,
20369 _In_ const D3D12_RESOURCE_DESC *pDesc,
20370 D3D12_RESOURCE_STATES InitialState,
20371 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20372 REFIID riid,
20373 _COM_Outptr_opt_ void **ppvResource);
20374
20375 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
20376 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
20377 ID3D12Device9 * This,
20378 _In_ const D3D12_RESOURCE_DESC *pDesc,
20379 D3D12_RESOURCE_STATES InitialState,
20380 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20381 REFIID riid,
20382 _COM_Outptr_opt_ void **ppvResource);
20383
20384 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
20385 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
20386 ID3D12Device9 * This,
20387 _In_ ID3D12DeviceChild *pObject,
20388 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
20389 DWORD Access,
20390 _In_opt_ LPCWSTR Name,
20391 _Out_ HANDLE *pHandle);
20392
20393 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
20394 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
20395 ID3D12Device9 * This,
20396 _In_ HANDLE NTHandle,
20397 REFIID riid,
20398 _COM_Outptr_opt_ void **ppvObj);
20399
20400 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
20401 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
20402 ID3D12Device9 * This,
20403 _In_ LPCWSTR Name,
20404 DWORD Access,
20405 /* [annotation][out] */
20406 _Out_ HANDLE *pNTHandle);
20407
20408 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
20409 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
20410 ID3D12Device9 * This,
20411 UINT NumObjects,
20412 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
20413
20414 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
20415 HRESULT ( STDMETHODCALLTYPE *Evict )(
20416 ID3D12Device9 * This,
20417 UINT NumObjects,
20418 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
20419
20420 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
20421 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
20422 ID3D12Device9 * This,
20423 UINT64 InitialValue,
20424 D3D12_FENCE_FLAGS Flags,
20425 REFIID riid,
20426 _COM_Outptr_ void **ppFence);
20427
20428 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
20429 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
20430 ID3D12Device9 * This);
20431
20432 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
20433 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
20434 ID3D12Device9 * This,
20435 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
20436 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20437 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20438 UINT64 BaseOffset,
20439 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20440 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20441 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20442 _Out_opt_ UINT64 *pTotalBytes);
20443
20444 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
20445 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
20446 ID3D12Device9 * This,
20447 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
20448 REFIID riid,
20449 _COM_Outptr_opt_ void **ppvHeap);
20450
20451 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
20452 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
20453 ID3D12Device9 * This,
20454 BOOL Enable);
20455
20456 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
20457 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
20458 ID3D12Device9 * This,
20459 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
20460 _In_opt_ ID3D12RootSignature *pRootSignature,
20461 REFIID riid,
20462 _COM_Outptr_opt_ void **ppvCommandSignature);
20463
20464 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
20465 void ( STDMETHODCALLTYPE *GetResourceTiling )(
20466 ID3D12Device9 * This,
20467 _In_ ID3D12Resource *pTiledResource,
20468 _Out_opt_ UINT *pNumTilesForEntireResource,
20469 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
20470 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
20471 _Inout_opt_ UINT *pNumSubresourceTilings,
20472 _In_ UINT FirstSubresourceTilingToGet,
20473 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
20474
20475 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
20476 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
20477 ID3D12Device9 * This,
20478 LUID * RetVal);
20479
20480 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
20481 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
20482 ID3D12Device9 * This,
20483 _In_reads_(BlobLength) const void *pLibraryBlob,
20484 SIZE_T BlobLength,
20485 REFIID riid,
20486 _COM_Outptr_ void **ppPipelineLibrary);
20487
20488 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
20489 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
20490 ID3D12Device9 * This,
20491 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
20492 _In_reads_(NumFences) const UINT64 *pFenceValues,
20493 UINT NumFences,
20494 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
20495 HANDLE hEvent);
20496
20497 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
20498 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
20499 ID3D12Device9 * This,
20500 UINT NumObjects,
20501 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
20502 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
20503
20504 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
20505 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
20506 ID3D12Device9 * This,
20507 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
20508 REFIID riid,
20509 _COM_Outptr_ void **ppPipelineState);
20510
20511 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
20512 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
20513 ID3D12Device9 * This,
20514 _In_ const void *pAddress,
20515 REFIID riid,
20516 _COM_Outptr_ void **ppvHeap);
20517
20518 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
20519 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
20520 ID3D12Device9 * This,
20521 _In_ HANDLE hFileMapping,
20522 REFIID riid,
20523 _COM_Outptr_ void **ppvHeap);
20524
20525 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
20526 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
20527 ID3D12Device9 * This,
20528 D3D12_RESIDENCY_FLAGS Flags,
20529 UINT NumObjects,
20530 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
20531 _In_ ID3D12Fence *pFenceToSignal,
20532 UINT64 FenceValueToSignal);
20533
20534 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
20535 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
20536 ID3D12Device9 * This,
20537 _In_ UINT nodeMask,
20538 _In_ D3D12_COMMAND_LIST_TYPE type,
20539 _In_ D3D12_COMMAND_LIST_FLAGS flags,
20540 REFIID riid,
20541 _COM_Outptr_ void **ppCommandList);
20542
20543 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
20544 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
20545 ID3D12Device9 * This,
20546 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
20547 _In_ REFIID riid,
20548 _COM_Outptr_ void **ppSession);
20549
20550 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
20551 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
20552 ID3D12Device9 * This,
20553 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20554 D3D12_HEAP_FLAGS HeapFlags,
20555 _In_ const D3D12_RESOURCE_DESC *pDesc,
20556 D3D12_RESOURCE_STATES InitialResourceState,
20557 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20558 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20559 REFIID riidResource,
20560 _COM_Outptr_opt_ void **ppvResource);
20561
20562 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
20563 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
20564 ID3D12Device9 * This,
20565 _In_ const D3D12_HEAP_DESC *pDesc,
20566 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20567 REFIID riid,
20568 _COM_Outptr_opt_ void **ppvHeap);
20569
20570 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
20571 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
20572 ID3D12Device9 * This,
20573 _In_ const D3D12_RESOURCE_DESC *pDesc,
20574 D3D12_RESOURCE_STATES InitialState,
20575 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20576 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20577 REFIID riid,
20578 _COM_Outptr_opt_ void **ppvResource);
20579
20580 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
20581 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
20582 ID3D12Device9 * This,
20583 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20584 UINT visibleMask,
20585 UINT numResourceDescs,
20586 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
20587 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
20588
20589 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
20590 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
20591 ID3D12Device9 * This,
20592 _In_ ID3D12LifetimeOwner *pOwner,
20593 REFIID riid,
20594 _COM_Outptr_ void **ppvTracker);
20595
20596 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
20597 void ( STDMETHODCALLTYPE *RemoveDevice )(
20598 ID3D12Device9 * This);
20599
20600 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
20601 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
20602 ID3D12Device9 * This,
20603 _Inout_ UINT *pNumMetaCommands,
20604 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
20605
20606 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
20607 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
20608 ID3D12Device9 * This,
20609 _In_ REFGUID CommandId,
20610 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
20611 _Out_opt_ UINT *pTotalStructureSizeInBytes,
20612 _Inout_ UINT *pParameterCount,
20613 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
20614
20615 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
20616 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
20617 ID3D12Device9 * This,
20618 _In_ REFGUID CommandId,
20619 _In_ UINT NodeMask,
20620 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
20621 _In_ SIZE_T CreationParametersDataSizeInBytes,
20622 REFIID riid,
20623 _COM_Outptr_ void **ppMetaCommand);
20624
20625 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
20626 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
20627 ID3D12Device9 * This,
20628 const D3D12_STATE_OBJECT_DESC *pDesc,
20629 REFIID riid,
20630 _COM_Outptr_ void **ppStateObject);
20631
20632 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
20633 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
20634 ID3D12Device9 * This,
20635 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
20636 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
20637
20638 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
20639 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
20640 ID3D12Device9 * This,
20641 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
20642 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
20643
20644 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
20645 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
20646 ID3D12Device9 * This,
20647 D3D12_BACKGROUND_PROCESSING_MODE Mode,
20648 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
20649 _In_opt_ HANDLE hEventToSignalUponCompletion,
20650 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
20651
20652 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
20653 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
20654 ID3D12Device9 * This,
20655 const D3D12_STATE_OBJECT_DESC *pAddition,
20656 ID3D12StateObject *pStateObjectToGrowFrom,
20657 REFIID riid,
20658 _COM_Outptr_ void **ppNewStateObject);
20659
20660 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
20661 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
20662 ID3D12Device9 * This,
20663 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
20664 _In_ REFIID riid,
20665 _COM_Outptr_ void **ppSession);
20666
20667 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
20668 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
20669 ID3D12Device9 * This,
20670 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
20671 UINT visibleMask,
20672 UINT numResourceDescs,
20673 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
20674 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
20675
20676 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
20677 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
20678 ID3D12Device9 * This,
20679 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20680 D3D12_HEAP_FLAGS HeapFlags,
20681 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20682 D3D12_RESOURCE_STATES InitialResourceState,
20683 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20684 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20685 REFIID riidResource,
20686 _COM_Outptr_opt_ void **ppvResource);
20687
20688 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
20689 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
20690 ID3D12Device9 * This,
20691 _In_ ID3D12Heap *pHeap,
20692 UINT64 HeapOffset,
20693 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20694 D3D12_RESOURCE_STATES InitialState,
20695 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20696 REFIID riid,
20697 _COM_Outptr_opt_ void **ppvResource);
20698
20699 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
20700 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
20701 ID3D12Device9 * This,
20702 _In_opt_ ID3D12Resource *pTargetedResource,
20703 _In_opt_ ID3D12Resource *pFeedbackResource,
20704 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20705
20706 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
20707 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
20708 ID3D12Device9 * This,
20709 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
20710 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20711 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20712 UINT64 BaseOffset,
20713 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20714 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20715 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20716 _Out_opt_ UINT64 *pTotalBytes);
20717
20718 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
20719 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
20720 ID3D12Device9 * This,
20721 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
20722 REFIID riid,
20723 _COM_Outptr_opt_ void **ppvSession);
20724
20725 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
20726 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
20727 ID3D12Device9 * This,
20728 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
20729 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
20730
20731 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
20732 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
20733 ID3D12Device9 * This,
20734 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
20735 REFIID CreatorID,
20736 REFIID riid,
20737 _COM_Outptr_ void **ppCommandQueue);
20738
20739 END_INTERFACE
20740 } ID3D12Device9Vtbl;
20741
20742 interface ID3D12Device9
20743 {
20744 CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
20745 };
20746
20747
20748
20749#ifdef COBJMACROS
20750
20751
20752#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
20753 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20754
20755#define ID3D12Device9_AddRef(This) \
20756 ( (This)->lpVtbl -> AddRef(This) )
20757
20758#define ID3D12Device9_Release(This) \
20759 ( (This)->lpVtbl -> Release(This) )
20760
20761
20762#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
20763 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20764
20765#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
20766 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20767
20768#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
20769 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20770
20771#define ID3D12Device9_SetName(This,Name) \
20772 ( (This)->lpVtbl -> SetName(This,Name) )
20773
20774
20775#define ID3D12Device9_GetNodeCount(This) \
20776 ( (This)->lpVtbl -> GetNodeCount(This) )
20777
20778#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
20779 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
20780
20781#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
20782 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
20783
20784#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
20785 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
20786
20787#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
20788 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
20789
20790#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
20791 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
20792
20793#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
20794 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
20795
20796#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
20797 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
20798
20799#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
20800 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
20801
20802#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
20803 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
20804
20805#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
20806 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
20807
20808#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
20809 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
20810
20811#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
20812 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
20813
20814#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
20815 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
20816
20817#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
20818 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
20819
20820#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
20821 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
20822
20823#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
20824 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
20825
20826#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
20827 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
20828
20829#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
20830 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
20831
20832#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
20833 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
20834
20835#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
20836 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
20837
20838#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
20839 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
20840
20841#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20842 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20843
20844#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20845 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20846
20847#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
20848 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
20849
20850#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
20851 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
20852
20853#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
20854 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
20855
20856#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
20857 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
20858
20859#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
20860 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
20861
20862#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
20863 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
20864
20865#define ID3D12Device9_GetDeviceRemovedReason(This) \
20866 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
20867
20868#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20869 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20870
20871#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
20872 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
20873
20874#define ID3D12Device9_SetStablePowerState(This,Enable) \
20875 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
20876
20877#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
20878 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
20879
20880#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
20881 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
20882
20883#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
20884 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
20885
20886
20887#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
20888 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
20889
20890#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
20891 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
20892
20893#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
20894 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
20895
20896
20897#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
20898 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
20899
20900
20901#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
20902 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
20903
20904#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
20905 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
20906
20907#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
20908 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
20909
20910
20911#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
20912 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
20913
20914#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
20915 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
20916
20917#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20918 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20919
20920#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
20921 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
20922
20923#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
20924 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
20925
20926#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20927 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20928
20929
20930#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
20931 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
20932
20933#define ID3D12Device9_RemoveDevice(This) \
20934 ( (This)->lpVtbl -> RemoveDevice(This) )
20935
20936#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
20937 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
20938
20939#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
20940 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
20941
20942#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
20943 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
20944
20945#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
20946 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
20947
20948#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
20949 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
20950
20951#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
20952 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
20953
20954
20955#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
20956 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
20957
20958
20959#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
20960 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
20961
20962#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
20963 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
20964
20965
20966#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20967 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20968
20969#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20970 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20971
20972#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20973 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20974
20975#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
20976 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
20977
20978#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20979 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20980
20981
20982#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
20983 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
20984
20985#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
20986 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
20987
20988#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
20989 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
20990
20991#endif /* COBJMACROS */
20992
20993
20994#endif /* C style interface */
20995
20996
20997
20998
20999#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
21000
21001
21002#ifndef __ID3D12Tools_INTERFACE_DEFINED__
21003#define __ID3D12Tools_INTERFACE_DEFINED__
21004
21005/* interface ID3D12Tools */
21006/* [unique][local][object][uuid] */
21007
21008
21009EXTERN_C const IID IID_ID3D12Tools;
21010
21011#if defined(__cplusplus) && !defined(CINTERFACE)
21012
21013 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
21014 ID3D12Tools : public IUnknown
21015 {
21016 public:
21017 virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
21018 BOOL bEnable) = 0;
21019
21020 virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
21021
21022 };
21023
21024
21025#else /* C style interface */
21026
21027 typedef struct ID3D12ToolsVtbl
21028 {
21029 BEGIN_INTERFACE
21030
21031 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21032 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21033 ID3D12Tools * This,
21034 REFIID riid,
21035 _COM_Outptr_ void **ppvObject);
21036
21037 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21038 ULONG ( STDMETHODCALLTYPE *AddRef )(
21039 ID3D12Tools * This);
21040
21041 DECLSPEC_XFGVIRT(IUnknown, Release)
21042 ULONG ( STDMETHODCALLTYPE *Release )(
21043 ID3D12Tools * This);
21044
21045 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
21046 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
21047 ID3D12Tools * This,
21048 BOOL bEnable);
21049
21050 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
21051 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
21052 ID3D12Tools * This);
21053
21054 END_INTERFACE
21055 } ID3D12ToolsVtbl;
21056
21057 interface ID3D12Tools
21058 {
21059 CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
21060 };
21061
21062
21063
21064#ifdef COBJMACROS
21065
21066
21067#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
21068 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21069
21070#define ID3D12Tools_AddRef(This) \
21071 ( (This)->lpVtbl -> AddRef(This) )
21072
21073#define ID3D12Tools_Release(This) \
21074 ( (This)->lpVtbl -> Release(This) )
21075
21076
21077#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
21078 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
21079
21080#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
21081 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
21082
21083#endif /* COBJMACROS */
21084
21085
21086#endif /* C style interface */
21087
21088
21089
21090
21091#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
21092
21093
21094/* interface __MIDL_itf_d3d12_0000_0053 */
21095/* [local] */
21096
21097typedef struct D3D12_SUBRESOURCE_DATA
21098 {
21099 const void *pData;
21100 LONG_PTR RowPitch;
21101 LONG_PTR SlicePitch;
21102 } D3D12_SUBRESOURCE_DATA;
21103
21104typedef struct D3D12_MEMCPY_DEST
21105 {
21106 void *pData;
21107 SIZE_T RowPitch;
21108 SIZE_T SlicePitch;
21109 } D3D12_MEMCPY_DEST;
21110
21111#if !defined( D3D12_IGNORE_SDK_LAYERS )
21112#include "d3d12sdklayers.h"
21113#endif
21114
21115///////////////////////////////////////////////////////////////////////////
21116// D3D12CreateDevice
21117// ------------------
21118//
21119// pAdapter
21120// If NULL, D3D12CreateDevice will choose the primary adapter.
21121// If non-NULL, D3D12CreateDevice will use the provided adapter.
21122// MinimumFeatureLevel
21123// The minimum feature level required for successful device creation.
21124// riid
21125// The interface IID of the device to be returned. Expected: ID3D12Device.
21126// ppDevice
21127// Pointer to returned interface. May be NULL.
21128//
21129// Return Values
21130// Any of those documented for
21131// CreateDXGIFactory1
21132// IDXGIFactory::EnumAdapters
21133// D3D12CreateDevice
21134//
21135///////////////////////////////////////////////////////////////////////////
21136typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
21137 D3D_FEATURE_LEVEL,
21138 _In_ REFIID, _COM_Outptr_opt_ void** );
21139
21140HRESULT WINAPI D3D12CreateDevice(
21141 _In_opt_ IUnknown* pAdapter,
21142 D3D_FEATURE_LEVEL MinimumFeatureLevel,
21143 _In_ REFIID riid, // Expected: ID3D12Device
21144 _COM_Outptr_opt_ void** ppDevice );
21145
21146
21147typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
21148
21149HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
21150
21151// --------------------------------------------------------------------------------------------------------------------------------
21152// D3D12EnableExperimentalFeatures
21153//
21154// Pass in a list of feature GUIDs to be enabled together.
21155//
21156// If a particular feature requires some configuration information on enablement, it will have
21157// a configuration struct that can be passed alongside the GUID.
21158//
21159// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
21160// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
21161// for manipulating the feature. This allows for control that might not cleanly be expressed by just
21162// the configuration struct that D3D12EnableExperimentalFeatures provides.
21163//
21164// If this method is called and a change to existing feature enablement is made,
21165// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
21166// singleton device for a process. Removing the devices when configuration changes prevents
21167// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
21168//
21169// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
21170// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
21171// in are known to be incompatible with each other, or other errors.
21172// Returns S_OK otherwise.
21173//
21174// --------------------------------------------------------------------------------------------------------------------------------
21175HRESULT WINAPI D3D12EnableExperimentalFeatures(
21176 UINT NumFeatures,
21177 _In_count_(NumFeatures) const IID* pIIDs,
21178 _In_opt_count_(NumFeatures) void* pConfigurationStructs,
21179 _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
21180
21181// --------------------------------------------------------------------------------------------------------------------------------
21182// Experimental Feature: D3D12ExperimentalShaderModels
21183//
21184// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
21185// meaning shader models that haven't been finalized for use in retail.
21186//
21187// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
21188//
21189// --------------------------------------------------------------------------------------------------------------------------------
21190static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
21191 0x76f5573e,
21192 0xf13a,
21193 0x40f5,
21194 { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
21195};
21196// --------------------------------------------------------------------------------------------------------------------------------
21197// Experimental Feature: D3D12TiledResourceTier4
21198//
21199// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
21200// meaning texture tile data-inheritance is allowed.
21201//
21202// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
21203//
21204// --------------------------------------------------------------------------------------------------------------------------------
21205static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
21206 0xc9c4725f,
21207 0xa81a,
21208 0x4f56,
21209 { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
21210};
21211// --------------------------------------------------------------------------------------------------------------------------------
21212// Experimental Feature: D3D12MetaCommand
21213//
21214// Use with D3D12EnableExperimentalFeatures to enable the D3D12 Meta Command.
21215//
21216// Enabling D3D12MetaCommand needs no configuration struct, pass NULL in the pConfigurationStructs array.
21217//
21218// --------------------------------------------------------------------------------------------------------------------------------
21219static const UUID D3D12MetaCommand = { /* C734C97E-8077-48C8-9FDC-D9D1DD31DD77 */
21220 0xc734c97e,
21221 0x8077,
21222 0x48c8,
21223 { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 }
21224};
21225// --------------------------------------------------------------------------------------------------------------------------------
21226// D3D12GetInterface
21227//
21228// Retrieve Global D3D12 Interface.
21229//
21230
21231DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
21232DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
21233DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
21234DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
21235
21236typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
21237
21238HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
21239
21240
21241
21242extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0053_v0_0_c_ifspec;
21243extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0053_v0_0_s_ifspec;
21244
21245#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
21246#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
21247
21248/* interface ID3D12SDKConfiguration */
21249/* [unique][local][object][uuid] */
21250
21251
21252EXTERN_C const IID IID_ID3D12SDKConfiguration;
21253
21254#if defined(__cplusplus) && !defined(CINTERFACE)
21255
21256 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
21257 ID3D12SDKConfiguration : public IUnknown
21258 {
21259 public:
21260 virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
21261 UINT SDKVersion,
21262 _In_z_ LPCSTR SDKPath) = 0;
21263
21264 };
21265
21266
21267#else /* C style interface */
21268
21269 typedef struct ID3D12SDKConfigurationVtbl
21270 {
21271 BEGIN_INTERFACE
21272
21273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21275 ID3D12SDKConfiguration * This,
21276 REFIID riid,
21277 _COM_Outptr_ void **ppvObject);
21278
21279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21280 ULONG ( STDMETHODCALLTYPE *AddRef )(
21281 ID3D12SDKConfiguration * This);
21282
21283 DECLSPEC_XFGVIRT(IUnknown, Release)
21284 ULONG ( STDMETHODCALLTYPE *Release )(
21285 ID3D12SDKConfiguration * This);
21286
21287 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
21288 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
21289 ID3D12SDKConfiguration * This,
21290 UINT SDKVersion,
21291 _In_z_ LPCSTR SDKPath);
21292
21293 END_INTERFACE
21294 } ID3D12SDKConfigurationVtbl;
21295
21296 interface ID3D12SDKConfiguration
21297 {
21298 CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
21299 };
21300
21301
21302
21303#ifdef COBJMACROS
21304
21305
21306#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
21307 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21308
21309#define ID3D12SDKConfiguration_AddRef(This) \
21310 ( (This)->lpVtbl -> AddRef(This) )
21311
21312#define ID3D12SDKConfiguration_Release(This) \
21313 ( (This)->lpVtbl -> Release(This) )
21314
21315
21316#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
21317 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
21318
21319#endif /* COBJMACROS */
21320
21321
21322#endif /* C style interface */
21323
21324
21325
21326
21327#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
21328
21329
21330/* interface __MIDL_itf_d3d12_0000_0054 */
21331/* [local] */
21332
21333typedef
21334enum D3D12_AXIS_SHADING_RATE
21335 {
21336 D3D12_AXIS_SHADING_RATE_1X = 0,
21337 D3D12_AXIS_SHADING_RATE_2X = 0x1,
21338 D3D12_AXIS_SHADING_RATE_4X = 0x2
21339 } D3D12_AXIS_SHADING_RATE;
21340
21341#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
21342#define D3D12_SHADING_RATE_VALID_MASK 3
21343#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
21344#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
21345#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
21346typedef
21347enum D3D12_SHADING_RATE
21348 {
21349 D3D12_SHADING_RATE_1X1 = 0,
21350 D3D12_SHADING_RATE_1X2 = 0x1,
21351 D3D12_SHADING_RATE_2X1 = 0x4,
21352 D3D12_SHADING_RATE_2X2 = 0x5,
21353 D3D12_SHADING_RATE_2X4 = 0x6,
21354 D3D12_SHADING_RATE_4X2 = 0x9,
21355 D3D12_SHADING_RATE_4X4 = 0xa
21356 } D3D12_SHADING_RATE;
21357
21358typedef
21359enum D3D12_SHADING_RATE_COMBINER
21360 {
21361 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
21362 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
21363 D3D12_SHADING_RATE_COMBINER_MIN = 2,
21364 D3D12_SHADING_RATE_COMBINER_MAX = 3,
21365 D3D12_SHADING_RATE_COMBINER_SUM = 4
21366 } D3D12_SHADING_RATE_COMBINER;
21367
21368
21369
21370extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
21371extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
21372
21373#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
21374#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
21375
21376/* interface ID3D12GraphicsCommandList5 */
21377/* [unique][local][object][uuid] */
21378
21379
21380EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
21381
21382#if defined(__cplusplus) && !defined(CINTERFACE)
21383
21384 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
21385 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
21386 {
21387 public:
21388 virtual void STDMETHODCALLTYPE RSSetShadingRate(
21389 _In_ D3D12_SHADING_RATE baseShadingRate,
21390 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
21391
21392 virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
21393 _In_opt_ ID3D12Resource *shadingRateImage) = 0;
21394
21395 };
21396
21397
21398#else /* C style interface */
21399
21400 typedef struct ID3D12GraphicsCommandList5Vtbl
21401 {
21402 BEGIN_INTERFACE
21403
21404 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21405 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21406 ID3D12GraphicsCommandList5 * This,
21407 REFIID riid,
21408 _COM_Outptr_ void **ppvObject);
21409
21410 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21411 ULONG ( STDMETHODCALLTYPE *AddRef )(
21412 ID3D12GraphicsCommandList5 * This);
21413
21414 DECLSPEC_XFGVIRT(IUnknown, Release)
21415 ULONG ( STDMETHODCALLTYPE *Release )(
21416 ID3D12GraphicsCommandList5 * This);
21417
21418 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
21419 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
21420 ID3D12GraphicsCommandList5 * This,
21421 _In_ REFGUID guid,
21422 _Inout_ UINT *pDataSize,
21423 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
21424
21425 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
21426 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
21427 ID3D12GraphicsCommandList5 * This,
21428 _In_ REFGUID guid,
21429 _In_ UINT DataSize,
21430 _In_reads_bytes_opt_( DataSize ) const void *pData);
21431
21432 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
21433 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
21434 ID3D12GraphicsCommandList5 * This,
21435 _In_ REFGUID guid,
21436 _In_opt_ const IUnknown *pData);
21437
21438 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
21439 HRESULT ( STDMETHODCALLTYPE *SetName )(
21440 ID3D12GraphicsCommandList5 * This,
21441 _In_z_ LPCWSTR Name);
21442
21443 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
21444 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
21445 ID3D12GraphicsCommandList5 * This,
21446 REFIID riid,
21447 _COM_Outptr_opt_ void **ppvDevice);
21448
21449 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
21450 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
21451 ID3D12GraphicsCommandList5 * This);
21452
21453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
21454 HRESULT ( STDMETHODCALLTYPE *Close )(
21455 ID3D12GraphicsCommandList5 * This);
21456
21457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
21458 HRESULT ( STDMETHODCALLTYPE *Reset )(
21459 ID3D12GraphicsCommandList5 * This,
21460 _In_ ID3D12CommandAllocator *pAllocator,
21461 _In_opt_ ID3D12PipelineState *pInitialState);
21462
21463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
21464 void ( STDMETHODCALLTYPE *ClearState )(
21465 ID3D12GraphicsCommandList5 * This,
21466 _In_opt_ ID3D12PipelineState *pPipelineState);
21467
21468 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
21469 void ( STDMETHODCALLTYPE *DrawInstanced )(
21470 ID3D12GraphicsCommandList5 * This,
21471 _In_ UINT VertexCountPerInstance,
21472 _In_ UINT InstanceCount,
21473 _In_ UINT StartVertexLocation,
21474 _In_ UINT StartInstanceLocation);
21475
21476 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
21477 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
21478 ID3D12GraphicsCommandList5 * This,
21479 _In_ UINT IndexCountPerInstance,
21480 _In_ UINT InstanceCount,
21481 _In_ UINT StartIndexLocation,
21482 _In_ INT BaseVertexLocation,
21483 _In_ UINT StartInstanceLocation);
21484
21485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
21486 void ( STDMETHODCALLTYPE *Dispatch )(
21487 ID3D12GraphicsCommandList5 * This,
21488 _In_ UINT ThreadGroupCountX,
21489 _In_ UINT ThreadGroupCountY,
21490 _In_ UINT ThreadGroupCountZ);
21491
21492 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
21493 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
21494 ID3D12GraphicsCommandList5 * This,
21495 _In_ ID3D12Resource *pDstBuffer,
21496 UINT64 DstOffset,
21497 _In_ ID3D12Resource *pSrcBuffer,
21498 UINT64 SrcOffset,
21499 UINT64 NumBytes);
21500
21501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
21502 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
21503 ID3D12GraphicsCommandList5 * This,
21504 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
21505 UINT DstX,
21506 UINT DstY,
21507 UINT DstZ,
21508 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
21509 _In_opt_ const D3D12_BOX *pSrcBox);
21510
21511 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
21512 void ( STDMETHODCALLTYPE *CopyResource )(
21513 ID3D12GraphicsCommandList5 * This,
21514 _In_ ID3D12Resource *pDstResource,
21515 _In_ ID3D12Resource *pSrcResource);
21516
21517 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
21518 void ( STDMETHODCALLTYPE *CopyTiles )(
21519 ID3D12GraphicsCommandList5 * This,
21520 _In_ ID3D12Resource *pTiledResource,
21521 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
21522 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
21523 _In_ ID3D12Resource *pBuffer,
21524 UINT64 BufferStartOffsetInBytes,
21525 D3D12_TILE_COPY_FLAGS Flags);
21526
21527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
21528 void ( STDMETHODCALLTYPE *ResolveSubresource )(
21529 ID3D12GraphicsCommandList5 * This,
21530 _In_ ID3D12Resource *pDstResource,
21531 _In_ UINT DstSubresource,
21532 _In_ ID3D12Resource *pSrcResource,
21533 _In_ UINT SrcSubresource,
21534 _In_ DXGI_FORMAT Format);
21535
21536 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
21537 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
21538 ID3D12GraphicsCommandList5 * This,
21539 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
21540
21541 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
21542 void ( STDMETHODCALLTYPE *RSSetViewports )(
21543 ID3D12GraphicsCommandList5 * This,
21544 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
21545 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
21546
21547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
21548 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
21549 ID3D12GraphicsCommandList5 * This,
21550 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
21551 _In_reads_( NumRects) const D3D12_RECT *pRects);
21552
21553 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
21554 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
21555 ID3D12GraphicsCommandList5 * This,
21556 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
21557
21558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
21559 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
21560 ID3D12GraphicsCommandList5 * This,
21561 _In_ UINT StencilRef);
21562
21563 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
21564 void ( STDMETHODCALLTYPE *SetPipelineState )(
21565 ID3D12GraphicsCommandList5 * This,
21566 _In_ ID3D12PipelineState *pPipelineState);
21567
21568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
21569 void ( STDMETHODCALLTYPE *ResourceBarrier )(
21570 ID3D12GraphicsCommandList5 * This,
21571 _In_ UINT NumBarriers,
21572 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
21573
21574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
21575 void ( STDMETHODCALLTYPE *ExecuteBundle )(
21576 ID3D12GraphicsCommandList5 * This,
21577 _In_ ID3D12GraphicsCommandList *pCommandList);
21578
21579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
21580 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
21581 ID3D12GraphicsCommandList5 * This,
21582 _In_ UINT NumDescriptorHeaps,
21583 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
21584
21585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
21586 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
21587 ID3D12GraphicsCommandList5 * This,
21588 _In_opt_ ID3D12RootSignature *pRootSignature);
21589
21590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
21591 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
21592 ID3D12GraphicsCommandList5 * This,
21593 _In_opt_ ID3D12RootSignature *pRootSignature);
21594
21595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
21596 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
21597 ID3D12GraphicsCommandList5 * This,
21598 _In_ UINT RootParameterIndex,
21599 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21600
21601 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
21602 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
21603 ID3D12GraphicsCommandList5 * This,
21604 _In_ UINT RootParameterIndex,
21605 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21606
21607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
21608 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
21609 ID3D12GraphicsCommandList5 * This,
21610 _In_ UINT RootParameterIndex,
21611 _In_ UINT SrcData,
21612 _In_ UINT DestOffsetIn32BitValues);
21613
21614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
21615 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
21616 ID3D12GraphicsCommandList5 * This,
21617 _In_ UINT RootParameterIndex,
21618 _In_ UINT SrcData,
21619 _In_ UINT DestOffsetIn32BitValues);
21620
21621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
21622 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
21623 ID3D12GraphicsCommandList5 * This,
21624 _In_ UINT RootParameterIndex,
21625 _In_ UINT Num32BitValuesToSet,
21626 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21627 _In_ UINT DestOffsetIn32BitValues);
21628
21629 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
21630 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
21631 ID3D12GraphicsCommandList5 * This,
21632 _In_ UINT RootParameterIndex,
21633 _In_ UINT Num32BitValuesToSet,
21634 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21635 _In_ UINT DestOffsetIn32BitValues);
21636
21637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
21638 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
21639 ID3D12GraphicsCommandList5 * This,
21640 _In_ UINT RootParameterIndex,
21641 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21642
21643 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
21644 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
21645 ID3D12GraphicsCommandList5 * This,
21646 _In_ UINT RootParameterIndex,
21647 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21648
21649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
21650 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
21651 ID3D12GraphicsCommandList5 * This,
21652 _In_ UINT RootParameterIndex,
21653 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21654
21655 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
21656 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
21657 ID3D12GraphicsCommandList5 * This,
21658 _In_ UINT RootParameterIndex,
21659 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21660
21661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
21662 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
21663 ID3D12GraphicsCommandList5 * This,
21664 _In_ UINT RootParameterIndex,
21665 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21666
21667 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
21668 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
21669 ID3D12GraphicsCommandList5 * This,
21670 _In_ UINT RootParameterIndex,
21671 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21672
21673 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
21674 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
21675 ID3D12GraphicsCommandList5 * This,
21676 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
21677
21678 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
21679 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
21680 ID3D12GraphicsCommandList5 * This,
21681 _In_ UINT StartSlot,
21682 _In_ UINT NumViews,
21683 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
21684
21685 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
21686 void ( STDMETHODCALLTYPE *SOSetTargets )(
21687 ID3D12GraphicsCommandList5 * This,
21688 _In_ UINT StartSlot,
21689 _In_ UINT NumViews,
21690 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
21691
21692 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
21693 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
21694 ID3D12GraphicsCommandList5 * This,
21695 _In_ UINT NumRenderTargetDescriptors,
21696 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
21697 _In_ BOOL RTsSingleHandleToDescriptorRange,
21698 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
21699
21700 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
21701 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
21702 ID3D12GraphicsCommandList5 * This,
21703 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
21704 _In_ D3D12_CLEAR_FLAGS ClearFlags,
21705 _In_ FLOAT Depth,
21706 _In_ UINT8 Stencil,
21707 _In_ UINT NumRects,
21708 _In_reads_(NumRects) const D3D12_RECT *pRects);
21709
21710 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
21711 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
21712 ID3D12GraphicsCommandList5 * This,
21713 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
21714 _In_ const FLOAT ColorRGBA[ 4 ],
21715 _In_ UINT NumRects,
21716 _In_reads_(NumRects) const D3D12_RECT *pRects);
21717
21718 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
21719 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
21720 ID3D12GraphicsCommandList5 * This,
21721 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21722 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21723 _In_ ID3D12Resource *pResource,
21724 _In_ const UINT Values[ 4 ],
21725 _In_ UINT NumRects,
21726 _In_reads_(NumRects) const D3D12_RECT *pRects);
21727
21728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
21729 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
21730 ID3D12GraphicsCommandList5 * This,
21731 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21732 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21733 _In_ ID3D12Resource *pResource,
21734 _In_ const FLOAT Values[ 4 ],
21735 _In_ UINT NumRects,
21736 _In_reads_(NumRects) const D3D12_RECT *pRects);
21737
21738 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
21739 void ( STDMETHODCALLTYPE *DiscardResource )(
21740 ID3D12GraphicsCommandList5 * This,
21741 _In_ ID3D12Resource *pResource,
21742 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
21743
21744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
21745 void ( STDMETHODCALLTYPE *BeginQuery )(
21746 ID3D12GraphicsCommandList5 * This,
21747 _In_ ID3D12QueryHeap *pQueryHeap,
21748 _In_ D3D12_QUERY_TYPE Type,
21749 _In_ UINT Index);
21750
21751 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
21752 void ( STDMETHODCALLTYPE *EndQuery )(
21753 ID3D12GraphicsCommandList5 * This,
21754 _In_ ID3D12QueryHeap *pQueryHeap,
21755 _In_ D3D12_QUERY_TYPE Type,
21756 _In_ UINT Index);
21757
21758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
21759 void ( STDMETHODCALLTYPE *ResolveQueryData )(
21760 ID3D12GraphicsCommandList5 * This,
21761 _In_ ID3D12QueryHeap *pQueryHeap,
21762 _In_ D3D12_QUERY_TYPE Type,
21763 _In_ UINT StartIndex,
21764 _In_ UINT NumQueries,
21765 _In_ ID3D12Resource *pDestinationBuffer,
21766 _In_ UINT64 AlignedDestinationBufferOffset);
21767
21768 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
21769 void ( STDMETHODCALLTYPE *SetPredication )(
21770 ID3D12GraphicsCommandList5 * This,
21771 _In_opt_ ID3D12Resource *pBuffer,
21772 _In_ UINT64 AlignedBufferOffset,
21773 _In_ D3D12_PREDICATION_OP Operation);
21774
21775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
21776 void ( STDMETHODCALLTYPE *SetMarker )(
21777 ID3D12GraphicsCommandList5 * This,
21778 UINT Metadata,
21779 _In_reads_bytes_opt_(Size) const void *pData,
21780 UINT Size);
21781
21782 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
21783 void ( STDMETHODCALLTYPE *BeginEvent )(
21784 ID3D12GraphicsCommandList5 * This,
21785 UINT Metadata,
21786 _In_reads_bytes_opt_(Size) const void *pData,
21787 UINT Size);
21788
21789 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
21790 void ( STDMETHODCALLTYPE *EndEvent )(
21791 ID3D12GraphicsCommandList5 * This);
21792
21793 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
21794 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
21795 ID3D12GraphicsCommandList5 * This,
21796 _In_ ID3D12CommandSignature *pCommandSignature,
21797 _In_ UINT MaxCommandCount,
21798 _In_ ID3D12Resource *pArgumentBuffer,
21799 _In_ UINT64 ArgumentBufferOffset,
21800 _In_opt_ ID3D12Resource *pCountBuffer,
21801 _In_ UINT64 CountBufferOffset);
21802
21803 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
21804 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
21805 ID3D12GraphicsCommandList5 * This,
21806 _In_ ID3D12Resource *pDstBuffer,
21807 UINT64 DstOffset,
21808 _In_ ID3D12Resource *pSrcBuffer,
21809 UINT64 SrcOffset,
21810 UINT Dependencies,
21811 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21812 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21813
21814 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
21815 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
21816 ID3D12GraphicsCommandList5 * This,
21817 _In_ ID3D12Resource *pDstBuffer,
21818 UINT64 DstOffset,
21819 _In_ ID3D12Resource *pSrcBuffer,
21820 UINT64 SrcOffset,
21821 UINT Dependencies,
21822 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21823 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21824
21825 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
21826 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
21827 ID3D12GraphicsCommandList5 * This,
21828 _In_ FLOAT Min,
21829 _In_ FLOAT Max);
21830
21831 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
21832 void ( STDMETHODCALLTYPE *SetSamplePositions )(
21833 ID3D12GraphicsCommandList5 * This,
21834 _In_ UINT NumSamplesPerPixel,
21835 _In_ UINT NumPixels,
21836 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
21837
21838 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
21839 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
21840 ID3D12GraphicsCommandList5 * This,
21841 _In_ ID3D12Resource *pDstResource,
21842 _In_ UINT DstSubresource,
21843 _In_ UINT DstX,
21844 _In_ UINT DstY,
21845 _In_ ID3D12Resource *pSrcResource,
21846 _In_ UINT SrcSubresource,
21847 _In_opt_ D3D12_RECT *pSrcRect,
21848 _In_ DXGI_FORMAT Format,
21849 _In_ D3D12_RESOLVE_MODE ResolveMode);
21850
21851 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
21852 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
21853 ID3D12GraphicsCommandList5 * This,
21854 _In_ UINT Mask);
21855
21856 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
21857 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
21858 ID3D12GraphicsCommandList5 * This,
21859 UINT Count,
21860 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
21861 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
21862
21863 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
21864 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
21865 ID3D12GraphicsCommandList5 * This,
21866 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
21867
21868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
21869 void ( STDMETHODCALLTYPE *BeginRenderPass )(
21870 ID3D12GraphicsCommandList5 * This,
21871 _In_ UINT NumRenderTargets,
21872 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
21873 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
21874 D3D12_RENDER_PASS_FLAGS Flags);
21875
21876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
21877 void ( STDMETHODCALLTYPE *EndRenderPass )(
21878 ID3D12GraphicsCommandList5 * This);
21879
21880 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
21881 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
21882 ID3D12GraphicsCommandList5 * This,
21883 _In_ ID3D12MetaCommand *pMetaCommand,
21884 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
21885 _In_ SIZE_T InitializationParametersDataSizeInBytes);
21886
21887 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
21888 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
21889 ID3D12GraphicsCommandList5 * This,
21890 _In_ ID3D12MetaCommand *pMetaCommand,
21891 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
21892 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
21893
21894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
21895 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
21896 ID3D12GraphicsCommandList5 * This,
21897 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
21898 _In_ UINT NumPostbuildInfoDescs,
21899 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
21900
21901 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
21902 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
21903 ID3D12GraphicsCommandList5 * This,
21904 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
21905 _In_ UINT NumSourceAccelerationStructures,
21906 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
21907
21908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
21909 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
21910 ID3D12GraphicsCommandList5 * This,
21911 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
21912 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
21913 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
21914
21915 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
21916 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
21917 ID3D12GraphicsCommandList5 * This,
21918 _In_ ID3D12StateObject *pStateObject);
21919
21920 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
21921 void ( STDMETHODCALLTYPE *DispatchRays )(
21922 ID3D12GraphicsCommandList5 * This,
21923 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
21924
21925 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
21926 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
21927 ID3D12GraphicsCommandList5 * This,
21928 _In_ D3D12_SHADING_RATE baseShadingRate,
21929 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
21930
21931 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
21932 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
21933 ID3D12GraphicsCommandList5 * This,
21934 _In_opt_ ID3D12Resource *shadingRateImage);
21935
21936 END_INTERFACE
21937 } ID3D12GraphicsCommandList5Vtbl;
21938
21939 interface ID3D12GraphicsCommandList5
21940 {
21941 CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
21942 };
21943
21944
21945
21946#ifdef COBJMACROS
21947
21948
21949#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
21950 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21951
21952#define ID3D12GraphicsCommandList5_AddRef(This) \
21953 ( (This)->lpVtbl -> AddRef(This) )
21954
21955#define ID3D12GraphicsCommandList5_Release(This) \
21956 ( (This)->lpVtbl -> Release(This) )
21957
21958
21959#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
21960 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21961
21962#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
21963 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21964
21965#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
21966 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21967
21968#define ID3D12GraphicsCommandList5_SetName(This,Name) \
21969 ( (This)->lpVtbl -> SetName(This,Name) )
21970
21971
21972#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
21973 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21974
21975
21976#define ID3D12GraphicsCommandList5_GetType(This) \
21977 ( (This)->lpVtbl -> GetType(This) )
21978
21979
21980#define ID3D12GraphicsCommandList5_Close(This) \
21981 ( (This)->lpVtbl -> Close(This) )
21982
21983#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
21984 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
21985
21986#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
21987 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
21988
21989#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
21990 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
21991
21992#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
21993 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
21994
21995#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
21996 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
21997
21998#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
21999 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22000
22001#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22002 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22003
22004#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
22005 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22006
22007#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22008 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22009
22010#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22011 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22012
22013#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
22014 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22015
22016#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
22017 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22018
22019#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
22020 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22021
22022#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
22023 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22024
22025#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
22026 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22027
22028#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
22029 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22030
22031#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
22032 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22033
22034#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
22035 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22036
22037#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22038 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22039
22040#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
22041 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22042
22043#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
22044 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22045
22046#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22047 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22048
22049#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22050 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22051
22052#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22053 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22054
22055#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22056 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22057
22058#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22059 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22060
22061#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22062 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22063
22064#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22065 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22066
22067#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22068 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22069
22070#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22071 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22072
22073#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22074 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22075
22076#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22077 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22078
22079#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22080 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22081
22082#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
22083 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22084
22085#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22086 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22087
22088#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
22089 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22090
22091#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22092 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22093
22094#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22095 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22096
22097#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22098 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22099
22100#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22101 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22102
22103#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22104 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22105
22106#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
22107 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22108
22109#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
22110 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22111
22112#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
22113 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22114
22115#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22116 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22117
22118#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22119 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22120
22121#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
22122 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22123
22124#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
22125 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22126
22127#define ID3D12GraphicsCommandList5_EndEvent(This) \
22128 ( (This)->lpVtbl -> EndEvent(This) )
22129
22130#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22131 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22132
22133
22134#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22135 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22136
22137#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22138 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22139
22140#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
22141 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22142
22143#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22144 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22145
22146#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
22147 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
22148
22149#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
22150 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
22151
22152
22153#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
22154 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
22155
22156
22157#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
22158 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
22159
22160
22161#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
22162 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
22163
22164#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
22165 ( (This)->lpVtbl -> EndRenderPass(This) )
22166
22167#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
22168 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
22169
22170#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
22171 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
22172
22173#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
22174 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
22175
22176#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
22177 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
22178
22179#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
22180 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
22181
22182#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
22183 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
22184
22185#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
22186 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
22187
22188
22189#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
22190 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
22191
22192#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
22193 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
22194
22195#endif /* COBJMACROS */
22196
22197
22198#endif /* C style interface */
22199
22200
22201
22202
22203#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
22204
22205
22206/* interface __MIDL_itf_d3d12_0000_0055 */
22207/* [local] */
22208
22209typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
22210 {
22211 UINT ThreadGroupCountX;
22212 UINT ThreadGroupCountY;
22213 UINT ThreadGroupCountZ;
22214 } D3D12_DISPATCH_MESH_ARGUMENTS;
22215
22216
22217
22218extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
22219extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
22220
22221#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
22222#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
22223
22224/* interface ID3D12GraphicsCommandList6 */
22225/* [unique][local][object][uuid] */
22226
22227
22228EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
22229
22230#if defined(__cplusplus) && !defined(CINTERFACE)
22231
22232 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
22233 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
22234 {
22235 public:
22236 virtual void STDMETHODCALLTYPE DispatchMesh(
22237 _In_ UINT ThreadGroupCountX,
22238 _In_ UINT ThreadGroupCountY,
22239 _In_ UINT ThreadGroupCountZ) = 0;
22240
22241 };
22242
22243
22244#else /* C style interface */
22245
22246 typedef struct ID3D12GraphicsCommandList6Vtbl
22247 {
22248 BEGIN_INTERFACE
22249
22250 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
22251 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
22252 ID3D12GraphicsCommandList6 * This,
22253 REFIID riid,
22254 _COM_Outptr_ void **ppvObject);
22255
22256 DECLSPEC_XFGVIRT(IUnknown, AddRef)
22257 ULONG ( STDMETHODCALLTYPE *AddRef )(
22258 ID3D12GraphicsCommandList6 * This);
22259
22260 DECLSPEC_XFGVIRT(IUnknown, Release)
22261 ULONG ( STDMETHODCALLTYPE *Release )(
22262 ID3D12GraphicsCommandList6 * This);
22263
22264 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
22265 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
22266 ID3D12GraphicsCommandList6 * This,
22267 _In_ REFGUID guid,
22268 _Inout_ UINT *pDataSize,
22269 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
22270
22271 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
22272 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
22273 ID3D12GraphicsCommandList6 * This,
22274 _In_ REFGUID guid,
22275 _In_ UINT DataSize,
22276 _In_reads_bytes_opt_( DataSize ) const void *pData);
22277
22278 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
22279 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
22280 ID3D12GraphicsCommandList6 * This,
22281 _In_ REFGUID guid,
22282 _In_opt_ const IUnknown *pData);
22283
22284 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
22285 HRESULT ( STDMETHODCALLTYPE *SetName )(
22286 ID3D12GraphicsCommandList6 * This,
22287 _In_z_ LPCWSTR Name);
22288
22289 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
22290 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
22291 ID3D12GraphicsCommandList6 * This,
22292 REFIID riid,
22293 _COM_Outptr_opt_ void **ppvDevice);
22294
22295 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
22296 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
22297 ID3D12GraphicsCommandList6 * This);
22298
22299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
22300 HRESULT ( STDMETHODCALLTYPE *Close )(
22301 ID3D12GraphicsCommandList6 * This);
22302
22303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
22304 HRESULT ( STDMETHODCALLTYPE *Reset )(
22305 ID3D12GraphicsCommandList6 * This,
22306 _In_ ID3D12CommandAllocator *pAllocator,
22307 _In_opt_ ID3D12PipelineState *pInitialState);
22308
22309 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
22310 void ( STDMETHODCALLTYPE *ClearState )(
22311 ID3D12GraphicsCommandList6 * This,
22312 _In_opt_ ID3D12PipelineState *pPipelineState);
22313
22314 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
22315 void ( STDMETHODCALLTYPE *DrawInstanced )(
22316 ID3D12GraphicsCommandList6 * This,
22317 _In_ UINT VertexCountPerInstance,
22318 _In_ UINT InstanceCount,
22319 _In_ UINT StartVertexLocation,
22320 _In_ UINT StartInstanceLocation);
22321
22322 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
22323 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
22324 ID3D12GraphicsCommandList6 * This,
22325 _In_ UINT IndexCountPerInstance,
22326 _In_ UINT InstanceCount,
22327 _In_ UINT StartIndexLocation,
22328 _In_ INT BaseVertexLocation,
22329 _In_ UINT StartInstanceLocation);
22330
22331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
22332 void ( STDMETHODCALLTYPE *Dispatch )(
22333 ID3D12GraphicsCommandList6 * This,
22334 _In_ UINT ThreadGroupCountX,
22335 _In_ UINT ThreadGroupCountY,
22336 _In_ UINT ThreadGroupCountZ);
22337
22338 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
22339 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
22340 ID3D12GraphicsCommandList6 * This,
22341 _In_ ID3D12Resource *pDstBuffer,
22342 UINT64 DstOffset,
22343 _In_ ID3D12Resource *pSrcBuffer,
22344 UINT64 SrcOffset,
22345 UINT64 NumBytes);
22346
22347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
22348 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
22349 ID3D12GraphicsCommandList6 * This,
22350 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
22351 UINT DstX,
22352 UINT DstY,
22353 UINT DstZ,
22354 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
22355 _In_opt_ const D3D12_BOX *pSrcBox);
22356
22357 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
22358 void ( STDMETHODCALLTYPE *CopyResource )(
22359 ID3D12GraphicsCommandList6 * This,
22360 _In_ ID3D12Resource *pDstResource,
22361 _In_ ID3D12Resource *pSrcResource);
22362
22363 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
22364 void ( STDMETHODCALLTYPE *CopyTiles )(
22365 ID3D12GraphicsCommandList6 * This,
22366 _In_ ID3D12Resource *pTiledResource,
22367 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
22368 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
22369 _In_ ID3D12Resource *pBuffer,
22370 UINT64 BufferStartOffsetInBytes,
22371 D3D12_TILE_COPY_FLAGS Flags);
22372
22373 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
22374 void ( STDMETHODCALLTYPE *ResolveSubresource )(
22375 ID3D12GraphicsCommandList6 * This,
22376 _In_ ID3D12Resource *pDstResource,
22377 _In_ UINT DstSubresource,
22378 _In_ ID3D12Resource *pSrcResource,
22379 _In_ UINT SrcSubresource,
22380 _In_ DXGI_FORMAT Format);
22381
22382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
22383 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
22384 ID3D12GraphicsCommandList6 * This,
22385 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
22386
22387 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
22388 void ( STDMETHODCALLTYPE *RSSetViewports )(
22389 ID3D12GraphicsCommandList6 * This,
22390 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
22391 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
22392
22393 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
22394 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
22395 ID3D12GraphicsCommandList6 * This,
22396 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
22397 _In_reads_( NumRects) const D3D12_RECT *pRects);
22398
22399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
22400 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
22401 ID3D12GraphicsCommandList6 * This,
22402 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
22403
22404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
22405 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
22406 ID3D12GraphicsCommandList6 * This,
22407 _In_ UINT StencilRef);
22408
22409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
22410 void ( STDMETHODCALLTYPE *SetPipelineState )(
22411 ID3D12GraphicsCommandList6 * This,
22412 _In_ ID3D12PipelineState *pPipelineState);
22413
22414 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
22415 void ( STDMETHODCALLTYPE *ResourceBarrier )(
22416 ID3D12GraphicsCommandList6 * This,
22417 _In_ UINT NumBarriers,
22418 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
22419
22420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
22421 void ( STDMETHODCALLTYPE *ExecuteBundle )(
22422 ID3D12GraphicsCommandList6 * This,
22423 _In_ ID3D12GraphicsCommandList *pCommandList);
22424
22425 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
22426 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
22427 ID3D12GraphicsCommandList6 * This,
22428 _In_ UINT NumDescriptorHeaps,
22429 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
22430
22431 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
22432 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
22433 ID3D12GraphicsCommandList6 * This,
22434 _In_opt_ ID3D12RootSignature *pRootSignature);
22435
22436 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
22437 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
22438 ID3D12GraphicsCommandList6 * This,
22439 _In_opt_ ID3D12RootSignature *pRootSignature);
22440
22441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
22442 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
22443 ID3D12GraphicsCommandList6 * This,
22444 _In_ UINT RootParameterIndex,
22445 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22446
22447 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
22448 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
22449 ID3D12GraphicsCommandList6 * This,
22450 _In_ UINT RootParameterIndex,
22451 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22452
22453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
22454 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
22455 ID3D12GraphicsCommandList6 * This,
22456 _In_ UINT RootParameterIndex,
22457 _In_ UINT SrcData,
22458 _In_ UINT DestOffsetIn32BitValues);
22459
22460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
22461 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
22462 ID3D12GraphicsCommandList6 * This,
22463 _In_ UINT RootParameterIndex,
22464 _In_ UINT SrcData,
22465 _In_ UINT DestOffsetIn32BitValues);
22466
22467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
22468 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
22469 ID3D12GraphicsCommandList6 * This,
22470 _In_ UINT RootParameterIndex,
22471 _In_ UINT Num32BitValuesToSet,
22472 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22473 _In_ UINT DestOffsetIn32BitValues);
22474
22475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
22476 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
22477 ID3D12GraphicsCommandList6 * This,
22478 _In_ UINT RootParameterIndex,
22479 _In_ UINT Num32BitValuesToSet,
22480 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22481 _In_ UINT DestOffsetIn32BitValues);
22482
22483 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
22484 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
22485 ID3D12GraphicsCommandList6 * This,
22486 _In_ UINT RootParameterIndex,
22487 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22488
22489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
22490 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
22491 ID3D12GraphicsCommandList6 * This,
22492 _In_ UINT RootParameterIndex,
22493 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22494
22495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
22496 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
22497 ID3D12GraphicsCommandList6 * This,
22498 _In_ UINT RootParameterIndex,
22499 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22500
22501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
22502 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
22503 ID3D12GraphicsCommandList6 * This,
22504 _In_ UINT RootParameterIndex,
22505 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22506
22507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
22508 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
22509 ID3D12GraphicsCommandList6 * This,
22510 _In_ UINT RootParameterIndex,
22511 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22512
22513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
22514 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
22515 ID3D12GraphicsCommandList6 * This,
22516 _In_ UINT RootParameterIndex,
22517 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22518
22519 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
22520 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
22521 ID3D12GraphicsCommandList6 * This,
22522 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
22523
22524 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
22525 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
22526 ID3D12GraphicsCommandList6 * This,
22527 _In_ UINT StartSlot,
22528 _In_ UINT NumViews,
22529 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
22530
22531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
22532 void ( STDMETHODCALLTYPE *SOSetTargets )(
22533 ID3D12GraphicsCommandList6 * This,
22534 _In_ UINT StartSlot,
22535 _In_ UINT NumViews,
22536 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
22537
22538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
22539 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
22540 ID3D12GraphicsCommandList6 * This,
22541 _In_ UINT NumRenderTargetDescriptors,
22542 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
22543 _In_ BOOL RTsSingleHandleToDescriptorRange,
22544 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
22545
22546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
22547 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
22548 ID3D12GraphicsCommandList6 * This,
22549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
22550 _In_ D3D12_CLEAR_FLAGS ClearFlags,
22551 _In_ FLOAT Depth,
22552 _In_ UINT8 Stencil,
22553 _In_ UINT NumRects,
22554 _In_reads_(NumRects) const D3D12_RECT *pRects);
22555
22556 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
22557 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
22558 ID3D12GraphicsCommandList6 * This,
22559 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
22560 _In_ const FLOAT ColorRGBA[ 4 ],
22561 _In_ UINT NumRects,
22562 _In_reads_(NumRects) const D3D12_RECT *pRects);
22563
22564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
22565 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
22566 ID3D12GraphicsCommandList6 * This,
22567 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22568 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22569 _In_ ID3D12Resource *pResource,
22570 _In_ const UINT Values[ 4 ],
22571 _In_ UINT NumRects,
22572 _In_reads_(NumRects) const D3D12_RECT *pRects);
22573
22574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
22575 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
22576 ID3D12GraphicsCommandList6 * This,
22577 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22578 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22579 _In_ ID3D12Resource *pResource,
22580 _In_ const FLOAT Values[ 4 ],
22581 _In_ UINT NumRects,
22582 _In_reads_(NumRects) const D3D12_RECT *pRects);
22583
22584 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
22585 void ( STDMETHODCALLTYPE *DiscardResource )(
22586 ID3D12GraphicsCommandList6 * This,
22587 _In_ ID3D12Resource *pResource,
22588 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
22589
22590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
22591 void ( STDMETHODCALLTYPE *BeginQuery )(
22592 ID3D12GraphicsCommandList6 * This,
22593 _In_ ID3D12QueryHeap *pQueryHeap,
22594 _In_ D3D12_QUERY_TYPE Type,
22595 _In_ UINT Index);
22596
22597 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
22598 void ( STDMETHODCALLTYPE *EndQuery )(
22599 ID3D12GraphicsCommandList6 * This,
22600 _In_ ID3D12QueryHeap *pQueryHeap,
22601 _In_ D3D12_QUERY_TYPE Type,
22602 _In_ UINT Index);
22603
22604 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
22605 void ( STDMETHODCALLTYPE *ResolveQueryData )(
22606 ID3D12GraphicsCommandList6 * This,
22607 _In_ ID3D12QueryHeap *pQueryHeap,
22608 _In_ D3D12_QUERY_TYPE Type,
22609 _In_ UINT StartIndex,
22610 _In_ UINT NumQueries,
22611 _In_ ID3D12Resource *pDestinationBuffer,
22612 _In_ UINT64 AlignedDestinationBufferOffset);
22613
22614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
22615 void ( STDMETHODCALLTYPE *SetPredication )(
22616 ID3D12GraphicsCommandList6 * This,
22617 _In_opt_ ID3D12Resource *pBuffer,
22618 _In_ UINT64 AlignedBufferOffset,
22619 _In_ D3D12_PREDICATION_OP Operation);
22620
22621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
22622 void ( STDMETHODCALLTYPE *SetMarker )(
22623 ID3D12GraphicsCommandList6 * This,
22624 UINT Metadata,
22625 _In_reads_bytes_opt_(Size) const void *pData,
22626 UINT Size);
22627
22628 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
22629 void ( STDMETHODCALLTYPE *BeginEvent )(
22630 ID3D12GraphicsCommandList6 * This,
22631 UINT Metadata,
22632 _In_reads_bytes_opt_(Size) const void *pData,
22633 UINT Size);
22634
22635 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
22636 void ( STDMETHODCALLTYPE *EndEvent )(
22637 ID3D12GraphicsCommandList6 * This);
22638
22639 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
22640 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
22641 ID3D12GraphicsCommandList6 * This,
22642 _In_ ID3D12CommandSignature *pCommandSignature,
22643 _In_ UINT MaxCommandCount,
22644 _In_ ID3D12Resource *pArgumentBuffer,
22645 _In_ UINT64 ArgumentBufferOffset,
22646 _In_opt_ ID3D12Resource *pCountBuffer,
22647 _In_ UINT64 CountBufferOffset);
22648
22649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
22650 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
22651 ID3D12GraphicsCommandList6 * This,
22652 _In_ ID3D12Resource *pDstBuffer,
22653 UINT64 DstOffset,
22654 _In_ ID3D12Resource *pSrcBuffer,
22655 UINT64 SrcOffset,
22656 UINT Dependencies,
22657 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22658 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22659
22660 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
22661 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
22662 ID3D12GraphicsCommandList6 * This,
22663 _In_ ID3D12Resource *pDstBuffer,
22664 UINT64 DstOffset,
22665 _In_ ID3D12Resource *pSrcBuffer,
22666 UINT64 SrcOffset,
22667 UINT Dependencies,
22668 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22669 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22670
22671 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
22672 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
22673 ID3D12GraphicsCommandList6 * This,
22674 _In_ FLOAT Min,
22675 _In_ FLOAT Max);
22676
22677 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
22678 void ( STDMETHODCALLTYPE *SetSamplePositions )(
22679 ID3D12GraphicsCommandList6 * This,
22680 _In_ UINT NumSamplesPerPixel,
22681 _In_ UINT NumPixels,
22682 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
22683
22684 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
22685 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
22686 ID3D12GraphicsCommandList6 * This,
22687 _In_ ID3D12Resource *pDstResource,
22688 _In_ UINT DstSubresource,
22689 _In_ UINT DstX,
22690 _In_ UINT DstY,
22691 _In_ ID3D12Resource *pSrcResource,
22692 _In_ UINT SrcSubresource,
22693 _In_opt_ D3D12_RECT *pSrcRect,
22694 _In_ DXGI_FORMAT Format,
22695 _In_ D3D12_RESOLVE_MODE ResolveMode);
22696
22697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
22698 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
22699 ID3D12GraphicsCommandList6 * This,
22700 _In_ UINT Mask);
22701
22702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
22703 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
22704 ID3D12GraphicsCommandList6 * This,
22705 UINT Count,
22706 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
22707 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
22708
22709 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
22710 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
22711 ID3D12GraphicsCommandList6 * This,
22712 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
22713
22714 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
22715 void ( STDMETHODCALLTYPE *BeginRenderPass )(
22716 ID3D12GraphicsCommandList6 * This,
22717 _In_ UINT NumRenderTargets,
22718 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22719 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22720 D3D12_RENDER_PASS_FLAGS Flags);
22721
22722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
22723 void ( STDMETHODCALLTYPE *EndRenderPass )(
22724 ID3D12GraphicsCommandList6 * This);
22725
22726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
22727 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
22728 ID3D12GraphicsCommandList6 * This,
22729 _In_ ID3D12MetaCommand *pMetaCommand,
22730 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22731 _In_ SIZE_T InitializationParametersDataSizeInBytes);
22732
22733 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
22734 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
22735 ID3D12GraphicsCommandList6 * This,
22736 _In_ ID3D12MetaCommand *pMetaCommand,
22737 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22738 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
22739
22740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
22741 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
22742 ID3D12GraphicsCommandList6 * This,
22743 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22744 _In_ UINT NumPostbuildInfoDescs,
22745 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
22746
22747 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
22748 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
22749 ID3D12GraphicsCommandList6 * This,
22750 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22751 _In_ UINT NumSourceAccelerationStructures,
22752 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
22753
22754 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
22755 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
22756 ID3D12GraphicsCommandList6 * This,
22757 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22758 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22759 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
22760
22761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
22762 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
22763 ID3D12GraphicsCommandList6 * This,
22764 _In_ ID3D12StateObject *pStateObject);
22765
22766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
22767 void ( STDMETHODCALLTYPE *DispatchRays )(
22768 ID3D12GraphicsCommandList6 * This,
22769 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
22770
22771 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
22772 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
22773 ID3D12GraphicsCommandList6 * This,
22774 _In_ D3D12_SHADING_RATE baseShadingRate,
22775 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
22776
22777 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
22778 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
22779 ID3D12GraphicsCommandList6 * This,
22780 _In_opt_ ID3D12Resource *shadingRateImage);
22781
22782 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
22783 void ( STDMETHODCALLTYPE *DispatchMesh )(
22784 ID3D12GraphicsCommandList6 * This,
22785 _In_ UINT ThreadGroupCountX,
22786 _In_ UINT ThreadGroupCountY,
22787 _In_ UINT ThreadGroupCountZ);
22788
22789 END_INTERFACE
22790 } ID3D12GraphicsCommandList6Vtbl;
22791
22792 interface ID3D12GraphicsCommandList6
22793 {
22794 CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
22795 };
22796
22797
22798
22799#ifdef COBJMACROS
22800
22801
22802#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
22803 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
22804
22805#define ID3D12GraphicsCommandList6_AddRef(This) \
22806 ( (This)->lpVtbl -> AddRef(This) )
22807
22808#define ID3D12GraphicsCommandList6_Release(This) \
22809 ( (This)->lpVtbl -> Release(This) )
22810
22811
22812#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
22813 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
22814
22815#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
22816 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
22817
22818#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
22819 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
22820
22821#define ID3D12GraphicsCommandList6_SetName(This,Name) \
22822 ( (This)->lpVtbl -> SetName(This,Name) )
22823
22824
22825#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
22826 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
22827
22828
22829#define ID3D12GraphicsCommandList6_GetType(This) \
22830 ( (This)->lpVtbl -> GetType(This) )
22831
22832
22833#define ID3D12GraphicsCommandList6_Close(This) \
22834 ( (This)->lpVtbl -> Close(This) )
22835
22836#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
22837 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
22838
22839#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
22840 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
22841
22842#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
22843 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
22844
22845#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
22846 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
22847
22848#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
22849 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
22850
22851#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
22852 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22853
22854#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22855 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22856
22857#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
22858 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22859
22860#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22861 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22862
22863#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22864 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22865
22866#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
22867 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22868
22869#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
22870 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22871
22872#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
22873 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22874
22875#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
22876 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22877
22878#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
22879 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22880
22881#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
22882 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22883
22884#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
22885 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22886
22887#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
22888 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22889
22890#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22891 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22892
22893#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
22894 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22895
22896#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
22897 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22898
22899#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22900 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22901
22902#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22903 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22904
22905#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22906 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22907
22908#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22909 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22910
22911#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22912 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22913
22914#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22915 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22916
22917#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22918 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22919
22920#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22921 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22922
22923#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22924 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22925
22926#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22927 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22928
22929#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22930 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22931
22932#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22933 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22934
22935#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
22936 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22937
22938#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22939 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22940
22941#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
22942 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22943
22944#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22945 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22946
22947#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22948 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22949
22950#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22951 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22952
22953#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22954 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22955
22956#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22957 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22958
22959#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
22960 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22961
22962#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
22963 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22964
22965#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
22966 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22967
22968#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22969 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22970
22971#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22972 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22973
22974#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
22975 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22976
22977#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
22978 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22979
22980#define ID3D12GraphicsCommandList6_EndEvent(This) \
22981 ( (This)->lpVtbl -> EndEvent(This) )
22982
22983#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22984 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22985
22986
22987#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22988 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22989
22990#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22991 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22992
22993#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
22994 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22995
22996#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22997 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22998
22999#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
23000 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
23001
23002#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
23003 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
23004
23005
23006#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
23007 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
23008
23009
23010#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
23011 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
23012
23013
23014#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
23015 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
23016
23017#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
23018 ( (This)->lpVtbl -> EndRenderPass(This) )
23019
23020#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
23021 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
23022
23023#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
23024 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
23025
23026#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
23027 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
23028
23029#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
23030 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
23031
23032#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
23033 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
23034
23035#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
23036 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
23037
23038#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
23039 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
23040
23041
23042#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
23043 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
23044
23045#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
23046 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
23047
23048
23049#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
23050 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
23051
23052#endif /* COBJMACROS */
23053
23054
23055#endif /* C style interface */
23056
23057
23058
23059
23060#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
23061
23062
23063/* interface __MIDL_itf_d3d12_0000_0056 */
23064/* [local] */
23065
23066#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
23067#pragma endregion
23068DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
23069DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
23070DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
23071DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
23072DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
23073DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
23074DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
23075DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
23076DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
23077DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
23078DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
23079DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
23080DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
23081DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
23082DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
23083DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
23084DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
23085DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
23086DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
23087DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
23088DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
23089DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
23090DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
23091DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
23092DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
23093DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
23094DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
23095DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
23096DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
23097DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
23098DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
23099DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
23100DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
23101DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
23102DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
23103DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
23104DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
23105DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
23106DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
23107DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
23108DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
23109DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
23110DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
23111DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
23112DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
23113DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
23114DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
23115DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
23116DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
23117DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
23118DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
23119DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
23120DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
23121DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
23122DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
23123DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
23124
23125
23126extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
23127extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
23128
23129/* Additional Prototypes for ALL interfaces */
23130
23131/* end of Additional Prototypes */
23132
23133#ifdef __cplusplus
23134}
23135#endif
23136
23137#endif
23138
23139
diff --git a/contrib/DirectX-Headers/include/directx/d3d12.idl b/contrib/DirectX-Headers/include/directx/d3d12.idl
new file mode 100644
index 0000000..838dea0
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12.idl
@@ -0,0 +1,5457 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "dxgicommon.idl";
11import "dxgiformat.idl";
12
13import "d3dcommon.idl";
14
15cpp_quote("#include <winapifamily.h>")
16
17#pragma region App Family
18cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
19
20// NOTE: The following constants are generated from the D3D12 hardware spec. Do not edit these values directly.
21cpp_quote( "#ifndef _D3D12_CONSTANTS" )
22cpp_quote( "#define _D3D12_CONSTANTS" )
23const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
24const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
25const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
26const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
27const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
28const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
29const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
30const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
31const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
32const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
33const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
34const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
35const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
36const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
37const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
38const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
39const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
40const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
41const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
42const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
43const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
44const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
45const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
46const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
47const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
48const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
49const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
50const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
51const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
52const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
53const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
54const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
55const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
56const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
57const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
58const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
59const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
60const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
61const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
62const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
63const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
64const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
65const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
66const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
67const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
68const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
69const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
70const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
71const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
72const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
73const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
74const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
75const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
76const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
77const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
78const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
79const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
80const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
81const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
82const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
83const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
84const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
85const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
86const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
87const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
88const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
89const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
90const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
91const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
92const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
93const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
94const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
95const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
96const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
97const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
98const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
99const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
100const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
101const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
102const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
103const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
104const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
105const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
106const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
107const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
108const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
109const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
110const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
111const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
112const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
113const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
114const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
115const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
116const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
117const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
118const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
119const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
120const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
121const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
122const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
123const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
124const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
125cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )" )
126cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )" )
127cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )" )
128cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )" )
129cpp_quote( "#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )" )
130const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
131cpp_quote( "#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )" )
132const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
133cpp_quote( "#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )" )
134const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
135const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
136const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
137const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
138const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
139const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
140const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
141const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
142cpp_quote( "#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )" )
143const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
144const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
145const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
146const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
147const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
148cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )" )
149cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )" )
150const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
151const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
152const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
153const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
154const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
155const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
156const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
157const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
158const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
159const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
160const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
161const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
162const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
163const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
164const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
165const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
166const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
167const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
168const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
169const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
170const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
171const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
172const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
173const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
174const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
175const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
176const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
177const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
178const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
179const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
180cpp_quote( "#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )" )
181cpp_quote( "#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )" )
182cpp_quote( "#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )" )
183cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )" )
184cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )" )
185cpp_quote( "#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )" )
186cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )" )
187cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )" )
188cpp_quote( "#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )" )
189cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )" )
190cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )" )
191cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )" )
192cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )" )
193const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
194const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
195const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
196const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
197const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
198const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
199const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
200const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
201const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
202const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
203const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
204const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
205const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
206const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
207const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
208const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
209const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
210const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
211const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
212const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
213const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
214const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
215const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
216const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
217const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
218const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
219const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
220const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
221const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
222const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
223const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
224const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
225const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
226const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
227const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
228const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
229const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
230const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
231const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
232const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
233const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
234const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
235const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
236const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
237const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
238cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )" )
239cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )" )
240const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
241const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
242const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
243const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
244const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
245const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
246const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
247const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
248const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
249const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
250const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
251const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
252const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
253const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
254const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
255const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
256const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
257const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
258const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
259const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
260const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
261const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
262const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
263const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
264const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
265const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
266const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
267const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
268cpp_quote( "#define D3D12_LINEAR_GAMMA ( 1.0f )" )
269const UINT D3D12_MAJOR_VERSION = 12;
270cpp_quote( "#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )" )
271cpp_quote( "#define D3D12_MAX_DEPTH ( 1.0f )" )
272const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
273const UINT D3D12_MAX_MAXANISOTROPY = 16;
274const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
275cpp_quote( "#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )" )
276const UINT D3D12_MAX_ROOT_COST = 64;
277const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
278const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
279const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
280const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
281const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
282const UINT D3D12_MINOR_VERSION = 0;
283cpp_quote( "#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )" )
284cpp_quote( "#define D3D12_MIN_DEPTH ( 0.0f )" )
285const UINT D3D12_MIN_MAXANISOTROPY = 0;
286cpp_quote( "#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )" )
287cpp_quote( "#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )" )
288const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
289const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
290cpp_quote( "#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )" )
291const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
292const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
293const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
294const UINT D3D12_PACKED_TILE = 0xffffffff;
295const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
296const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
297const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
298const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
299const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
300const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
301const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
302const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
303const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
304const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
305const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
306const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
307const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
308const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
309cpp_quote( "#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )" )
310const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
311const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
312const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
313const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
314const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
315const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
316const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
317const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
318const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
319cpp_quote( "#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )" )
320const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
321const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
322const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
323const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
324const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
325const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
326const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
327const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
328const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
329const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
330const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
331const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
332const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
333const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
334const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
335const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
336const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
337const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
338const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
339const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
340const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
341const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
342const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
343const UINT D3D12_REQ_MAXANISOTROPY = 16;
344const UINT D3D12_REQ_MIP_LEVELS = 15;
345const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
346const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
347const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
348const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
349cpp_quote( "#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )" )
350const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
351const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
352const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
353const UINT D3D12_REQ_SUBRESOURCES = 30720;
354const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
355const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
356const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
357const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
358const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
359const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
360const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
361const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
362const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
363const UINT D3D12_SDK_VERSION = 4;
364const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
365const UINT D3D12_SHADER_MAJOR_VERSION = 5;
366const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
367const UINT D3D12_SHADER_MAX_INTERFACES = 253;
368const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
369const UINT D3D12_SHADER_MAX_TYPES = 65535;
370const UINT D3D12_SHADER_MINOR_VERSION = 1;
371const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
372const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
373const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
374const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
375const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
376const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
377const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
378const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
379const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
380const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
381const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
382const UINT D3D12_SO_STREAM_COUNT = 4;
383const UINT D3D12_SPEC_DATE_DAY = 14;
384const UINT D3D12_SPEC_DATE_MONTH = 11;
385const UINT D3D12_SPEC_DATE_YEAR = 2014;
386cpp_quote( "#define D3D12_SPEC_VERSION ( 1.16 )" )
387cpp_quote( "#define D3D12_SRGB_GAMMA ( 2.2f )" )
388cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )" )
389cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )" )
390cpp_quote( "#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )" )
391cpp_quote( "#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )" )
392cpp_quote( "#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )" )
393cpp_quote( "#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )" )
394const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
395const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
396const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
397const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
398const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
399const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
400const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
401const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
402const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
403const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
404const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
405const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
406const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
407const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
408const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
409const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
410const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
411const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
412const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
413const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
414const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
415const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
416const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
417const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
418const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
419const UINT D3D12_UAV_SLOT_COUNT = 64;
420const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
421const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
422const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
423const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
424const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
425const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
426const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
427const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
428const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
429const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
430const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
431const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
432const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
433const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
434const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
435const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
436const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
437const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
438const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
439const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
440const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
441const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
442const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
443cpp_quote( "#endif" )
444
445
446// Forward declarations
447interface ID3D12CommandQueue;
448
449
450typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
451
452typedef enum D3D12_COMMAND_LIST_TYPE
453{
454 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
455 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
456 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
457 D3D12_COMMAND_LIST_TYPE_COPY = 3,
458 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
459 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
460 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
461
462} D3D12_COMMAND_LIST_TYPE;
463
464typedef enum D3D12_COMMAND_QUEUE_FLAGS
465{
466 D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
467 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
468} D3D12_COMMAND_QUEUE_FLAGS;
469cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );" )
470
471typedef enum D3D12_COMMAND_QUEUE_PRIORITY
472{
473 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
474 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
475 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
476} D3D12_COMMAND_QUEUE_PRIORITY;
477
478typedef struct D3D12_COMMAND_QUEUE_DESC
479{
480 D3D12_COMMAND_LIST_TYPE Type;
481 INT Priority;
482 D3D12_COMMAND_QUEUE_FLAGS Flags;
483 UINT NodeMask;
484} D3D12_COMMAND_QUEUE_DESC;
485
486typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
487{
488 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
489 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
490 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
491 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
492 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
493} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
494
495typedef enum D3D12_INPUT_CLASSIFICATION
496{
497 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
498 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
499} D3D12_INPUT_CLASSIFICATION;
500
501typedef struct D3D12_INPUT_ELEMENT_DESC
502{
503 LPCSTR SemanticName;
504 UINT SemanticIndex;
505 DXGI_FORMAT Format;
506 UINT InputSlot;
507 UINT AlignedByteOffset;
508 D3D12_INPUT_CLASSIFICATION InputSlotClass;
509 UINT InstanceDataStepRate;
510} D3D12_INPUT_ELEMENT_DESC;
511
512// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
513typedef enum D3D12_FILL_MODE
514{
515 // 1 was POINT in D3D, unused in D3D12
516 D3D12_FILL_MODE_WIREFRAME = 2,
517 D3D12_FILL_MODE_SOLID = 3
518} D3D12_FILL_MODE;
519
520typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
521
522typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
523
524// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
525typedef enum D3D12_CULL_MODE
526{
527 D3D12_CULL_MODE_NONE = 1,
528 D3D12_CULL_MODE_FRONT = 2,
529 D3D12_CULL_MODE_BACK = 3
530} D3D12_CULL_MODE;
531
532typedef struct D3D12_SO_DECLARATION_ENTRY
533{
534 UINT Stream;
535 LPCSTR SemanticName;
536 UINT SemanticIndex;
537 BYTE StartComponent;
538 BYTE ComponentCount;
539 BYTE OutputSlot;
540} D3D12_SO_DECLARATION_ENTRY;
541
542typedef struct D3D12_VIEWPORT
543{
544 FLOAT TopLeftX;
545 FLOAT TopLeftY;
546 FLOAT Width;
547 FLOAT Height;
548 FLOAT MinDepth;
549 FLOAT MaxDepth;
550} D3D12_VIEWPORT;
551
552
553typedef RECT D3D12_RECT;
554
555
556typedef struct D3D12_BOX
557{
558 UINT left;
559 UINT top;
560 UINT front;
561 UINT right;
562 UINT bottom;
563 UINT back;
564} D3D12_BOX;
565
566
567////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
568//
569// Depth-Stencil State
570//
571////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
572
573// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
574typedef enum D3D12_COMPARISON_FUNC
575{
576 D3D12_COMPARISON_FUNC_NEVER = 1,
577 D3D12_COMPARISON_FUNC_LESS = 2,
578 D3D12_COMPARISON_FUNC_EQUAL = 3,
579 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
580 D3D12_COMPARISON_FUNC_GREATER = 5,
581 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
582 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
583 D3D12_COMPARISON_FUNC_ALWAYS = 8
584} D3D12_COMPARISON_FUNC;
585
586typedef enum D3D12_DEPTH_WRITE_MASK
587{
588 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
589 D3D12_DEPTH_WRITE_MASK_ALL = 1
590} D3D12_DEPTH_WRITE_MASK;
591
592// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
593typedef enum D3D12_STENCIL_OP
594{
595 D3D12_STENCIL_OP_KEEP = 1,
596 D3D12_STENCIL_OP_ZERO = 2,
597 D3D12_STENCIL_OP_REPLACE = 3,
598 D3D12_STENCIL_OP_INCR_SAT = 4,
599 D3D12_STENCIL_OP_DECR_SAT = 5,
600 D3D12_STENCIL_OP_INVERT = 6,
601 D3D12_STENCIL_OP_INCR = 7,
602 D3D12_STENCIL_OP_DECR = 8
603} D3D12_STENCIL_OP;
604
605typedef struct D3D12_DEPTH_STENCILOP_DESC
606{
607 D3D12_STENCIL_OP StencilFailOp;
608 D3D12_STENCIL_OP StencilDepthFailOp;
609 D3D12_STENCIL_OP StencilPassOp;
610 D3D12_COMPARISON_FUNC StencilFunc;
611} D3D12_DEPTH_STENCILOP_DESC;
612
613typedef struct D3D12_DEPTH_STENCIL_DESC
614{
615 BOOL DepthEnable;
616 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
617 D3D12_COMPARISON_FUNC DepthFunc;
618 BOOL StencilEnable;
619 UINT8 StencilReadMask;
620 UINT8 StencilWriteMask;
621 D3D12_DEPTH_STENCILOP_DESC FrontFace;
622 D3D12_DEPTH_STENCILOP_DESC BackFace;
623} D3D12_DEPTH_STENCIL_DESC;
624
625typedef struct D3D12_DEPTH_STENCIL_DESC1
626{
627 BOOL DepthEnable;
628 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
629 D3D12_COMPARISON_FUNC DepthFunc;
630 BOOL StencilEnable;
631 UINT8 StencilReadMask;
632 UINT8 StencilWriteMask;
633 D3D12_DEPTH_STENCILOP_DESC FrontFace;
634 D3D12_DEPTH_STENCILOP_DESC BackFace;
635 BOOL DepthBoundsTestEnable;
636} D3D12_DEPTH_STENCIL_DESC1;
637
638
639////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
640//
641// Blend State
642//
643////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
644
645// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
646typedef enum D3D12_BLEND
647{
648 D3D12_BLEND_ZERO = 1,
649 D3D12_BLEND_ONE = 2,
650 D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
651 D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
652 D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
653 D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
654 D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
655 D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
656 D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
657 D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
658 D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
659 // 12 reserved (was BOTHSRCALPHA)
660 // 13 reserved (was BOTHSRCALPHA)
661 D3D12_BLEND_BLEND_FACTOR = 14,
662 D3D12_BLEND_INV_BLEND_FACTOR = 15,
663 D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
664 D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
665 D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
666 D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
667} D3D12_BLEND;
668
669// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
670typedef enum D3D12_BLEND_OP
671{
672 D3D12_BLEND_OP_ADD = 1,
673 D3D12_BLEND_OP_SUBTRACT = 2,
674 D3D12_BLEND_OP_REV_SUBTRACT = 3,
675 D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
676 D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
677} D3D12_BLEND_OP;
678
679typedef enum D3D12_COLOR_WRITE_ENABLE
680{
681 D3D12_COLOR_WRITE_ENABLE_RED = 1,
682 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
683 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
684 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
685 D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
686 D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
687} D3D12_COLOR_WRITE_ENABLE;
688
689typedef enum D3D12_LOGIC_OP
690{
691 // Operation:
692 // (s == PS output, d = RTV contents)
693 D3D12_LOGIC_OP_CLEAR = 0, // 0
694 D3D12_LOGIC_OP_SET, // 1
695 D3D12_LOGIC_OP_COPY, // s
696 D3D12_LOGIC_OP_COPY_INVERTED, // ~s
697 D3D12_LOGIC_OP_NOOP, // d
698 D3D12_LOGIC_OP_INVERT, // ~d
699 D3D12_LOGIC_OP_AND, // s & d
700 D3D12_LOGIC_OP_NAND, // ~(s & d)
701 D3D12_LOGIC_OP_OR, // s | d
702 D3D12_LOGIC_OP_NOR, // ~(s | d)
703 D3D12_LOGIC_OP_XOR, // s ^ d
704 D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
705 D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
706 D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
707 D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
708 D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
709} D3D12_LOGIC_OP;
710
711typedef struct D3D12_RENDER_TARGET_BLEND_DESC
712{
713 BOOL BlendEnable;
714 BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
715 D3D12_BLEND SrcBlend;
716 D3D12_BLEND DestBlend;
717 D3D12_BLEND_OP BlendOp;
718 D3D12_BLEND SrcBlendAlpha;
719 D3D12_BLEND DestBlendAlpha;
720 D3D12_BLEND_OP BlendOpAlpha;
721 D3D12_LOGIC_OP LogicOp; // applies to RGBA
722 UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
723} D3D12_RENDER_TARGET_BLEND_DESC;
724
725typedef struct D3D12_BLEND_DESC
726{
727 BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
728 BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
729 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
730} D3D12_BLEND_DESC;
731
732cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
733cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
734
735
736////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
737//
738// Rasterizer State
739//
740////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
741
742typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
743{
744 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
745 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
746} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
747
748typedef struct D3D12_RASTERIZER_DESC
749{
750 D3D12_FILL_MODE FillMode;
751 D3D12_CULL_MODE CullMode;
752 BOOL FrontCounterClockwise;
753 INT DepthBias;
754 FLOAT DepthBiasClamp;
755 FLOAT SlopeScaledDepthBias;
756 BOOL DepthClipEnable;
757 BOOL MultisampleEnable;
758 BOOL AntialiasedLineEnable;
759 UINT ForcedSampleCount;
760 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
761} D3D12_RASTERIZER_DESC;
762
763////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
764//
765// Pipeline State v1
766//
767////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
768
769[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
770interface ID3D12RootSignature
771 : ID3D12DeviceChild
772{
773}
774
775typedef struct D3D12_SHADER_BYTECODE
776{
777 [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
778 SIZE_T BytecodeLength;
779} D3D12_SHADER_BYTECODE;
780
781typedef struct D3D12_STREAM_OUTPUT_DESC
782{
783 [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
784 UINT NumEntries;
785 [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
786 UINT NumStrides;
787 UINT RasterizedStream;
788} D3D12_STREAM_OUTPUT_DESC;
789
790typedef struct D3D12_INPUT_LAYOUT_DESC
791{
792 [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
793 UINT NumElements;
794} D3D12_INPUT_LAYOUT_DESC;
795
796typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
797{
798 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
799 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
800 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
801} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
802
803typedef struct D3D12_CACHED_PIPELINE_STATE
804{
805 [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
806 SIZE_T CachedBlobSizeInBytes;
807} D3D12_CACHED_PIPELINE_STATE;
808
809typedef enum D3D12_PIPELINE_STATE_FLAGS
810{
811 D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
812 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
813
814} D3D12_PIPELINE_STATE_FLAGS;
815cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );" )
816
817typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
818{
819 ID3D12RootSignature* pRootSignature;
820 D3D12_SHADER_BYTECODE VS;
821 D3D12_SHADER_BYTECODE PS;
822 D3D12_SHADER_BYTECODE DS;
823 D3D12_SHADER_BYTECODE HS;
824 D3D12_SHADER_BYTECODE GS;
825 D3D12_STREAM_OUTPUT_DESC StreamOutput;
826 D3D12_BLEND_DESC BlendState;
827 UINT SampleMask;
828 D3D12_RASTERIZER_DESC RasterizerState;
829 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
830 D3D12_INPUT_LAYOUT_DESC InputLayout;
831 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
832 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
833 UINT NumRenderTargets;
834 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
835 DXGI_FORMAT DSVFormat;
836 DXGI_SAMPLE_DESC SampleDesc;
837 UINT NodeMask;
838 D3D12_CACHED_PIPELINE_STATE CachedPSO;
839 D3D12_PIPELINE_STATE_FLAGS Flags;
840} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
841
842typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
843{
844 ID3D12RootSignature* pRootSignature;
845 D3D12_SHADER_BYTECODE CS;
846 UINT NodeMask;
847 D3D12_CACHED_PIPELINE_STATE CachedPSO;
848 D3D12_PIPELINE_STATE_FLAGS Flags;
849} D3D12_COMPUTE_PIPELINE_STATE_DESC;
850
851////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
852//
853// Pipeline State v2
854//
855////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
856
857struct D3D12_RT_FORMAT_ARRAY
858{
859 DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
860 UINT NumRenderTargets;
861};
862
863typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
864{
865 [annotation("_In_")] SIZE_T SizeInBytes;
866 [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
867} D3D12_PIPELINE_STATE_STREAM_DESC;
868
869typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
870{
871 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
872 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
873 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
874 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
875 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
876 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
877 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
878 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
879 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
880 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
881 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
882 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
883 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
884 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
885 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
886 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
887 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
888 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
889 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
890 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
891 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
892 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
893 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
894 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
895 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
896 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
897} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
898
899////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
900//
901// D3D12 Caps
902//
903////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
904
905typedef enum D3D12_FEATURE
906{
907 D3D12_FEATURE_D3D12_OPTIONS = 0,
908 D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
909 D3D12_FEATURE_FEATURE_LEVELS = 2,
910 D3D12_FEATURE_FORMAT_SUPPORT = 3,
911 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
912 D3D12_FEATURE_FORMAT_INFO = 5,
913 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
914 D3D12_FEATURE_SHADER_MODEL = 7,
915 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
916 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
917 D3D12_FEATURE_ROOT_SIGNATURE = 12,
918 D3D12_FEATURE_ARCHITECTURE1 = 16,
919 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
920 D3D12_FEATURE_SHADER_CACHE = 19,
921 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
922 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
923 D3D12_FEATURE_EXISTING_HEAPS = 22,
924 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
925 D3D12_FEATURE_SERIALIZATION = 24,
926 D3D12_FEATURE_CROSS_NODE = 25,
927 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
928 D3D12_FEATURE_DISPLAYABLE = 28,
929 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
930 D3D12_FEATURE_QUERY_META_COMMAND = 31,
931 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
932 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
933 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
934 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
935 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
936 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
937 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
938} D3D12_FEATURE;
939
940typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
941{
942 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
943 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
944 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
945} D3D12_SHADER_MIN_PRECISION_SUPPORT;
946cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );" )
947
948typedef enum D3D12_TILED_RESOURCES_TIER
949{
950 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
951 D3D12_TILED_RESOURCES_TIER_1 = 1,
952 D3D12_TILED_RESOURCES_TIER_2 = 2,
953 D3D12_TILED_RESOURCES_TIER_3 = 3,
954 D3D12_TILED_RESOURCES_TIER_4 = 4,
955} D3D12_TILED_RESOURCES_TIER;
956
957typedef enum D3D12_RESOURCE_BINDING_TIER
958{
959 D3D12_RESOURCE_BINDING_TIER_1 = 1,
960 D3D12_RESOURCE_BINDING_TIER_2 = 2,
961 D3D12_RESOURCE_BINDING_TIER_3 = 3,
962} D3D12_RESOURCE_BINDING_TIER;
963
964typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
965 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
966 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
967 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
968 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
969} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
970
971
972typedef enum D3D12_FORMAT_SUPPORT1
973{
974 D3D12_FORMAT_SUPPORT1_NONE = 0,
975 D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
976 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
977 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
978 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
979 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
980 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
981 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
982 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
983 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
984 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
985 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
986 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
987 D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
988 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
989 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
990 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
991 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
992 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
993 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
994 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
995 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
996 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
997 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
998 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
999 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
1000 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
1001 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1002 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
1003 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
1004} D3D12_FORMAT_SUPPORT1;
1005cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );" )
1006
1007typedef enum D3D12_FORMAT_SUPPORT2
1008{
1009 D3D12_FORMAT_SUPPORT2_NONE = 0,
1010 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
1011 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
1012 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
1013 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
1014 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
1015 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
1016 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
1017 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
1018 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
1019 D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
1020 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
1021 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
1022} D3D12_FORMAT_SUPPORT2;
1023cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );" )
1024
1025typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
1026{
1027 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
1028 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
1029} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
1030cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );" )
1031
1032typedef enum D3D12_CROSS_NODE_SHARING_TIER
1033{
1034 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
1035 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
1036 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
1037 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
1038 D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
1039} D3D12_CROSS_NODE_SHARING_TIER;
1040
1041typedef enum D3D12_RESOURCE_HEAP_TIER
1042{
1043 D3D12_RESOURCE_HEAP_TIER_1 = 1,
1044 D3D12_RESOURCE_HEAP_TIER_2 = 2,
1045} D3D12_RESOURCE_HEAP_TIER;
1046
1047typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
1048{
1049 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
1050 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
1051 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
1052} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
1053
1054typedef enum D3D12_VIEW_INSTANCING_TIER
1055{
1056 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
1057 D3D12_VIEW_INSTANCING_TIER_1 = 1,
1058 D3D12_VIEW_INSTANCING_TIER_2 = 2,
1059 D3D12_VIEW_INSTANCING_TIER_3 = 3,
1060} D3D12_VIEW_INSTANCING_TIER;
1061
1062// D3D12_FEATURE_D3D12_OPTIONS
1063typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1064{
1065 [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
1066 [annotation("_Out_")] BOOL OutputMergerLogicOp;
1067 [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1068 [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1069 [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1070 [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
1071 [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
1072 [annotation("_Out_")] BOOL ROVsSupported;
1073 [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1074 [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
1075 [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
1076 [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1077 [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
1078 [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1079 [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1080} D3D12_FEATURE_DATA_D3D12_OPTIONS;
1081
1082// D3D12_FEATURE_D3D12_OPTIONS1
1083typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1084{
1085 [annotation("_Out_")] BOOL WaveOps;
1086 [annotation("_Out_")] UINT WaveLaneCountMin;
1087 [annotation("_Out_")] UINT WaveLaneCountMax;
1088 [annotation("_Out_")] UINT TotalLaneCount;
1089 [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
1090 [annotation("_Out_")] BOOL Int64ShaderOps;
1091} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
1092
1093// D3D12_FEATURE_D3D12_OPTIONS2
1094typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1095{
1096 [annotation("_Out_")] BOOL DepthBoundsTestSupported;
1097 [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1098} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
1099
1100// D3D12_FEATURE_ROOT_SIGNATURE
1101typedef enum D3D_ROOT_SIGNATURE_VERSION
1102{
1103 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
1104 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
1105 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
1106} D3D_ROOT_SIGNATURE_VERSION;
1107
1108typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1109{
1110 [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1111} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
1112
1113// D3D12_FEATURE_ARCHITECTURE
1114typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
1115{
1116 [annotation("_In_")] UINT NodeIndex;
1117 [annotation("_Out_")] BOOL TileBasedRenderer;
1118 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1119 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1120} D3D12_FEATURE_DATA_ARCHITECTURE;
1121
1122// D3D12_FEATURE_ARCHITECTURE1
1123typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
1124{
1125 [annotation("_In_")] UINT NodeIndex;
1126 [annotation("_Out_")] BOOL TileBasedRenderer;
1127 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1128 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1129 [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
1130} D3D12_FEATURE_DATA_ARCHITECTURE1;
1131
1132// D3D12_FEATURE_FEATURE_LEVELS
1133typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1134{
1135 [annotation("_In_")] UINT NumFeatureLevels;
1136 [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
1137 [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1138} D3D12_FEATURE_DATA_FEATURE_LEVELS;
1139
1140// D3D_SHADER_MODEL
1141typedef enum D3D_SHADER_MODEL
1142{
1143 D3D_SHADER_MODEL_5_1 = 0x51,
1144 D3D_SHADER_MODEL_6_0 = 0x60,
1145 D3D_SHADER_MODEL_6_1 = 0x61,
1146 D3D_SHADER_MODEL_6_2 = 0x62,
1147 D3D_SHADER_MODEL_6_3 = 0x63,
1148 D3D_SHADER_MODEL_6_4 = 0x64,
1149 D3D_SHADER_MODEL_6_5 = 0x65,
1150 D3D_SHADER_MODEL_6_6 = 0x66,
1151 D3D_SHADER_MODEL_6_7 = 0x67,
1152} D3D_SHADER_MODEL;
1153
1154typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
1155{
1156 [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
1157} D3D12_FEATURE_DATA_SHADER_MODEL;
1158
1159// D3D12_FEATURE_FORMAT_SUPPORT
1160typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1161{
1162 [annotation("_In_")] DXGI_FORMAT Format;
1163 [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
1164 [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
1165} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
1166
1167// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
1168typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1169{
1170 [annotation("_In_")] DXGI_FORMAT Format;
1171 [annotation("_In_")] UINT SampleCount;
1172 [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1173 [annotation("_Out_")] UINT NumQualityLevels;
1174} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
1175
1176// D3D12_FEATURE_FORMAT_INFO
1177typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
1178{
1179 DXGI_FORMAT Format;
1180 UINT8 PlaneCount;
1181} D3D12_FEATURE_DATA_FORMAT_INFO;
1182
1183// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
1184typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1185{
1186 UINT MaxGPUVirtualAddressBitsPerResource;
1187 UINT MaxGPUVirtualAddressBitsPerProcess;
1188} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
1189
1190
1191typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
1192{
1193 D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
1194 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
1195 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
1196 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
1197 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
1198 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
1199 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
1200 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
1201} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
1202cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );" )
1203
1204// D3D12_FEATURE_SHADER_CACHE
1205typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
1206{
1207 [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1208} D3D12_FEATURE_DATA_SHADER_CACHE;
1209
1210// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
1211typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1212{
1213 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
1214 [annotation("_In_")] UINT Priority;
1215 [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
1216} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
1217
1218typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
1219{
1220 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
1221 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
1222 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
1223 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
1224 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
1225 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
1226 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
1227 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
1228
1229} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
1230cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS );")
1231
1232// D3D12_FEATURE_D3D12_OPTIONS3
1233typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1234{
1235 [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
1236 [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
1237 [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1238 [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1239 [annotation("_Out_")] BOOL BarycentricsSupported;
1240} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
1241
1242// D3D12_FEATURE_EXISTING_HEAPS
1243typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1244{
1245 [annotation("_Out_")] BOOL Supported;
1246} D3D12_FEATURE_DATA_EXISTING_HEAPS;
1247
1248typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
1249{
1250 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
1251 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
1252 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
1253 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_3,
1254} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
1255
1256typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
1257{
1258 [annotation("_Out_")] BOOL DisplayableTexture;
1259 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1260} D3D12_FEATURE_DATA_DISPLAYABLE;
1261
1262// D3D12_FEATURE_D3D12_OPTIONS4
1263typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
1264{
1265 [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
1266 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1267 [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
1268} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
1269
1270typedef enum D3D12_HEAP_SERIALIZATION_TIER
1271{
1272 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
1273 D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
1274} D3D12_HEAP_SERIALIZATION_TIER;
1275
1276// D3D12_FEATURE_SERIALIZATION
1277typedef struct D3D12_FEATURE_DATA_SERIALIZATION
1278{
1279 [annotation("_In_")] UINT NodeIndex;
1280 [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
1281} D3D12_FEATURE_DATA_SERIALIZATION;
1282
1283// D3D12_FEATURE_CROSS_NODE
1284typedef struct D3D12_FEATURE_DATA_CROSS_NODE
1285{
1286 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
1287 BOOL AtomicShaderInstructions;
1288} D3D12_FEATURE_DATA_CROSS_NODE;
1289
1290
1291typedef enum D3D12_RENDER_PASS_TIER
1292{
1293 D3D12_RENDER_PASS_TIER_0 = 0,
1294 D3D12_RENDER_PASS_TIER_1 = 1,
1295 D3D12_RENDER_PASS_TIER_2 = 2,
1296
1297
1298} D3D12_RENDER_PASS_TIER;
1299
1300typedef enum D3D12_RAYTRACING_TIER
1301{
1302 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
1303 D3D12_RAYTRACING_TIER_1_0 = 10,
1304 D3D12_RAYTRACING_TIER_1_1 = 11,
1305} D3D12_RAYTRACING_TIER;
1306
1307// D3D12_FEATURE_D3D12_OPTIONS5
1308typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
1309{
1310 [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
1311 [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
1312 [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
1313} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
1314
1315typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
1316{
1317 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
1318 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
1319 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
1320} D3D12_VARIABLE_SHADING_RATE_TIER;
1321
1322// D3D12_FEATURE_D3D12_OPTIONS6
1323typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
1324{
1325 [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
1326 [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
1327 [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
1328 [annotation("_Out_")] UINT ShadingRateImageTileSize;
1329 [annotation("_Out_")] BOOL BackgroundProcessingSupported;
1330} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
1331
1332typedef enum D3D12_MESH_SHADER_TIER
1333{
1334 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
1335 D3D12_MESH_SHADER_TIER_1 = 10,
1336} D3D12_MESH_SHADER_TIER;
1337
1338typedef enum D3D12_SAMPLER_FEEDBACK_TIER
1339{
1340 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
1341 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
1342 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
1343} D3D12_SAMPLER_FEEDBACK_TIER;
1344
1345// D3D12_FEATURE_D3D12_OPTIONS7
1346typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
1347{
1348 [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
1349 [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
1350
1351} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
1352
1353typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
1354{
1355 [annotation("_In_")] GUID CommandId;
1356 [annotation("_In_")] UINT NodeMask;
1357 [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
1358 [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
1359 [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
1360 [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
1361} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
1362
1363// D3D12_FEATURE_D3D12_OPTIONS8
1364typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
1365{
1366 [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
1367} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
1368
1369typedef enum D3D12_WAVE_MMA_TIER {
1370 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
1371 D3D12_WAVE_MMA_TIER_1_0 = 10,
1372} D3D12_WAVE_MMA_TIER;
1373
1374// D3D12_FEATURE_D3D12_OPTIONS9
1375typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
1376{
1377 [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
1378 [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1379 [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
1380 [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
1381 [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
1382 [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
1383} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
1384
1385// D3D12_FEATURE_D3D12_OPTIONS10
1386typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
1387{
1388 [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
1389 [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
1390} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
1391
1392// D3D12_FEATURE_D3D12_OPTIONS11
1393typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
1394{
1395 [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
1396} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
1397
1398
1399typedef struct D3D12_RESOURCE_ALLOCATION_INFO
1400{
1401 UINT64 SizeInBytes;
1402 UINT64 Alignment;
1403} D3D12_RESOURCE_ALLOCATION_INFO;
1404
1405typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
1406{
1407 UINT64 Offset;
1408 UINT64 Alignment;
1409 UINT64 SizeInBytes;
1410} D3D12_RESOURCE_ALLOCATION_INFO1;
1411
1412typedef enum D3D12_HEAP_TYPE
1413{
1414 D3D12_HEAP_TYPE_DEFAULT = 1,
1415 D3D12_HEAP_TYPE_UPLOAD = 2,
1416 D3D12_HEAP_TYPE_READBACK = 3,
1417 D3D12_HEAP_TYPE_CUSTOM = 4,
1418} D3D12_HEAP_TYPE;
1419
1420typedef enum D3D12_CPU_PAGE_PROPERTY
1421{
1422 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
1423 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
1424 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
1425 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
1426} D3D12_CPU_PAGE_PROPERTY;
1427
1428typedef enum D3D12_MEMORY_POOL
1429{
1430 D3D12_MEMORY_POOL_UNKNOWN = 0,
1431 D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
1432 D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
1433} D3D12_MEMORY_POOL;
1434
1435typedef struct D3D12_HEAP_PROPERTIES
1436{
1437 D3D12_HEAP_TYPE Type;
1438 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1439 D3D12_MEMORY_POOL MemoryPoolPreference;
1440 UINT CreationNodeMask;
1441 UINT VisibleNodeMask;
1442} D3D12_HEAP_PROPERTIES;
1443
1444typedef enum D3D12_HEAP_FLAGS
1445{
1446 D3D12_HEAP_FLAG_NONE = 0x0,
1447 D3D12_HEAP_FLAG_SHARED = 0x1,
1448 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
1449 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
1450 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
1451 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
1452 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
1453 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
1454 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
1455 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
1456 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
1457 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
1458
1459 // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
1460 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
1461 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
1462 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
1463 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
1464
1465
1466} D3D12_HEAP_FLAGS;
1467cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );" )
1468
1469typedef struct D3D12_HEAP_DESC
1470{
1471 UINT64 SizeInBytes;
1472 D3D12_HEAP_PROPERTIES Properties;
1473 UINT64 Alignment;
1474 D3D12_HEAP_FLAGS Flags;
1475} D3D12_HEAP_DESC;
1476
1477typedef enum D3D12_RESOURCE_DIMENSION
1478{
1479 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1480 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1481 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1482 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1483 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1484} D3D12_RESOURCE_DIMENSION;
1485
1486typedef enum D3D12_TEXTURE_LAYOUT
1487{
1488 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1489 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
1490 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1491 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1492} D3D12_TEXTURE_LAYOUT;
1493
1494typedef enum D3D12_RESOURCE_FLAGS
1495{
1496 D3D12_RESOURCE_FLAG_NONE = 0x0,
1497 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1498 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1499 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1500 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1501 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1502 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1503 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
1504 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
1505
1506} D3D12_RESOURCE_FLAGS;
1507cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );" )
1508
1509typedef struct D3D12_MIP_REGION
1510{
1511 UINT Width;
1512 UINT Height;
1513 UINT Depth;
1514} D3D12_MIP_REGION;
1515
1516typedef struct D3D12_RESOURCE_DESC
1517{
1518 D3D12_RESOURCE_DIMENSION Dimension;
1519 UINT64 Alignment;
1520 UINT64 Width;
1521 UINT Height;
1522 UINT16 DepthOrArraySize;
1523 UINT16 MipLevels;
1524 DXGI_FORMAT Format;
1525 DXGI_SAMPLE_DESC SampleDesc;
1526 D3D12_TEXTURE_LAYOUT Layout;
1527 D3D12_RESOURCE_FLAGS Flags;
1528} D3D12_RESOURCE_DESC;
1529
1530typedef struct D3D12_RESOURCE_DESC1
1531{
1532 D3D12_RESOURCE_DIMENSION Dimension;
1533 UINT64 Alignment;
1534 UINT64 Width;
1535 UINT Height;
1536 UINT16 DepthOrArraySize;
1537 UINT16 MipLevels;
1538 DXGI_FORMAT Format;
1539 DXGI_SAMPLE_DESC SampleDesc;
1540 D3D12_TEXTURE_LAYOUT Layout;
1541 D3D12_RESOURCE_FLAGS Flags;
1542 D3D12_MIP_REGION SamplerFeedbackMipRegion;
1543} D3D12_RESOURCE_DESC1;
1544
1545
1546typedef struct D3D12_DEPTH_STENCIL_VALUE
1547{
1548 FLOAT Depth;
1549 UINT8 Stencil;
1550} D3D12_DEPTH_STENCIL_VALUE;
1551
1552typedef struct D3D12_CLEAR_VALUE
1553{
1554 DXGI_FORMAT Format;
1555 union
1556 {
1557 FLOAT Color[4];
1558 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1559 };
1560} D3D12_CLEAR_VALUE;
1561
1562typedef struct D3D12_RANGE
1563{
1564 SIZE_T Begin;
1565 SIZE_T End; // One past end, so (End - Begin) = Size
1566} D3D12_RANGE;
1567
1568typedef struct D3D12_RANGE_UINT64
1569{
1570 UINT64 Begin;
1571 UINT64 End; // One past end, so (End - Begin) = Size
1572} D3D12_RANGE_UINT64;
1573
1574typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
1575{
1576 UINT Subresource;
1577 D3D12_RANGE_UINT64 Range;
1578} D3D12_SUBRESOURCE_RANGE_UINT64;
1579
1580typedef struct D3D12_SUBRESOURCE_INFO
1581{
1582 UINT64 Offset;
1583 UINT RowPitch;
1584 UINT DepthPitch;
1585} D3D12_SUBRESOURCE_INFO;
1586
1587typedef struct D3D12_TILED_RESOURCE_COORDINATE
1588{
1589 UINT X;
1590 UINT Y;
1591 UINT Z;
1592 UINT Subresource;
1593} D3D12_TILED_RESOURCE_COORDINATE;
1594
1595typedef struct D3D12_TILE_REGION_SIZE
1596{
1597 UINT NumTiles;
1598 BOOL UseBox;
1599 UINT Width;
1600 UINT16 Height;
1601 UINT16 Depth;
1602} D3D12_TILE_REGION_SIZE;
1603
1604typedef enum D3D12_TILE_RANGE_FLAGS
1605{
1606 D3D12_TILE_RANGE_FLAG_NONE = 0,
1607 D3D12_TILE_RANGE_FLAG_NULL = 1,
1608 D3D12_TILE_RANGE_FLAG_SKIP = 2,
1609 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
1610
1611} D3D12_TILE_RANGE_FLAGS;
1612
1613typedef struct D3D12_SUBRESOURCE_TILING
1614{
1615 UINT WidthInTiles;
1616 UINT16 HeightInTiles;
1617 UINT16 DepthInTiles;
1618 UINT StartTileIndexInOverallResource;
1619} D3D12_SUBRESOURCE_TILING;
1620
1621typedef struct D3D12_TILE_SHAPE
1622{
1623 UINT WidthInTexels;
1624 UINT HeightInTexels;
1625 UINT DepthInTexels;
1626} D3D12_TILE_SHAPE;
1627
1628typedef struct D3D12_PACKED_MIP_INFO
1629{
1630 UINT8 NumStandardMips;
1631 UINT8 NumPackedMips;
1632 UINT NumTilesForPackedMips;
1633 UINT StartTileIndexInOverallResource;
1634} D3D12_PACKED_MIP_INFO;
1635
1636typedef enum D3D12_TILE_MAPPING_FLAGS
1637{
1638 D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1639 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1640} D3D12_TILE_MAPPING_FLAGS;
1641cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );" )
1642
1643typedef enum D3D12_TILE_COPY_FLAGS
1644{
1645 D3D12_TILE_COPY_FLAG_NONE = 0x0,
1646 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1647 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1648 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1649} D3D12_TILE_COPY_FLAGS;
1650cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );")
1651
1652// Resource Barrier
1653typedef enum D3D12_RESOURCE_STATES
1654{
1655 D3D12_RESOURCE_STATE_COMMON = 0,
1656
1657 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
1658 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
1659 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
1660 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
1661 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
1662 D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
1663 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
1664 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
1665 D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
1666 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
1667 D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
1668 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
1669 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
1670 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
1671 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
1672 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
1673
1674 D3D12_RESOURCE_STATE_GENERIC_READ =
1675 /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
1676 /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
1677 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
1678 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
1679 /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
1680 /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
1681
1682 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
1683 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
1684 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
1685
1686 D3D12_RESOURCE_STATE_PRESENT = 0,
1687 D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
1688
1689 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
1690 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
1691 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
1692 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
1693 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
1694 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
1695
1696} D3D12_RESOURCE_STATES;
1697cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );" )
1698
1699typedef enum D3D12_RESOURCE_BARRIER_TYPE
1700{
1701 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
1702 D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
1703 D3D12_RESOURCE_BARRIER_TYPE_UAV,
1704} D3D12_RESOURCE_BARRIER_TYPE;
1705
1706interface ID3D12Resource;
1707
1708typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
1709{
1710 ID3D12Resource* pResource;
1711 UINT Subresource;
1712 D3D12_RESOURCE_STATES StateBefore;
1713 D3D12_RESOURCE_STATES StateAfter;
1714} D3D12_RESOURCE_TRANSITION_BARRIER;
1715
1716typedef struct D3D12_RESOURCE_ALIASING_BARRIER
1717{
1718 ID3D12Resource* pResourceBefore;
1719 ID3D12Resource* pResourceAfter;
1720} D3D12_RESOURCE_ALIASING_BARRIER;
1721
1722typedef struct D3D12_RESOURCE_UAV_BARRIER
1723{
1724 ID3D12Resource* pResource;
1725} D3D12_RESOURCE_UAV_BARRIER;
1726
1727typedef enum D3D12_RESOURCE_BARRIER_FLAGS
1728{
1729 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
1730 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
1731 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
1732} D3D12_RESOURCE_BARRIER_FLAGS;
1733cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );" )
1734
1735typedef struct D3D12_RESOURCE_BARRIER
1736{
1737 D3D12_RESOURCE_BARRIER_TYPE Type;
1738 D3D12_RESOURCE_BARRIER_FLAGS Flags;
1739
1740 union
1741 {
1742 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
1743 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
1744 D3D12_RESOURCE_UAV_BARRIER UAV;
1745 };
1746} D3D12_RESOURCE_BARRIER;
1747
1748typedef struct D3D12_SUBRESOURCE_FOOTPRINT
1749{
1750 DXGI_FORMAT Format;
1751 UINT Width;
1752 UINT Height;
1753 UINT Depth;
1754 UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
1755} D3D12_SUBRESOURCE_FOOTPRINT;
1756
1757typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
1758{
1759 UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
1760 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
1761} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
1762
1763typedef enum D3D12_TEXTURE_COPY_TYPE
1764{
1765 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
1766 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
1767} D3D12_TEXTURE_COPY_TYPE;
1768
1769typedef struct D3D12_TEXTURE_COPY_LOCATION
1770{
1771 ID3D12Resource* pResource;
1772 D3D12_TEXTURE_COPY_TYPE Type;
1773 union
1774 {
1775 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
1776 UINT SubresourceIndex;
1777 };
1778} D3D12_TEXTURE_COPY_LOCATION;
1779
1780typedef enum D3D12_RESOLVE_MODE
1781{
1782 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
1783 D3D12_RESOLVE_MODE_MIN = 1,
1784 D3D12_RESOLVE_MODE_MAX = 2,
1785 D3D12_RESOLVE_MODE_AVERAGE = 3,
1786 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
1787 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
1788} D3D12_RESOLVE_MODE;
1789
1790typedef struct D3D12_SAMPLE_POSITION
1791{
1792 INT8 X;
1793 INT8 Y;
1794} D3D12_SAMPLE_POSITION;
1795
1796typedef struct D3D12_VIEW_INSTANCE_LOCATION
1797{
1798 UINT ViewportArrayIndex;
1799 UINT RenderTargetArrayIndex;
1800} D3D12_VIEW_INSTANCE_LOCATION;
1801
1802typedef enum D3D12_VIEW_INSTANCING_FLAGS
1803{
1804 D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
1805 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
1806} D3D12_VIEW_INSTANCING_FLAGS;
1807cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS );")
1808
1809typedef struct D3D12_VIEW_INSTANCING_DESC
1810{
1811 UINT ViewInstanceCount;
1812 [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
1813 D3D12_VIEW_INSTANCING_FLAGS Flags;
1814} D3D12_VIEW_INSTANCING_DESC;
1815
1816// D3D12 view descriptions
1817typedef enum D3D12_SHADER_COMPONENT_MAPPING
1818{
1819 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
1820 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
1821 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
1822 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
1823 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
1824 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
1825} D3D12_SHADER_COMPONENT_MAPPING;
1826
1827cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
1828cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
1829cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
1830cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
1831cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
1832cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
1833cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
1834cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
1835cpp_quote( "#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
1836cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
1837typedef enum D3D12_BUFFER_SRV_FLAGS
1838{
1839 D3D12_BUFFER_SRV_FLAG_NONE = 0,
1840 D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
1841} D3D12_BUFFER_SRV_FLAGS;
1842cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );" )
1843
1844typedef struct D3D12_BUFFER_SRV
1845{
1846 UINT64 FirstElement;
1847 UINT NumElements;
1848 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
1849 D3D12_BUFFER_SRV_FLAGS Flags;
1850} D3D12_BUFFER_SRV;
1851
1852typedef struct D3D12_TEX1D_SRV
1853{
1854 UINT MostDetailedMip;
1855 UINT MipLevels;
1856 FLOAT ResourceMinLODClamp;
1857} D3D12_TEX1D_SRV;
1858
1859typedef struct D3D12_TEX1D_ARRAY_SRV
1860{
1861 UINT MostDetailedMip;
1862 UINT MipLevels;
1863 UINT FirstArraySlice;
1864 UINT ArraySize;
1865 FLOAT ResourceMinLODClamp;
1866} D3D12_TEX1D_ARRAY_SRV;
1867
1868typedef struct D3D12_TEX2D_SRV
1869{
1870 UINT MostDetailedMip;
1871 UINT MipLevels;
1872 UINT PlaneSlice;
1873 FLOAT ResourceMinLODClamp;
1874} D3D12_TEX2D_SRV;
1875
1876typedef struct D3D12_TEX2D_ARRAY_SRV
1877{
1878 UINT MostDetailedMip;
1879 UINT MipLevels;
1880 UINT FirstArraySlice;
1881 UINT ArraySize;
1882 UINT PlaneSlice;
1883 FLOAT ResourceMinLODClamp;
1884} D3D12_TEX2D_ARRAY_SRV;
1885
1886typedef struct D3D12_TEX3D_SRV
1887{
1888 UINT MostDetailedMip;
1889 UINT MipLevels;
1890 FLOAT ResourceMinLODClamp;
1891} D3D12_TEX3D_SRV;
1892
1893typedef struct D3D12_TEXCUBE_SRV
1894{
1895 UINT MostDetailedMip;
1896 UINT MipLevels;
1897 FLOAT ResourceMinLODClamp;
1898} D3D12_TEXCUBE_SRV;
1899
1900typedef struct D3D12_TEXCUBE_ARRAY_SRV
1901{
1902 UINT MostDetailedMip;
1903 UINT MipLevels;
1904 UINT First2DArrayFace;
1905 UINT NumCubes;
1906 FLOAT ResourceMinLODClamp;
1907} D3D12_TEXCUBE_ARRAY_SRV;
1908
1909typedef struct D3D12_TEX2DMS_SRV
1910{
1911 // don't need to define anything specific for this view dimension
1912 UINT UnusedField_NothingToDefine;
1913} D3D12_TEX2DMS_SRV;
1914
1915typedef struct D3D12_TEX2DMS_ARRAY_SRV
1916{
1917 UINT FirstArraySlice;
1918 UINT ArraySize;
1919} D3D12_TEX2DMS_ARRAY_SRV;
1920
1921typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
1922{
1923 D3D12_GPU_VIRTUAL_ADDRESS Location;
1924} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
1925
1926typedef enum D3D12_SRV_DIMENSION {
1927 D3D12_SRV_DIMENSION_UNKNOWN = 0,
1928 D3D12_SRV_DIMENSION_BUFFER = 1,
1929 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
1930 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
1931 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
1932 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
1933 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
1934 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
1935 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
1936 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
1937 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
1938 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
1939} D3D12_SRV_DIMENSION;
1940
1941typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
1942{
1943 DXGI_FORMAT Format;
1944 D3D12_SRV_DIMENSION ViewDimension;
1945 UINT Shader4ComponentMapping;
1946
1947 union
1948 {
1949 D3D12_BUFFER_SRV Buffer;
1950 D3D12_TEX1D_SRV Texture1D;
1951 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
1952 D3D12_TEX2D_SRV Texture2D;
1953 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
1954 D3D12_TEX2DMS_SRV Texture2DMS;
1955 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
1956 D3D12_TEX3D_SRV Texture3D;
1957 D3D12_TEXCUBE_SRV TextureCube;
1958 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
1959 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
1960 };
1961} D3D12_SHADER_RESOURCE_VIEW_DESC;
1962
1963typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
1964{
1965 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
1966 UINT SizeInBytes;
1967} D3D12_CONSTANT_BUFFER_VIEW_DESC;
1968
1969////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1970//
1971// Sampler
1972//
1973////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1974typedef enum D3D12_FILTER
1975{
1976 // Bits used in defining enumeration of valid filters:
1977 // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
1978 // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
1979 // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
1980 // bit [6] - aniso
1981 // bits [8:7] - reduction type:
1982 // 0 == standard filtering
1983 // 1 == comparison
1984 // 2 == min
1985 // 3 == max
1986 // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
1987
1988 D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
1989 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
1990 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
1991 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
1992 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
1993 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
1994 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
1995 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
1996 D3D12_FILTER_ANISOTROPIC = 0x00000055,
1997 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
1998 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
1999 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
2000 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
2001 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
2002 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
2003 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
2004 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
2005 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
2006 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
2007 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
2008 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
2009 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
2010 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
2011 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
2012 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
2013 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
2014 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
2015 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
2016 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
2017 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
2018 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
2019 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
2020 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
2021 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
2022 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
2023 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
2024} D3D12_FILTER;
2025
2026typedef enum D3D12_FILTER_TYPE
2027{
2028 D3D12_FILTER_TYPE_POINT = 0,
2029 D3D12_FILTER_TYPE_LINEAR = 1,
2030} D3D12_FILTER_TYPE;
2031
2032typedef enum D3D12_FILTER_REDUCTION_TYPE
2033{
2034 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
2035 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
2036 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
2037 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
2038} D3D12_FILTER_REDUCTION_TYPE;
2039
2040const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
2041const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
2042
2043const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
2044const UINT D3D12_MIN_FILTER_SHIFT = 4;
2045const UINT D3D12_MAG_FILTER_SHIFT = 2;
2046const UINT D3D12_MIP_FILTER_SHIFT = 0;
2047
2048const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
2049
2050// encode enum entry for most filters except anisotropic filtering
2051cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
2052cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2053cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
2054cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
2055cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
2056cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
2057
2058// encode enum entry for anisotropic filtering (with or without comparison filtering)
2059cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
2060cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2061cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2062cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2063cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2064cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2065cpp_quote( " reduction ) ) ) " )
2066
2067cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
2068cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2069cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2070
2071cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
2072cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2073cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2074
2075cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
2076cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2077cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2078
2079cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
2080cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
2081cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
2082
2083cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
2084cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
2085
2086cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
2087cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
2088cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
2089cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \\" )
2090cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) ) " )
2091
2092typedef enum D3D12_TEXTURE_ADDRESS_MODE
2093{
2094 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
2095 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
2096 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
2097 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
2098 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
2099} D3D12_TEXTURE_ADDRESS_MODE;
2100
2101typedef struct D3D12_SAMPLER_DESC
2102{
2103 D3D12_FILTER Filter;
2104 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2105 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2106 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2107 FLOAT MipLODBias;
2108 UINT MaxAnisotropy;
2109 D3D12_COMPARISON_FUNC ComparisonFunc;
2110 FLOAT BorderColor[4]; // RGBA
2111 FLOAT MinLOD;
2112 FLOAT MaxLOD;
2113} D3D12_SAMPLER_DESC;
2114
2115typedef enum D3D12_BUFFER_UAV_FLAGS
2116{
2117 D3D12_BUFFER_UAV_FLAG_NONE = 0,
2118 D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
2119} D3D12_BUFFER_UAV_FLAGS;
2120cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );" )
2121
2122typedef struct D3D12_BUFFER_UAV
2123{
2124 UINT64 FirstElement;
2125 UINT NumElements;
2126 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2127 UINT64 CounterOffsetInBytes;
2128 D3D12_BUFFER_UAV_FLAGS Flags;
2129} D3D12_BUFFER_UAV;
2130
2131typedef struct D3D12_TEX1D_UAV
2132{
2133 UINT MipSlice;
2134} D3D12_TEX1D_UAV;
2135
2136typedef struct D3D12_TEX1D_ARRAY_UAV
2137{
2138 UINT MipSlice;
2139 UINT FirstArraySlice;
2140 UINT ArraySize;
2141} D3D12_TEX1D_ARRAY_UAV;
2142
2143typedef struct D3D12_TEX2D_UAV
2144{
2145 UINT MipSlice;
2146 UINT PlaneSlice;
2147} D3D12_TEX2D_UAV;
2148
2149typedef struct D3D12_TEX2D_ARRAY_UAV
2150{
2151 UINT MipSlice;
2152 UINT FirstArraySlice;
2153 UINT ArraySize;
2154 UINT PlaneSlice;
2155} D3D12_TEX2D_ARRAY_UAV;
2156
2157typedef struct D3D12_TEX3D_UAV
2158{
2159 UINT MipSlice;
2160 UINT FirstWSlice;
2161 UINT WSize;
2162} D3D12_TEX3D_UAV;
2163
2164typedef enum D3D12_UAV_DIMENSION
2165{
2166 D3D12_UAV_DIMENSION_UNKNOWN = 0,
2167 D3D12_UAV_DIMENSION_BUFFER = 1,
2168 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
2169 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
2170 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
2171 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
2172 D3D12_UAV_DIMENSION_TEXTURE3D = 8,
2173} D3D12_UAV_DIMENSION;
2174
2175typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
2176{
2177 DXGI_FORMAT Format;
2178 D3D12_UAV_DIMENSION ViewDimension;
2179
2180 union
2181 {
2182 D3D12_BUFFER_UAV Buffer;
2183 D3D12_TEX1D_UAV Texture1D;
2184 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
2185 D3D12_TEX2D_UAV Texture2D;
2186 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
2187 D3D12_TEX3D_UAV Texture3D;
2188 };
2189} D3D12_UNORDERED_ACCESS_VIEW_DESC;
2190
2191typedef struct D3D12_BUFFER_RTV
2192{
2193 UINT64 FirstElement;
2194 UINT NumElements;
2195} D3D12_BUFFER_RTV;
2196
2197typedef struct D3D12_TEX1D_RTV
2198{
2199 UINT MipSlice;
2200} D3D12_TEX1D_RTV;
2201
2202typedef struct D3D12_TEX1D_ARRAY_RTV
2203{
2204 UINT MipSlice;
2205 UINT FirstArraySlice;
2206 UINT ArraySize;
2207} D3D12_TEX1D_ARRAY_RTV;
2208
2209typedef struct D3D12_TEX2D_RTV
2210{
2211 UINT MipSlice;
2212 UINT PlaneSlice;
2213} D3D12_TEX2D_RTV;
2214
2215typedef struct D3D12_TEX2DMS_RTV
2216{
2217 UINT UnusedField_NothingToDefine;
2218} D3D12_TEX2DMS_RTV;
2219
2220typedef struct D3D12_TEX2D_ARRAY_RTV
2221{
2222 UINT MipSlice;
2223 UINT FirstArraySlice;
2224 UINT ArraySize;
2225 UINT PlaneSlice;
2226} D3D12_TEX2D_ARRAY_RTV;
2227
2228typedef struct D3D12_TEX2DMS_ARRAY_RTV
2229{
2230 UINT FirstArraySlice;
2231 UINT ArraySize;
2232} D3D12_TEX2DMS_ARRAY_RTV;
2233
2234typedef struct D3D12_TEX3D_RTV
2235{
2236 UINT MipSlice;
2237 UINT FirstWSlice;
2238 UINT WSize;
2239} D3D12_TEX3D_RTV;
2240
2241typedef enum D3D12_RTV_DIMENSION
2242{
2243 D3D12_RTV_DIMENSION_UNKNOWN = 0,
2244 D3D12_RTV_DIMENSION_BUFFER = 1,
2245 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
2246 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
2247 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
2248 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
2249 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
2250 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
2251 D3D12_RTV_DIMENSION_TEXTURE3D = 8,
2252} D3D12_RTV_DIMENSION;
2253
2254typedef struct D3D12_RENDER_TARGET_VIEW_DESC
2255{
2256 DXGI_FORMAT Format;
2257 D3D12_RTV_DIMENSION ViewDimension;
2258
2259 union
2260 {
2261 D3D12_BUFFER_RTV Buffer;
2262 D3D12_TEX1D_RTV Texture1D;
2263 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2264 D3D12_TEX2D_RTV Texture2D;
2265 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2266 D3D12_TEX2DMS_RTV Texture2DMS;
2267 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2268 D3D12_TEX3D_RTV Texture3D;
2269 };
2270} D3D12_RENDER_TARGET_VIEW_DESC;
2271
2272typedef struct D3D12_TEX1D_DSV
2273{
2274 UINT MipSlice;
2275} D3D12_TEX1D_DSV;
2276
2277typedef struct D3D12_TEX1D_ARRAY_DSV
2278{
2279 UINT MipSlice;
2280 UINT FirstArraySlice;
2281 UINT ArraySize;
2282} D3D12_TEX1D_ARRAY_DSV;
2283
2284typedef struct D3D12_TEX2D_DSV
2285{
2286 UINT MipSlice;
2287} D3D12_TEX2D_DSV;
2288
2289typedef struct D3D12_TEX2D_ARRAY_DSV
2290{
2291 UINT MipSlice;
2292 UINT FirstArraySlice;
2293 UINT ArraySize;
2294} D3D12_TEX2D_ARRAY_DSV;
2295
2296typedef struct D3D12_TEX2DMS_DSV
2297{
2298 UINT UnusedField_NothingToDefine;
2299} D3D12_TEX2DMS_DSV;
2300
2301typedef struct D3D12_TEX2DMS_ARRAY_DSV
2302{
2303 UINT FirstArraySlice;
2304 UINT ArraySize;
2305} D3D12_TEX2DMS_ARRAY_DSV;
2306
2307typedef enum D3D12_DSV_FLAGS
2308{
2309 D3D12_DSV_FLAG_NONE = 0x0,
2310 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
2311 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
2312} D3D12_DSV_FLAGS;
2313cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );" )
2314
2315typedef enum D3D12_DSV_DIMENSION
2316{
2317 D3D12_DSV_DIMENSION_UNKNOWN = 0,
2318 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
2319 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
2320 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
2321 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
2322 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
2323 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
2324} D3D12_DSV_DIMENSION;
2325
2326typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
2327{
2328 DXGI_FORMAT Format;
2329 D3D12_DSV_DIMENSION ViewDimension;
2330 D3D12_DSV_FLAGS Flags;
2331
2332 union
2333 {
2334 D3D12_TEX1D_DSV Texture1D;
2335 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2336 D3D12_TEX2D_DSV Texture2D;
2337 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2338 D3D12_TEX2DMS_DSV Texture2DMS;
2339 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2340 };
2341} D3D12_DEPTH_STENCIL_VIEW_DESC;
2342
2343typedef enum D3D12_CLEAR_FLAGS
2344{
2345 // Intentionally no flag for NONE
2346 D3D12_CLEAR_FLAG_DEPTH = 0x01,
2347 D3D12_CLEAR_FLAG_STENCIL = 0x02,
2348} D3D12_CLEAR_FLAGS;
2349cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );" )
2350
2351typedef enum D3D12_FENCE_FLAGS
2352{
2353 D3D12_FENCE_FLAG_NONE = 0x0,
2354 D3D12_FENCE_FLAG_SHARED = 0x1,
2355 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
2356 D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
2357} D3D12_FENCE_FLAGS;
2358cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );" )
2359
2360typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
2361{
2362 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
2363 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
2364 D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
2365 D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
2366 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
2367} D3D12_DESCRIPTOR_HEAP_TYPE;
2368
2369typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
2370{
2371 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
2372 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
2373} D3D12_DESCRIPTOR_HEAP_FLAGS;
2374cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );" )
2375
2376typedef struct D3D12_DESCRIPTOR_HEAP_DESC
2377{
2378 D3D12_DESCRIPTOR_HEAP_TYPE Type;
2379 UINT NumDescriptors;
2380 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2381 UINT NodeMask;
2382} D3D12_DESCRIPTOR_HEAP_DESC;
2383
2384typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
2385{
2386 D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
2387 D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
2388 D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
2389 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
2390} D3D12_DESCRIPTOR_RANGE_TYPE;
2391
2392typedef struct D3D12_DESCRIPTOR_RANGE
2393{
2394 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2395 UINT NumDescriptors;
2396 UINT BaseShaderRegister;
2397 UINT RegisterSpace;
2398 UINT OffsetInDescriptorsFromTableStart;
2399} D3D12_DESCRIPTOR_RANGE;
2400
2401
2402typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
2403{
2404 UINT NumDescriptorRanges;
2405 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
2406} D3D12_ROOT_DESCRIPTOR_TABLE;
2407
2408
2409typedef struct D3D12_ROOT_CONSTANTS
2410{
2411 UINT ShaderRegister;
2412 UINT RegisterSpace;
2413 UINT Num32BitValues;
2414} D3D12_ROOT_CONSTANTS;
2415
2416typedef struct D3D12_ROOT_DESCRIPTOR
2417{
2418 UINT ShaderRegister;
2419 UINT RegisterSpace;
2420} D3D12_ROOT_DESCRIPTOR;
2421
2422typedef enum D3D12_SHADER_VISIBILITY
2423{
2424 D3D12_SHADER_VISIBILITY_ALL = 0,
2425 D3D12_SHADER_VISIBILITY_VERTEX = 1,
2426 D3D12_SHADER_VISIBILITY_HULL = 2,
2427 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
2428 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
2429 D3D12_SHADER_VISIBILITY_PIXEL = 5,
2430 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
2431 D3D12_SHADER_VISIBILITY_MESH = 7,
2432} D3D12_SHADER_VISIBILITY;
2433
2434typedef enum D3D12_ROOT_PARAMETER_TYPE
2435{
2436 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
2437 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
2438 D3D12_ROOT_PARAMETER_TYPE_CBV,
2439 D3D12_ROOT_PARAMETER_TYPE_SRV,
2440 D3D12_ROOT_PARAMETER_TYPE_UAV
2441} D3D12_ROOT_PARAMETER_TYPE;
2442
2443typedef struct D3D12_ROOT_PARAMETER
2444{
2445 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2446 union
2447 {
2448 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2449 D3D12_ROOT_CONSTANTS Constants;
2450 D3D12_ROOT_DESCRIPTOR Descriptor;
2451 };
2452 D3D12_SHADER_VISIBILITY ShaderVisibility;
2453} D3D12_ROOT_PARAMETER;
2454
2455typedef enum D3D12_ROOT_SIGNATURE_FLAGS
2456{
2457 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
2458 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
2459 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
2460 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
2461 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
2462 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2463 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2464 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2465 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
2466 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
2467 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
2468 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
2469 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
2470} D3D12_ROOT_SIGNATURE_FLAGS;
2471cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );" )
2472
2473typedef enum D3D12_STATIC_BORDER_COLOR
2474{
2475 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
2476 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
2477 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
2478} D3D12_STATIC_BORDER_COLOR;
2479
2480typedef struct D3D12_STATIC_SAMPLER_DESC
2481{
2482 D3D12_FILTER Filter;
2483 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2484 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2485 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2486 FLOAT MipLODBias;
2487 UINT MaxAnisotropy;
2488 D3D12_COMPARISON_FUNC ComparisonFunc;
2489 D3D12_STATIC_BORDER_COLOR BorderColor;
2490 FLOAT MinLOD;
2491 FLOAT MaxLOD;
2492 UINT ShaderRegister;
2493 UINT RegisterSpace;
2494 D3D12_SHADER_VISIBILITY ShaderVisibility;
2495} D3D12_STATIC_SAMPLER_DESC;
2496
2497
2498typedef struct D3D12_ROOT_SIGNATURE_DESC
2499{
2500 UINT NumParameters;
2501 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
2502 UINT NumStaticSamplers;
2503 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2504 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2505} D3D12_ROOT_SIGNATURE_DESC;
2506
2507typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
2508{
2509 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2510 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2511 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2512 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2513 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2514 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
2515} D3D12_DESCRIPTOR_RANGE_FLAGS;
2516cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );")
2517
2518typedef struct D3D12_DESCRIPTOR_RANGE1
2519{
2520 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2521 UINT NumDescriptors;
2522 UINT BaseShaderRegister;
2523 UINT RegisterSpace;
2524 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2525 UINT OffsetInDescriptorsFromTableStart;
2526} D3D12_DESCRIPTOR_RANGE1;
2527
2528typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
2529{
2530 UINT NumDescriptorRanges;
2531 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
2532} D3D12_ROOT_DESCRIPTOR_TABLE1;
2533
2534typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
2535{
2536 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2537 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2538 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2539 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2540} D3D12_ROOT_DESCRIPTOR_FLAGS;
2541cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );")
2542
2543typedef struct D3D12_ROOT_DESCRIPTOR1
2544{
2545 UINT ShaderRegister;
2546 UINT RegisterSpace;
2547 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2548} D3D12_ROOT_DESCRIPTOR1;
2549
2550typedef struct D3D12_ROOT_PARAMETER1
2551{
2552 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2553 union
2554 {
2555 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2556 D3D12_ROOT_CONSTANTS Constants;
2557 D3D12_ROOT_DESCRIPTOR1 Descriptor;
2558 };
2559 D3D12_SHADER_VISIBILITY ShaderVisibility;
2560} D3D12_ROOT_PARAMETER1;
2561
2562typedef struct D3D12_ROOT_SIGNATURE_DESC1
2563{
2564 UINT NumParameters;
2565 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2566 UINT NumStaticSamplers;
2567 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2568 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2569} D3D12_ROOT_SIGNATURE_DESC1;
2570
2571
2572typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2573{
2574 D3D_ROOT_SIGNATURE_VERSION Version;
2575 union
2576 {
2577 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2578 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2579 };
2580} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
2581
2582[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
2583interface ID3D12RootSignatureDeserializer
2584 : IUnknown
2585{
2586 const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
2587};
2588
2589[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
2590interface ID3D12VersionedRootSignatureDeserializer
2591 : IUnknown
2592{
2593 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
2594 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
2595};
2596
2597cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
2598cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
2599cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
2600cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2601cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2602cpp_quote( "" )
2603cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
2604cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
2605cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
2606cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2607cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2608cpp_quote( "" )
2609cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
2610cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2611cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2612cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2613cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2614cpp_quote( "" )
2615cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
2616cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2617cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2618cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2619cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2620cpp_quote( "" )
2621cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
2622cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
2623cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2624cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2625cpp_quote( "" )
2626cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
2627cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
2628cpp_quote( " _Out_ ID3DBlob** ppBlob," )
2629cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
2630cpp_quote( "" )
2631cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
2632cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2633cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2634cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2635cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2636cpp_quote( "" )
2637cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
2638cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
2639cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
2640cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
2641cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
2642cpp_quote( "" )
2643
2644
2645
2646typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
2647{
2648 SIZE_T ptr;
2649} D3D12_CPU_DESCRIPTOR_HANDLE;
2650
2651
2652typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
2653{
2654 UINT64 ptr;
2655} D3D12_GPU_DESCRIPTOR_HANDLE;
2656
2657cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
2658cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
2659typedef struct D3D12_DISCARD_REGION
2660{
2661 UINT NumRects;
2662 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
2663 UINT FirstSubresource;
2664 UINT NumSubresources;
2665} D3D12_DISCARD_REGION;
2666
2667typedef enum D3D12_QUERY_HEAP_TYPE
2668{
2669 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
2670 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
2671 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
2672 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
2673 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
2674 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
2675 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
2676
2677} D3D12_QUERY_HEAP_TYPE;
2678
2679typedef struct D3D12_QUERY_HEAP_DESC
2680{
2681 D3D12_QUERY_HEAP_TYPE Type;
2682 UINT Count;
2683 UINT NodeMask;
2684} D3D12_QUERY_HEAP_DESC;
2685
2686typedef enum D3D12_QUERY_TYPE
2687{
2688 D3D12_QUERY_TYPE_OCCLUSION = 0,
2689 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
2690 D3D12_QUERY_TYPE_TIMESTAMP = 2,
2691 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
2692 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
2693 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
2694 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
2695 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
2696 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
2697 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
2698
2699} D3D12_QUERY_TYPE;
2700
2701typedef enum D3D12_PREDICATION_OP
2702{
2703 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
2704 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
2705} D3D12_PREDICATION_OP;
2706
2707typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
2708{
2709 UINT64 IAVertices;
2710 UINT64 IAPrimitives;
2711 UINT64 VSInvocations;
2712 UINT64 GSInvocations;
2713 UINT64 GSPrimitives;
2714 UINT64 CInvocations;
2715 UINT64 CPrimitives;
2716 UINT64 PSInvocations;
2717 UINT64 HSInvocations;
2718 UINT64 DSInvocations;
2719 UINT64 CSInvocations;
2720} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
2721
2722typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
2723{
2724 UINT64 IAVertices;
2725 UINT64 IAPrimitives;
2726 UINT64 VSInvocations;
2727 UINT64 GSInvocations;
2728 UINT64 GSPrimitives;
2729 UINT64 CInvocations;
2730 UINT64 CPrimitives;
2731 UINT64 PSInvocations;
2732 UINT64 HSInvocations;
2733 UINT64 DSInvocations;
2734 UINT64 CSInvocations;
2735 UINT64 ASInvocations;
2736 UINT64 MSInvocations;
2737 UINT64 MSPrimitives;
2738} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
2739
2740typedef struct D3D12_QUERY_DATA_SO_STATISTICS
2741{
2742 UINT64 NumPrimitivesWritten;
2743 UINT64 PrimitivesStorageNeeded;
2744} D3D12_QUERY_DATA_SO_STATISTICS;
2745
2746typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
2747{
2748 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2749 UINT64 SizeInBytes;
2750 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
2751} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
2752
2753typedef struct D3D12_DRAW_ARGUMENTS
2754{
2755 UINT VertexCountPerInstance;
2756 UINT InstanceCount;
2757 UINT StartVertexLocation;
2758 UINT StartInstanceLocation;
2759} D3D12_DRAW_ARGUMENTS;
2760
2761typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
2762{
2763 UINT IndexCountPerInstance;
2764 UINT InstanceCount;
2765 UINT StartIndexLocation;
2766 INT BaseVertexLocation;
2767 UINT StartInstanceLocation;
2768} D3D12_DRAW_INDEXED_ARGUMENTS;
2769
2770typedef struct D3D12_DISPATCH_ARGUMENTS
2771{
2772 UINT ThreadGroupCountX;
2773 UINT ThreadGroupCountY;
2774 UINT ThreadGroupCountZ;
2775} D3D12_DISPATCH_ARGUMENTS;
2776
2777typedef struct D3D12_VERTEX_BUFFER_VIEW
2778{
2779 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2780 UINT SizeInBytes;
2781 UINT StrideInBytes;
2782} D3D12_VERTEX_BUFFER_VIEW;
2783
2784typedef struct D3D12_INDEX_BUFFER_VIEW
2785{
2786 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2787 UINT SizeInBytes;
2788 DXGI_FORMAT Format;
2789} D3D12_INDEX_BUFFER_VIEW;
2790
2791typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
2792{
2793 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
2794 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
2795 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
2796 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
2797 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
2798 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
2799 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
2800 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
2801 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
2802 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
2803 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
2804} D3D12_INDIRECT_ARGUMENT_TYPE;
2805
2806typedef struct D3D12_INDIRECT_ARGUMENT_DESC
2807{
2808 D3D12_INDIRECT_ARGUMENT_TYPE Type;
2809
2810 union
2811 {
2812 struct
2813 {
2814 UINT Slot;
2815 } VertexBuffer;
2816
2817 struct
2818 {
2819 UINT RootParameterIndex;
2820 UINT DestOffsetIn32BitValues;
2821 UINT Num32BitValuesToSet;
2822 } Constant;
2823
2824 struct
2825 {
2826 UINT RootParameterIndex;
2827 } ConstantBufferView;
2828
2829 struct
2830 {
2831 UINT RootParameterIndex;
2832 } ShaderResourceView;
2833
2834 struct
2835 {
2836 UINT RootParameterIndex;
2837 } UnorderedAccessView;
2838 };
2839} D3D12_INDIRECT_ARGUMENT_DESC;
2840
2841typedef struct D3D12_COMMAND_SIGNATURE_DESC
2842{
2843 // The number of bytes between each drawing structure
2844 UINT ByteStride;
2845 UINT NumArgumentDescs;
2846 [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
2847 UINT NodeMask;
2848} D3D12_COMMAND_SIGNATURE_DESC;
2849
2850interface ID3D12Device;
2851
2852[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
2853interface ID3D12Object
2854 : IUnknown
2855{
2856 HRESULT GetPrivateData(
2857 [annotation("_In_")] REFGUID guid,
2858 [annotation("_Inout_")] UINT* pDataSize,
2859 [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
2860 HRESULT SetPrivateData(
2861 [annotation("_In_")] REFGUID guid,
2862 [annotation("_In_")] UINT DataSize,
2863 [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
2864 HRESULT SetPrivateDataInterface(
2865 [annotation("_In_")] REFGUID guid,
2866 [annotation("_In_opt_")] const IUnknown* pData );
2867 HRESULT SetName(
2868 [annotation("_In_z_")] LPCWSTR Name );
2869}
2870
2871[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
2872interface ID3D12DeviceChild
2873 : ID3D12Object
2874{
2875 HRESULT GetDevice(
2876 [in] REFIID riid,
2877 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
2878 );
2879}
2880
2881[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
2882interface ID3D12Pageable
2883 : ID3D12DeviceChild
2884{
2885}
2886
2887[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
2888interface ID3D12Heap
2889 : ID3D12Pageable
2890{
2891 D3D12_HEAP_DESC GetDesc();
2892}
2893
2894[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
2895interface ID3D12Resource
2896 : ID3D12Pageable
2897{
2898 HRESULT Map(
2899 UINT Subresource,
2900 [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
2901 [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
2902
2903 void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
2904
2905 D3D12_RESOURCE_DESC GetDesc();
2906
2907 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
2908
2909 HRESULT WriteToSubresource(
2910 UINT DstSubresource,
2911 [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
2912 [annotation("_In_")] const void* pSrcData,
2913 UINT SrcRowPitch,
2914 UINT SrcDepthPitch );
2915
2916 HRESULT ReadFromSubresource(
2917 [annotation("_Out_")] void* pDstData,
2918 UINT DstRowPitch,
2919 UINT DstDepthPitch,
2920 UINT SrcSubresource,
2921 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
2922
2923 HRESULT GetHeapProperties(
2924 [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
2925 [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
2926 );
2927}
2928
2929[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
2930interface ID3D12CommandAllocator
2931 : ID3D12Pageable
2932{
2933 HRESULT Reset();
2934}
2935
2936[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
2937interface ID3D12Fence
2938 : ID3D12Pageable
2939{
2940 UINT64 GetCompletedValue();
2941 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
2942 HRESULT Signal(UINT64 Value);
2943};
2944
2945[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
2946interface ID3D12Fence1
2947 : ID3D12Fence
2948{
2949 D3D12_FENCE_FLAGS GetCreationFlags();
2950};
2951
2952[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
2953interface ID3D12PipelineState
2954 : ID3D12Pageable
2955{
2956 HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
2957}
2958
2959[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
2960interface ID3D12DescriptorHeap
2961 : ID3D12Pageable
2962{
2963 D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
2964
2965 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
2966 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
2967}
2968
2969[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
2970interface ID3D12QueryHeap
2971 : ID3D12Pageable
2972{
2973};
2974
2975[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
2976interface ID3D12CommandSignature
2977 : ID3D12Pageable
2978{
2979};
2980
2981[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
2982interface ID3D12CommandList
2983 : ID3D12DeviceChild
2984{
2985 D3D12_COMMAND_LIST_TYPE GetType();
2986}
2987
2988// Superseded by ID3D12GraphicsCommandList1
2989[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
2990interface ID3D12GraphicsCommandList
2991 : ID3D12CommandList
2992{
2993 HRESULT Close();
2994
2995 HRESULT Reset(
2996 [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
2997 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
2998 );
2999
3000 void ClearState(
3001 [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
3002 );
3003
3004 void DrawInstanced(
3005 [annotation("_In_")] UINT VertexCountPerInstance,
3006 [annotation("_In_")] UINT InstanceCount,
3007 [annotation("_In_")] UINT StartVertexLocation,
3008 [annotation("_In_")] UINT StartInstanceLocation
3009 );
3010
3011 void DrawIndexedInstanced(
3012 [annotation("_In_")] UINT IndexCountPerInstance,
3013 [annotation("_In_")] UINT InstanceCount,
3014 [annotation("_In_")] UINT StartIndexLocation,
3015 [annotation("_In_")] INT BaseVertexLocation,
3016 [annotation("_In_")] UINT StartInstanceLocation
3017 );
3018
3019 void Dispatch(
3020 [annotation("_In_")] UINT ThreadGroupCountX,
3021 [annotation("_In_")] UINT ThreadGroupCountY,
3022 [annotation("_In_")] UINT ThreadGroupCountZ
3023 );
3024
3025 void CopyBufferRegion(
3026 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3027 UINT64 DstOffset,
3028 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3029 UINT64 SrcOffset,
3030 UINT64 NumBytes
3031 );
3032
3033 void CopyTextureRegion(
3034 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
3035 UINT DstX, UINT DstY, UINT DstZ,
3036 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
3037 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
3038 );
3039
3040 void CopyResource(
3041 [annotation("_In_")] ID3D12Resource* pDstResource,
3042 [annotation("_In_")] ID3D12Resource* pSrcResource
3043 );
3044
3045 void CopyTiles(
3046 [annotation("_In_")] ID3D12Resource* pTiledResource,
3047 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
3048 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
3049 [annotation("_In_")] ID3D12Resource* pBuffer,
3050 UINT64 BufferStartOffsetInBytes,
3051 D3D12_TILE_COPY_FLAGS Flags
3052 );
3053
3054 void ResolveSubresource(
3055 [annotation("_In_")] ID3D12Resource* pDstResource,
3056 [annotation("_In_")] UINT DstSubresource,
3057 [annotation("_In_")] ID3D12Resource* pSrcResource,
3058 [annotation("_In_")] UINT SrcSubresource,
3059 [annotation("_In_")] DXGI_FORMAT Format
3060 );
3061
3062 void IASetPrimitiveTopology(
3063 [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
3064 );
3065
3066 void RSSetViewports(
3067 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
3068 [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
3069 );
3070
3071 void RSSetScissorRects(
3072 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
3073 [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
3074 );
3075
3076 void OMSetBlendFactor(
3077 [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
3078 );
3079
3080 void OMSetStencilRef(
3081 [annotation("_In_")] UINT StencilRef
3082 );
3083
3084 void SetPipelineState(
3085 [annotation("_In_")] ID3D12PipelineState* pPipelineState
3086 );
3087
3088 void ResourceBarrier(
3089 [annotation("_In_")] UINT NumBarriers,
3090 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
3091 );
3092
3093 void ExecuteBundle(
3094 [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
3095 );
3096
3097 void SetDescriptorHeaps(
3098 [annotation("_In_")] UINT NumDescriptorHeaps,
3099 [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
3100 );
3101
3102 void SetComputeRootSignature(
3103 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3104 );
3105
3106 void SetGraphicsRootSignature(
3107 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3108 );
3109
3110 void SetComputeRootDescriptorTable(
3111 [annotation("_In_")] UINT RootParameterIndex,
3112 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3113 );
3114
3115 void SetGraphicsRootDescriptorTable(
3116 [annotation("_In_")] UINT RootParameterIndex,
3117 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3118 );
3119
3120 // Single constant
3121 void SetComputeRoot32BitConstant(
3122 [annotation("_In_")] UINT RootParameterIndex,
3123 [annotation("_In_")] UINT SrcData,
3124 [annotation("_In_")] UINT DestOffsetIn32BitValues
3125 );
3126
3127 void SetGraphicsRoot32BitConstant(
3128 [annotation("_In_")] UINT RootParameterIndex,
3129 [annotation("_In_")] UINT SrcData,
3130 [annotation("_In_")] UINT DestOffsetIn32BitValues
3131 );
3132
3133 // Group of constants
3134 void SetComputeRoot32BitConstants(
3135 [annotation("_In_")] UINT RootParameterIndex,
3136 [annotation("_In_")] UINT Num32BitValuesToSet,
3137 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3138 [annotation("_In_")] UINT DestOffsetIn32BitValues
3139 );
3140
3141 void SetGraphicsRoot32BitConstants(
3142 [annotation("_In_")] UINT RootParameterIndex,
3143 [annotation("_In_")] UINT Num32BitValuesToSet,
3144 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3145 [annotation("_In_")] UINT DestOffsetIn32BitValues
3146 );
3147
3148 // CBV
3149 void SetComputeRootConstantBufferView(
3150 [annotation("_In_")] UINT RootParameterIndex,
3151 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3152 );
3153
3154 void SetGraphicsRootConstantBufferView(
3155 [annotation("_In_")] UINT RootParameterIndex,
3156 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3157 );
3158
3159 // SRV
3160 void SetComputeRootShaderResourceView(
3161 [annotation("_In_")] UINT RootParameterIndex,
3162 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3163 );
3164
3165 void SetGraphicsRootShaderResourceView(
3166 [annotation("_In_")] UINT RootParameterIndex,
3167 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3168 );
3169
3170 // UAV
3171 void SetComputeRootUnorderedAccessView(
3172 [annotation("_In_")] UINT RootParameterIndex,
3173 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3174 );
3175
3176 void SetGraphicsRootUnorderedAccessView(
3177 [annotation("_In_")] UINT RootParameterIndex,
3178 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3179 );
3180
3181 void IASetIndexBuffer(
3182 [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
3183 );
3184
3185 void IASetVertexBuffers(
3186 [annotation("_In_")] UINT StartSlot,
3187 [annotation("_In_")] UINT NumViews,
3188 [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
3189 );
3190
3191 void SOSetTargets(
3192 [annotation("_In_")] UINT StartSlot,
3193 [annotation("_In_")] UINT NumViews,
3194 [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
3195 );
3196
3197 void OMSetRenderTargets(
3198 [annotation("_In_")] UINT NumRenderTargetDescriptors,
3199 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
3200 [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
3201 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
3202 );
3203
3204 void ClearDepthStencilView(
3205 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3206 [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
3207 [annotation("_In_")] FLOAT Depth,
3208 [annotation("_In_")] UINT8 Stencil,
3209 [annotation("_In_")] UINT NumRects,
3210 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3211 );
3212
3213 void ClearRenderTargetView(
3214 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3215 [annotation("_In_")] const FLOAT ColorRGBA[4],
3216 [annotation("_In_")] UINT NumRects,
3217 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3218 );
3219
3220 void ClearUnorderedAccessViewUint(
3221 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3222 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3223 [annotation("_In_")] ID3D12Resource* pResource,
3224 [annotation("_In_")] const UINT Values[4],
3225 [annotation("_In_")] UINT NumRects,
3226 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3227 );
3228
3229 void ClearUnorderedAccessViewFloat(
3230 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3231 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3232 [annotation("_In_")] ID3D12Resource* pResource,
3233 [annotation("_In_")] const FLOAT Values[4],
3234 [annotation("_In_")] UINT NumRects,
3235 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3236 );
3237
3238 void DiscardResource(
3239 [annotation("_In_")] ID3D12Resource* pResource,
3240 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
3241 );
3242
3243 void BeginQuery(
3244 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3245 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3246 [annotation("_In_")] UINT Index
3247 );
3248
3249 void EndQuery(
3250 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3251 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3252 [annotation("_In_")] UINT Index
3253 );
3254
3255 void ResolveQueryData(
3256 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3257 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3258 [annotation("_In_")] UINT StartIndex,
3259 [annotation("_In_")] UINT NumQueries,
3260 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
3261 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
3262 );
3263
3264 void SetPredication(
3265 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
3266 [annotation("_In_")] UINT64 AlignedBufferOffset,
3267 [annotation("_In_")] D3D12_PREDICATION_OP Operation
3268 );
3269
3270 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3271 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3272 void EndEvent();
3273
3274 void ExecuteIndirect(
3275 [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
3276 [annotation("_In_")] UINT MaxCommandCount,
3277 [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
3278 [annotation("_In_")] UINT64 ArgumentBufferOffset,
3279 [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
3280 [annotation("_In_")] UINT64 CountBufferOffset
3281 );
3282}
3283
3284[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
3285interface ID3D12GraphicsCommandList1
3286 : ID3D12GraphicsCommandList
3287{
3288 void AtomicCopyBufferUINT(
3289 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3290 UINT64 DstOffset,
3291 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3292 UINT64 SrcOffset,
3293 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3294 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3295 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3296 );
3297
3298 // UINT64 is only valid on UMA architectures
3299 void AtomicCopyBufferUINT64(
3300 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3301 UINT64 DstOffset,
3302 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3303 UINT64 SrcOffset,
3304 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3305 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3306 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3307 );
3308
3309 void OMSetDepthBounds(
3310 [annotation("_In_")] FLOAT Min,
3311 [annotation("_In_")] FLOAT Max
3312 );
3313
3314 void SetSamplePositions(
3315 [annotation("_In_")] UINT NumSamplesPerPixel,
3316 [annotation("_In_")] UINT NumPixels,
3317 [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
3318 );
3319
3320 void ResolveSubresourceRegion(
3321 [annotation("_In_")] ID3D12Resource* pDstResource,
3322 [annotation("_In_")] UINT DstSubresource,
3323 [annotation("_In_")] UINT DstX,
3324 [annotation("_In_")] UINT DstY,
3325 [annotation("_In_")] ID3D12Resource* pSrcResource,
3326 [annotation("_In_")] UINT SrcSubresource,
3327 [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
3328 [annotation("_In_")] DXGI_FORMAT Format,
3329 [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
3330 );
3331
3332 void SetViewInstanceMask(
3333 [annotation("_In_")] UINT Mask
3334 );
3335
3336}
3337
3338typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
3339{
3340 D3D12_GPU_VIRTUAL_ADDRESS Dest;
3341 UINT32 Value;
3342} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
3343
3344typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
3345{
3346 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
3347 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
3348 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
3349
3350} D3D12_WRITEBUFFERIMMEDIATE_MODE;
3351
3352[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
3353interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
3354{
3355 void WriteBufferImmediate(
3356 UINT Count,
3357 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3358 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
3359 );
3360}
3361
3362[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
3363interface ID3D12CommandQueue
3364 : ID3D12Pageable
3365{
3366 void UpdateTileMappings(
3367 [annotation("_In_")] ID3D12Resource* pResource,
3368 UINT NumResourceRegions,
3369 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
3370 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
3371 [annotation("_In_opt_")] ID3D12Heap* pHeap,
3372 UINT NumRanges,
3373 [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
3374 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
3375 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
3376 D3D12_TILE_MAPPING_FLAGS Flags );
3377
3378 void CopyTileMappings(
3379 [annotation("_In_")] ID3D12Resource* pDstResource,
3380 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
3381 [annotation("_In_")] ID3D12Resource* pSrcResource,
3382 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
3383 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
3384 D3D12_TILE_MAPPING_FLAGS Flags );
3385
3386 void ExecuteCommandLists(
3387 [annotation("_In_")] UINT NumCommandLists,
3388 [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
3389 );
3390
3391 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3392 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3393 void EndEvent();
3394
3395 HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
3396 HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
3397
3398 HRESULT GetTimestampFrequency(
3399 [annotation("_Out_")] UINT64* pFrequency
3400 );
3401
3402 HRESULT GetClockCalibration(
3403 [annotation("_Out_")] UINT64* pGpuTimestamp,
3404 [annotation("_Out_")] UINT64* pCpuTimestamp
3405 );
3406
3407 D3D12_COMMAND_QUEUE_DESC GetDesc();
3408}
3409
3410//--------------------------------------------------------------------------------------------------------
3411// The system LUID struct isn't defined in wtypes, so we repeat it here just
3412// for the MIDL compiler.
3413cpp_quote("#ifdef __midl")
3414cpp_quote("#ifndef LUID_DEFINED")
3415cpp_quote("#define LUID_DEFINED 1")
3416typedef struct __LUID {
3417 DWORD LowPart;
3418 LONG HighPart;
3419} LUID, *PLUID;
3420cpp_quote("#endif")
3421cpp_quote("#endif")
3422
3423[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
3424interface ID3D12Device
3425 : ID3D12Object
3426{
3427 UINT GetNodeCount();
3428
3429 HRESULT CreateCommandQueue(
3430 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
3431 [in] REFIID riid, // Expected: ID3D12CommandQueue
3432 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
3433 );
3434
3435 HRESULT CreateCommandAllocator(
3436 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3437 [in] REFIID riid, // Expected: ID3D12CommandAllocator
3438 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
3439 );
3440
3441 HRESULT CreateGraphicsPipelineState(
3442 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3443 [in] REFIID riid, // Expected: ID3D12PipelineState
3444 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3445 );
3446
3447 HRESULT CreateComputePipelineState(
3448 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3449 [in] REFIID riid, // Expected: ID3D12PipelineState
3450 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3451 );
3452
3453 HRESULT CreateCommandList(
3454 [annotation("_In_")] UINT nodeMask,
3455 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3456 [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
3457 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
3458 [in] REFIID riid, // Expected: ID3D12CommandList
3459 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3460 );
3461
3462 HRESULT CheckFeatureSupport(
3463 D3D12_FEATURE Feature,
3464 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
3465 UINT FeatureSupportDataSize
3466 );
3467
3468 HRESULT CreateDescriptorHeap(
3469 [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
3470 [in] REFIID riid, // Expected ID3D12DescriptorHeap
3471 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
3472
3473 UINT GetDescriptorHandleIncrementSize(
3474 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
3475
3476 HRESULT CreateRootSignature(
3477 [annotation("_In_")] UINT nodeMask,
3478 [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
3479 [annotation("_In_")] SIZE_T blobLengthInBytes,
3480 [in] REFIID riid, // Expected ID3D12RootSignature
3481 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3482
3483 void CreateConstantBufferView(
3484 [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
3485 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3486
3487 void CreateShaderResourceView(
3488 [annotation("_In_opt_")] ID3D12Resource* pResource,
3489 [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
3490 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3491
3492 void CreateUnorderedAccessView(
3493 [annotation("_In_opt_")] ID3D12Resource* pResource,
3494 [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
3495 [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
3496 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3497
3498 void CreateRenderTargetView(
3499 [annotation("_In_opt_")] ID3D12Resource* pResource,
3500 [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
3501 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3502
3503 void CreateDepthStencilView(
3504 [annotation("_In_opt_")] ID3D12Resource* pResource,
3505 [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
3506 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3507
3508 void CreateSampler(
3509 [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
3510 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3511
3512 void CopyDescriptors(
3513 [annotation("_In_")] UINT NumDestDescriptorRanges,
3514 [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
3515 [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
3516 [annotation("_In_")] UINT NumSrcDescriptorRanges,
3517 [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
3518 [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
3519 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3520
3521 void CopyDescriptorsSimple(
3522 [annotation("_In_")] UINT NumDescriptors,
3523 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
3524 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
3525 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3526
3527 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
3528 [annotation("_In_")] UINT visibleMask,
3529 [annotation("_In_")] UINT numResourceDescs,
3530 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
3531
3532 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
3533 [annotation("_In_")] UINT nodeMask,
3534 D3D12_HEAP_TYPE heapType
3535 );
3536
3537 HRESULT CreateCommittedResource(
3538 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
3539 D3D12_HEAP_FLAGS HeapFlags,
3540 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3541 D3D12_RESOURCE_STATES InitialResourceState,
3542 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3543 [in] REFIID riidResource, // Expected: ID3D12Resource*
3544 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
3545
3546 HRESULT CreateHeap(
3547 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
3548 [in] REFIID riid, // Expected: ID3D12Heap*
3549 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
3550
3551 HRESULT CreatePlacedResource(
3552 [annotation("_In_")] ID3D12Heap* pHeap,
3553 UINT64 HeapOffset,
3554 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3555 D3D12_RESOURCE_STATES InitialState,
3556 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3557 [in] REFIID riid, // Expected: ID3D12Resource*
3558 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
3559
3560 HRESULT CreateReservedResource(
3561 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3562 D3D12_RESOURCE_STATES InitialState,
3563 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3564 [in] REFIID riid, // Expected: ID3D12Resource*
3565 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
3566
3567 HRESULT CreateSharedHandle(
3568 [annotation("_In_")] ID3D12DeviceChild* pObject,
3569 [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
3570 DWORD Access,
3571 [annotation("_In_opt_")] LPCWSTR Name,
3572 [annotation("_Out_")] HANDLE* pHandle );
3573
3574 HRESULT OpenSharedHandle(
3575 [annotation("_In_")] HANDLE NTHandle,
3576 [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
3577 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
3578
3579 HRESULT OpenSharedHandleByName(
3580 [annotation("_In_")] LPCWSTR Name,
3581 DWORD Access,
3582 [out, annotation("_Out_")] HANDLE* pNTHandle );
3583
3584 HRESULT MakeResident(
3585 UINT NumObjects,
3586 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
3587
3588 HRESULT Evict(
3589 UINT NumObjects,
3590 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
3591
3592 HRESULT CreateFence(
3593 UINT64 InitialValue,
3594 D3D12_FENCE_FLAGS Flags,
3595 [in] REFIID riid, // Expected: ID3D12Fence
3596 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
3597
3598 HRESULT GetDeviceRemovedReason();
3599
3600 void GetCopyableFootprints(
3601 [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
3602 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
3603 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
3604 UINT64 BaseOffset,
3605 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
3606 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
3607 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
3608 [annotation("_Out_opt_")] UINT64* pTotalBytes );
3609
3610 HRESULT CreateQueryHeap(
3611 [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
3612 [in] REFIID riid, // Expected: ID3D12QueryHeap
3613 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
3614 );
3615
3616 HRESULT SetStablePowerState(BOOL Enable);
3617
3618 HRESULT CreateCommandSignature(
3619 [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
3620 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
3621 [in] REFIID riid, // Expected: ID3D12CommandSignature
3622 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
3623 );
3624
3625 void GetResourceTiling(
3626 [annotation("_In_")] ID3D12Resource* pTiledResource,
3627 [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
3628 [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
3629 [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
3630 [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
3631 [annotation("_In_")] UINT FirstSubresourceTilingToGet,
3632 [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
3633 );
3634
3635 LUID GetAdapterLuid();
3636}
3637
3638// D3D12 Revision 1
3639[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
3640interface ID3D12PipelineLibrary
3641 : ID3D12DeviceChild
3642{
3643 HRESULT StorePipeline(
3644 [annotation("_In_opt_")] LPCWSTR pName,
3645 [annotation("_In_")] ID3D12PipelineState *pPipeline
3646 );
3647
3648 HRESULT LoadGraphicsPipeline(
3649 [annotation("_In_")] LPCWSTR pName,
3650 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3651 [in] REFIID riid, // Expected: ID3D12PipelineState
3652 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3653 );
3654
3655 HRESULT LoadComputePipeline(
3656 [annotation("_In_")] LPCWSTR pName,
3657 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3658 [in] REFIID riid, // Expected: ID3D12PipelineState
3659 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3660 );
3661
3662 SIZE_T GetSerializedSize();
3663
3664 HRESULT Serialize(
3665 [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
3666 SIZE_T DataSizeInBytes
3667 );
3668}
3669
3670// Pipeline State v2
3671[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
3672interface ID3D12PipelineLibrary1
3673 : ID3D12PipelineLibrary
3674{
3675 HRESULT LoadPipeline(
3676 [annotation("_In_")] LPCWSTR pName,
3677 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
3678 [in] REFIID riid, // Expected: ID3D12PipelineState
3679 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3680 );
3681}
3682
3683typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
3684{
3685 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
3686 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
3687
3688 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
3689} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
3690cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );" )
3691
3692// Applications may use the whole value range of UINT for a priority.
3693// These names are merely semantic suggestions.
3694typedef enum D3D12_RESIDENCY_PRIORITY
3695{
3696 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
3697 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
3698 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
3699 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
3700 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
3701} D3D12_RESIDENCY_PRIORITY;
3702
3703[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
3704interface ID3D12Device1
3705 : ID3D12Device
3706{
3707 HRESULT CreatePipelineLibrary(
3708 [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
3709 SIZE_T BlobLength,
3710 [in] REFIID riid, // Expected: ID3D12PipelineLibrary
3711 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
3712 );
3713
3714 HRESULT SetEventOnMultipleFenceCompletion(
3715 [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
3716 [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
3717 UINT NumFences,
3718 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
3719 HANDLE hEvent
3720 );
3721
3722 HRESULT SetResidencyPriority(
3723 UINT NumObjects,
3724 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
3725 [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
3726}
3727
3728[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
3729interface ID3D12Device2
3730 : ID3D12Device1
3731{
3732 HRESULT CreatePipelineState(
3733 [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
3734 [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
3735 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3736 );
3737}
3738
3739typedef enum D3D12_RESIDENCY_FLAGS
3740{
3741 D3D12_RESIDENCY_FLAG_NONE = 0x0,
3742 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
3743} D3D12_RESIDENCY_FLAGS;
3744cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS );" )
3745
3746[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
3747interface ID3D12Device3
3748 : ID3D12Device2
3749{
3750 HRESULT OpenExistingHeapFromAddress(
3751 [annotation("_In_")] const void* pAddress,
3752 [in] REFIID riid, // Expected: ID3D12Heap
3753 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
3754 );
3755 HRESULT OpenExistingHeapFromFileMapping(
3756 [annotation("_In_")] HANDLE hFileMapping,
3757 [in] REFIID riid, // Expected: ID3D12Heap
3758 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
3759 );
3760 HRESULT EnqueueMakeResident(
3761 D3D12_RESIDENCY_FLAGS Flags,
3762 UINT NumObjects,
3763 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
3764 [annotation("_In_")] ID3D12Fence* pFenceToSignal,
3765 UINT64 FenceValueToSignal
3766 );
3767}
3768
3769typedef enum D3D12_COMMAND_LIST_FLAGS
3770{
3771 D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
3772} D3D12_COMMAND_LIST_FLAGS;
3773cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS );")
3774
3775
3776typedef enum D3D12_COMMAND_POOL_FLAGS
3777{
3778 D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
3779
3780} D3D12_COMMAND_POOL_FLAGS;
3781cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS );")
3782
3783typedef enum D3D12_COMMAND_RECORDER_FLAGS
3784{
3785 D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
3786
3787} D3D12_COMMAND_RECORDER_FLAGS;
3788cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS );")
3789
3790typedef enum D3D12_PROTECTED_SESSION_STATUS
3791{
3792 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
3793 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
3794} D3D12_PROTECTED_SESSION_STATUS;
3795
3796[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
3797interface ID3D12ProtectedSession
3798 : ID3D12DeviceChild
3799{
3800 HRESULT GetStatusFence(
3801 [in] REFIID riid,
3802 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
3803
3804 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
3805}
3806
3807typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
3808{
3809 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
3810 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
3811
3812} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
3813cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS );")
3814
3815typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
3816{
3817 UINT NodeIndex; // input
3818 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
3819} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
3820
3821typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
3822{
3823 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
3824
3825} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
3826cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS );")
3827
3828typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
3829{
3830 UINT NodeMask;
3831 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
3832} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
3833
3834[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
3835interface ID3D12ProtectedResourceSession
3836 : ID3D12ProtectedSession
3837{
3838 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
3839}
3840
3841[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
3842interface ID3D12Device4
3843 : ID3D12Device3
3844{
3845 HRESULT CreateCommandList1(
3846 [annotation("_In_")] UINT nodeMask,
3847 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3848 [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
3849 [in] REFIID riid, // Expected: ID3D12CommandList
3850 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3851 );
3852
3853 HRESULT CreateProtectedResourceSession(
3854 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
3855 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
3856 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
3857 );
3858
3859 HRESULT CreateCommittedResource1(
3860 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
3861 D3D12_HEAP_FLAGS HeapFlags,
3862 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3863 D3D12_RESOURCE_STATES InitialResourceState,
3864 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3865 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3866 [in] REFIID riidResource, // Expected: ID3D12Resource1*
3867 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
3868 );
3869
3870 HRESULT CreateHeap1(
3871 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
3872 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3873 [in] REFIID riid, // Expected: ID3D12Heap1*
3874 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
3875 );
3876
3877 HRESULT CreateReservedResource1(
3878 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
3879 D3D12_RESOURCE_STATES InitialState,
3880 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
3881 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
3882 [in] REFIID riid, // Expected: ID3D12Resource1*
3883 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
3884 );
3885
3886 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
3887 UINT visibleMask,
3888 UINT numResourceDescs,
3889 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
3890 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
3891 );
3892}
3893
3894typedef enum D3D12_LIFETIME_STATE
3895{
3896 D3D12_LIFETIME_STATE_IN_USE,
3897 D3D12_LIFETIME_STATE_NOT_IN_USE,
3898} D3D12_LIFETIME_STATE;
3899
3900interface ID3D12LifetimeTracker;
3901
3902[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
3903interface ID3D12LifetimeOwner : IUnknown
3904{
3905 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
3906}
3907
3908[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
3909interface ID3D12SwapChainAssistant
3910 : IUnknown
3911{
3912 LUID GetLUID();
3913 HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
3914 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
3915 REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
3916 HRESULT InsertImplicitSync();
3917}
3918
3919[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
3920interface ID3D12LifetimeTracker
3921 : ID3D12DeviceChild
3922{
3923 HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
3924}
3925
3926typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
3927{
3928 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
3929 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
3930 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
3931 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
3932 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
3933} D3D12_META_COMMAND_PARAMETER_TYPE;
3934
3935typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
3936{
3937 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
3938 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
3939} D3D12_META_COMMAND_PARAMETER_FLAGS;
3940cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS );")
3941
3942typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
3943{
3944 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
3945 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3946 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3947} D3D12_META_COMMAND_PARAMETER_STAGE;
3948
3949typedef struct D3D12_META_COMMAND_PARAMETER_DESC
3950{
3951 LPCWSTR Name;
3952 D3D12_META_COMMAND_PARAMETER_TYPE Type;
3953 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
3954 D3D12_RESOURCE_STATES RequiredResourceState;
3955 UINT StructureOffset;
3956} D3D12_META_COMMAND_PARAMETER_DESC;
3957
3958typedef enum D3D12_GRAPHICS_STATES
3959{
3960 D3D12_GRAPHICS_STATE_NONE = 0,
3961 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
3962 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
3963 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
3964 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
3965 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
3966 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
3967 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
3968 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
3969 D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
3970 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
3971 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
3972 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
3973 D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
3974 D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
3975 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
3976 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
3977 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
3978
3979} D3D12_GRAPHICS_STATES;
3980cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES );")
3981
3982typedef struct D3D12_META_COMMAND_DESC
3983{
3984 GUID Id;
3985 LPCWSTR Name;
3986 D3D12_GRAPHICS_STATES InitializationDirtyState;
3987 D3D12_GRAPHICS_STATES ExecutionDirtyState;
3988} D3D12_META_COMMAND_DESC;
3989
3990[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
3991interface ID3D12StateObject
3992 : ID3D12Pageable
3993{
3994}
3995
3996[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
3997interface ID3D12StateObjectProperties
3998 : IUnknown
3999{
4000 void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
4001 UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
4002 UINT64 GetPipelineStackSize();
4003 void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
4004}
4005
4006typedef enum D3D12_STATE_SUBOBJECT_TYPE
4007{
4008 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
4009 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
4010 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
4011 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
4012 // 4 unused
4013 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
4014 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
4015 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4016 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4017 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
4018 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
4019 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
4020 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
4021 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
4022} D3D12_STATE_SUBOBJECT_TYPE;
4023
4024typedef struct D3D12_STATE_SUBOBJECT
4025{
4026 D3D12_STATE_SUBOBJECT_TYPE Type;
4027 const void* pDesc;
4028} D3D12_STATE_SUBOBJECT;
4029
4030typedef enum D3D12_STATE_OBJECT_FLAGS
4031{
4032 D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
4033 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
4034 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
4035 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
4036} D3D12_STATE_OBJECT_FLAGS;
4037cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS );")
4038
4039typedef struct D3D12_STATE_OBJECT_CONFIG
4040{
4041 D3D12_STATE_OBJECT_FLAGS Flags;
4042} D3D12_STATE_OBJECT_CONFIG;
4043
4044typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
4045{
4046 ID3D12RootSignature* pGlobalRootSignature;
4047} D3D12_GLOBAL_ROOT_SIGNATURE;
4048
4049typedef struct D3D12_LOCAL_ROOT_SIGNATURE
4050{
4051 ID3D12RootSignature* pLocalRootSignature;
4052} D3D12_LOCAL_ROOT_SIGNATURE;
4053
4054typedef struct D3D12_NODE_MASK
4055{
4056 UINT NodeMask;
4057} D3D12_NODE_MASK;
4058
4059typedef enum D3D12_EXPORT_FLAGS
4060{
4061 D3D12_EXPORT_FLAG_NONE = 0x0,
4062} D3D12_EXPORT_FLAGS;
4063cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS );")
4064
4065typedef struct D3D12_EXPORT_DESC
4066{
4067 LPCWSTR Name;
4068 [annotation("_In_opt_")] LPCWSTR ExportToRename;
4069 D3D12_EXPORT_FLAGS Flags;
4070} D3D12_EXPORT_DESC;
4071
4072typedef struct D3D12_DXIL_LIBRARY_DESC
4073{
4074 D3D12_SHADER_BYTECODE DXILLibrary;
4075 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4076 [annotation("_In_reads_(NumExports)")] D3D12_EXPORT_DESC* pExports;
4077} D3D12_DXIL_LIBRARY_DESC;
4078
4079typedef struct D3D12_EXISTING_COLLECTION_DESC
4080{
4081 ID3D12StateObject* pExistingCollection;
4082 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4083 [annotation("_In_reads_(NumExports)")] D3D12_EXPORT_DESC* pExports;
4084} D3D12_EXISTING_COLLECTION_DESC;
4085
4086typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4087{
4088 const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
4089 UINT NumExports;
4090 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4091} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4092
4093typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4094{
4095 LPCWSTR SubobjectToAssociate;
4096 UINT NumExports;
4097 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4098} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4099
4100typedef enum D3D12_HIT_GROUP_TYPE
4101{
4102 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
4103 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
4104} D3D12_HIT_GROUP_TYPE;
4105
4106typedef struct D3D12_HIT_GROUP_DESC
4107{
4108 LPCWSTR HitGroupExport;
4109 D3D12_HIT_GROUP_TYPE Type;
4110 [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
4111 [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
4112 [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
4113} D3D12_HIT_GROUP_DESC;
4114
4115typedef struct D3D12_RAYTRACING_SHADER_CONFIG
4116{
4117 UINT MaxPayloadSizeInBytes;
4118 UINT MaxAttributeSizeInBytes;
4119} D3D12_RAYTRACING_SHADER_CONFIG;
4120
4121typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
4122{
4123 UINT MaxTraceRecursionDepth;
4124} D3D12_RAYTRACING_PIPELINE_CONFIG;
4125
4126typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
4127{
4128 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
4129 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
4130 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4131} D3D12_RAYTRACING_PIPELINE_FLAGS;
4132cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS );")
4133
4134typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
4135{
4136 UINT MaxTraceRecursionDepth;
4137 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
4138} D3D12_RAYTRACING_PIPELINE_CONFIG1;
4139
4140typedef enum D3D12_STATE_OBJECT_TYPE
4141{
4142 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
4143 // D3D12_STATE_OBJECT_TYPE_COMPUTE_PIPELINE = 1,
4144 // D3D12_STATE_OBJECT_TYPE_GRAPHICS_PIPELINE = 2,
4145 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
4146} D3D12_STATE_OBJECT_TYPE;
4147
4148typedef struct D3D12_STATE_OBJECT_DESC
4149{
4150 D3D12_STATE_OBJECT_TYPE Type;
4151 UINT NumSubobjects;
4152 [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
4153} D3D12_STATE_OBJECT_DESC;
4154
4155typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
4156{
4157 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
4158 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
4159 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
4160} D3D12_RAYTRACING_GEOMETRY_FLAGS;
4161cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS );")
4162
4163typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
4164{
4165 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
4166 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
4167} D3D12_RAYTRACING_GEOMETRY_TYPE;
4168
4169typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
4170{
4171 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
4172 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
4173 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
4174 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
4175 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
4176} D3D12_RAYTRACING_INSTANCE_FLAGS;
4177cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS );")
4178
4179typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
4180{
4181 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4182 UINT64 StrideInBytes;
4183} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
4184
4185typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
4186{
4187 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4188 UINT64 SizeInBytes;
4189} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
4190
4191typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
4192{
4193 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4194 UINT64 SizeInBytes;
4195 UINT64 StrideInBytes;
4196} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
4197
4198typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
4199{
4200 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
4201 DXGI_FORMAT IndexFormat;
4202 DXGI_FORMAT VertexFormat;
4203 UINT IndexCount;
4204 UINT VertexCount;
4205 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
4206 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
4207} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
4208
4209typedef struct D3D12_RAYTRACING_AABB
4210{
4211 FLOAT MinX;
4212 FLOAT MinY;
4213 FLOAT MinZ;
4214 FLOAT MaxX;
4215 FLOAT MaxY;
4216 FLOAT MaxZ;
4217} D3D12_RAYTRACING_AABB;
4218
4219typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
4220{
4221 UINT64 AABBCount;
4222 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
4223} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
4224
4225typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
4226{
4227 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
4228 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
4229 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
4230 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
4231 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
4232 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
4233 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
4234} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
4235cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS );")
4236
4237typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
4238{
4239 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
4240 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
4241 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
4242 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
4243 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
4244} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
4245
4246typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
4247{
4248 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
4249 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
4250} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
4251
4252typedef enum D3D12_ELEMENTS_LAYOUT
4253{
4254 D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
4255 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
4256} D3D12_ELEMENTS_LAYOUT;
4257
4258typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
4259{
4260 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
4261 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
4262 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
4263 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
4264} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
4265
4266typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
4267{
4268 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
4269 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
4270} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
4271
4272typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
4273{
4274 UINT64 CompactedSizeInBytes;
4275} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
4276
4277typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
4278{
4279 UINT64 DecodedSizeInBytes;
4280} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
4281
4282typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
4283{
4284 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
4285 UINT NumDescs;
4286} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
4287cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
4288cpp_quote("// depending on Type field, NumDescs above is followed by either:")
4289cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
4290cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
4291cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
4292cpp_quote("")
4293
4294typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
4295{
4296 UINT64 SerializedSizeInBytes;
4297 UINT64 NumBottomLevelAccelerationStructurePointers;
4298} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
4299
4300typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
4301{
4302 GUID DriverOpaqueGUID;
4303 BYTE DriverOpaqueVersioningData[16];
4304} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
4305
4306typedef enum D3D12_SERIALIZED_DATA_TYPE
4307{
4308 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
4309} D3D12_SERIALIZED_DATA_TYPE;
4310
4311typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
4312{
4313 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
4314 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
4315 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
4316 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
4317 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
4318} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
4319
4320typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
4321{
4322 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
4323 UINT64 SerializedSizeInBytesIncludingHeader;
4324 UINT64 DeserializedSizeInBytes;
4325 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
4326} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
4327
4328typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
4329{
4330 UINT64 CurrentSizeInBytes;
4331} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
4332
4333typedef struct D3D12_RAYTRACING_INSTANCE_DESC
4334{
4335 FLOAT Transform[3][4];
4336 UINT InstanceID : 24;
4337 UINT InstanceMask : 8;
4338 UINT InstanceContributionToHitGroupIndex : 24;
4339 UINT Flags : 8;
4340 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
4341} D3D12_RAYTRACING_INSTANCE_DESC;
4342
4343typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
4344{
4345 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
4346 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
4347 union
4348 {
4349 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
4350 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
4351 };
4352} D3D12_RAYTRACING_GEOMETRY_DESC;
4353
4354typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
4355{
4356 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
4357 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
4358 UINT NumDescs;
4359 D3D12_ELEMENTS_LAYOUT DescsLayout;
4360 union
4361 {
4362 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
4363 const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
4364 const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
4365 };
4366} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
4367
4368typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
4369{
4370 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
4371 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
4372 [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
4373 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
4374} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
4375
4376typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
4377{
4378 UINT64 ResultDataMaxSizeInBytes;
4379 UINT64 ScratchDataSizeInBytes;
4380 UINT64 UpdateScratchDataSizeInBytes;
4381} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
4382
4383typedef enum D3D12_RAY_FLAGS
4384{
4385 D3D12_RAY_FLAG_NONE = 0x00,
4386 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
4387 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
4388 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
4389 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
4390 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
4391 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
4392 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
4393 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
4394 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
4395 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4396} D3D12_RAY_FLAGS;
4397cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS );" )
4398
4399typedef enum D3D12_HIT_KIND
4400{
4401 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
4402 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
4403} D3D12_HIT_KIND;
4404
4405[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
4406interface ID3D12Device5
4407 : ID3D12Device4
4408{
4409 HRESULT CreateLifetimeTracker(
4410 [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
4411 [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
4412 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
4413 );
4414
4415 void RemoveDevice();
4416
4417 HRESULT EnumerateMetaCommands(
4418 [annotation("_Inout_")] UINT* pNumMetaCommands,
4419 [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
4420 );
4421
4422 HRESULT EnumerateMetaCommandParameters(
4423 [annotation("_In_")] REFGUID CommandId,
4424 [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
4425 [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
4426 [annotation("_Inout_")] UINT* pParameterCount,
4427 [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
4428 );
4429
4430 HRESULT CreateMetaCommand(
4431 [annotation("_In_")] REFGUID CommandId,
4432 [annotation("_In_")] UINT NodeMask,
4433 [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
4434 [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
4435 [in] REFIID riid,
4436 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
4437 );
4438
4439 HRESULT CreateStateObject(
4440 [in] const D3D12_STATE_OBJECT_DESC* pDesc,
4441 [in] REFIID riid, // ID3D12StateObject
4442 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
4443 );
4444
4445 void GetRaytracingAccelerationStructurePrebuildInfo(
4446 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
4447 [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
4448 );
4449
4450 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
4451 [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
4452 [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
4453}
4454
4455
4456typedef enum D3D12_AUTO_BREADCRUMB_OP
4457{
4458 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
4459 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
4460 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
4461 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
4462 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
4463 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
4464 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
4465 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
4466 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
4467 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
4468 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
4469 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
4470 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
4471 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
4472 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
4473 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
4474 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
4475 D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
4476 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
4477 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
4478 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
4479 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
4480 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
4481 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
4482 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
4483 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
4484 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
4485 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
4486 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
4487 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
4488 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
4489 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
4490 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
4491 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
4492 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
4493 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
4494 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
4495 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
4496 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
4497 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
4498 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
4499 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
4500 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
4501 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
4502 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44,
4503} D3D12_AUTO_BREADCRUMB_OP;
4504
4505typedef struct D3D12_AUTO_BREADCRUMB_NODE
4506{
4507 const char *pCommandListDebugNameA;
4508 const wchar_t *pCommandListDebugNameW;
4509 const char *pCommandQueueDebugNameA;
4510 const wchar_t *pCommandQueueDebugNameW;
4511 ID3D12GraphicsCommandList *pCommandList;
4512 ID3D12CommandQueue *pCommandQueue;
4513 UINT32 BreadcrumbCount;
4514 const UINT32 *pLastBreadcrumbValue;
4515 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
4516 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
4517} D3D12_AUTO_BREADCRUMB_NODE;
4518
4519typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
4520{
4521 UINT BreadcrumbIndex;
4522 const wchar_t *pContextString;
4523} D3D12_DRED_BREADCRUMB_CONTEXT;
4524
4525// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
4526typedef struct D3D12_AUTO_BREADCRUMB_NODE1
4527{
4528 const char *pCommandListDebugNameA;
4529 const wchar_t *pCommandListDebugNameW;
4530 const char *pCommandQueueDebugNameA;
4531 const wchar_t *pCommandQueueDebugNameW;
4532 ID3D12GraphicsCommandList *pCommandList;
4533 ID3D12CommandQueue *pCommandQueue;
4534 UINT BreadcrumbCount;
4535 const UINT *pLastBreadcrumbValue;
4536 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
4537 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
4538 UINT BreadcrumbContextsCount;
4539 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
4540} D3D12_AUTO_BREADCRUMB_NODE1;
4541
4542// D3D12_DRED_VERSION
4543typedef enum D3D12_DRED_VERSION
4544{
4545 D3D12_DRED_VERSION_1_0 = 0x1,
4546 D3D12_DRED_VERSION_1_1 = 0x2,
4547 D3D12_DRED_VERSION_1_2 = 0x3,
4548 D3D12_DRED_VERSION_1_3 = 0x4,
4549} D3D12_DRED_VERSION;
4550
4551typedef enum D3D12_DRED_FLAGS
4552{
4553 D3D12_DRED_FLAG_NONE = 0,
4554 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
4555 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
4556} D3D12_DRED_FLAGS;
4557cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS );")
4558
4559typedef enum D3D12_DRED_ENABLEMENT
4560{
4561 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
4562 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
4563 D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
4564} D3D12_DRED_ENABLEMENT;
4565
4566typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
4567{
4568 [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
4569 [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
4570} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
4571
4572typedef enum D3D12_DRED_ALLOCATION_TYPE
4573{
4574 // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
4575 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
4576 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
4577 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
4578 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
4579 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
4580 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
4581 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
4582 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
4583 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
4584 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
4585 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
4586 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
4587 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
4588 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
4589 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
4590 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
4591 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
4592 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
4593 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
4594 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
4595 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
4596 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
4597 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
4598 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
4599 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
4600 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
4601 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
4602 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
4603
4604
4605 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
4606} D3D12_DRED_ALLOCATION_TYPE;
4607
4608typedef struct D3D12_DRED_ALLOCATION_NODE
4609{
4610 const char *ObjectNameA;
4611 const wchar_t *ObjectNameW;
4612 D3D12_DRED_ALLOCATION_TYPE AllocationType;
4613 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
4614} D3D12_DRED_ALLOCATION_NODE;
4615
4616typedef struct D3D12_DRED_ALLOCATION_NODE1
4617{
4618 const char *ObjectNameA;
4619 const wchar_t *ObjectNameW;
4620 D3D12_DRED_ALLOCATION_TYPE AllocationType;
4621 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
4622 const IUnknown *pObject;
4623} D3D12_DRED_ALLOCATION_NODE1;
4624
4625typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
4626{
4627 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
4628} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
4629
4630typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
4631{
4632 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
4633} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
4634
4635typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
4636{
4637 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4638 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
4639 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
4640} D3D12_DRED_PAGE_FAULT_OUTPUT;
4641
4642typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
4643{
4644 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4645 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
4646 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
4647} D3D12_DRED_PAGE_FAULT_OUTPUT1;
4648
4649typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
4650{
4651 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
4652} D3D12_DRED_PAGE_FAULT_FLAGS;
4653cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS );")
4654
4655typedef enum D3D12_DRED_DEVICE_STATE
4656{
4657 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
4658 D3D12_DRED_DEVICE_STATE_HUNG = 3,
4659 D3D12_DRED_DEVICE_STATE_FAULT = 6,
4660 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
4661} D3D12_DRED_DEVICE_STATE;
4662
4663typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
4664{
4665 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
4666 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
4667 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
4668 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
4669
4670} D3D12_DRED_PAGE_FAULT_OUTPUT2;
4671
4672typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
4673{
4674 HRESULT DeviceRemovedReason;
4675 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
4676 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
4677} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
4678
4679typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
4680{
4681 HRESULT DeviceRemovedReason;
4682 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
4683 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
4684} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
4685
4686typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
4687{
4688 HRESULT DeviceRemovedReason;
4689 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
4690 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
4691 D3D12_DRED_DEVICE_STATE DeviceState;
4692} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
4693
4694typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
4695{
4696 D3D12_DRED_VERSION Version; // Version of the DRED data
4697 union
4698 {
4699 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
4700 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
4701 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
4702 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
4703 };
4704} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
4705
4706[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
4707interface ID3D12DeviceRemovedExtendedDataSettings
4708 : IUnknown
4709{
4710 void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
4711 void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
4712 void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
4713};
4714
4715[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
4716interface ID3D12DeviceRemovedExtendedDataSettings1
4717 : ID3D12DeviceRemovedExtendedDataSettings
4718{
4719 void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
4720};
4721
4722
4723[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
4724interface ID3D12DeviceRemovedExtendedData
4725 : IUnknown
4726{
4727 HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
4728 HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
4729};
4730
4731[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
4732interface ID3D12DeviceRemovedExtendedData1
4733 : ID3D12DeviceRemovedExtendedData
4734{
4735 HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
4736 HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
4737};
4738
4739[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
4740interface ID3D12DeviceRemovedExtendedData2
4741 : ID3D12DeviceRemovedExtendedData1
4742{
4743 HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
4744 D3D12_DRED_DEVICE_STATE GetDeviceState();
4745};
4746
4747typedef enum D3D12_BACKGROUND_PROCESSING_MODE
4748{
4749 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
4750 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
4751 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
4752 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
4753} D3D12_BACKGROUND_PROCESSING_MODE;
4754
4755typedef enum D3D12_MEASUREMENTS_ACTION
4756{
4757 D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
4758 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
4759 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
4760 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
4761} D3D12_MEASUREMENTS_ACTION;
4762
4763[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
4764interface ID3D12Device6 : ID3D12Device5
4765{
4766 HRESULT SetBackgroundProcessingMode(
4767 D3D12_BACKGROUND_PROCESSING_MODE Mode,
4768 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
4769 [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
4770 [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
4771};
4772
4773cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
4774
4775// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
4776typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
4777{
4778 UINT NodeIndex; // input
4779 UINT Count; // output
4780} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
4781
4782// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
4783typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
4784{
4785 UINT NodeIndex; // input
4786 UINT Count; // input
4787 GUID* pTypes; // output
4788} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
4789
4790typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
4791{
4792 UINT NodeMask;
4793 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
4794 GUID ProtectionType;
4795} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
4796
4797[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
4798interface ID3D12ProtectedResourceSession1
4799 : ID3D12ProtectedResourceSession
4800{
4801 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
4802};
4803
4804[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
4805interface ID3D12Device7 : ID3D12Device6
4806{
4807 HRESULT AddToStateObject(
4808 [in] const D3D12_STATE_OBJECT_DESC* pAddition,
4809 [in] ID3D12StateObject* pStateObjectToGrowFrom,
4810 [in] REFIID riid, // ID3D12StateObject
4811 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
4812 );
4813
4814 HRESULT CreateProtectedResourceSession1(
4815 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
4816 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
4817 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
4818 );
4819};
4820
4821[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
4822interface ID3D12Device8 : ID3D12Device7
4823{
4824 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
4825 UINT visibleMask,
4826 UINT numResourceDescs,
4827 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
4828 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
4829
4830 HRESULT CreateCommittedResource2(
4831 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4832 D3D12_HEAP_FLAGS HeapFlags,
4833 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
4834 D3D12_RESOURCE_STATES InitialResourceState,
4835 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4836 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
4837 [in] REFIID riidResource, // Expected: ID3D12Resource1*
4838 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
4839
4840 HRESULT CreatePlacedResource1(
4841 [annotation("_In_")] ID3D12Heap* pHeap,
4842 UINT64 HeapOffset,
4843 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
4844 D3D12_RESOURCE_STATES InitialState,
4845 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4846 [in] REFIID riid, // Expected: ID3D12Resource*
4847 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
4848
4849 void CreateSamplerFeedbackUnorderedAccessView(
4850 [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
4851 [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
4852 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
4853
4854 void GetCopyableFootprints1(
4855 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
4856 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
4857 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
4858 UINT64 BaseOffset,
4859 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
4860 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
4861 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
4862 [annotation("_Out_opt_")] UINT64* pTotalBytes);
4863};
4864
4865
4866
4867[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
4868interface ID3D12Resource1
4869 : ID3D12Resource
4870{
4871 HRESULT GetProtectedResourceSession(
4872 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
4873 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
4874}
4875
4876[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
4877interface ID3D12Resource2
4878 : ID3D12Resource1
4879{
4880 D3D12_RESOURCE_DESC1 GetDesc1();
4881}
4882
4883
4884[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
4885interface ID3D12Heap1
4886 : ID3D12Heap
4887{
4888 HRESULT GetProtectedResourceSession(
4889 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
4890 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
4891}
4892
4893
4894[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
4895interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
4896{
4897 void SetProtectedResourceSession(
4898 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
4899 );
4900}
4901
4902// Beginning Access
4903typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
4904{
4905 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
4906 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
4907 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
4908 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS
4909} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
4910
4911typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
4912{
4913 D3D12_CLEAR_VALUE ClearValue;
4914} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
4915
4916typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
4917{
4918 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
4919
4920 union
4921 {
4922 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
4923 };
4924} D3D12_RENDER_PASS_BEGINNING_ACCESS;
4925
4926// Ending Access
4927typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
4928{
4929 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
4930 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
4931 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
4932 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS
4933} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
4934
4935typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
4936{
4937 UINT SrcSubresource;
4938 UINT DstSubresource;
4939
4940 UINT DstX;
4941 UINT DstY;
4942 D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
4943
4944} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
4945
4946typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
4947{
4948 ID3D12Resource* pSrcResource;
4949 ID3D12Resource* pDstResource;
4950
4951 // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
4952 UINT SubresourceCount;
4953 [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
4954
4955 DXGI_FORMAT Format;
4956 D3D12_RESOLVE_MODE ResolveMode;
4957
4958 BOOL PreserveResolveSource;
4959
4960} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
4961
4962typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
4963{
4964 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
4965
4966 union
4967 {
4968 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
4969 };
4970} D3D12_RENDER_PASS_ENDING_ACCESS;
4971
4972// Render Target Desc
4973typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
4974{
4975 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
4976
4977 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
4978 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
4979
4980} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
4981
4982// Depth-Stencil Desc
4983typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
4984{
4985 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
4986
4987 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
4988 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
4989
4990 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
4991 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
4992
4993} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
4994
4995// UAV Access Mode
4996typedef enum D3D12_RENDER_PASS_FLAGS
4997{
4998 D3D12_RENDER_PASS_FLAG_NONE = 0x0,
4999 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
5000 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
5001 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
5002} D3D12_RENDER_PASS_FLAGS;
5003cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS );")
5004
5005[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
5006interface ID3D12MetaCommand : ID3D12Pageable
5007{
5008 UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
5009}
5010
5011typedef struct D3D12_DISPATCH_RAYS_DESC
5012{
5013 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
5014 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
5015 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
5016 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
5017 UINT Width;
5018 UINT Height;
5019 UINT Depth;
5020} D3D12_DISPATCH_RAYS_DESC;
5021
5022[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
5023interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
5024{
5025 void BeginRenderPass(
5026 [annotation("_In_")] UINT NumRenderTargets,
5027 [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
5028 [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
5029 D3D12_RENDER_PASS_FLAGS Flags
5030 );
5031
5032 void EndRenderPass();
5033
5034 void InitializeMetaCommand(
5035 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5036 [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
5037 [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
5038 );
5039
5040 void ExecuteMetaCommand(
5041 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5042 [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
5043 [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
5044 );
5045
5046 void BuildRaytracingAccelerationStructure(
5047 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
5048 [annotation("_In_")] UINT NumPostbuildInfoDescs,
5049 [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
5050 );
5051
5052 void EmitRaytracingAccelerationStructurePostbuildInfo(
5053 [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
5054 [annotation("_In_")] UINT NumSourceAccelerationStructures,
5055 [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
5056
5057 void CopyRaytracingAccelerationStructure(
5058 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
5059 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
5060 [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
5061
5062 void SetPipelineState1(
5063 [annotation("_In_")] ID3D12StateObject* pStateObject);
5064
5065 void DispatchRays(
5066 [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
5067}
5068
5069typedef enum D3D12_SHADER_CACHE_MODE
5070{
5071 D3D12_SHADER_CACHE_MODE_MEMORY,
5072 D3D12_SHADER_CACHE_MODE_DISK,
5073} D3D12_SHADER_CACHE_MODE;
5074
5075typedef enum D3D12_SHADER_CACHE_FLAGS
5076{
5077 D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
5078 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
5079 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
5080} D3D12_SHADER_CACHE_FLAGS;
5081cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS );")
5082
5083typedef struct D3D12_SHADER_CACHE_SESSION_DESC
5084{
5085 GUID Identifier;
5086 D3D12_SHADER_CACHE_MODE Mode;
5087 D3D12_SHADER_CACHE_FLAGS Flags;
5088
5089 UINT MaximumInMemoryCacheSizeBytes;
5090 UINT MaximumInMemoryCacheEntries;
5091
5092 UINT MaximumValueFileSizeBytes;
5093
5094 UINT64 Version;
5095} D3D12_SHADER_CACHE_SESSION_DESC;
5096
5097[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
5098interface ID3D12ShaderCacheSession
5099 : ID3D12DeviceChild
5100{
5101 HRESULT FindValue(
5102 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
5103 UINT KeySize,
5104 [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
5105 [annotation("_Inout_")] UINT* pValueSize);
5106 HRESULT StoreValue(
5107 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
5108 UINT KeySize,
5109 [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
5110 UINT ValueSize);
5111
5112 void SetDeleteOnDestroy();
5113 D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
5114};
5115
5116typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
5117{
5118 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
5119 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
5120 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
5121 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
5122} D3D12_SHADER_CACHE_KIND_FLAGS;
5123cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS );")
5124
5125typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
5126{
5127 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
5128 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
5129 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
5130} D3D12_SHADER_CACHE_CONTROL_FLAGS;
5131cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS );")
5132
5133[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
5134interface ID3D12Device9
5135 : ID3D12Device8
5136{
5137 HRESULT CreateShaderCacheSession(
5138 [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
5139 REFIID riid,
5140 [annotation("_COM_Outptr_opt_")] void** ppvSession);
5141
5142 HRESULT ShaderCacheControl(
5143 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
5144 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
5145
5146 HRESULT CreateCommandQueue1(
5147 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
5148 REFIID CreatorID,
5149 [in] REFIID riid, // Expected: ID3D12CommandQueue
5150 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
5151 );
5152};
5153
5154
5155[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
5156interface ID3D12Tools
5157 : IUnknown
5158{
5159 void EnableShaderInstrumentation(BOOL bEnable);
5160 BOOL ShaderInstrumentationEnabled();
5161}
5162
5163typedef struct D3D12_SUBRESOURCE_DATA
5164{
5165 const void* pData;
5166 LONG_PTR RowPitch;
5167 LONG_PTR SlicePitch;
5168} D3D12_SUBRESOURCE_DATA;
5169
5170typedef struct D3D12_MEMCPY_DEST
5171{
5172 void* pData;
5173 SIZE_T RowPitch;
5174 SIZE_T SlicePitch;
5175} D3D12_MEMCPY_DEST;
5176
5177
5178
5179cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
5180cpp_quote( "#include \"d3d12sdklayers.h\" ")
5181cpp_quote( "#endif ")
5182
5183
5184cpp_quote("")
5185cpp_quote("///////////////////////////////////////////////////////////////////////////")
5186cpp_quote("// D3D12CreateDevice")
5187cpp_quote("// ------------------")
5188cpp_quote("//")
5189cpp_quote("// pAdapter")
5190cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
5191cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
5192cpp_quote("// MinimumFeatureLevel")
5193cpp_quote("// The minimum feature level required for successful device creation.")
5194cpp_quote("// riid")
5195cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
5196cpp_quote("// ppDevice")
5197cpp_quote("// Pointer to returned interface. May be NULL.")
5198cpp_quote("//")
5199cpp_quote("// Return Values")
5200cpp_quote("// Any of those documented for ")
5201cpp_quote("// CreateDXGIFactory1")
5202cpp_quote("// IDXGIFactory::EnumAdapters")
5203cpp_quote("// D3D12CreateDevice")
5204cpp_quote("//")
5205cpp_quote("///////////////////////////////////////////////////////////////////////////")
5206cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
5207cpp_quote(" D3D_FEATURE_LEVEL, ")
5208cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
5209cpp_quote("")
5210cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
5211cpp_quote(" _In_opt_ IUnknown* pAdapter,")
5212cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
5213cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
5214cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
5215cpp_quote("")
5216
5217cpp_quote("")
5218cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
5219cpp_quote("")
5220cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
5221cpp_quote("")
5222
5223cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5224cpp_quote("// D3D12EnableExperimentalFeatures")
5225cpp_quote("//")
5226cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
5227cpp_quote("// ")
5228cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
5229cpp_quote("// a configuration struct that can be passed alongside the GUID.")
5230cpp_quote("// ")
5231cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
5232cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
5233cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
5234cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
5235cpp_quote("//")
5236cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
5237cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
5238cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
5239cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
5240cpp_quote("//")
5241cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
5242cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
5243cpp_quote("// in are known to be incompatible with each other, or other errors.")
5244cpp_quote("// Returns S_OK otherwise.")
5245cpp_quote("//")
5246cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5247cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
5248cpp_quote(" UINT NumFeatures,")
5249cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
5250cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
5251cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
5252cpp_quote("")
5253cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5254cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
5255cpp_quote("//")
5256cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
5257cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
5258cpp_quote("//")
5259cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5260cpp_quote("//")
5261cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5262cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
5263cpp_quote(" 0x76f5573e,")
5264cpp_quote(" 0xf13a,")
5265cpp_quote(" 0x40f5,")
5266cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
5267cpp_quote("};")
5268cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5269cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
5270cpp_quote("//")
5271cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
5272cpp_quote("// meaning texture tile data-inheritance is allowed.")
5273cpp_quote("//")
5274cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5275cpp_quote("//")
5276cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5277cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
5278cpp_quote(" 0xc9c4725f,")
5279cpp_quote(" 0xa81a,")
5280cpp_quote(" 0x4f56,")
5281cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
5282cpp_quote("};")
5283cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5284cpp_quote("// Experimental Feature: D3D12MetaCommand")
5285cpp_quote("//")
5286cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable the D3D12 Meta Command.")
5287cpp_quote("//")
5288cpp_quote("// Enabling D3D12MetaCommand needs no configuration struct, pass NULL in the pConfigurationStructs array.")
5289cpp_quote("//")
5290cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5291cpp_quote("static const UUID D3D12MetaCommand = { /* C734C97E-8077-48C8-9FDC-D9D1DD31DD77 */")
5292cpp_quote(" 0xc734c97e,")
5293cpp_quote(" 0x8077,")
5294cpp_quote(" 0x48c8,")
5295cpp_quote(" { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77 }")
5296cpp_quote("};")
5297
5298cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
5299cpp_quote("// D3D12GetInterface")
5300cpp_quote("//")
5301cpp_quote("// Retrieve Global D3D12 Interface.")
5302cpp_quote("//")
5303cpp_quote("")
5304cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
5305cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
5306cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
5307cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
5308cpp_quote("")
5309cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
5310cpp_quote("")
5311cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
5312cpp_quote("")
5313
5314//==================================================================================================================================
5315//
5316// SDK Configuration
5317//
5318//==================================================================================================================================
5319
5320[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
5321interface ID3D12SDKConfiguration
5322 : IUnknown
5323{
5324 HRESULT SetSDKVersion(
5325 UINT SDKVersion,
5326 [annotation("_In_z_")] LPCSTR SDKPath
5327 );
5328}
5329
5330
5331typedef enum D3D12_AXIS_SHADING_RATE
5332{
5333 D3D12_AXIS_SHADING_RATE_1X = 0x0,
5334 D3D12_AXIS_SHADING_RATE_2X = 0x1,
5335 D3D12_AXIS_SHADING_RATE_4X = 0x2
5336} D3D12_AXIS_SHADING_RATE;
5337
5338
5339cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
5340cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
5341
5342cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
5343
5344cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
5345cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
5346
5347typedef enum D3D12_SHADING_RATE
5348{
5349 D3D12_SHADING_RATE_1X1 = 0x0,
5350 D3D12_SHADING_RATE_1X2 = 0x1,
5351 D3D12_SHADING_RATE_2X1 = 0x4,
5352 D3D12_SHADING_RATE_2X2 = 0x5,
5353 D3D12_SHADING_RATE_2X4 = 0x6,
5354 D3D12_SHADING_RATE_4X2 = 0x9,
5355 D3D12_SHADING_RATE_4X4 = 0xA
5356} D3D12_SHADING_RATE;
5357
5358typedef enum D3D12_SHADING_RATE_COMBINER
5359{
5360 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
5361 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
5362 D3D12_SHADING_RATE_COMBINER_MIN = 2,
5363 D3D12_SHADING_RATE_COMBINER_MAX = 3,
5364 D3D12_SHADING_RATE_COMBINER_SUM = 4,
5365} D3D12_SHADING_RATE_COMBINER;
5366
5367[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
5368interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
5369{
5370 void RSSetShadingRate(
5371 [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
5372 [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
5373
5374 void RSSetShadingRateImage(
5375 [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
5376}
5377
5378typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
5379{
5380 UINT ThreadGroupCountX;
5381 UINT ThreadGroupCountY;
5382 UINT ThreadGroupCountZ;
5383} D3D12_DISPATCH_MESH_ARGUMENTS;
5384
5385[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
5386interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
5387{
5388 void DispatchMesh(
5389 [annotation("_In_")] UINT ThreadGroupCountX,
5390 [annotation("_In_")] UINT ThreadGroupCountY,
5391 [annotation("_In_")] UINT ThreadGroupCountZ
5392 );
5393}
5394
5395
5396//----------------------------------------------------------------------------------------------------------
5397// Old types which are still supported by the runtime for app-compat
5398
5399cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
5400#pragma endregion
5401
5402cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
5403cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
5404cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
5405cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
5406cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
5407cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
5408cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
5409cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
5410cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
5411cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
5412cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
5413cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
5414cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
5415cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
5416cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
5417cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
5418cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
5419cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
5420cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
5421cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
5422cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
5423cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
5424cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
5425cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
5426cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
5427cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
5428cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
5429cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
5430cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
5431cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
5432cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
5433cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
5434cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
5435cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
5436cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
5437cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
5438cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
5439cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
5440cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
5441cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
5442cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
5443cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
5444cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
5445cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
5446cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
5447cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
5448cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
5449cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
5450cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
5451cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
5452cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
5453cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
5454cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
5455cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
5456cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
5457cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12compatibility.h b/contrib/DirectX-Headers/include/directx/d3d12compatibility.h
new file mode 100644
index 0000000..5f99b6c
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12compatibility.h
@@ -0,0 +1,659 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compatibility_h__
39#define __d3d12compatibility_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompatibilityDevice_FWD_DEFINED__
56#define __ID3D12CompatibilityDevice_FWD_DEFINED__
57typedef interface ID3D12CompatibilityDevice ID3D12CompatibilityDevice;
58
59#endif /* __ID3D12CompatibilityDevice_FWD_DEFINED__ */
60
61
62#ifndef __D3D11On12CreatorID_FWD_DEFINED__
63#define __D3D11On12CreatorID_FWD_DEFINED__
64typedef interface D3D11On12CreatorID D3D11On12CreatorID;
65
66#endif /* __D3D11On12CreatorID_FWD_DEFINED__ */
67
68
69#ifndef __D3D9On12CreatorID_FWD_DEFINED__
70#define __D3D9On12CreatorID_FWD_DEFINED__
71typedef interface D3D9On12CreatorID D3D9On12CreatorID;
72
73#endif /* __D3D9On12CreatorID_FWD_DEFINED__ */
74
75
76#ifndef __OpenGLOn12CreatorID_FWD_DEFINED__
77#define __OpenGLOn12CreatorID_FWD_DEFINED__
78typedef interface OpenGLOn12CreatorID OpenGLOn12CreatorID;
79
80#endif /* __OpenGLOn12CreatorID_FWD_DEFINED__ */
81
82
83#ifndef __OpenCLOn12CreatorID_FWD_DEFINED__
84#define __OpenCLOn12CreatorID_FWD_DEFINED__
85typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
86
87#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
88
89
90#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
91#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
92typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
93
94#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
95
96
97/* header files for imported files */
98#include "OAIdl.h"
99#include "OCIdl.h"
100#include "d3d11on12.h"
101
102#ifdef __cplusplus
103extern "C"{
104#endif
105
106
107/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
108/* [local] */
109
110#include <winapifamily.h>
111#pragma region Desktop Family
112#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
113typedef
114enum D3D12_COMPATIBILITY_SHARED_FLAGS
115 {
116 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
117 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
118 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
119 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
120 } D3D12_COMPATIBILITY_SHARED_FLAGS;
121
122DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS );
123typedef
124enum D3D12_REFLECT_SHARED_PROPERTY
125 {
126 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
127 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
128 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
129 } D3D12_REFLECT_SHARED_PROPERTY;
130
131
132
133extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
134extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
135
136#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
137#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
138
139/* interface ID3D12CompatibilityDevice */
140/* [unique][local][object][uuid] */
141
142
143EXTERN_C const IID IID_ID3D12CompatibilityDevice;
144
145#if defined(__cplusplus) && !defined(CINTERFACE)
146
147 MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
148 ID3D12CompatibilityDevice : public IUnknown
149 {
150 public:
151 virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
152 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
153 D3D12_HEAP_FLAGS HeapFlags,
154 _In_ const D3D12_RESOURCE_DESC *pDesc,
155 D3D12_RESOURCE_STATES InitialResourceState,
156 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
157 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
158 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
159 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
160 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
161 REFIID riid,
162 _COM_Outptr_opt_ void **ppResource) = 0;
163
164 virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
165 _In_ const D3D12_HEAP_DESC *pHeapDesc,
166 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
167 REFIID riid,
168 _COM_Outptr_opt_ void **ppHeap) = 0;
169
170 virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
171 _In_ ID3D12Object *pHeapOrResource,
172 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
173 _Out_writes_bytes_(DataSize) void *pData,
174 UINT DataSize) = 0;
175
176 };
177
178
179#else /* C style interface */
180
181 typedef struct ID3D12CompatibilityDeviceVtbl
182 {
183 BEGIN_INTERFACE
184
185 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
186 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
187 ID3D12CompatibilityDevice * This,
188 REFIID riid,
189 _COM_Outptr_ void **ppvObject);
190
191 DECLSPEC_XFGVIRT(IUnknown, AddRef)
192 ULONG ( STDMETHODCALLTYPE *AddRef )(
193 ID3D12CompatibilityDevice * This);
194
195 DECLSPEC_XFGVIRT(IUnknown, Release)
196 ULONG ( STDMETHODCALLTYPE *Release )(
197 ID3D12CompatibilityDevice * This);
198
199 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
200 HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
201 ID3D12CompatibilityDevice * This,
202 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
203 D3D12_HEAP_FLAGS HeapFlags,
204 _In_ const D3D12_RESOURCE_DESC *pDesc,
205 D3D12_RESOURCE_STATES InitialResourceState,
206 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
207 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
208 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
209 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
210 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
211 REFIID riid,
212 _COM_Outptr_opt_ void **ppResource);
213
214 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
215 HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
216 ID3D12CompatibilityDevice * This,
217 _In_ const D3D12_HEAP_DESC *pHeapDesc,
218 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
219 REFIID riid,
220 _COM_Outptr_opt_ void **ppHeap);
221
222 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
223 HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
224 ID3D12CompatibilityDevice * This,
225 _In_ ID3D12Object *pHeapOrResource,
226 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
227 _Out_writes_bytes_(DataSize) void *pData,
228 UINT DataSize);
229
230 END_INTERFACE
231 } ID3D12CompatibilityDeviceVtbl;
232
233 interface ID3D12CompatibilityDevice
234 {
235 CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
236 };
237
238
239
240#ifdef COBJMACROS
241
242
243#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
244 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
245
246#define ID3D12CompatibilityDevice_AddRef(This) \
247 ( (This)->lpVtbl -> AddRef(This) )
248
249#define ID3D12CompatibilityDevice_Release(This) \
250 ( (This)->lpVtbl -> Release(This) )
251
252
253#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
254 ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
255
256#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
257 ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
258
259#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
260 ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
261
262#endif /* COBJMACROS */
263
264
265#endif /* C style interface */
266
267
268
269
270#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
271
272
273#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
274#define __D3D11On12CreatorID_INTERFACE_DEFINED__
275
276/* interface D3D11On12CreatorID */
277/* [unique][local][object][uuid] */
278
279
280EXTERN_C const IID IID_D3D11On12CreatorID;
281
282#if defined(__cplusplus) && !defined(CINTERFACE)
283
284 MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
285 D3D11On12CreatorID : public IUnknown
286 {
287 public:
288 };
289
290
291#else /* C style interface */
292
293 typedef struct D3D11On12CreatorIDVtbl
294 {
295 BEGIN_INTERFACE
296
297 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
298 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
299 D3D11On12CreatorID * This,
300 REFIID riid,
301 _COM_Outptr_ void **ppvObject);
302
303 DECLSPEC_XFGVIRT(IUnknown, AddRef)
304 ULONG ( STDMETHODCALLTYPE *AddRef )(
305 D3D11On12CreatorID * This);
306
307 DECLSPEC_XFGVIRT(IUnknown, Release)
308 ULONG ( STDMETHODCALLTYPE *Release )(
309 D3D11On12CreatorID * This);
310
311 END_INTERFACE
312 } D3D11On12CreatorIDVtbl;
313
314 interface D3D11On12CreatorID
315 {
316 CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
317 };
318
319
320
321#ifdef COBJMACROS
322
323
324#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
325 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
326
327#define D3D11On12CreatorID_AddRef(This) \
328 ( (This)->lpVtbl -> AddRef(This) )
329
330#define D3D11On12CreatorID_Release(This) \
331 ( (This)->lpVtbl -> Release(This) )
332
333
334#endif /* COBJMACROS */
335
336
337#endif /* C style interface */
338
339
340
341
342#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
343
344
345#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
346#define __D3D9On12CreatorID_INTERFACE_DEFINED__
347
348/* interface D3D9On12CreatorID */
349/* [unique][local][object][uuid] */
350
351
352EXTERN_C const IID IID_D3D9On12CreatorID;
353
354#if defined(__cplusplus) && !defined(CINTERFACE)
355
356 MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
357 D3D9On12CreatorID : public IUnknown
358 {
359 public:
360 };
361
362
363#else /* C style interface */
364
365 typedef struct D3D9On12CreatorIDVtbl
366 {
367 BEGIN_INTERFACE
368
369 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
370 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
371 D3D9On12CreatorID * This,
372 REFIID riid,
373 _COM_Outptr_ void **ppvObject);
374
375 DECLSPEC_XFGVIRT(IUnknown, AddRef)
376 ULONG ( STDMETHODCALLTYPE *AddRef )(
377 D3D9On12CreatorID * This);
378
379 DECLSPEC_XFGVIRT(IUnknown, Release)
380 ULONG ( STDMETHODCALLTYPE *Release )(
381 D3D9On12CreatorID * This);
382
383 END_INTERFACE
384 } D3D9On12CreatorIDVtbl;
385
386 interface D3D9On12CreatorID
387 {
388 CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
389 };
390
391
392
393#ifdef COBJMACROS
394
395
396#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
397 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
398
399#define D3D9On12CreatorID_AddRef(This) \
400 ( (This)->lpVtbl -> AddRef(This) )
401
402#define D3D9On12CreatorID_Release(This) \
403 ( (This)->lpVtbl -> Release(This) )
404
405
406#endif /* COBJMACROS */
407
408
409#endif /* C style interface */
410
411
412
413
414#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
415
416
417#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
418#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
419
420/* interface OpenGLOn12CreatorID */
421/* [unique][local][object][uuid] */
422
423
424EXTERN_C const IID IID_OpenGLOn12CreatorID;
425
426#if defined(__cplusplus) && !defined(CINTERFACE)
427
428 MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
429 OpenGLOn12CreatorID : public IUnknown
430 {
431 public:
432 };
433
434
435#else /* C style interface */
436
437 typedef struct OpenGLOn12CreatorIDVtbl
438 {
439 BEGIN_INTERFACE
440
441 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
442 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
443 OpenGLOn12CreatorID * This,
444 REFIID riid,
445 _COM_Outptr_ void **ppvObject);
446
447 DECLSPEC_XFGVIRT(IUnknown, AddRef)
448 ULONG ( STDMETHODCALLTYPE *AddRef )(
449 OpenGLOn12CreatorID * This);
450
451 DECLSPEC_XFGVIRT(IUnknown, Release)
452 ULONG ( STDMETHODCALLTYPE *Release )(
453 OpenGLOn12CreatorID * This);
454
455 END_INTERFACE
456 } OpenGLOn12CreatorIDVtbl;
457
458 interface OpenGLOn12CreatorID
459 {
460 CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
461 };
462
463
464
465#ifdef COBJMACROS
466
467
468#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
469 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
470
471#define OpenGLOn12CreatorID_AddRef(This) \
472 ( (This)->lpVtbl -> AddRef(This) )
473
474#define OpenGLOn12CreatorID_Release(This) \
475 ( (This)->lpVtbl -> Release(This) )
476
477
478#endif /* COBJMACROS */
479
480
481#endif /* C style interface */
482
483
484
485
486#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
487
488
489#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
490#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
491
492/* interface OpenCLOn12CreatorID */
493/* [unique][local][object][uuid] */
494
495
496EXTERN_C const IID IID_OpenCLOn12CreatorID;
497
498#if defined(__cplusplus) && !defined(CINTERFACE)
499
500 MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
501 OpenCLOn12CreatorID : public IUnknown
502 {
503 public:
504 };
505
506
507#else /* C style interface */
508
509 typedef struct OpenCLOn12CreatorIDVtbl
510 {
511 BEGIN_INTERFACE
512
513 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
514 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
515 OpenCLOn12CreatorID * This,
516 REFIID riid,
517 _COM_Outptr_ void **ppvObject);
518
519 DECLSPEC_XFGVIRT(IUnknown, AddRef)
520 ULONG ( STDMETHODCALLTYPE *AddRef )(
521 OpenCLOn12CreatorID * This);
522
523 DECLSPEC_XFGVIRT(IUnknown, Release)
524 ULONG ( STDMETHODCALLTYPE *Release )(
525 OpenCLOn12CreatorID * This);
526
527 END_INTERFACE
528 } OpenCLOn12CreatorIDVtbl;
529
530 interface OpenCLOn12CreatorID
531 {
532 CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
533 };
534
535
536
537#ifdef COBJMACROS
538
539
540#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
541 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
542
543#define OpenCLOn12CreatorID_AddRef(This) \
544 ( (This)->lpVtbl -> AddRef(This) )
545
546#define OpenCLOn12CreatorID_Release(This) \
547 ( (This)->lpVtbl -> Release(This) )
548
549
550#endif /* COBJMACROS */
551
552
553#endif /* C style interface */
554
555
556
557
558#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
559
560
561#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
562#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
563
564/* interface DirectMLTensorFlowCreatorID */
565/* [unique][local][object][uuid] */
566
567
568EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
569
570#if defined(__cplusplus) && !defined(CINTERFACE)
571
572 MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
573 DirectMLTensorFlowCreatorID : public IUnknown
574 {
575 public:
576 };
577
578
579#else /* C style interface */
580
581 typedef struct DirectMLTensorFlowCreatorIDVtbl
582 {
583 BEGIN_INTERFACE
584
585 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
586 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
587 DirectMLTensorFlowCreatorID * This,
588 REFIID riid,
589 _COM_Outptr_ void **ppvObject);
590
591 DECLSPEC_XFGVIRT(IUnknown, AddRef)
592 ULONG ( STDMETHODCALLTYPE *AddRef )(
593 DirectMLTensorFlowCreatorID * This);
594
595 DECLSPEC_XFGVIRT(IUnknown, Release)
596 ULONG ( STDMETHODCALLTYPE *Release )(
597 DirectMLTensorFlowCreatorID * This);
598
599 END_INTERFACE
600 } DirectMLTensorFlowCreatorIDVtbl;
601
602 interface DirectMLTensorFlowCreatorID
603 {
604 CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
605 };
606
607
608
609#ifdef COBJMACROS
610
611
612#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
613 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
614
615#define DirectMLTensorFlowCreatorID_AddRef(This) \
616 ( (This)->lpVtbl -> AddRef(This) )
617
618#define DirectMLTensorFlowCreatorID_Release(This) \
619 ( (This)->lpVtbl -> Release(This) )
620
621
622#endif /* COBJMACROS */
623
624
625#endif /* C style interface */
626
627
628
629
630#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
631
632
633/* interface __MIDL_itf_d3d12compatibility_0000_0006 */
634/* [local] */
635
636#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
637#pragma endregion
638DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
639DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
640DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
641DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
642DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
643DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
644
645
646extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0006_v0_0_c_ifspec;
647extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0006_v0_0_s_ifspec;
648
649/* Additional Prototypes for ALL interfaces */
650
651/* end of Additional Prototypes */
652
653#ifdef __cplusplus
654}
655#endif
656
657#endif
658
659
diff --git a/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl b/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl
new file mode 100644
index 0000000..fae6f1a
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12compatibility.idl
@@ -0,0 +1,88 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "d3d11on12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region Desktop Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
18{
19 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
20 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
21 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
22 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
23
24} D3D12_COMPATIBILITY_SHARED_FLAGS;
25cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS );" )
26
27typedef enum D3D12_REFLECT_SHARED_PROPERTY
28{
29 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS, // D3D11_RESOURCE_FLAGS
30 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
31 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE, // HANDLE
32} D3D12_REFLECT_SHARED_PROPERTY;
33
34[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
35interface ID3D12CompatibilityDevice
36 : IUnknown
37{
38 HRESULT CreateSharedResource(
39 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
40 D3D12_HEAP_FLAGS HeapFlags,
41 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
42 D3D12_RESOURCE_STATES InitialResourceState,
43 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
44 [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
45 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
46 [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
47 [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
48 REFIID riid,
49 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
50
51 HRESULT CreateSharedHeap(
52 [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
53 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
54 REFIID riid,
55 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
56
57 HRESULT ReflectSharedProperties(
58 [annotation("_In_")] ID3D12Object* pHeapOrResource,
59 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
60 [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
61 UINT DataSize);
62}
63
64[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
65interface D3D11On12CreatorID : IUnknown { };
66
67[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
68interface D3D9On12CreatorID : IUnknown { };
69
70[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
71interface OpenGLOn12CreatorID : IUnknown { };
72
73[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
74interface OpenCLOn12CreatorID : IUnknown { };
75
76[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
77interface DirectMLTensorFlowCreatorID : IUnknown { };
78
79
80cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
81#pragma endregion
82
83cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
84cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
85cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
86cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
87cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
88cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h
new file mode 100644
index 0000000..54b75e4
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.h
@@ -0,0 +1,3657 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12sdklayers_h__
39#define __d3d12sdklayers_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Debug_FWD_DEFINED__
56#define __ID3D12Debug_FWD_DEFINED__
57typedef interface ID3D12Debug ID3D12Debug;
58
59#endif /* __ID3D12Debug_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12Debug1_FWD_DEFINED__
63#define __ID3D12Debug1_FWD_DEFINED__
64typedef interface ID3D12Debug1 ID3D12Debug1;
65
66#endif /* __ID3D12Debug1_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12Debug2_FWD_DEFINED__
70#define __ID3D12Debug2_FWD_DEFINED__
71typedef interface ID3D12Debug2 ID3D12Debug2;
72
73#endif /* __ID3D12Debug2_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Debug3_FWD_DEFINED__
77#define __ID3D12Debug3_FWD_DEFINED__
78typedef interface ID3D12Debug3 ID3D12Debug3;
79
80#endif /* __ID3D12Debug3_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12Debug4_FWD_DEFINED__
84#define __ID3D12Debug4_FWD_DEFINED__
85typedef interface ID3D12Debug4 ID3D12Debug4;
86
87#endif /* __ID3D12Debug4_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Debug5_FWD_DEFINED__
91#define __ID3D12Debug5_FWD_DEFINED__
92typedef interface ID3D12Debug5 ID3D12Debug5;
93
94#endif /* __ID3D12Debug5_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12DebugDevice1_FWD_DEFINED__
98#define __ID3D12DebugDevice1_FWD_DEFINED__
99typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
100
101#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12DebugDevice_FWD_DEFINED__
105#define __ID3D12DebugDevice_FWD_DEFINED__
106typedef interface ID3D12DebugDevice ID3D12DebugDevice;
107
108#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
112#define __ID3D12DebugDevice2_FWD_DEFINED__
113typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
114
115#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
119#define __ID3D12DebugCommandQueue_FWD_DEFINED__
120typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
121
122#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
126#define __ID3D12DebugCommandList1_FWD_DEFINED__
127typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
128
129#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
133#define __ID3D12DebugCommandList_FWD_DEFINED__
134typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
135
136#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
140#define __ID3D12DebugCommandList2_FWD_DEFINED__
141typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
142
143#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12SharingContract_FWD_DEFINED__
147#define __ID3D12SharingContract_FWD_DEFINED__
148typedef interface ID3D12SharingContract ID3D12SharingContract;
149
150#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12InfoQueue_FWD_DEFINED__
154#define __ID3D12InfoQueue_FWD_DEFINED__
155typedef interface ID3D12InfoQueue ID3D12InfoQueue;
156
157#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
161#define __ID3D12InfoQueue1_FWD_DEFINED__
162typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
163
164#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
165
166
167/* header files for imported files */
168#include "OAIdl.h"
169#include "OCIdl.h"
170#include "d3d12.h"
171
172#ifdef __cplusplus
173extern "C"{
174#endif
175
176
177/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
178/* [local] */
179
180#include <winapifamily.h>
181#pragma region App Family
182#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
183
184
185extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
186extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
187
188#ifndef __ID3D12Debug_INTERFACE_DEFINED__
189#define __ID3D12Debug_INTERFACE_DEFINED__
190
191/* interface ID3D12Debug */
192/* [unique][local][object][uuid] */
193
194
195EXTERN_C const IID IID_ID3D12Debug;
196
197#if defined(__cplusplus) && !defined(CINTERFACE)
198
199 MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
200 ID3D12Debug : public IUnknown
201 {
202 public:
203 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
204
205 };
206
207
208#else /* C style interface */
209
210 typedef struct ID3D12DebugVtbl
211 {
212 BEGIN_INTERFACE
213
214 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
215 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
216 ID3D12Debug * This,
217 REFIID riid,
218 _COM_Outptr_ void **ppvObject);
219
220 DECLSPEC_XFGVIRT(IUnknown, AddRef)
221 ULONG ( STDMETHODCALLTYPE *AddRef )(
222 ID3D12Debug * This);
223
224 DECLSPEC_XFGVIRT(IUnknown, Release)
225 ULONG ( STDMETHODCALLTYPE *Release )(
226 ID3D12Debug * This);
227
228 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
229 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
230 ID3D12Debug * This);
231
232 END_INTERFACE
233 } ID3D12DebugVtbl;
234
235 interface ID3D12Debug
236 {
237 CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
238 };
239
240
241
242#ifdef COBJMACROS
243
244
245#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
246 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
247
248#define ID3D12Debug_AddRef(This) \
249 ( (This)->lpVtbl -> AddRef(This) )
250
251#define ID3D12Debug_Release(This) \
252 ( (This)->lpVtbl -> Release(This) )
253
254
255#define ID3D12Debug_EnableDebugLayer(This) \
256 ( (This)->lpVtbl -> EnableDebugLayer(This) )
257
258#endif /* COBJMACROS */
259
260
261#endif /* C style interface */
262
263
264
265
266#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
267
268
269/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
270/* [local] */
271
272typedef
273enum D3D12_GPU_BASED_VALIDATION_FLAGS
274 {
275 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
276 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
277 } D3D12_GPU_BASED_VALIDATION_FLAGS;
278
279DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
280
281
282extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
283extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
284
285#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
286#define __ID3D12Debug1_INTERFACE_DEFINED__
287
288/* interface ID3D12Debug1 */
289/* [unique][local][object][uuid] */
290
291
292EXTERN_C const IID IID_ID3D12Debug1;
293
294#if defined(__cplusplus) && !defined(CINTERFACE)
295
296 MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
297 ID3D12Debug1 : public IUnknown
298 {
299 public:
300 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
301
302 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
303 BOOL Enable) = 0;
304
305 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
306 BOOL Enable) = 0;
307
308 };
309
310
311#else /* C style interface */
312
313 typedef struct ID3D12Debug1Vtbl
314 {
315 BEGIN_INTERFACE
316
317 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
318 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
319 ID3D12Debug1 * This,
320 REFIID riid,
321 _COM_Outptr_ void **ppvObject);
322
323 DECLSPEC_XFGVIRT(IUnknown, AddRef)
324 ULONG ( STDMETHODCALLTYPE *AddRef )(
325 ID3D12Debug1 * This);
326
327 DECLSPEC_XFGVIRT(IUnknown, Release)
328 ULONG ( STDMETHODCALLTYPE *Release )(
329 ID3D12Debug1 * This);
330
331 DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
332 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
333 ID3D12Debug1 * This);
334
335 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
336 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
337 ID3D12Debug1 * This,
338 BOOL Enable);
339
340 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
341 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
342 ID3D12Debug1 * This,
343 BOOL Enable);
344
345 END_INTERFACE
346 } ID3D12Debug1Vtbl;
347
348 interface ID3D12Debug1
349 {
350 CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
351 };
352
353
354
355#ifdef COBJMACROS
356
357
358#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
359 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
360
361#define ID3D12Debug1_AddRef(This) \
362 ( (This)->lpVtbl -> AddRef(This) )
363
364#define ID3D12Debug1_Release(This) \
365 ( (This)->lpVtbl -> Release(This) )
366
367
368#define ID3D12Debug1_EnableDebugLayer(This) \
369 ( (This)->lpVtbl -> EnableDebugLayer(This) )
370
371#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
372 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
373
374#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
375 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
376
377#endif /* COBJMACROS */
378
379
380#endif /* C style interface */
381
382
383
384
385#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
386
387
388#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
389#define __ID3D12Debug2_INTERFACE_DEFINED__
390
391/* interface ID3D12Debug2 */
392/* [unique][local][object][uuid] */
393
394
395EXTERN_C const IID IID_ID3D12Debug2;
396
397#if defined(__cplusplus) && !defined(CINTERFACE)
398
399 MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
400 ID3D12Debug2 : public IUnknown
401 {
402 public:
403 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
404 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
405
406 };
407
408
409#else /* C style interface */
410
411 typedef struct ID3D12Debug2Vtbl
412 {
413 BEGIN_INTERFACE
414
415 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
416 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
417 ID3D12Debug2 * This,
418 REFIID riid,
419 _COM_Outptr_ void **ppvObject);
420
421 DECLSPEC_XFGVIRT(IUnknown, AddRef)
422 ULONG ( STDMETHODCALLTYPE *AddRef )(
423 ID3D12Debug2 * This);
424
425 DECLSPEC_XFGVIRT(IUnknown, Release)
426 ULONG ( STDMETHODCALLTYPE *Release )(
427 ID3D12Debug2 * This);
428
429 DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
430 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
431 ID3D12Debug2 * This,
432 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
433
434 END_INTERFACE
435 } ID3D12Debug2Vtbl;
436
437 interface ID3D12Debug2
438 {
439 CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
440 };
441
442
443
444#ifdef COBJMACROS
445
446
447#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
448 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
449
450#define ID3D12Debug2_AddRef(This) \
451 ( (This)->lpVtbl -> AddRef(This) )
452
453#define ID3D12Debug2_Release(This) \
454 ( (This)->lpVtbl -> Release(This) )
455
456
457#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
458 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
459
460#endif /* COBJMACROS */
461
462
463#endif /* C style interface */
464
465
466
467
468#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
469
470
471#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
472#define __ID3D12Debug3_INTERFACE_DEFINED__
473
474/* interface ID3D12Debug3 */
475/* [unique][local][object][uuid] */
476
477
478EXTERN_C const IID IID_ID3D12Debug3;
479
480#if defined(__cplusplus) && !defined(CINTERFACE)
481
482 MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
483 ID3D12Debug3 : public ID3D12Debug
484 {
485 public:
486 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
487 BOOL Enable) = 0;
488
489 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
490 BOOL Enable) = 0;
491
492 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
493 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
494
495 };
496
497
498#else /* C style interface */
499
500 typedef struct ID3D12Debug3Vtbl
501 {
502 BEGIN_INTERFACE
503
504 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
505 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
506 ID3D12Debug3 * This,
507 REFIID riid,
508 _COM_Outptr_ void **ppvObject);
509
510 DECLSPEC_XFGVIRT(IUnknown, AddRef)
511 ULONG ( STDMETHODCALLTYPE *AddRef )(
512 ID3D12Debug3 * This);
513
514 DECLSPEC_XFGVIRT(IUnknown, Release)
515 ULONG ( STDMETHODCALLTYPE *Release )(
516 ID3D12Debug3 * This);
517
518 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
519 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
520 ID3D12Debug3 * This);
521
522 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
523 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
524 ID3D12Debug3 * This,
525 BOOL Enable);
526
527 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
528 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
529 ID3D12Debug3 * This,
530 BOOL Enable);
531
532 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
533 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
534 ID3D12Debug3 * This,
535 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
536
537 END_INTERFACE
538 } ID3D12Debug3Vtbl;
539
540 interface ID3D12Debug3
541 {
542 CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
543 };
544
545
546
547#ifdef COBJMACROS
548
549
550#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
551 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
552
553#define ID3D12Debug3_AddRef(This) \
554 ( (This)->lpVtbl -> AddRef(This) )
555
556#define ID3D12Debug3_Release(This) \
557 ( (This)->lpVtbl -> Release(This) )
558
559
560#define ID3D12Debug3_EnableDebugLayer(This) \
561 ( (This)->lpVtbl -> EnableDebugLayer(This) )
562
563
564#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
565 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
566
567#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
568 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
569
570#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
571 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
572
573#endif /* COBJMACROS */
574
575
576#endif /* C style interface */
577
578
579
580
581#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
582
583
584#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
585#define __ID3D12Debug4_INTERFACE_DEFINED__
586
587/* interface ID3D12Debug4 */
588/* [unique][local][object][uuid] */
589
590
591EXTERN_C const IID IID_ID3D12Debug4;
592
593#if defined(__cplusplus) && !defined(CINTERFACE)
594
595 MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
596 ID3D12Debug4 : public ID3D12Debug3
597 {
598 public:
599 virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
600
601 };
602
603
604#else /* C style interface */
605
606 typedef struct ID3D12Debug4Vtbl
607 {
608 BEGIN_INTERFACE
609
610 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
611 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
612 ID3D12Debug4 * This,
613 REFIID riid,
614 _COM_Outptr_ void **ppvObject);
615
616 DECLSPEC_XFGVIRT(IUnknown, AddRef)
617 ULONG ( STDMETHODCALLTYPE *AddRef )(
618 ID3D12Debug4 * This);
619
620 DECLSPEC_XFGVIRT(IUnknown, Release)
621 ULONG ( STDMETHODCALLTYPE *Release )(
622 ID3D12Debug4 * This);
623
624 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
625 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
626 ID3D12Debug4 * This);
627
628 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
629 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
630 ID3D12Debug4 * This,
631 BOOL Enable);
632
633 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
634 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
635 ID3D12Debug4 * This,
636 BOOL Enable);
637
638 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
639 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
640 ID3D12Debug4 * This,
641 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
642
643 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
644 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
645 ID3D12Debug4 * This);
646
647 END_INTERFACE
648 } ID3D12Debug4Vtbl;
649
650 interface ID3D12Debug4
651 {
652 CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
653 };
654
655
656
657#ifdef COBJMACROS
658
659
660#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
661 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
662
663#define ID3D12Debug4_AddRef(This) \
664 ( (This)->lpVtbl -> AddRef(This) )
665
666#define ID3D12Debug4_Release(This) \
667 ( (This)->lpVtbl -> Release(This) )
668
669
670#define ID3D12Debug4_EnableDebugLayer(This) \
671 ( (This)->lpVtbl -> EnableDebugLayer(This) )
672
673
674#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
675 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
676
677#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
678 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
679
680#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
681 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
682
683
684#define ID3D12Debug4_DisableDebugLayer(This) \
685 ( (This)->lpVtbl -> DisableDebugLayer(This) )
686
687#endif /* COBJMACROS */
688
689
690#endif /* C style interface */
691
692
693
694
695#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
696
697
698#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
699#define __ID3D12Debug5_INTERFACE_DEFINED__
700
701/* interface ID3D12Debug5 */
702/* [unique][local][object][uuid] */
703
704
705EXTERN_C const IID IID_ID3D12Debug5;
706
707#if defined(__cplusplus) && !defined(CINTERFACE)
708
709 MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
710 ID3D12Debug5 : public ID3D12Debug4
711 {
712 public:
713 virtual void STDMETHODCALLTYPE SetEnableAutoName(
714 BOOL Enable) = 0;
715
716 };
717
718
719#else /* C style interface */
720
721 typedef struct ID3D12Debug5Vtbl
722 {
723 BEGIN_INTERFACE
724
725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
727 ID3D12Debug5 * This,
728 REFIID riid,
729 _COM_Outptr_ void **ppvObject);
730
731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
732 ULONG ( STDMETHODCALLTYPE *AddRef )(
733 ID3D12Debug5 * This);
734
735 DECLSPEC_XFGVIRT(IUnknown, Release)
736 ULONG ( STDMETHODCALLTYPE *Release )(
737 ID3D12Debug5 * This);
738
739 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
740 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
741 ID3D12Debug5 * This);
742
743 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
744 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
745 ID3D12Debug5 * This,
746 BOOL Enable);
747
748 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
749 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
750 ID3D12Debug5 * This,
751 BOOL Enable);
752
753 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
754 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
755 ID3D12Debug5 * This,
756 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
757
758 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
759 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
760 ID3D12Debug5 * This);
761
762 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
763 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
764 ID3D12Debug5 * This,
765 BOOL Enable);
766
767 END_INTERFACE
768 } ID3D12Debug5Vtbl;
769
770 interface ID3D12Debug5
771 {
772 CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
773 };
774
775
776
777#ifdef COBJMACROS
778
779
780#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
781 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
782
783#define ID3D12Debug5_AddRef(This) \
784 ( (This)->lpVtbl -> AddRef(This) )
785
786#define ID3D12Debug5_Release(This) \
787 ( (This)->lpVtbl -> Release(This) )
788
789
790#define ID3D12Debug5_EnableDebugLayer(This) \
791 ( (This)->lpVtbl -> EnableDebugLayer(This) )
792
793
794#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
795 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
796
797#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
798 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
799
800#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
801 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
802
803
804#define ID3D12Debug5_DisableDebugLayer(This) \
805 ( (This)->lpVtbl -> DisableDebugLayer(This) )
806
807
808#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
809 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
810
811#endif /* COBJMACROS */
812
813
814#endif /* C style interface */
815
816
817
818
819#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
820
821
822/* interface __MIDL_itf_d3d12sdklayers_0000_0006 */
823/* [local] */
824
825DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
826typedef
827enum D3D12_RLDO_FLAGS
828 {
829 D3D12_RLDO_NONE = 0,
830 D3D12_RLDO_SUMMARY = 0x1,
831 D3D12_RLDO_DETAIL = 0x2,
832 D3D12_RLDO_IGNORE_INTERNAL = 0x4
833 } D3D12_RLDO_FLAGS;
834
835DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
836typedef
837enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
838 {
839 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
840 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
841 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 )
842 } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
843
844typedef
845enum D3D12_DEBUG_FEATURE
846 {
847 D3D12_DEBUG_FEATURE_NONE = 0,
848 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
849 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
850 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
851 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
852 } D3D12_DEBUG_FEATURE;
853
854DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
855typedef
856enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
857 {
858 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
859 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
860 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
861 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
862 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
863 } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
864
865typedef
866enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
867 {
868 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
869 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
870 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
871 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
872 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
873 } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
874
875DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
876typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
877 {
878 UINT MaxMessagesPerCommandList;
879 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
880 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
881 } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
882
883typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
884 {
885 FLOAT SlowdownFactor;
886 } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
887
888
889
890extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0006_v0_0_c_ifspec;
891extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0006_v0_0_s_ifspec;
892
893#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
894#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
895
896/* interface ID3D12DebugDevice1 */
897/* [unique][local][object][uuid] */
898
899
900EXTERN_C const IID IID_ID3D12DebugDevice1;
901
902#if defined(__cplusplus) && !defined(CINTERFACE)
903
904 MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
905 ID3D12DebugDevice1 : public IUnknown
906 {
907 public:
908 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
909 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
910 _In_reads_bytes_(DataSize) const void *pData,
911 UINT DataSize) = 0;
912
913 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
914 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
915 _Out_writes_bytes_(DataSize) void *pData,
916 UINT DataSize) = 0;
917
918 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
919 D3D12_RLDO_FLAGS Flags) = 0;
920
921 };
922
923
924#else /* C style interface */
925
926 typedef struct ID3D12DebugDevice1Vtbl
927 {
928 BEGIN_INTERFACE
929
930 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
931 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
932 ID3D12DebugDevice1 * This,
933 REFIID riid,
934 _COM_Outptr_ void **ppvObject);
935
936 DECLSPEC_XFGVIRT(IUnknown, AddRef)
937 ULONG ( STDMETHODCALLTYPE *AddRef )(
938 ID3D12DebugDevice1 * This);
939
940 DECLSPEC_XFGVIRT(IUnknown, Release)
941 ULONG ( STDMETHODCALLTYPE *Release )(
942 ID3D12DebugDevice1 * This);
943
944 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
945 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
946 ID3D12DebugDevice1 * This,
947 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
948 _In_reads_bytes_(DataSize) const void *pData,
949 UINT DataSize);
950
951 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
952 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
953 ID3D12DebugDevice1 * This,
954 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
955 _Out_writes_bytes_(DataSize) void *pData,
956 UINT DataSize);
957
958 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
959 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
960 ID3D12DebugDevice1 * This,
961 D3D12_RLDO_FLAGS Flags);
962
963 END_INTERFACE
964 } ID3D12DebugDevice1Vtbl;
965
966 interface ID3D12DebugDevice1
967 {
968 CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
969 };
970
971
972
973#ifdef COBJMACROS
974
975
976#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
977 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
978
979#define ID3D12DebugDevice1_AddRef(This) \
980 ( (This)->lpVtbl -> AddRef(This) )
981
982#define ID3D12DebugDevice1_Release(This) \
983 ( (This)->lpVtbl -> Release(This) )
984
985
986#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
987 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
988
989#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
990 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
991
992#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
993 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
994
995#endif /* COBJMACROS */
996
997
998#endif /* C style interface */
999
1000
1001
1002
1003#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
1004
1005
1006#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
1007#define __ID3D12DebugDevice_INTERFACE_DEFINED__
1008
1009/* interface ID3D12DebugDevice */
1010/* [unique][local][object][uuid] */
1011
1012
1013EXTERN_C const IID IID_ID3D12DebugDevice;
1014
1015#if defined(__cplusplus) && !defined(CINTERFACE)
1016
1017 MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
1018 ID3D12DebugDevice : public IUnknown
1019 {
1020 public:
1021 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1022 D3D12_DEBUG_FEATURE Mask) = 0;
1023
1024 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1025
1026 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1027 D3D12_RLDO_FLAGS Flags) = 0;
1028
1029 };
1030
1031
1032#else /* C style interface */
1033
1034 typedef struct ID3D12DebugDeviceVtbl
1035 {
1036 BEGIN_INTERFACE
1037
1038 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1039 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1040 ID3D12DebugDevice * This,
1041 REFIID riid,
1042 _COM_Outptr_ void **ppvObject);
1043
1044 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1045 ULONG ( STDMETHODCALLTYPE *AddRef )(
1046 ID3D12DebugDevice * This);
1047
1048 DECLSPEC_XFGVIRT(IUnknown, Release)
1049 ULONG ( STDMETHODCALLTYPE *Release )(
1050 ID3D12DebugDevice * This);
1051
1052 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1053 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1054 ID3D12DebugDevice * This,
1055 D3D12_DEBUG_FEATURE Mask);
1056
1057 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1058 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1059 ID3D12DebugDevice * This);
1060
1061 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1062 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1063 ID3D12DebugDevice * This,
1064 D3D12_RLDO_FLAGS Flags);
1065
1066 END_INTERFACE
1067 } ID3D12DebugDeviceVtbl;
1068
1069 interface ID3D12DebugDevice
1070 {
1071 CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
1072 };
1073
1074
1075
1076#ifdef COBJMACROS
1077
1078
1079#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
1080 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1081
1082#define ID3D12DebugDevice_AddRef(This) \
1083 ( (This)->lpVtbl -> AddRef(This) )
1084
1085#define ID3D12DebugDevice_Release(This) \
1086 ( (This)->lpVtbl -> Release(This) )
1087
1088
1089#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
1090 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1091
1092#define ID3D12DebugDevice_GetFeatureMask(This) \
1093 ( (This)->lpVtbl -> GetFeatureMask(This) )
1094
1095#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
1096 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1097
1098#endif /* COBJMACROS */
1099
1100
1101#endif /* C style interface */
1102
1103
1104
1105
1106#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
1107
1108
1109#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
1110#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
1111
1112/* interface ID3D12DebugDevice2 */
1113/* [unique][local][object][uuid] */
1114
1115
1116EXTERN_C const IID IID_ID3D12DebugDevice2;
1117
1118#if defined(__cplusplus) && !defined(CINTERFACE)
1119
1120 MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
1121 ID3D12DebugDevice2 : public ID3D12DebugDevice
1122 {
1123 public:
1124 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1125 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1126 _In_reads_bytes_(DataSize) const void *pData,
1127 UINT DataSize) = 0;
1128
1129 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1130 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1131 _Out_writes_bytes_(DataSize) void *pData,
1132 UINT DataSize) = 0;
1133
1134 };
1135
1136
1137#else /* C style interface */
1138
1139 typedef struct ID3D12DebugDevice2Vtbl
1140 {
1141 BEGIN_INTERFACE
1142
1143 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1144 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1145 ID3D12DebugDevice2 * This,
1146 REFIID riid,
1147 _COM_Outptr_ void **ppvObject);
1148
1149 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1150 ULONG ( STDMETHODCALLTYPE *AddRef )(
1151 ID3D12DebugDevice2 * This);
1152
1153 DECLSPEC_XFGVIRT(IUnknown, Release)
1154 ULONG ( STDMETHODCALLTYPE *Release )(
1155 ID3D12DebugDevice2 * This);
1156
1157 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1158 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1159 ID3D12DebugDevice2 * This,
1160 D3D12_DEBUG_FEATURE Mask);
1161
1162 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1163 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1164 ID3D12DebugDevice2 * This);
1165
1166 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1167 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1168 ID3D12DebugDevice2 * This,
1169 D3D12_RLDO_FLAGS Flags);
1170
1171 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
1172 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1173 ID3D12DebugDevice2 * This,
1174 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1175 _In_reads_bytes_(DataSize) const void *pData,
1176 UINT DataSize);
1177
1178 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
1179 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1180 ID3D12DebugDevice2 * This,
1181 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1182 _Out_writes_bytes_(DataSize) void *pData,
1183 UINT DataSize);
1184
1185 END_INTERFACE
1186 } ID3D12DebugDevice2Vtbl;
1187
1188 interface ID3D12DebugDevice2
1189 {
1190 CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
1191 };
1192
1193
1194
1195#ifdef COBJMACROS
1196
1197
1198#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
1199 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1200
1201#define ID3D12DebugDevice2_AddRef(This) \
1202 ( (This)->lpVtbl -> AddRef(This) )
1203
1204#define ID3D12DebugDevice2_Release(This) \
1205 ( (This)->lpVtbl -> Release(This) )
1206
1207
1208#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
1209 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1210
1211#define ID3D12DebugDevice2_GetFeatureMask(This) \
1212 ( (This)->lpVtbl -> GetFeatureMask(This) )
1213
1214#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
1215 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1216
1217
1218#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
1219 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1220
1221#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
1222 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1223
1224#endif /* COBJMACROS */
1225
1226
1227#endif /* C style interface */
1228
1229
1230
1231
1232#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
1233
1234
1235/* interface __MIDL_itf_d3d12sdklayers_0000_0009 */
1236/* [local] */
1237
1238DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
1239
1240
1241extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0009_v0_0_c_ifspec;
1242extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0009_v0_0_s_ifspec;
1243
1244#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1245#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1246
1247/* interface ID3D12DebugCommandQueue */
1248/* [unique][local][object][uuid] */
1249
1250
1251EXTERN_C const IID IID_ID3D12DebugCommandQueue;
1252
1253#if defined(__cplusplus) && !defined(CINTERFACE)
1254
1255 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
1256 ID3D12DebugCommandQueue : public IUnknown
1257 {
1258 public:
1259 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1260 _In_ ID3D12Resource *pResource,
1261 UINT Subresource,
1262 UINT State) = 0;
1263
1264 };
1265
1266
1267#else /* C style interface */
1268
1269 typedef struct ID3D12DebugCommandQueueVtbl
1270 {
1271 BEGIN_INTERFACE
1272
1273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1275 ID3D12DebugCommandQueue * This,
1276 REFIID riid,
1277 _COM_Outptr_ void **ppvObject);
1278
1279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1280 ULONG ( STDMETHODCALLTYPE *AddRef )(
1281 ID3D12DebugCommandQueue * This);
1282
1283 DECLSPEC_XFGVIRT(IUnknown, Release)
1284 ULONG ( STDMETHODCALLTYPE *Release )(
1285 ID3D12DebugCommandQueue * This);
1286
1287 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1288 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1289 ID3D12DebugCommandQueue * This,
1290 _In_ ID3D12Resource *pResource,
1291 UINT Subresource,
1292 UINT State);
1293
1294 END_INTERFACE
1295 } ID3D12DebugCommandQueueVtbl;
1296
1297 interface ID3D12DebugCommandQueue
1298 {
1299 CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
1300 };
1301
1302
1303
1304#ifdef COBJMACROS
1305
1306
1307#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
1308 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1309
1310#define ID3D12DebugCommandQueue_AddRef(This) \
1311 ( (This)->lpVtbl -> AddRef(This) )
1312
1313#define ID3D12DebugCommandQueue_Release(This) \
1314 ( (This)->lpVtbl -> Release(This) )
1315
1316
1317#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
1318 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1319
1320#endif /* COBJMACROS */
1321
1322
1323#endif /* C style interface */
1324
1325
1326
1327
1328#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
1329
1330
1331/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
1332/* [local] */
1333
1334typedef
1335enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
1336 {
1337 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
1338 } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
1339
1340typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
1341 {
1342 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
1343 } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
1344
1345
1346
1347extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
1348extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
1349
1350#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1351#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1352
1353/* interface ID3D12DebugCommandList1 */
1354/* [unique][local][object][uuid] */
1355
1356
1357EXTERN_C const IID IID_ID3D12DebugCommandList1;
1358
1359#if defined(__cplusplus) && !defined(CINTERFACE)
1360
1361 MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
1362 ID3D12DebugCommandList1 : public IUnknown
1363 {
1364 public:
1365 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1366 _In_ ID3D12Resource *pResource,
1367 UINT Subresource,
1368 UINT State) = 0;
1369
1370 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1371 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1372 _In_reads_bytes_(DataSize) const void *pData,
1373 UINT DataSize) = 0;
1374
1375 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1376 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1377 _Out_writes_bytes_(DataSize) void *pData,
1378 UINT DataSize) = 0;
1379
1380 };
1381
1382
1383#else /* C style interface */
1384
1385 typedef struct ID3D12DebugCommandList1Vtbl
1386 {
1387 BEGIN_INTERFACE
1388
1389 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1390 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1391 ID3D12DebugCommandList1 * This,
1392 REFIID riid,
1393 _COM_Outptr_ void **ppvObject);
1394
1395 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1396 ULONG ( STDMETHODCALLTYPE *AddRef )(
1397 ID3D12DebugCommandList1 * This);
1398
1399 DECLSPEC_XFGVIRT(IUnknown, Release)
1400 ULONG ( STDMETHODCALLTYPE *Release )(
1401 ID3D12DebugCommandList1 * This);
1402
1403 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
1404 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1405 ID3D12DebugCommandList1 * This,
1406 _In_ ID3D12Resource *pResource,
1407 UINT Subresource,
1408 UINT State);
1409
1410 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
1411 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1412 ID3D12DebugCommandList1 * This,
1413 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1414 _In_reads_bytes_(DataSize) const void *pData,
1415 UINT DataSize);
1416
1417 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
1418 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1419 ID3D12DebugCommandList1 * This,
1420 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1421 _Out_writes_bytes_(DataSize) void *pData,
1422 UINT DataSize);
1423
1424 END_INTERFACE
1425 } ID3D12DebugCommandList1Vtbl;
1426
1427 interface ID3D12DebugCommandList1
1428 {
1429 CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
1430 };
1431
1432
1433
1434#ifdef COBJMACROS
1435
1436
1437#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
1438 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1439
1440#define ID3D12DebugCommandList1_AddRef(This) \
1441 ( (This)->lpVtbl -> AddRef(This) )
1442
1443#define ID3D12DebugCommandList1_Release(This) \
1444 ( (This)->lpVtbl -> Release(This) )
1445
1446
1447#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
1448 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1449
1450#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
1451 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1452
1453#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
1454 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1455
1456#endif /* COBJMACROS */
1457
1458
1459#endif /* C style interface */
1460
1461
1462
1463
1464#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
1465
1466
1467#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
1468#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
1469
1470/* interface ID3D12DebugCommandList */
1471/* [unique][local][object][uuid] */
1472
1473
1474EXTERN_C const IID IID_ID3D12DebugCommandList;
1475
1476#if defined(__cplusplus) && !defined(CINTERFACE)
1477
1478 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
1479 ID3D12DebugCommandList : public IUnknown
1480 {
1481 public:
1482 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1483 _In_ ID3D12Resource *pResource,
1484 UINT Subresource,
1485 UINT State) = 0;
1486
1487 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1488 D3D12_DEBUG_FEATURE Mask) = 0;
1489
1490 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1491
1492 };
1493
1494
1495#else /* C style interface */
1496
1497 typedef struct ID3D12DebugCommandListVtbl
1498 {
1499 BEGIN_INTERFACE
1500
1501 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1502 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1503 ID3D12DebugCommandList * This,
1504 REFIID riid,
1505 _COM_Outptr_ void **ppvObject);
1506
1507 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1508 ULONG ( STDMETHODCALLTYPE *AddRef )(
1509 ID3D12DebugCommandList * This);
1510
1511 DECLSPEC_XFGVIRT(IUnknown, Release)
1512 ULONG ( STDMETHODCALLTYPE *Release )(
1513 ID3D12DebugCommandList * This);
1514
1515 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1516 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1517 ID3D12DebugCommandList * This,
1518 _In_ ID3D12Resource *pResource,
1519 UINT Subresource,
1520 UINT State);
1521
1522 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1523 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1524 ID3D12DebugCommandList * This,
1525 D3D12_DEBUG_FEATURE Mask);
1526
1527 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1528 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1529 ID3D12DebugCommandList * This);
1530
1531 END_INTERFACE
1532 } ID3D12DebugCommandListVtbl;
1533
1534 interface ID3D12DebugCommandList
1535 {
1536 CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
1537 };
1538
1539
1540
1541#ifdef COBJMACROS
1542
1543
1544#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
1545 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1546
1547#define ID3D12DebugCommandList_AddRef(This) \
1548 ( (This)->lpVtbl -> AddRef(This) )
1549
1550#define ID3D12DebugCommandList_Release(This) \
1551 ( (This)->lpVtbl -> Release(This) )
1552
1553
1554#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
1555 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1556
1557#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
1558 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1559
1560#define ID3D12DebugCommandList_GetFeatureMask(This) \
1561 ( (This)->lpVtbl -> GetFeatureMask(This) )
1562
1563#endif /* COBJMACROS */
1564
1565
1566#endif /* C style interface */
1567
1568
1569
1570
1571#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
1572
1573
1574#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1575#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1576
1577/* interface ID3D12DebugCommandList2 */
1578/* [unique][local][object][uuid] */
1579
1580
1581EXTERN_C const IID IID_ID3D12DebugCommandList2;
1582
1583#if defined(__cplusplus) && !defined(CINTERFACE)
1584
1585 MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
1586 ID3D12DebugCommandList2 : public ID3D12DebugCommandList
1587 {
1588 public:
1589 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1590 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1591 _In_reads_bytes_(DataSize) const void *pData,
1592 UINT DataSize) = 0;
1593
1594 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1595 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1596 _Out_writes_bytes_(DataSize) void *pData,
1597 UINT DataSize) = 0;
1598
1599 };
1600
1601
1602#else /* C style interface */
1603
1604 typedef struct ID3D12DebugCommandList2Vtbl
1605 {
1606 BEGIN_INTERFACE
1607
1608 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1609 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1610 ID3D12DebugCommandList2 * This,
1611 REFIID riid,
1612 _COM_Outptr_ void **ppvObject);
1613
1614 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1615 ULONG ( STDMETHODCALLTYPE *AddRef )(
1616 ID3D12DebugCommandList2 * This);
1617
1618 DECLSPEC_XFGVIRT(IUnknown, Release)
1619 ULONG ( STDMETHODCALLTYPE *Release )(
1620 ID3D12DebugCommandList2 * This);
1621
1622 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1623 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1624 ID3D12DebugCommandList2 * This,
1625 _In_ ID3D12Resource *pResource,
1626 UINT Subresource,
1627 UINT State);
1628
1629 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1630 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1631 ID3D12DebugCommandList2 * This,
1632 D3D12_DEBUG_FEATURE Mask);
1633
1634 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1635 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1636 ID3D12DebugCommandList2 * This);
1637
1638 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
1639 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1640 ID3D12DebugCommandList2 * This,
1641 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1642 _In_reads_bytes_(DataSize) const void *pData,
1643 UINT DataSize);
1644
1645 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
1646 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1647 ID3D12DebugCommandList2 * This,
1648 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1649 _Out_writes_bytes_(DataSize) void *pData,
1650 UINT DataSize);
1651
1652 END_INTERFACE
1653 } ID3D12DebugCommandList2Vtbl;
1654
1655 interface ID3D12DebugCommandList2
1656 {
1657 CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
1658 };
1659
1660
1661
1662#ifdef COBJMACROS
1663
1664
1665#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
1666 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1667
1668#define ID3D12DebugCommandList2_AddRef(This) \
1669 ( (This)->lpVtbl -> AddRef(This) )
1670
1671#define ID3D12DebugCommandList2_Release(This) \
1672 ( (This)->lpVtbl -> Release(This) )
1673
1674
1675#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
1676 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1677
1678#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
1679 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1680
1681#define ID3D12DebugCommandList2_GetFeatureMask(This) \
1682 ( (This)->lpVtbl -> GetFeatureMask(This) )
1683
1684
1685#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
1686 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1687
1688#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
1689 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1690
1691#endif /* COBJMACROS */
1692
1693
1694#endif /* C style interface */
1695
1696
1697
1698
1699#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
1700
1701
1702#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
1703#define __ID3D12SharingContract_INTERFACE_DEFINED__
1704
1705/* interface ID3D12SharingContract */
1706/* [unique][local][object][uuid] */
1707
1708
1709EXTERN_C const IID IID_ID3D12SharingContract;
1710
1711#if defined(__cplusplus) && !defined(CINTERFACE)
1712
1713 MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
1714 ID3D12SharingContract : public IUnknown
1715 {
1716 public:
1717 virtual void STDMETHODCALLTYPE Present(
1718 _In_ ID3D12Resource *pResource,
1719 UINT Subresource,
1720 _In_ HWND window) = 0;
1721
1722 virtual void STDMETHODCALLTYPE SharedFenceSignal(
1723 _In_ ID3D12Fence *pFence,
1724 UINT64 FenceValue) = 0;
1725
1726 virtual void STDMETHODCALLTYPE BeginCapturableWork(
1727 _In_ REFGUID guid) = 0;
1728
1729 virtual void STDMETHODCALLTYPE EndCapturableWork(
1730 _In_ REFGUID guid) = 0;
1731
1732 };
1733
1734
1735#else /* C style interface */
1736
1737 typedef struct ID3D12SharingContractVtbl
1738 {
1739 BEGIN_INTERFACE
1740
1741 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1742 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1743 ID3D12SharingContract * This,
1744 REFIID riid,
1745 _COM_Outptr_ void **ppvObject);
1746
1747 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1748 ULONG ( STDMETHODCALLTYPE *AddRef )(
1749 ID3D12SharingContract * This);
1750
1751 DECLSPEC_XFGVIRT(IUnknown, Release)
1752 ULONG ( STDMETHODCALLTYPE *Release )(
1753 ID3D12SharingContract * This);
1754
1755 DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
1756 void ( STDMETHODCALLTYPE *Present )(
1757 ID3D12SharingContract * This,
1758 _In_ ID3D12Resource *pResource,
1759 UINT Subresource,
1760 _In_ HWND window);
1761
1762 DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
1763 void ( STDMETHODCALLTYPE *SharedFenceSignal )(
1764 ID3D12SharingContract * This,
1765 _In_ ID3D12Fence *pFence,
1766 UINT64 FenceValue);
1767
1768 DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
1769 void ( STDMETHODCALLTYPE *BeginCapturableWork )(
1770 ID3D12SharingContract * This,
1771 _In_ REFGUID guid);
1772
1773 DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
1774 void ( STDMETHODCALLTYPE *EndCapturableWork )(
1775 ID3D12SharingContract * This,
1776 _In_ REFGUID guid);
1777
1778 END_INTERFACE
1779 } ID3D12SharingContractVtbl;
1780
1781 interface ID3D12SharingContract
1782 {
1783 CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
1784 };
1785
1786
1787
1788#ifdef COBJMACROS
1789
1790
1791#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
1792 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1793
1794#define ID3D12SharingContract_AddRef(This) \
1795 ( (This)->lpVtbl -> AddRef(This) )
1796
1797#define ID3D12SharingContract_Release(This) \
1798 ( (This)->lpVtbl -> Release(This) )
1799
1800
1801#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
1802 ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
1803
1804#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
1805 ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
1806
1807#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
1808 ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
1809
1810#define ID3D12SharingContract_EndCapturableWork(This,guid) \
1811 ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
1812
1813#endif /* COBJMACROS */
1814
1815
1816#endif /* C style interface */
1817
1818
1819
1820
1821#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
1822
1823
1824/* interface __MIDL_itf_d3d12sdklayers_0000_0014 */
1825/* [local] */
1826
1827typedef
1828enum D3D12_MESSAGE_CATEGORY
1829 {
1830 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
1831 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
1832 D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
1833 D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
1834 D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
1835 D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
1836 D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
1837 D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
1838 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
1839 D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
1840 D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
1841 } D3D12_MESSAGE_CATEGORY;
1842
1843typedef
1844enum D3D12_MESSAGE_SEVERITY
1845 {
1846 D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
1847 D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
1848 D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
1849 D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
1850 D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
1851 } D3D12_MESSAGE_SEVERITY;
1852
1853typedef
1854enum D3D12_MESSAGE_ID
1855 {
1856 D3D12_MESSAGE_ID_UNKNOWN = 0,
1857 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
1858 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
1859 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
1860 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
1861 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
1862 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
1863 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
1864 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
1865 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
1866 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
1867 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
1868 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
1869 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
1870 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
1871 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
1872 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
1873 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
1874 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
1875 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
1876 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
1877 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
1878 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
1879 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
1880 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
1881 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
1882 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
1883 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
1884 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
1885 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
1886 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
1887 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
1888 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
1889 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
1890 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
1891 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
1892 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
1893 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
1894 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
1895 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
1896 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
1897 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
1898 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
1899 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
1900 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
1901 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
1902 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
1903 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
1904 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
1905 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
1906 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
1907 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
1908 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
1909 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
1910 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
1911 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
1912 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
1913 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
1914 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
1915 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
1916 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
1917 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
1918 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
1919 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
1920 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
1921 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
1922 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
1923 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
1924 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
1925 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
1926 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
1927 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
1928 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
1929 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
1930 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
1931 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
1932 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
1933 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
1934 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
1935 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
1936 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
1937 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
1938 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
1939 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
1940 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
1941 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
1942 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
1943 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
1944 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
1945 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
1946 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
1947 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
1948 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
1949 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
1950 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
1951 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
1952 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
1953 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
1954 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
1955 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
1956 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
1957 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
1958 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
1959 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
1960 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
1961 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
1962 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
1963 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
1964 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
1965 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
1966 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
1967 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
1968 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
1969 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
1970 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
1971 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
1972 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
1973 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
1974 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
1975 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
1976 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
1977 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
1978 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
1979 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
1980 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
1981 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
1982 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
1983 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
1984 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
1985 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
1986 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
1987 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
1988 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
1989 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
1990 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
1991 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
1992 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
1993 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
1994 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
1995 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
1996 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
1997 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
1998 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
1999 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
2000 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
2001 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
2002 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
2003 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
2004 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
2005 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
2006 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
2007 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
2008 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
2009 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
2010 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
2011 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
2012 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
2013 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
2014 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
2015 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
2016 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
2017 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
2018 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
2019 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
2020 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
2021 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
2022 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
2023 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
2024 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
2025 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
2026 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
2027 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
2028 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
2029 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
2030 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
2031 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
2032 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
2033 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
2034 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
2035 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
2036 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
2037 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
2038 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
2039 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
2040 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
2041 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
2042 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
2043 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
2044 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
2045 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
2046 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
2047 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
2048 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
2049 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
2050 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
2051 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
2052 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
2053 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
2054 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
2055 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
2056 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
2057 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
2058 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
2059 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
2060 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
2061 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
2062 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
2063 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
2064 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
2065 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
2066 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
2067 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
2068 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
2069 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
2070 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
2071 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
2072 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
2073 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
2074 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
2075 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
2076 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
2077 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
2078 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
2079 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
2080 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
2081 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
2082 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
2083 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
2084 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
2085 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
2086 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
2087 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
2088 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
2089 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
2090 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
2091 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
2092 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
2093 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
2094 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
2095 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
2096 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
2097 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
2098 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
2099 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
2100 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
2101 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
2102 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
2103 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
2104 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
2105 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
2106 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
2107 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
2108 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
2109 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
2110 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
2111 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
2112 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
2113 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
2114 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
2115 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
2116 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
2117 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
2118 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
2119 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
2120 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
2121 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
2122 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
2123 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
2124 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
2125 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
2126 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
2127 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
2128 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
2129 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
2130 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
2131 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
2132 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
2133 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
2134 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
2135 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
2136 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
2137 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
2138 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
2139 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
2140 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
2141 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
2142 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
2143 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
2144 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
2145 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
2146 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
2147 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
2148 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
2149 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
2150 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
2151 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
2152 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
2153 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
2154 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
2155 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
2156 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
2157 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
2158 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
2159 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
2160 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
2161 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
2162 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
2163 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
2164 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
2165 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
2166 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
2167 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
2168 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
2169 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
2170 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
2171 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
2172 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
2173 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
2174 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
2175 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
2176 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
2177 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
2178 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
2179 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
2180 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
2181 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
2182 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
2183 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
2184 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
2185 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
2186 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
2187 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
2188 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
2189 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
2190 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
2191 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
2192 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
2193 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
2194 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
2195 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
2196 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
2197 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
2198 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
2199 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
2200 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
2201 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
2202 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
2203 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
2204 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
2205 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
2206 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
2207 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
2208 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
2209 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
2210 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
2211 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
2212 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
2213 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
2214 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
2215 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
2216 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
2217 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
2218 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
2219 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
2220 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
2221 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
2222 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
2223 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
2224 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
2225 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
2226 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
2227 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
2228 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
2229 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
2230 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
2231 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
2232 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
2233 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
2234 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
2235 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
2236 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
2237 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
2238 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
2239 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
2240 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
2241 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
2242 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
2243 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
2244 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
2245 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
2246 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
2247 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
2248 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
2249 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
2250 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
2251 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
2252 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
2253 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
2254 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
2255 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
2256 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
2257 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
2258 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
2259 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
2260 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
2261 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
2262 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
2263 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
2264 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
2265 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
2266 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
2267 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
2268 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
2269 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
2270 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
2271 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
2272 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
2273 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
2274 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
2275 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
2276 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
2277 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
2278 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
2279 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
2280 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
2281 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
2282 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
2283 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
2284 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
2285 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
2286 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
2287 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
2288 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
2289 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
2290 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
2291 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
2292 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
2293 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
2294 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
2295 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
2296 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
2297 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
2298 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
2299 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
2300 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
2301 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
2302 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
2303 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
2304 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
2305 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
2306 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
2307 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
2308 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
2309 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
2310 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
2311 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
2312 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
2313 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
2314 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
2315 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
2316 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
2317 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
2318 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
2319 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
2320 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
2321 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
2322 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
2323 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
2324 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
2325 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
2326 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
2327 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
2328 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
2329 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
2330 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
2331 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
2332 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
2333 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
2334 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
2335 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
2336 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
2337 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
2338 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
2339 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
2340 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
2341 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
2342 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
2343 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
2344 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
2345 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
2346 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
2347 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
2348 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
2349 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
2350 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
2351 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
2352 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
2353 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
2354 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
2355 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
2356 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
2357 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
2358 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
2359 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
2360 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
2361 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
2362 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
2363 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
2364 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
2365 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
2366 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
2367 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
2368 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
2369 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
2370 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
2371 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
2372 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
2373 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
2374 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
2375 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
2376 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
2377 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
2378 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
2379 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
2380 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
2381 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
2382 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
2383 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
2384 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
2385 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
2386 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
2387 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
2388 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
2389 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
2390 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
2391 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
2392 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
2393 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
2394 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
2395 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
2396 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
2397 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
2398 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
2399 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
2400 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
2401 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
2402 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
2403 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
2404 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
2405 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
2406 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
2407 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
2408 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
2409 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
2410 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
2411 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
2412 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
2413 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
2414 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
2415 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
2416 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
2417 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
2418 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
2419 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
2420 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
2421 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
2422 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
2423 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
2424 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
2425 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
2426 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
2427 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
2428 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
2429 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
2430 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
2431 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
2432 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
2433 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
2434 D3D12_MESSAGE_ID_END_EVENT = 1015,
2435 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
2436 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
2437 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
2438 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
2439 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
2440 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
2441 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
2442 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
2443 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
2444 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
2445 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
2446 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
2447 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
2448 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
2449 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
2450 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
2451 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
2452 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
2453 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
2454 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
2455 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
2456 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
2457 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
2458 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
2459 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
2460 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
2461 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
2462 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
2463 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
2464 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
2465 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
2466 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
2467 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
2468 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
2469 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
2470 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
2471 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
2472 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
2473 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
2474 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
2475 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
2476 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
2477 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
2478 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
2479 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
2480 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
2481 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
2482 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
2483 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
2484 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
2485 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
2486 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
2487 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
2488 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
2489 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
2490 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
2491 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
2492 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
2493 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
2494 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
2495 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
2496 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
2497 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
2498 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
2499 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
2500 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
2501 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
2502 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
2503 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
2504 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
2505 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
2506 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
2507 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
2508 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
2509 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
2510 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
2511 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
2512 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
2513 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
2514 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
2515 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
2516 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
2517 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
2518 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
2519 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
2520 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
2521 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
2522 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
2523 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
2524 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
2525 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
2526 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
2527 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
2528 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
2529 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
2530 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
2531 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
2532 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
2533 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
2534 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
2535 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
2536 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
2537 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
2538 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
2539 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
2540 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
2541 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
2542 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
2543 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
2544 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
2545 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
2546 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
2547 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
2548 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
2549 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
2550 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
2551 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
2552 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
2553 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
2554 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
2555 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
2556 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
2557 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
2558 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
2559 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
2560 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
2561 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
2562 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
2563 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
2564 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
2565 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
2566 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
2567 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
2568 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
2569 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
2570 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
2571 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
2572 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
2573 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
2574 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
2575 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
2576 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
2577 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
2578 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
2579 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
2580 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
2581 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
2582 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
2583 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
2584 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
2585 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
2586 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
2587 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
2588 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
2589 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
2590 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
2591 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
2592 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
2593 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
2594 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
2595 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
2596 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
2597 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
2598 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
2599 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
2600 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
2601 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
2602 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
2603 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
2604 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
2605 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
2606 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
2607 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
2608 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
2609 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
2610 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
2611 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
2612 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
2613 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
2614 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
2615 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
2616 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
2617 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
2618 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
2619 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
2620 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
2621 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
2622 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
2623 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
2624 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
2625 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
2626 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
2627 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
2628 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
2629 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
2630 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
2631 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
2632 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
2633 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
2634 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
2635 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
2636 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
2637 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
2638 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
2639 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
2640 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
2641 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
2642 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
2643 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
2644 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
2645 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
2646 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
2647 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
2648 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
2649 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
2650 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
2651 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
2652 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
2653 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
2654 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
2655 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
2656 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
2657 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
2658 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
2659 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
2660 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
2661 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
2662 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
2663 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
2664 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
2665 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
2666 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
2667 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
2668 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
2669 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
2670 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
2671 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
2672 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
2673 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
2674 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
2675 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
2676 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
2677 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
2678 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
2679 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
2680 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
2681 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
2682 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
2683 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
2684 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
2685 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
2686 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
2687 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
2688 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
2689 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
2690 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
2691 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
2692 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
2693 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
2694 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
2695 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
2696 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
2697 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
2698 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
2699 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
2700 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
2701 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
2702 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
2703 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
2704 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
2705 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
2706 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
2707 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
2708 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
2709 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
2710 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
2711 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
2712 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
2713 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
2714 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
2715 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
2716 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
2717 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
2718 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
2719 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
2720 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
2721 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
2722 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
2723 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
2724 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
2725 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
2726 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
2727 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
2728 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
2729 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
2730 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
2731 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
2732 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
2733 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
2734 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
2735 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
2736 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
2737 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
2738 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
2739 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
2740 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
2741 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
2742 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
2743 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
2744 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
2745 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
2746 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
2747 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = ( D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED + 1 )
2748 } D3D12_MESSAGE_ID;
2749
2750typedef struct D3D12_MESSAGE
2751 {
2752 D3D12_MESSAGE_CATEGORY Category;
2753 D3D12_MESSAGE_SEVERITY Severity;
2754 D3D12_MESSAGE_ID ID;
2755 _Field_size_(DescriptionByteLength) const char *pDescription;
2756 SIZE_T DescriptionByteLength;
2757 } D3D12_MESSAGE;
2758
2759typedef struct D3D12_INFO_QUEUE_FILTER_DESC
2760 {
2761 UINT NumCategories;
2762 _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
2763 UINT NumSeverities;
2764 _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
2765 UINT NumIDs;
2766 _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
2767 } D3D12_INFO_QUEUE_FILTER_DESC;
2768
2769typedef struct D3D12_INFO_QUEUE_FILTER
2770 {
2771 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
2772 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
2773 } D3D12_INFO_QUEUE_FILTER;
2774
2775#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
2776
2777
2778extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0014_v0_0_c_ifspec;
2779extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0014_v0_0_s_ifspec;
2780
2781#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
2782#define __ID3D12InfoQueue_INTERFACE_DEFINED__
2783
2784/* interface ID3D12InfoQueue */
2785/* [unique][local][object][uuid] */
2786
2787
2788EXTERN_C const IID IID_ID3D12InfoQueue;
2789
2790#if defined(__cplusplus) && !defined(CINTERFACE)
2791
2792 MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
2793 ID3D12InfoQueue : public IUnknown
2794 {
2795 public:
2796 virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
2797 _In_ UINT64 MessageCountLimit) = 0;
2798
2799 virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
2800
2801 virtual HRESULT STDMETHODCALLTYPE GetMessage(
2802 _In_ UINT64 MessageIndex,
2803 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
2804 _Inout_ SIZE_T *pMessageByteLength) = 0;
2805
2806 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
2807
2808 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
2809
2810 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
2811
2812 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
2813
2814 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
2815
2816 virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
2817
2818 virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
2819 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2820
2821 virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
2822 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2823 _Inout_ SIZE_T *pFilterByteLength) = 0;
2824
2825 virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
2826
2827 virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
2828
2829 virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
2830
2831 virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
2832 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2833
2834 virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
2835
2836 virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
2837
2838 virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
2839 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2840
2841 virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
2842 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2843 _Inout_ SIZE_T *pFilterByteLength) = 0;
2844
2845 virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
2846
2847 virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
2848
2849 virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
2850
2851 virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
2852 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
2853
2854 virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
2855
2856 virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
2857
2858 virtual HRESULT STDMETHODCALLTYPE AddMessage(
2859 _In_ D3D12_MESSAGE_CATEGORY Category,
2860 _In_ D3D12_MESSAGE_SEVERITY Severity,
2861 _In_ D3D12_MESSAGE_ID ID,
2862 _In_ LPCSTR pDescription) = 0;
2863
2864 virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
2865 _In_ D3D12_MESSAGE_SEVERITY Severity,
2866 _In_ LPCSTR pDescription) = 0;
2867
2868 virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
2869 _In_ D3D12_MESSAGE_CATEGORY Category,
2870 _In_ BOOL bEnable) = 0;
2871
2872 virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
2873 _In_ D3D12_MESSAGE_SEVERITY Severity,
2874 _In_ BOOL bEnable) = 0;
2875
2876 virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
2877 _In_ D3D12_MESSAGE_ID ID,
2878 _In_ BOOL bEnable) = 0;
2879
2880 virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
2881 _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
2882
2883 virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
2884 _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
2885
2886 virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
2887 _In_ D3D12_MESSAGE_ID ID) = 0;
2888
2889 virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
2890 _In_ BOOL bMute) = 0;
2891
2892 virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
2893
2894 };
2895
2896
2897#else /* C style interface */
2898
2899 typedef struct ID3D12InfoQueueVtbl
2900 {
2901 BEGIN_INTERFACE
2902
2903 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2904 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2905 ID3D12InfoQueue * This,
2906 REFIID riid,
2907 _COM_Outptr_ void **ppvObject);
2908
2909 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2910 ULONG ( STDMETHODCALLTYPE *AddRef )(
2911 ID3D12InfoQueue * This);
2912
2913 DECLSPEC_XFGVIRT(IUnknown, Release)
2914 ULONG ( STDMETHODCALLTYPE *Release )(
2915 ID3D12InfoQueue * This);
2916
2917 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
2918 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
2919 ID3D12InfoQueue * This,
2920 _In_ UINT64 MessageCountLimit);
2921
2922 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
2923 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
2924 ID3D12InfoQueue * This);
2925
2926 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
2927 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
2928 ID3D12InfoQueue * This,
2929 _In_ UINT64 MessageIndex,
2930 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
2931 _Inout_ SIZE_T *pMessageByteLength);
2932
2933 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
2934 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
2935 ID3D12InfoQueue * This);
2936
2937 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
2938 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
2939 ID3D12InfoQueue * This);
2940
2941 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
2942 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
2943 ID3D12InfoQueue * This);
2944
2945 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
2946 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
2947 ID3D12InfoQueue * This);
2948
2949 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
2950 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
2951 ID3D12InfoQueue * This);
2952
2953 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
2954 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
2955 ID3D12InfoQueue * This);
2956
2957 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
2958 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
2959 ID3D12InfoQueue * This,
2960 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2961
2962 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
2963 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
2964 ID3D12InfoQueue * This,
2965 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
2966 _Inout_ SIZE_T *pFilterByteLength);
2967
2968 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
2969 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
2970 ID3D12InfoQueue * This);
2971
2972 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
2973 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
2974 ID3D12InfoQueue * This);
2975
2976 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
2977 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
2978 ID3D12InfoQueue * This);
2979
2980 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
2981 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
2982 ID3D12InfoQueue * This,
2983 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2984
2985 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
2986 void ( STDMETHODCALLTYPE *PopStorageFilter )(
2987 ID3D12InfoQueue * This);
2988
2989 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
2990 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
2991 ID3D12InfoQueue * This);
2992
2993 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
2994 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
2995 ID3D12InfoQueue * This,
2996 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
2997
2998 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
2999 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3000 ID3D12InfoQueue * This,
3001 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3002 _Inout_ SIZE_T *pFilterByteLength);
3003
3004 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3005 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3006 ID3D12InfoQueue * This);
3007
3008 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3009 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3010 ID3D12InfoQueue * This);
3011
3012 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3013 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3014 ID3D12InfoQueue * This);
3015
3016 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3017 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3018 ID3D12InfoQueue * This,
3019 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3020
3021 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3022 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3023 ID3D12InfoQueue * This);
3024
3025 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3026 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3027 ID3D12InfoQueue * This);
3028
3029 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3030 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3031 ID3D12InfoQueue * This,
3032 _In_ D3D12_MESSAGE_CATEGORY Category,
3033 _In_ D3D12_MESSAGE_SEVERITY Severity,
3034 _In_ D3D12_MESSAGE_ID ID,
3035 _In_ LPCSTR pDescription);
3036
3037 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3038 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3039 ID3D12InfoQueue * This,
3040 _In_ D3D12_MESSAGE_SEVERITY Severity,
3041 _In_ LPCSTR pDescription);
3042
3043 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3044 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3045 ID3D12InfoQueue * This,
3046 _In_ D3D12_MESSAGE_CATEGORY Category,
3047 _In_ BOOL bEnable);
3048
3049 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3050 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3051 ID3D12InfoQueue * This,
3052 _In_ D3D12_MESSAGE_SEVERITY Severity,
3053 _In_ BOOL bEnable);
3054
3055 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3056 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3057 ID3D12InfoQueue * This,
3058 _In_ D3D12_MESSAGE_ID ID,
3059 _In_ BOOL bEnable);
3060
3061 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3062 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3063 ID3D12InfoQueue * This,
3064 _In_ D3D12_MESSAGE_CATEGORY Category);
3065
3066 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3067 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3068 ID3D12InfoQueue * This,
3069 _In_ D3D12_MESSAGE_SEVERITY Severity);
3070
3071 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3072 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3073 ID3D12InfoQueue * This,
3074 _In_ D3D12_MESSAGE_ID ID);
3075
3076 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3077 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3078 ID3D12InfoQueue * This,
3079 _In_ BOOL bMute);
3080
3081 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3082 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3083 ID3D12InfoQueue * This);
3084
3085 END_INTERFACE
3086 } ID3D12InfoQueueVtbl;
3087
3088 interface ID3D12InfoQueue
3089 {
3090 CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
3091 };
3092
3093
3094
3095#ifdef COBJMACROS
3096
3097
3098#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
3099 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3100
3101#define ID3D12InfoQueue_AddRef(This) \
3102 ( (This)->lpVtbl -> AddRef(This) )
3103
3104#define ID3D12InfoQueue_Release(This) \
3105 ( (This)->lpVtbl -> Release(This) )
3106
3107
3108#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
3109 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3110
3111#define ID3D12InfoQueue_ClearStoredMessages(This) \
3112 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3113
3114#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3115 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3116
3117#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
3118 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3119
3120#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
3121 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3122
3123#define ID3D12InfoQueue_GetNumStoredMessages(This) \
3124 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3125
3126#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3127 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3128
3129#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
3130 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3131
3132#define ID3D12InfoQueue_GetMessageCountLimit(This) \
3133 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3134
3135#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
3136 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3137
3138#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
3139 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3140
3141#define ID3D12InfoQueue_ClearStorageFilter(This) \
3142 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3143
3144#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
3145 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3146
3147#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
3148 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3149
3150#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
3151 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3152
3153#define ID3D12InfoQueue_PopStorageFilter(This) \
3154 ( (This)->lpVtbl -> PopStorageFilter(This) )
3155
3156#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
3157 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3158
3159#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
3160 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3161
3162#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3163 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3164
3165#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
3166 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3167
3168#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
3169 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3170
3171#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
3172 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3173
3174#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
3175 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3176
3177#define ID3D12InfoQueue_PopRetrievalFilter(This) \
3178 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3179
3180#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
3181 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3182
3183#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
3184 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3185
3186#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
3187 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3188
3189#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
3190 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3191
3192#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
3193 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3194
3195#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
3196 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3197
3198#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
3199 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3200
3201#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
3202 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3203
3204#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
3205 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3206
3207#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
3208 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3209
3210#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
3211 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3212
3213#endif /* COBJMACROS */
3214
3215
3216#endif /* C style interface */
3217
3218
3219
3220
3221#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
3222
3223
3224/* interface __MIDL_itf_d3d12sdklayers_0000_0015 */
3225/* [local] */
3226
3227typedef
3228enum D3D12_MESSAGE_CALLBACK_FLAGS
3229 {
3230 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
3231 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
3232 } D3D12_MESSAGE_CALLBACK_FLAGS;
3233
3234DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
3235typedef void ( __stdcall *D3D12MessageFunc )(
3236 D3D12_MESSAGE_CATEGORY Category,
3237 D3D12_MESSAGE_SEVERITY Severity,
3238 D3D12_MESSAGE_ID ID,
3239 LPCSTR pDescription,
3240 void *pContext);
3241
3242
3243
3244extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0015_v0_0_c_ifspec;
3245extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0015_v0_0_s_ifspec;
3246
3247#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
3248#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
3249
3250/* interface ID3D12InfoQueue1 */
3251/* [unique][local][object][uuid] */
3252
3253
3254EXTERN_C const IID IID_ID3D12InfoQueue1;
3255
3256#if defined(__cplusplus) && !defined(CINTERFACE)
3257
3258 MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
3259 ID3D12InfoQueue1 : public ID3D12InfoQueue
3260 {
3261 public:
3262 virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
3263 _In_ D3D12MessageFunc CallbackFunc,
3264 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3265 _In_ void *pContext,
3266 _Inout_ DWORD *pCallbackCookie) = 0;
3267
3268 virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
3269 _In_ DWORD CallbackCookie) = 0;
3270
3271 };
3272
3273
3274#else /* C style interface */
3275
3276 typedef struct ID3D12InfoQueue1Vtbl
3277 {
3278 BEGIN_INTERFACE
3279
3280 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3281 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3282 ID3D12InfoQueue1 * This,
3283 REFIID riid,
3284 _COM_Outptr_ void **ppvObject);
3285
3286 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3287 ULONG ( STDMETHODCALLTYPE *AddRef )(
3288 ID3D12InfoQueue1 * This);
3289
3290 DECLSPEC_XFGVIRT(IUnknown, Release)
3291 ULONG ( STDMETHODCALLTYPE *Release )(
3292 ID3D12InfoQueue1 * This);
3293
3294 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3295 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3296 ID3D12InfoQueue1 * This,
3297 _In_ UINT64 MessageCountLimit);
3298
3299 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3300 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3301 ID3D12InfoQueue1 * This);
3302
3303 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3304 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3305 ID3D12InfoQueue1 * This,
3306 _In_ UINT64 MessageIndex,
3307 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3308 _Inout_ SIZE_T *pMessageByteLength);
3309
3310 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3311 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3312 ID3D12InfoQueue1 * This);
3313
3314 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3315 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3316 ID3D12InfoQueue1 * This);
3317
3318 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3319 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3320 ID3D12InfoQueue1 * This);
3321
3322 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3323 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3324 ID3D12InfoQueue1 * This);
3325
3326 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3327 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3328 ID3D12InfoQueue1 * This);
3329
3330 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3331 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3332 ID3D12InfoQueue1 * This);
3333
3334 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3335 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3336 ID3D12InfoQueue1 * This,
3337 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3338
3339 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3340 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3341 ID3D12InfoQueue1 * This,
3342 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3343 _Inout_ SIZE_T *pFilterByteLength);
3344
3345 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3346 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3347 ID3D12InfoQueue1 * This);
3348
3349 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3350 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3351 ID3D12InfoQueue1 * This);
3352
3353 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3354 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3355 ID3D12InfoQueue1 * This);
3356
3357 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3358 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3359 ID3D12InfoQueue1 * This,
3360 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3361
3362 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3363 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3364 ID3D12InfoQueue1 * This);
3365
3366 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3367 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3368 ID3D12InfoQueue1 * This);
3369
3370 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3371 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3372 ID3D12InfoQueue1 * This,
3373 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3374
3375 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3376 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3377 ID3D12InfoQueue1 * This,
3378 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3379 _Inout_ SIZE_T *pFilterByteLength);
3380
3381 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3382 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3383 ID3D12InfoQueue1 * This);
3384
3385 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3386 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3387 ID3D12InfoQueue1 * This);
3388
3389 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3390 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3391 ID3D12InfoQueue1 * This);
3392
3393 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3394 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3395 ID3D12InfoQueue1 * This,
3396 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3397
3398 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3399 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3400 ID3D12InfoQueue1 * This);
3401
3402 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3403 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3404 ID3D12InfoQueue1 * This);
3405
3406 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3407 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3408 ID3D12InfoQueue1 * This,
3409 _In_ D3D12_MESSAGE_CATEGORY Category,
3410 _In_ D3D12_MESSAGE_SEVERITY Severity,
3411 _In_ D3D12_MESSAGE_ID ID,
3412 _In_ LPCSTR pDescription);
3413
3414 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3415 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3416 ID3D12InfoQueue1 * This,
3417 _In_ D3D12_MESSAGE_SEVERITY Severity,
3418 _In_ LPCSTR pDescription);
3419
3420 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3421 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3422 ID3D12InfoQueue1 * This,
3423 _In_ D3D12_MESSAGE_CATEGORY Category,
3424 _In_ BOOL bEnable);
3425
3426 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3427 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3428 ID3D12InfoQueue1 * This,
3429 _In_ D3D12_MESSAGE_SEVERITY Severity,
3430 _In_ BOOL bEnable);
3431
3432 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3433 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3434 ID3D12InfoQueue1 * This,
3435 _In_ D3D12_MESSAGE_ID ID,
3436 _In_ BOOL bEnable);
3437
3438 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3439 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3440 ID3D12InfoQueue1 * This,
3441 _In_ D3D12_MESSAGE_CATEGORY Category);
3442
3443 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3444 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3445 ID3D12InfoQueue1 * This,
3446 _In_ D3D12_MESSAGE_SEVERITY Severity);
3447
3448 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3449 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3450 ID3D12InfoQueue1 * This,
3451 _In_ D3D12_MESSAGE_ID ID);
3452
3453 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3454 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3455 ID3D12InfoQueue1 * This,
3456 _In_ BOOL bMute);
3457
3458 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3459 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3460 ID3D12InfoQueue1 * This);
3461
3462 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
3463 HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
3464 ID3D12InfoQueue1 * This,
3465 _In_ D3D12MessageFunc CallbackFunc,
3466 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3467 _In_ void *pContext,
3468 _Inout_ DWORD *pCallbackCookie);
3469
3470 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
3471 HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
3472 ID3D12InfoQueue1 * This,
3473 _In_ DWORD CallbackCookie);
3474
3475 END_INTERFACE
3476 } ID3D12InfoQueue1Vtbl;
3477
3478 interface ID3D12InfoQueue1
3479 {
3480 CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
3481 };
3482
3483
3484
3485#ifdef COBJMACROS
3486
3487
3488#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
3489 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3490
3491#define ID3D12InfoQueue1_AddRef(This) \
3492 ( (This)->lpVtbl -> AddRef(This) )
3493
3494#define ID3D12InfoQueue1_Release(This) \
3495 ( (This)->lpVtbl -> Release(This) )
3496
3497
3498#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
3499 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3500
3501#define ID3D12InfoQueue1_ClearStoredMessages(This) \
3502 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3503
3504#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3505 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3506
3507#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
3508 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3509
3510#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
3511 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3512
3513#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
3514 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3515
3516#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3517 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3518
3519#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
3520 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3521
3522#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
3523 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3524
3525#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
3526 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3527
3528#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
3529 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3530
3531#define ID3D12InfoQueue1_ClearStorageFilter(This) \
3532 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3533
3534#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
3535 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3536
3537#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
3538 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3539
3540#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
3541 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3542
3543#define ID3D12InfoQueue1_PopStorageFilter(This) \
3544 ( (This)->lpVtbl -> PopStorageFilter(This) )
3545
3546#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
3547 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3548
3549#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
3550 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3551
3552#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3553 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3554
3555#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
3556 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3557
3558#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
3559 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3560
3561#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
3562 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3563
3564#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
3565 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3566
3567#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
3568 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3569
3570#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
3571 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3572
3573#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
3574 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3575
3576#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
3577 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3578
3579#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
3580 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3581
3582#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
3583 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3584
3585#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
3586 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3587
3588#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
3589 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3590
3591#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
3592 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3593
3594#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
3595 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3596
3597#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
3598 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3599
3600#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
3601 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3602
3603
3604#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
3605 ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
3606
3607#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
3608 ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
3609
3610#endif /* COBJMACROS */
3611
3612
3613#endif /* C style interface */
3614
3615
3616
3617
3618#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
3619
3620
3621/* interface __MIDL_itf_d3d12sdklayers_0000_0016 */
3622/* [local] */
3623
3624#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
3625#pragma endregion
3626DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
3627DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
3628DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
3629DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
3630DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
3631DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
3632DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
3633DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
3634DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
3635DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
3636DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
3637DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
3638DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
3639DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
3640DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
3641DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
3642
3643
3644extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0016_v0_0_c_ifspec;
3645extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0016_v0_0_s_ifspec;
3646
3647/* Additional Prototypes for ALL interfaces */
3648
3649/* end of Additional Prototypes */
3650
3651#ifdef __cplusplus
3652}
3653#endif
3654
3655#endif
3656
3657
diff --git a/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl
new file mode 100644
index 0000000..3557ce1
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12sdklayers.idl
@@ -0,0 +1,1679 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "d3d12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region App Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17//==================================================================================================================================
18//
19// Debugging Layer
20//
21//==================================================================================================================================
22
23[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
24interface ID3D12Debug
25 : IUnknown
26{
27 void EnableDebugLayer();
28}
29
30typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
31{
32 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
33 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
34
35} D3D12_GPU_BASED_VALIDATION_FLAGS;
36cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
37
38
39[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
40interface ID3D12Debug1
41 : IUnknown
42{
43 void EnableDebugLayer();
44 void SetEnableGPUBasedValidation(BOOL Enable);
45 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
46}
47
48[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
49interface ID3D12Debug2
50 : IUnknown
51{
52 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
53}
54
55[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
56interface ID3D12Debug3
57 : ID3D12Debug
58{
59 void SetEnableGPUBasedValidation(BOOL Enable);
60 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
61 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
62}
63
64[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
65interface ID3D12Debug4
66 : ID3D12Debug3
67{
68 void DisableDebugLayer();
69}
70
71[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
72interface ID3D12Debug5
73 : ID3D12Debug4
74{
75 void SetEnableAutoName(BOOL Enable);
76}
77
78cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
79
80typedef enum D3D12_RLDO_FLAGS
81{
82 D3D12_RLDO_NONE = 0x0,
83 D3D12_RLDO_SUMMARY = 0x1,
84 D3D12_RLDO_DETAIL = 0x2,
85 D3D12_RLDO_IGNORE_INTERNAL = 0x4,
86
87} D3D12_RLDO_FLAGS;
88
89cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
90
91typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
92{
93 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
94 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
95 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
96} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
97
98typedef enum D3D12_DEBUG_FEATURE
99{
100 D3D12_DEBUG_FEATURE_NONE = 0x00,
101 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
102 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
103 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
104 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
105} D3D12_DEBUG_FEATURE;
106
107cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
108
109typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
110{
111 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
112 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
113 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
114 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
115 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
116} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
117
118typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
119{
120 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
121 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
122 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
123 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
124 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
125} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
126
127cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
128
129typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
130{
131 UINT MaxMessagesPerCommandList;
132 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
133 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
134} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
135
136typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
137{
138 FLOAT SlowdownFactor;
139} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
140
141[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
142interface ID3D12DebugDevice1
143 : IUnknown
144{
145 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
146 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
147 HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
148}
149
150[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
151interface ID3D12DebugDevice
152 : IUnknown
153{
154 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
155 D3D12_DEBUG_FEATURE GetFeatureMask();
156 HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
157}
158
159[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
160interface ID3D12DebugDevice2
161 : ID3D12DebugDevice
162{
163 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
164 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
165}
166
167cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
168
169
170[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
171interface ID3D12DebugCommandQueue
172 : IUnknown
173{
174 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
175// TODO: Stale BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
176};
177
178typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
179{
180 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
181} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
182
183typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
184{
185 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
186} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
187
188[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
189interface ID3D12DebugCommandList1
190 : IUnknown
191{
192 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
193 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
194 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
195};
196
197[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
198interface ID3D12DebugCommandList
199 : IUnknown
200{
201 BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
202 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
203 D3D12_DEBUG_FEATURE GetFeatureMask();
204};
205
206[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
207interface ID3D12DebugCommandList2
208 : ID3D12DebugCommandList
209{
210 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
211 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
212};
213
214[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
215interface ID3D12SharingContract
216 : IUnknown
217{
218 void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
219 void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
220 void BeginCapturableWork([annotation("_In_")] REFGUID guid);
221 void EndCapturableWork([annotation("_In_")] REFGUID guid);
222};
223
224
225//==================================================================================================================================
226//
227// Info Queue
228//
229//==================================================================================================================================
230typedef enum D3D12_MESSAGE_CATEGORY {
231 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
232 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
233 D3D12_MESSAGE_CATEGORY_INITIALIZATION,
234 D3D12_MESSAGE_CATEGORY_CLEANUP,
235 D3D12_MESSAGE_CATEGORY_COMPILATION,
236 D3D12_MESSAGE_CATEGORY_STATE_CREATION,
237 D3D12_MESSAGE_CATEGORY_STATE_SETTING,
238 D3D12_MESSAGE_CATEGORY_STATE_GETTING,
239 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
240 D3D12_MESSAGE_CATEGORY_EXECUTION,
241 D3D12_MESSAGE_CATEGORY_SHADER,
242} D3D12_MESSAGE_CATEGORY;
243
244typedef enum D3D12_MESSAGE_SEVERITY {
245 D3D12_MESSAGE_SEVERITY_CORRUPTION,
246 D3D12_MESSAGE_SEVERITY_ERROR,
247 D3D12_MESSAGE_SEVERITY_WARNING,
248 D3D12_MESSAGE_SEVERITY_INFO,
249 D3D12_MESSAGE_SEVERITY_MESSAGE
250} D3D12_MESSAGE_SEVERITY;
251
252// Unique ID for every error
253// CAUTION: New enum values should be appended to the list only. Inserting
254// new enum values into the middle of the list results in changing the numeric
255// values of some ID's from one SDK release to the next. This in-turn breaks
256// PIX and customer tools/filters.
257typedef enum D3D12_MESSAGE_ID {
258 D3D12_MESSAGE_ID_UNKNOWN = 0,
259
260 //--------------------------------------------------------------------------
261 // Messages Used by Core
262 // Message IDs generated from core are at the beginning
263 // since the core changes less frequently than the debug layer.
264
265 // End of Messages used by Core
266 // ------------------------------------------------------------------------
267 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
268 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
269 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
270 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
271 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
272 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
273 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
274 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
275 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
276 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
277 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
278 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
279 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
280 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
281 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
282 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
283 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
284 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
285 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
286
287 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
288 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
289 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
290 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
291
292 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
293 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
294 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
295 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
296 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
297 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
298 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
299
300 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
301 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
302 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
303 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
304 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
305 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
306 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
307 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
308
309 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
310 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
311 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
312 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
313 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
314
315 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
316 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
317 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
318 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
319 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
320 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
321 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
322 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
323 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
324 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
325 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
326 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
327 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
328 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
329
330 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
331 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
332 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
333
334 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
335 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
336 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
337
338 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
339 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
340 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
341 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
342 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
343 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
344 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
345 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
346 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
347 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
348 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
349 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
350 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
351 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
352 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
353 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
354 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
355 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
356
357 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
358 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
359 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
360
361 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
362 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
363 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
364 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
365
366 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
367 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
368 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
369 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
370 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
371 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
372 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
373 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
374 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
375 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
376
377 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
378 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
379 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
380 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
381 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
382 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
383 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
384
385 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
386
387 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
388 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
389 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
390 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
391 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
392 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
393 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
394 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
395 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
396 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
397 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
398 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
399 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
400 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
401
402 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
403 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
404 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
405
406 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
407
408 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
409 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
410 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
411
412 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
413 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
414 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
415 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
416 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
417
418 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
419 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
420 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
421 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
422
423 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
424 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
425 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
426 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
427
428 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
429 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
430 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
431 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
432
433 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
434
435 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
436
437 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
438 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
439 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
440
441 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
442 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
443 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
444 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
445 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
446 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
447 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
448
449 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
450 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
451 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
452 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
453 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
454 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
455 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
456 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
457
458 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
459
460 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
461
462 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
463 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
464 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
465 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
466 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
467 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
468 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
469
470 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
471 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
472 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
473 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
474 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
475 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
476 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
477
478 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
479 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
480
481 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
482 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
483
484 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
485 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
486
487 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
488 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
489 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
490 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
491 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
492 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
493 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
494 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
495 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
496 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
497 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
498 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
499 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
500 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
501 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
502 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
503 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
504 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
505 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
506 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
507 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
508 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
509 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
510 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
511 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
512 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
513 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
514 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
515 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
516 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
517 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
518
519 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
520 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
521 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
522 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
523 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
524 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
525 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
526 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
527 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
528 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
529 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
530 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
531
532 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
533 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
534 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
535 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
536 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
537 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
538 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
539 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
540 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
541 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
542 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
543 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
544
545 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
546 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
547 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
548 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
549 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
550 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
551 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
552 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
553 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
554 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
555 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
556 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
557
558 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
559 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
560 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
561 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
562 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
563 // This was shipped, but is no longer used. Do not reuse.
564 //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
565 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
566 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
567 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
568 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
569 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
570 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
571 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
572 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
573 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
574 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
575 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
576 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
577 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
578 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
579 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
580 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
581 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
582 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
583 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
584 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
585 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
586 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
587 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
588 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
589 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
590 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
591 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
592 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
593 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
594 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
595 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
596 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
597 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
598 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
599 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
600 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
601 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
602 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
603 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
604 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
605 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
606 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
607 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
608 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
609 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
610 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
611 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
612 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
613 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
614 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
615 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
616 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
617 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
618 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
619 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
620 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
621 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
622 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
623 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
624 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
625 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
626 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
627 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
628 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
629 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
630 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
631 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
632 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
633 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
634 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
635 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
636 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
637 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
638 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
639 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
640 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
641 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
642 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
643 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
644 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
645 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
646 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
647 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
648 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
649 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
650 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
651 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
652 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
653 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
654 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
655 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
656 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
657 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
658 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
659 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
660 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
661 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
662 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
663 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
664 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
665 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
666 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
667 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
668 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
669 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
670 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
671 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
672 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
673 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
674 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
675 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
676 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
677 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
678 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
679 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
680 // This was shipped, but is no longer used. Do not reuse.
681 //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
682 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
683 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
684 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
685 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
686 // Note: These are the same as the above two, with the original (incorrect) name
687 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
688 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
689 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
690 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
691 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
692 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
693 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
694
695 // These values shipped, but are no longer used. Do not reuse.
696 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
697 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
698 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
699 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
700 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
701 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
702 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
703 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
704 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
705 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
706 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
707 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
708 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
709 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
710 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
711 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
712 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
713 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
714 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
715 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
716 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
717 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
718 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
719 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
720 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
721 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
722 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
723 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
724 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
725 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
726 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
727 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
728 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
729 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
730 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
731 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
732 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
733 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
734 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
735 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
736 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
737 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
738 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
739 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
740 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
741 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
742 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
743 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
744 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
745 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
746 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
747 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
748 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
749 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
750 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
751 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
752 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
753 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
754 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
755 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
756 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
757 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
758
759 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
760 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
761 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
762 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
763
764 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
765 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
766 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
767
768 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
769 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
770 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
771 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
772 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
773 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
774 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
775 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
776 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
777 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
778 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
779 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
780 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
781 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
782 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
783
784 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
785 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
786
787 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
788 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
789 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
790 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
791 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
792 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
793 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
794 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
795 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
796 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
797
798 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
799 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
800 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
801 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
802 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
803 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
804 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
805 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
806 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
807 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
808
809 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
810 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
811
812 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
813
814 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
815
816 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
817
818 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
819
820 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
821
822 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
823 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
824 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
825
826 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
827 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
828
829 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
830
831 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
832 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
833 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
834 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
835 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
836 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
837 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
838 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
839
840 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
841 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
842 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
843 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
844
845 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
846 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
847 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
848 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
849
850 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
851 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
852 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
853
854 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
855
856 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
857
858 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
859
860 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
861
862 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
863
864 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
865
866 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
867
868 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
869
870 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
871 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
872 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
873 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
874 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
875 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
876 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
877
878 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
879 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
880 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
881 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
882 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
883
884 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
885
886 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
887
888 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
889 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
890 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
891 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
892 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
893 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
894 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
895 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
896 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
897 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
898 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
899 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
900 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
901
902 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
903
904 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
905
906 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
907 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
908 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
909 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
910
911 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
912 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
913 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
914
915 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
916
917 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
918
919 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
920
921 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
922 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
923 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
924 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
925
926 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
927 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
928
929 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
930
931 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
932 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
933 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
934
935 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
936 D3D12_MESSAGE_ID_END_EVENT = 1015,
937
938 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
939
940 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
941
942 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
943 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
944 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
945 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
946 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
947
948 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
949
950 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
951 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
952
953 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
954 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
955 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
956 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
957 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
958 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
959 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
960 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
961 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
962 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
963 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
964 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
965 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
966 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
967 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
968
969 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
970
971 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
972
973 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
974
975 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
976
977 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
978
979 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
980
981 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
982
983 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
984
985 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
986
987 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
988
989 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
990 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
991 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
992 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
993 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
994 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
995 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
996 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
997 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
998 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
999 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
1000 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
1001 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
1002 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
1003 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
1004
1005 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
1006
1007 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
1008
1009 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
1010 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
1011 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
1012 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
1013 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
1014 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
1015 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
1016 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
1017 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
1018 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
1019
1020 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
1021
1022 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
1023
1024 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
1025 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
1026 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
1027
1028 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
1029 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
1030 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
1031
1032 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
1033 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
1034 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
1035 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
1036
1037 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
1038 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
1039 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
1040 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
1041
1042 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
1043 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
1044 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
1045
1046 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
1047 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
1048
1049 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
1050 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
1051 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
1052 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
1053
1054 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
1055 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
1056 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
1057
1058 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
1059
1060 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
1061 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
1062 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
1063
1064 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
1065
1066 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
1067 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
1068
1069 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
1070
1071 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
1072
1073 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
1074 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
1075 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
1076 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
1077 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
1078 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
1079 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
1080
1081 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
1082 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
1083 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
1084 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
1085
1086 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
1087
1088 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
1089 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
1090
1091 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
1092 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
1093 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
1094
1095 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
1096 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
1097 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
1098 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
1099
1100 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
1101
1102 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
1103 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
1104 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
1105 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
1106 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
1107 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
1108 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
1109 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
1110 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
1111 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
1112 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
1113 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
1114 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
1115 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
1116 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
1117 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
1118
1119 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
1120 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
1121
1122 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
1123
1124 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
1125
1126 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
1127
1128 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
1129 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
1130 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
1131 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
1132 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
1133
1134 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
1135 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
1136 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
1137 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
1138
1139 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
1140 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
1141 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
1142
1143 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
1144
1145 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
1146 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
1147 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
1148 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
1149 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
1150 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
1151
1152 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
1153 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
1154 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
1155
1156 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
1157 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
1158 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
1159
1160 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
1161 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
1162 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
1163
1164 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
1165 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
1166 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
1167
1168 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
1169 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
1170 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
1171 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
1172 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
1173 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
1174 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
1175 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
1176 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
1177 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
1178 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
1179 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
1180 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
1181
1182 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
1183 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
1184 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
1185 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
1186 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
1187 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
1188 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
1189 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
1190 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
1191
1192 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
1193 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
1194
1195 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
1196 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
1197
1198 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
1199
1200 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
1201 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
1202
1203 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
1204 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
1205 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
1206 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
1207
1208 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
1209 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
1210 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
1211
1212 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
1213 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
1214 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
1215 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
1216 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
1217
1218 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
1219
1220 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
1221 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
1222 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
1223 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
1224 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
1225 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
1226 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
1227 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
1228 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
1229 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
1230 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
1231 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
1232
1233 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
1234
1235 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
1236 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
1237
1238 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
1239
1240 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
1241
1242 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
1243 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
1244 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
1245 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
1246 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
1247 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
1248
1249 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
1250
1251
1252 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
1253 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
1254 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
1255 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
1256 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
1257 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
1258 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
1259 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
1260 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
1261 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
1262
1263 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
1264 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
1265 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
1266
1267 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
1268 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
1269 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
1270
1271 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
1272
1273 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
1274 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
1275
1276 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
1277 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
1278 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
1279
1280 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
1281
1282 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
1283 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
1284
1285 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
1286 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
1287 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
1288
1289 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
1290 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
1291 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
1292
1293 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
1294 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
1295 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
1296 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
1297
1298 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
1299 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
1300 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
1301 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
1302 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
1303 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
1304
1305 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
1306 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
1307 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
1308 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
1309 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
1310 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
1311 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
1312
1313 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
1314 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
1315 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
1316 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
1317 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
1318 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
1319 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
1320 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
1321 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
1322 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
1323 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
1324 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
1325 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
1326 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
1327 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
1328 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
1329 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
1330 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
1331 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
1332 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
1333 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
1334 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
1335 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
1336 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
1337 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
1338 D3D12_MESSAGE_ID_D3D12_MESSAGES_END
1339} D3D12_MESSAGE_ID;
1340
1341typedef struct D3D12_MESSAGE
1342{
1343 D3D12_MESSAGE_CATEGORY Category;
1344 D3D12_MESSAGE_SEVERITY Severity;
1345 D3D12_MESSAGE_ID ID;
1346 [annotation("_Field_size_(DescriptionByteLength)")] const char* pDescription;
1347 SIZE_T DescriptionByteLength;
1348} D3D12_MESSAGE;
1349
1350typedef struct D3D12_INFO_QUEUE_FILTER_DESC
1351{
1352 UINT NumCategories;
1353 [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
1354 UINT NumSeverities;
1355 [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
1356 UINT NumIDs;
1357 [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID* pIDList;
1358} D3D12_INFO_QUEUE_FILTER_DESC;
1359
1360// To use, memset to 0, then fill in what you need.
1361typedef struct D3D12_INFO_QUEUE_FILTER
1362{
1363 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
1364 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
1365} D3D12_INFO_QUEUE_FILTER;
1366
1367//=============================================================================
1368// ID3D12InfoQueue
1369//
1370// Logs D3D12 Messages.
1371// This interface can be queried from ID3D12Device, as long as the device
1372// was created with the debug layer.
1373//
1374//
1375cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
1376[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
1377interface ID3D12InfoQueue
1378 : IUnknown
1379{
1380 //=========================================================================
1381 // Methods for configuring how much data is stored in the queue.
1382
1383 // SetMessageCountLimit()
1384 // This sets how many messages are stored. When the queue is full,
1385 // new messages coming in push old messages out.
1386 // Passing -1 to SetMessageCountLimit means the queue has
1387 // unlimited size (go until out of memory or ClearStoredMessages()).
1388 // The default message count size is
1389 // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
1390 // Returns S_OK or E_INVALIDARG.
1391 HRESULT SetMessageCountLimit([annotation("_In_")] UINT64 MessageCountLimit);
1392
1393 // ClearStoredMessages
1394 void ClearStoredMessages();
1395
1396 //=========================================================================
1397 // Methods for retrieving data or statistics from the queue.
1398
1399 // GetMessage()
1400 // Retrieves messages, one at a time, from the queue which pass any
1401 // retrieval filter currently defined. If there is no retrieval filter,
1402 // all messages can be retrieved.
1403 // The MessageIndex parameter is a 0 based index into the results passing
1404 // the filter. The number of results is returned by
1405 // GetNumStoredMessagesAllowedByRetrievalFilter().
1406 //
1407 // Note this does not remove the message from the queue.
1408 //
1409 // pMessageByteLength inputs the size of the buffer passed in via
1410 // pMessage, and outputs the size of the message. pMessage can be NULL
1411 // when the size of the required buffer is being queried (return S_FALSE).
1412 //
1413 // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
1414 // it includes extra memory after the D3D12_MESSAGE for storing the string
1415 // description, which is pointed to from within D3D12_MESSAGE. Therefore
1416 // applications should check the size needed for pMessage as described above.
1417 //
1418 // Watch out for thread safety when making consecutive calls first to
1419 // determine the buffer size required and then to pass in the buffer and
1420 // retrieve the message, and also between calling
1421 // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
1422 // the results via GetMessagE().
1423 //
1424 // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
1425 HRESULT GetMessage(
1426 [annotation("_In_")] UINT64 MessageIndex,
1427 [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
1428 [annotation("_Inout_")] SIZE_T* pMessageByteLength);
1429
1430 // GetNumMessagesAllowedByStorageFilter()
1431 // Returns how many messages sent to the queue passed
1432 // whatever storage filter was active upon receipt of
1433 // the message.
1434 // This can be a larger value than the message count limit,
1435 // returned by GetMessageCountLimit(), since old messages are discarded
1436 // when the queue is full to prevent overflow.
1437 UINT64 GetNumMessagesAllowedByStorageFilter();
1438
1439 // GetNumMessagesDeniedByStorageFilter()
1440 UINT64 GetNumMessagesDeniedByStorageFilter();
1441
1442 // GetNumStoredMessages()
1443 // Returns how many messages are currently stored in the queue.
1444 UINT64 GetNumStoredMessages();
1445
1446 // GetNumStoredMessagesAllowedByRetrievalFilter()
1447 // Returns how many messages that are currently in the queue
1448 // pass any retrieval filter that is currently set.
1449 // The MessageIndex parameter to GetMessage() indexes
1450 // an array of this many results.
1451 UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
1452
1453 // GetNumMessagesDiscardedByMessageCountLimit()
1454 UINT64 GetNumMessagesDiscardedByMessageCountLimit();
1455
1456 // GetMessageCountLimit
1457 // This is how many messages can be stored in the queue.
1458 // When the queue is full, new messages coming in push old messages out.
1459 // -1 means there is no limit.
1460 UINT64 GetMessageCountLimit();
1461
1462 //=========================================================================
1463 // Methods for filtering what gets stored in the queue
1464
1465 // AddStorageFilterEntries()
1466 // Adds to the existing entries at top of stack
1467 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1468 HRESULT AddStorageFilterEntries(
1469 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1470
1471 // GetStorageFilter()
1472 // Gets all entries at top of stack.
1473 // The application must allocate the output buffer. The size required can be
1474 // queried by passing null for pFilter and looking at the returned
1475 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1476 // pointers - these will point to locations within the same
1477 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1478 // data. So the application needs to only allocate/free the memory for pFilter.
1479 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1480 HRESULT GetStorageFilter(
1481 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1482 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1483
1484 // ClearStorageFilter()
1485 // Clears filter at the top of the stack (if there is one)
1486 void ClearStorageFilter();
1487
1488 // PushEmptyStorageFilter()
1489 // Push an empty storage filter on the stack to allow local filtering changes.
1490 // For convenience, this is automatically called by SetStorageFilter()
1491 // if the stack is empty. Thus if the stack is not needed, filters can be
1492 // defined without ever bothering to push or pop.
1493 // Returns S_OK or E_OUTOFMEMORY
1494 HRESULT PushEmptyStorageFilter();
1495
1496 // PushCopyOfStorageFilter()
1497 // Push a copy of the current filter so that local modifications can be made
1498 // starting from what currently exists.
1499 // Returns S_OK or E_OUTOFMEMORY
1500 HRESULT PushCopyOfStorageFilter();
1501
1502 // PushStorageFilter()
1503 // Push a filter passed as a parameter onto the stack. This is
1504 // just a helper for calling PushEmptyStorageFilter() followed
1505 // by AddStorageFilterEntries()
1506 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1507 HRESULT PushStorageFilter(
1508 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1509
1510 // PopStorageFilter()
1511 // Pop the current storage filter off the stack (if there is one)
1512 void PopStorageFilter();
1513
1514 // GetStorageFilterStackSize()
1515 UINT GetStorageFilterStackSize();
1516
1517 //=========================================================================
1518 // Methods for filtering what gets read out of the queue by GetMessage().
1519
1520 // AddRetrievalFilterEntries()
1521 // Adds to the existing entries at top of stack
1522 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1523 HRESULT AddRetrievalFilterEntries(
1524 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1525
1526 // GetRetrievalFilter()
1527 // Gets all entries at top of stack.
1528 // The application must allocate the output buffer. The size required can be
1529 // queried by passing null for pFilter and looking at the returned
1530 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1531 // pointers - these will point to locations within the same
1532 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1533 // data. So the application needs to only allocate/free the memory for pFilter.
1534 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1535 HRESULT GetRetrievalFilter(
1536 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1537 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1538
1539 // ClearRetrievalFilter()
1540 // Clears filter at the top of the stack (if there is one)
1541 void ClearRetrievalFilter();
1542
1543 // PushEmptyRetrievalFilter()
1544 // Push an empty storage filter on the stack to allow local filtering changes.
1545 // For convenience, this is automatically called by SetRetrievalFilter()
1546 // if the stack is empty. Thus if the stack is not needed, filters can be
1547 // defined without ever bothering to push or pop.
1548 // Returns S_OK or E_OUTOFMEMORY
1549 HRESULT PushEmptyRetrievalFilter();
1550
1551 // PushCopyOfRetrievalFilter()
1552 // Push a copy of the current filter so that local modifications can be made
1553 // starting from what currently exists.
1554 // Returns S_OK or E_OUTOFMEMORY
1555 HRESULT PushCopyOfRetrievalFilter();
1556
1557 // PushRetrievalFilter()
1558 // Push a filter passed as a parameter onto the stack. This is
1559 // just a helper for calling PushEmptyRetrievalFilter() followed
1560 // by AddRetrievalFilterEntries()
1561 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1562 HRESULT PushRetrievalFilter(
1563 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1564
1565 // PopRetrievalFilter()
1566 // Pop the current storage filter off the stack (if there is one)
1567 void PopRetrievalFilter();
1568
1569 // GetRetrievalFilterStackSize()
1570 UINT GetRetrievalFilterStackSize();
1571
1572 //=========================================================================
1573 // Methods for adding entries to the queue.
1574
1575 // AddMessage()
1576 // This is used by D3D12 components to log messages. Nothing stops
1577 // applications from calling this, but it isn’t particularly useful.
1578 // If an application wishes to insert custom strings into the queue,
1579 // AddApplicationMessage() below is suggested. See below.
1580 //
1581 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1582 HRESULT AddMessage(
1583 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1584 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1585 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1586 [annotation("_In_")] LPCSTR pDescription);
1587
1588 // AddApplicationMessage()
1589 // This is a convenience for applications that want
1590 // to insert strings of their own into the queue, perhaps to log issues
1591 // of its own, or to mark out points in time in the queue. This
1592 // has the same effect as calling AddMessage() above with the
1593 // following settings:
1594 // Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
1595 // Severity = <app selects from D3D12_MESSAGE_SEVERITY>
1596 // ID = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
1597 // pDescription = <application provided string>
1598 //
1599 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1600 HRESULT AddApplicationMessage(
1601 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1602 [annotation("_In_")] LPCSTR pDescription);
1603
1604 //=========================================================================
1605 // Methods for breaking on errors that pass the storage filter.
1606 HRESULT SetBreakOnCategory(
1607 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1608 [annotation("_In_")] BOOL bEnable);
1609 HRESULT SetBreakOnSeverity(
1610 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1611 [annotation("_In_")] BOOL bEnable);
1612 HRESULT SetBreakOnID(
1613 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1614 [annotation("_In_")] BOOL bEnable);
1615
1616 BOOL GetBreakOnCategory(
1617 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category);
1618 BOOL GetBreakOnSeverity(
1619 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity);
1620 BOOL GetBreakOnID(
1621 [annotation("_In_")] D3D12_MESSAGE_ID ID);
1622
1623 //=========================================================================
1624 // Methods for globally muting debug spte from the InfoQueue
1625 void SetMuteDebugOutput(
1626 [annotation("_In_")] BOOL bMute);
1627 BOOL GetMuteDebugOutput();
1628};
1629
1630typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
1631{
1632 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
1633 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
1634
1635} D3D12_MESSAGE_CALLBACK_FLAGS;
1636
1637cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
1638
1639typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
1640 D3D12_MESSAGE_SEVERITY Severity,
1641 D3D12_MESSAGE_ID ID,
1642 LPCSTR pDescription,
1643 void* pContext);
1644
1645[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
1646interface ID3D12InfoQueue1
1647 : ID3D12InfoQueue
1648{
1649 HRESULT RegisterMessageCallback(
1650 [annotation("_In_")] D3D12MessageFunc CallbackFunc,
1651 [annotation("_In_")] D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
1652 [annotation("_In_")] void* pContext,
1653 [annotation("_Inout_")] DWORD *pCallbackCookie);
1654
1655 HRESULT UnregisterMessageCallback(
1656 [annotation("_In_")] DWORD CallbackCookie);
1657};
1658
1659
1660
1661cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1662#pragma endregion
1663
1664cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
1665cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
1666cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
1667cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
1668cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
1669cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
1670cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
1671cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
1672cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
1673cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
1674cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
1675cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
1676cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
1677cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
1678cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
1679cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3d12shader.h b/contrib/DirectX-Headers/include/directx/d3d12shader.h
new file mode 100644
index 0000000..4ff639b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12shader.h
@@ -0,0 +1,474 @@
1//////////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6// File: D3D12Shader.h
7// Content: D3D12 Shader Types and APIs
8//
9//////////////////////////////////////////////////////////////////////////////
10
11#ifndef __D3D12SHADER_H__
12#define __D3D12SHADER_H__
13
14#include "d3dcommon.h"
15
16typedef enum D3D12_SHADER_VERSION_TYPE
17{
18 D3D12_SHVER_PIXEL_SHADER = 0,
19 D3D12_SHVER_VERTEX_SHADER = 1,
20 D3D12_SHVER_GEOMETRY_SHADER = 2,
21
22 // D3D11 Shaders
23 D3D12_SHVER_HULL_SHADER = 3,
24 D3D12_SHVER_DOMAIN_SHADER = 4,
25 D3D12_SHVER_COMPUTE_SHADER = 5,
26
27 D3D12_SHVER_RESERVED0 = 0xFFF0,
28} D3D12_SHADER_VERSION_TYPE;
29
30#define D3D12_SHVER_GET_TYPE(_Version) \
31 (((_Version) >> 16) & 0xffff)
32#define D3D12_SHVER_GET_MAJOR(_Version) \
33 (((_Version) >> 4) & 0xf)
34#define D3D12_SHVER_GET_MINOR(_Version) \
35 (((_Version) >> 0) & 0xf)
36
37// Slot ID for library function return
38#define D3D_RETURN_PARAMETER_INDEX (-1)
39
40typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
41
42typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
43
44
45typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
46{
47 LPCSTR SemanticName; // Name of the semantic
48 UINT SemanticIndex; // Index of the semantic
49 UINT Register; // Number of member variables
50 D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
51 D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
52 BYTE Mask; // Mask to indicate which components of the register
53 // are used (combination of D3D10_COMPONENT_MASK values)
54 BYTE ReadWriteMask; // Mask to indicate whether a given component is
55 // never written (if this is an output signature) or
56 // always read (if this is an input signature).
57 // (combination of D3D_MASK_* values)
58 UINT Stream; // Stream index
59 D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
60} D3D12_SIGNATURE_PARAMETER_DESC;
61
62typedef struct _D3D12_SHADER_BUFFER_DESC
63{
64 LPCSTR Name; // Name of the constant buffer
65 D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
66 UINT Variables; // Number of member variables
67 UINT Size; // Size of CB (in bytes)
68 UINT uFlags; // Buffer description flags
69} D3D12_SHADER_BUFFER_DESC;
70
71typedef struct _D3D12_SHADER_VARIABLE_DESC
72{
73 LPCSTR Name; // Name of the variable
74 UINT StartOffset; // Offset in constant buffer's backing store
75 UINT Size; // Size of variable (in bytes)
76 UINT uFlags; // Variable flags
77 LPVOID DefaultValue; // Raw pointer to default value
78 UINT StartTexture; // First texture index (or -1 if no textures used)
79 UINT TextureSize; // Number of texture slots possibly used.
80 UINT StartSampler; // First sampler index (or -1 if no textures used)
81 UINT SamplerSize; // Number of sampler slots possibly used.
82} D3D12_SHADER_VARIABLE_DESC;
83
84typedef struct _D3D12_SHADER_TYPE_DESC
85{
86 D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
87 D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
88 UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
89 UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
90 UINT Elements; // Number of elements (0 if not an array)
91 UINT Members; // Number of members (0 if not a structure)
92 UINT Offset; // Offset from the start of structure (0 if not a structure member)
93 LPCSTR Name; // Name of type, can be NULL
94} D3D12_SHADER_TYPE_DESC;
95
96typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
97
98typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
99
100typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
101
102typedef struct _D3D12_SHADER_DESC
103{
104 UINT Version; // Shader version
105 LPCSTR Creator; // Creator string
106 UINT Flags; // Shader compilation/parse flags
107
108 UINT ConstantBuffers; // Number of constant buffers
109 UINT BoundResources; // Number of bound resources
110 UINT InputParameters; // Number of parameters in the input signature
111 UINT OutputParameters; // Number of parameters in the output signature
112
113 UINT InstructionCount; // Number of emitted instructions
114 UINT TempRegisterCount; // Number of temporary registers used
115 UINT TempArrayCount; // Number of temporary arrays used
116 UINT DefCount; // Number of constant defines
117 UINT DclCount; // Number of declarations (input + output)
118 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
119 UINT TextureLoadInstructions; // Number of texture load instructions
120 UINT TextureCompInstructions; // Number of texture comparison instructions
121 UINT TextureBiasInstructions; // Number of texture bias instructions
122 UINT TextureGradientInstructions; // Number of texture gradient instructions
123 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
124 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
125 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
126 UINT StaticFlowControlCount; // Number of static flow control instructions used
127 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
128 UINT MacroInstructionCount; // Number of macro instructions used
129 UINT ArrayInstructionCount; // Number of array instructions used
130 UINT CutInstructionCount; // Number of cut instructions used
131 UINT EmitInstructionCount; // Number of emit instructions used
132 D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
133 UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
134 D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
135 UINT PatchConstantParameters; // Number of parameters in the patch constant signature
136 UINT cGSInstanceCount; // Number of Geometry shader instances
137 UINT cControlPoints; // Number of control points in the HS->DS stage
138 D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
139 D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
140 D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
141 // instruction counts
142 UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
143 UINT cInterlockedInstructions; // Number of interlocked instructions
144 UINT cTextureStoreInstructions; // Number of texture writes
145} D3D12_SHADER_DESC;
146
147typedef struct _D3D12_SHADER_INPUT_BIND_DESC
148{
149 LPCSTR Name; // Name of the resource
150 D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
151 UINT BindPoint; // Starting bind point
152 UINT BindCount; // Number of contiguous bind points (for arrays)
153
154 UINT uFlags; // Input binding flags
155 D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
156 D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
157 UINT NumSamples; // Number of samples (0 if not MS texture)
158 UINT Space; // Register space
159 UINT uID; // Range ID in the bytecode
160} D3D12_SHADER_INPUT_BIND_DESC;
161
162#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
163#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
164#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
165#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
166#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
167#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
168#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
169#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
170#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
171#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
172#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
173#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
174#define D3D_SHADER_REQUIRES_ROVS 0x00001000
175#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
176#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
177#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
178#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
179#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
180#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
181#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
182#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
183#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
184#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
185#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
186#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
187#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
188#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
189#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
190#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
191
192typedef struct _D3D12_LIBRARY_DESC
193{
194 LPCSTR Creator; // The name of the originator of the library.
195 UINT Flags; // Compilation flags.
196 UINT FunctionCount; // Number of functions exported from the library.
197} D3D12_LIBRARY_DESC;
198
199typedef struct _D3D12_FUNCTION_DESC
200{
201 UINT Version; // Shader version
202 LPCSTR Creator; // Creator string
203 UINT Flags; // Shader compilation/parse flags
204
205 UINT ConstantBuffers; // Number of constant buffers
206 UINT BoundResources; // Number of bound resources
207
208 UINT InstructionCount; // Number of emitted instructions
209 UINT TempRegisterCount; // Number of temporary registers used
210 UINT TempArrayCount; // Number of temporary arrays used
211 UINT DefCount; // Number of constant defines
212 UINT DclCount; // Number of declarations (input + output)
213 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
214 UINT TextureLoadInstructions; // Number of texture load instructions
215 UINT TextureCompInstructions; // Number of texture comparison instructions
216 UINT TextureBiasInstructions; // Number of texture bias instructions
217 UINT TextureGradientInstructions; // Number of texture gradient instructions
218 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
219 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
220 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
221 UINT StaticFlowControlCount; // Number of static flow control instructions used
222 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
223 UINT MacroInstructionCount; // Number of macro instructions used
224 UINT ArrayInstructionCount; // Number of array instructions used
225 UINT MovInstructionCount; // Number of mov instructions used
226 UINT MovcInstructionCount; // Number of movc instructions used
227 UINT ConversionInstructionCount; // Number of type conversion instructions used
228 UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
229 D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
230 UINT64 RequiredFeatureFlags; // Required feature flags
231
232 LPCSTR Name; // Function name
233 INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
234 BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
235 BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
236 BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
237} D3D12_FUNCTION_DESC;
238
239typedef struct _D3D12_PARAMETER_DESC
240{
241 LPCSTR Name; // Parameter name.
242 LPCSTR SemanticName; // Parameter semantic name (+index).
243 D3D_SHADER_VARIABLE_TYPE Type; // Element type.
244 D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
245 UINT Rows; // Rows are for matrix parameters.
246 UINT Columns; // Components or Columns in matrix.
247 D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
248 D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
249
250 UINT FirstInRegister; // The first input register for this parameter.
251 UINT FirstInComponent; // The first input register component for this parameter.
252 UINT FirstOutRegister; // The first output register for this parameter.
253 UINT FirstOutComponent; // The first output register component for this parameter.
254} D3D12_PARAMETER_DESC;
255
256
257//////////////////////////////////////////////////////////////////////////////
258// Interfaces ////////////////////////////////////////////////////////////////
259//////////////////////////////////////////////////////////////////////////////
260
261typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
262typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
263
264typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
265typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
266
267typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
268typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
269
270typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
271typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
272
273typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
274typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
275
276typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
277typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
278
279typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
280typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
281
282
283// {E913C351-783D-48CA-A1D1-4F306284AD56}
284interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
285DEFINE_GUID(IID_ID3D12ShaderReflectionType,
2860xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
287
288#undef INTERFACE
289#define INTERFACE ID3D12ShaderReflectionType
290
291DECLARE_INTERFACE(ID3D12ShaderReflectionType)
292{
293 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
294
295 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
296 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
297 STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
298
299 STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
300 STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
301 STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
302 STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
303 STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
304 STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
305 STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
306};
307
308// {8337A8A6-A216-444A-B2F4-314733A73AEA}
309interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
310DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
3110x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
312
313#undef INTERFACE
314#define INTERFACE ID3D12ShaderReflectionVariable
315
316DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
317{
318 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
319
320 STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
321 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
322
323 STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
324};
325
326// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
327interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
328DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
3290xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
330
331#undef INTERFACE
332#define INTERFACE ID3D12ShaderReflectionConstantBuffer
333
334DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
335{
336 STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
337
338 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
339 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
340};
341
342// The ID3D12ShaderReflection IID may change from SDK version to SDK version
343// if the reflection API changes. This prevents new code with the new API
344// from working with an old binary. Recompiling with the new header
345// will pick up the new IID.
346
347// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
348interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
349DEFINE_GUID(IID_ID3D12ShaderReflection,
3500x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
351
352#undef INTERFACE
353#define INTERFACE ID3D12ShaderReflection
354
355DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
356{
357 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
358 _Out_ LPVOID *ppv) PURE;
359 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
360 STDMETHOD_(ULONG, Release)(THIS) PURE;
361
362 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
363
364 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
365 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
366
367 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
368 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
369
370 STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
371 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
372 STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
373 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
374 STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
375 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
376
377 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
378
379 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
380 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
381
382 STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
383 STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
384 STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
385 STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
386
387 STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
388 STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
389
390 STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
391 STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
392
393 STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
394 _Out_opt_ UINT* pSizeX,
395 _Out_opt_ UINT* pSizeY,
396 _Out_opt_ UINT* pSizeZ) PURE;
397
398 STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
399};
400
401// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
402interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
403DEFINE_GUID(IID_ID3D12LibraryReflection,
4040x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
405
406#undef INTERFACE
407#define INTERFACE ID3D12LibraryReflection
408
409DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
410{
411 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
412 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
413 STDMETHOD_(ULONG, Release)(THIS) PURE;
414
415 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
416
417 STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
418};
419
420// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
421interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
422DEFINE_GUID(IID_ID3D12FunctionReflection,
4230x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
424
425#undef INTERFACE
426#define INTERFACE ID3D12FunctionReflection
427
428DECLARE_INTERFACE(ID3D12FunctionReflection)
429{
430 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
431
432 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
433 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
434
435 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
436 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
437
438 STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
439
440 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
441 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
442
443 // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
444 STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
445};
446
447// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
448interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
449DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
4500xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
451
452#undef INTERFACE
453#define INTERFACE ID3D12FunctionParameterReflection
454
455DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
456{
457 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
458};
459
460
461//////////////////////////////////////////////////////////////////////////////
462// APIs //////////////////////////////////////////////////////////////////////
463//////////////////////////////////////////////////////////////////////////////
464
465#ifdef __cplusplus
466extern "C" {
467#endif //__cplusplus
468
469#ifdef __cplusplus
470}
471#endif //__cplusplus
472
473#endif //__D3D12SHADER_H__
474
diff --git a/contrib/DirectX-Headers/include/directx/d3d12video.h b/contrib/DirectX-Headers/include/directx/d3d12video.h
new file mode 100644
index 0000000..8d9d658
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12video.h
@@ -0,0 +1,5533 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12video_h__
39#define __d3d12video_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if _CONTROL_FLOW_GUARD_XFG
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
56#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
57typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63#define __ID3D12VideoDevice_FWD_DEFINED__
64typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70#define __ID3D12VideoDecoder_FWD_DEFINED__
71typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77#define __ID3D12VideoProcessor_FWD_DEFINED__
78typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126#define __ID3D12VideoDevice1_FWD_DEFINED__
127typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140#define __ID3D12VideoDecoder1_FWD_DEFINED__
141typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154#define __ID3D12VideoProcessor1_FWD_DEFINED__
155typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168#define __ID3D12VideoDevice2_FWD_DEFINED__
169typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
182#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
183typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
184
185#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
189#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
190typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
191
192#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
193
194
195/* header files for imported files */
196#include "OAIdl.h"
197#include "OCIdl.h"
198#include "dxgicommon.h"
199#include "d3d12.h"
200
201#ifdef __cplusplus
202extern "C"{
203#endif
204
205
206/* interface __MIDL_itf_d3d12video_0000_0000 */
207/* [local] */
208
209#include <winapifamily.h>
210#pragma region App Family
211#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
212typedef
213enum D3D12_VIDEO_FIELD_TYPE
214 {
215 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
216 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
217 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
218 } D3D12_VIDEO_FIELD_TYPE;
219
220typedef
221enum D3D12_VIDEO_FRAME_STEREO_FORMAT
222 {
223 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
224 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
225 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
226 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
227 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
228 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
229
230typedef struct D3D12_VIDEO_FORMAT
231 {
232 DXGI_FORMAT Format;
233 DXGI_COLOR_SPACE_TYPE ColorSpace;
234 } D3D12_VIDEO_FORMAT;
235
236typedef struct D3D12_VIDEO_SAMPLE
237 {
238 UINT Width;
239 UINT Height;
240 D3D12_VIDEO_FORMAT Format;
241 } D3D12_VIDEO_SAMPLE;
242
243typedef
244enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
245 {
246 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
247 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
248 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
249
250typedef
251enum D3D12_FEATURE_VIDEO
252 {
253 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
254 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
255 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
256 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
257 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
258 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
259 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
260 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
261 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
262 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
263 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
264 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
265 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
266 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
267 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
268 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
269 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
270 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
271 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
272 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
273 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
274 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
275 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
276 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
277 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
278 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
279 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32
280 } D3D12_FEATURE_VIDEO;
281
282typedef
283enum D3D12_BITSTREAM_ENCRYPTION_TYPE
284 {
285 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
286 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
287
288typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
289 {
290 GUID DecodeProfile;
291 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
292 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
293 } D3D12_VIDEO_DECODE_CONFIGURATION;
294
295typedef struct D3D12_VIDEO_DECODER_DESC
296 {
297 UINT NodeMask;
298 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
299 } D3D12_VIDEO_DECODER_DESC;
300
301typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
302 {
303 UINT NodeMask;
304 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
305 UINT DecodeWidth;
306 UINT DecodeHeight;
307 DXGI_FORMAT Format;
308 DXGI_RATIONAL FrameRate;
309 UINT BitRate;
310 UINT MaxDecodePictureBufferCount;
311 } D3D12_VIDEO_DECODER_HEAP_DESC;
312
313typedef struct D3D12_VIDEO_SIZE_RANGE
314 {
315 UINT MaxWidth;
316 UINT MaxHeight;
317 UINT MinWidth;
318 UINT MinHeight;
319 } D3D12_VIDEO_SIZE_RANGE;
320
321typedef
322enum D3D12_VIDEO_PROCESS_FILTER
323 {
324 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
325 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
326 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
327 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
328 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
329 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
330 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
331 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
332 } D3D12_VIDEO_PROCESS_FILTER;
333
334typedef
335enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
336 {
337 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
338 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
339 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
340 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
341 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
342 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
343 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
344 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
345 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
346 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
347
348DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS );
349typedef
350enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
351 {
352 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
353 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
354 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
355 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
356
357DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );
358typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
359 {
360 BOOL Enable;
361 FLOAT Alpha;
362 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
363
364typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
365 {
366 BOOL Enable;
367 FLOAT Lower;
368 FLOAT Upper;
369 } D3D12_VIDEO_PROCESS_LUMA_KEY;
370
371typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
372 {
373 DXGI_FORMAT Format;
374 DXGI_COLOR_SPACE_TYPE ColorSpace;
375 DXGI_RATIONAL SourceAspectRatio;
376 DXGI_RATIONAL DestinationAspectRatio;
377 DXGI_RATIONAL FrameRate;
378 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
379 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
380 BOOL EnableOrientation;
381 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
382 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
383 D3D12_VIDEO_FIELD_TYPE FieldType;
384 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
385 BOOL EnableAlphaBlending;
386 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
387 UINT NumPastFrames;
388 UINT NumFutureFrames;
389 BOOL EnableAutoProcessing;
390 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
391
392typedef
393enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
394 {
395 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
396 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
397 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
398 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
399 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
400
401typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
402 {
403 DXGI_FORMAT Format;
404 DXGI_COLOR_SPACE_TYPE ColorSpace;
405 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
406 UINT AlphaFillModeSourceStreamIndex;
407 FLOAT BackgroundColor[ 4 ];
408 DXGI_RATIONAL FrameRate;
409 BOOL EnableStereo;
410 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
411
412
413
414extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
415extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
416
417#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
418#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
419
420/* interface ID3D12VideoDecoderHeap */
421/* [unique][local][object][uuid] */
422
423
424EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
425
426#if defined(__cplusplus) && !defined(CINTERFACE)
427
428 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
429 ID3D12VideoDecoderHeap : public ID3D12Pageable
430 {
431 public:
432 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
433
434 };
435
436
437#else /* C style interface */
438
439 typedef struct ID3D12VideoDecoderHeapVtbl
440 {
441 BEGIN_INTERFACE
442
443 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
444 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
445 ID3D12VideoDecoderHeap * This,
446 REFIID riid,
447 _COM_Outptr_ void **ppvObject);
448
449 DECLSPEC_XFGVIRT(IUnknown, AddRef)
450 ULONG ( STDMETHODCALLTYPE *AddRef )(
451 ID3D12VideoDecoderHeap * This);
452
453 DECLSPEC_XFGVIRT(IUnknown, Release)
454 ULONG ( STDMETHODCALLTYPE *Release )(
455 ID3D12VideoDecoderHeap * This);
456
457 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
458 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
459 ID3D12VideoDecoderHeap * This,
460 _In_ REFGUID guid,
461 _Inout_ UINT *pDataSize,
462 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
463
464 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
465 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
466 ID3D12VideoDecoderHeap * This,
467 _In_ REFGUID guid,
468 _In_ UINT DataSize,
469 _In_reads_bytes_opt_( DataSize ) const void *pData);
470
471 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
472 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
473 ID3D12VideoDecoderHeap * This,
474 _In_ REFGUID guid,
475 _In_opt_ const IUnknown *pData);
476
477 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
478 HRESULT ( STDMETHODCALLTYPE *SetName )(
479 ID3D12VideoDecoderHeap * This,
480 _In_z_ LPCWSTR Name);
481
482 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
483 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
484 ID3D12VideoDecoderHeap * This,
485 REFIID riid,
486 _COM_Outptr_opt_ void **ppvDevice);
487
488 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
489 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
490 ID3D12VideoDecoderHeap * This,
491 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
492
493 END_INTERFACE
494 } ID3D12VideoDecoderHeapVtbl;
495
496 interface ID3D12VideoDecoderHeap
497 {
498 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
499 };
500
501
502
503#ifdef COBJMACROS
504
505
506#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
507 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
508
509#define ID3D12VideoDecoderHeap_AddRef(This) \
510 ( (This)->lpVtbl -> AddRef(This) )
511
512#define ID3D12VideoDecoderHeap_Release(This) \
513 ( (This)->lpVtbl -> Release(This) )
514
515
516#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
517 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
518
519#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
520 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
521
522#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
523 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
524
525#define ID3D12VideoDecoderHeap_SetName(This,Name) \
526 ( (This)->lpVtbl -> SetName(This,Name) )
527
528
529#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
530 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
531
532
533
534#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
535 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
536
537#endif /* COBJMACROS */
538
539
540#endif /* C style interface */
541
542
543
544
545#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
546
547
548#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
549#define __ID3D12VideoDevice_INTERFACE_DEFINED__
550
551/* interface ID3D12VideoDevice */
552/* [unique][local][object][uuid] */
553
554
555EXTERN_C const IID IID_ID3D12VideoDevice;
556
557#if defined(__cplusplus) && !defined(CINTERFACE)
558
559 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
560 ID3D12VideoDevice : public IUnknown
561 {
562 public:
563 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
564 D3D12_FEATURE_VIDEO FeatureVideo,
565 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
566 UINT FeatureSupportDataSize) = 0;
567
568 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
569 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
570 _In_ REFIID riid,
571 _COM_Outptr_ void **ppVideoDecoder) = 0;
572
573 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
574 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
575 _In_ REFIID riid,
576 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
577
578 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
579 UINT NodeMask,
580 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
581 UINT NumInputStreamDescs,
582 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
583 _In_ REFIID riid,
584 _COM_Outptr_ void **ppVideoProcessor) = 0;
585
586 };
587
588
589#else /* C style interface */
590
591 typedef struct ID3D12VideoDeviceVtbl
592 {
593 BEGIN_INTERFACE
594
595 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
596 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
597 ID3D12VideoDevice * This,
598 REFIID riid,
599 _COM_Outptr_ void **ppvObject);
600
601 DECLSPEC_XFGVIRT(IUnknown, AddRef)
602 ULONG ( STDMETHODCALLTYPE *AddRef )(
603 ID3D12VideoDevice * This);
604
605 DECLSPEC_XFGVIRT(IUnknown, Release)
606 ULONG ( STDMETHODCALLTYPE *Release )(
607 ID3D12VideoDevice * This);
608
609 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
610 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
611 ID3D12VideoDevice * This,
612 D3D12_FEATURE_VIDEO FeatureVideo,
613 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
614 UINT FeatureSupportDataSize);
615
616 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
617 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
618 ID3D12VideoDevice * This,
619 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
620 _In_ REFIID riid,
621 _COM_Outptr_ void **ppVideoDecoder);
622
623 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
624 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
625 ID3D12VideoDevice * This,
626 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
627 _In_ REFIID riid,
628 _COM_Outptr_ void **ppVideoDecoderHeap);
629
630 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
631 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
632 ID3D12VideoDevice * This,
633 UINT NodeMask,
634 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
635 UINT NumInputStreamDescs,
636 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
637 _In_ REFIID riid,
638 _COM_Outptr_ void **ppVideoProcessor);
639
640 END_INTERFACE
641 } ID3D12VideoDeviceVtbl;
642
643 interface ID3D12VideoDevice
644 {
645 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
646 };
647
648
649
650#ifdef COBJMACROS
651
652
653#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
654 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
655
656#define ID3D12VideoDevice_AddRef(This) \
657 ( (This)->lpVtbl -> AddRef(This) )
658
659#define ID3D12VideoDevice_Release(This) \
660 ( (This)->lpVtbl -> Release(This) )
661
662
663#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
664 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
665
666#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
667 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
668
669#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
670 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
671
672#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
673 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
674
675#endif /* COBJMACROS */
676
677
678#endif /* C style interface */
679
680
681
682
683#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
684
685
686#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
687#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
688
689/* interface ID3D12VideoDecoder */
690/* [unique][local][object][uuid] */
691
692
693EXTERN_C const IID IID_ID3D12VideoDecoder;
694
695#if defined(__cplusplus) && !defined(CINTERFACE)
696
697 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
698 ID3D12VideoDecoder : public ID3D12Pageable
699 {
700 public:
701 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
702
703 };
704
705
706#else /* C style interface */
707
708 typedef struct ID3D12VideoDecoderVtbl
709 {
710 BEGIN_INTERFACE
711
712 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
713 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
714 ID3D12VideoDecoder * This,
715 REFIID riid,
716 _COM_Outptr_ void **ppvObject);
717
718 DECLSPEC_XFGVIRT(IUnknown, AddRef)
719 ULONG ( STDMETHODCALLTYPE *AddRef )(
720 ID3D12VideoDecoder * This);
721
722 DECLSPEC_XFGVIRT(IUnknown, Release)
723 ULONG ( STDMETHODCALLTYPE *Release )(
724 ID3D12VideoDecoder * This);
725
726 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
727 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
728 ID3D12VideoDecoder * This,
729 _In_ REFGUID guid,
730 _Inout_ UINT *pDataSize,
731 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
732
733 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
734 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
735 ID3D12VideoDecoder * This,
736 _In_ REFGUID guid,
737 _In_ UINT DataSize,
738 _In_reads_bytes_opt_( DataSize ) const void *pData);
739
740 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
741 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
742 ID3D12VideoDecoder * This,
743 _In_ REFGUID guid,
744 _In_opt_ const IUnknown *pData);
745
746 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
747 HRESULT ( STDMETHODCALLTYPE *SetName )(
748 ID3D12VideoDecoder * This,
749 _In_z_ LPCWSTR Name);
750
751 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
752 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
753 ID3D12VideoDecoder * This,
754 REFIID riid,
755 _COM_Outptr_opt_ void **ppvDevice);
756
757 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
758 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
759 ID3D12VideoDecoder * This,
760 D3D12_VIDEO_DECODER_DESC * RetVal);
761
762 END_INTERFACE
763 } ID3D12VideoDecoderVtbl;
764
765 interface ID3D12VideoDecoder
766 {
767 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
768 };
769
770
771
772#ifdef COBJMACROS
773
774
775#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
776 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
777
778#define ID3D12VideoDecoder_AddRef(This) \
779 ( (This)->lpVtbl -> AddRef(This) )
780
781#define ID3D12VideoDecoder_Release(This) \
782 ( (This)->lpVtbl -> Release(This) )
783
784
785#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
786 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
787
788#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
789 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
790
791#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
792 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
793
794#define ID3D12VideoDecoder_SetName(This,Name) \
795 ( (This)->lpVtbl -> SetName(This,Name) )
796
797
798#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
799 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
800
801
802
803#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
804 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
805
806#endif /* COBJMACROS */
807
808
809#endif /* C style interface */
810
811
812
813
814#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
815
816
817/* interface __MIDL_itf_d3d12video_0000_0003 */
818/* [local] */
819
820typedef
821enum D3D12_VIDEO_DECODE_TIER
822 {
823 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
824 D3D12_VIDEO_DECODE_TIER_1 = 1,
825 D3D12_VIDEO_DECODE_TIER_2 = 2,
826 D3D12_VIDEO_DECODE_TIER_3 = 3
827 } D3D12_VIDEO_DECODE_TIER;
828
829typedef
830enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
831 {
832 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
833 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
834 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
835
836DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS );
837typedef
838enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
839 {
840 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
841 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
842 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
843 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
844 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
845 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
846
847DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS );
848typedef
849enum D3D12_VIDEO_DECODE_STATUS
850 {
851 D3D12_VIDEO_DECODE_STATUS_OK = 0,
852 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
853 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
854 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
855 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
856 } D3D12_VIDEO_DECODE_STATUS;
857
858typedef
859enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
860 {
861 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
862 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
863 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
864 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
865 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
866
867typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
868 {
869 UINT NodeIndex;
870 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
871 UINT Width;
872 UINT Height;
873 DXGI_FORMAT DecodeFormat;
874 DXGI_RATIONAL FrameRate;
875 UINT BitRate;
876 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
877 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
878 D3D12_VIDEO_DECODE_TIER DecodeTier;
879 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
880
881typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
882 {
883 UINT NodeIndex;
884 UINT ProfileCount;
885 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
886
887typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
888 {
889 UINT NodeIndex;
890 UINT ProfileCount;
891 _Field_size_full_(ProfileCount) GUID *pProfiles;
892 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
893
894typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
895 {
896 UINT NodeIndex;
897 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
898 UINT FormatCount;
899 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
900
901typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
902 {
903 UINT NodeIndex;
904 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
905 UINT FormatCount;
906 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
907 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
908
909typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
910 {
911 BOOL IOCoherent;
912 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
913
914typedef
915enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
916 {
917 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
918 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
919 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
920 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
921 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
922 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
923 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
924 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
925
926typedef
927enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
928 {
929 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
930 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
931 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
932 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
933 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
934 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
935 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
936 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
937 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
938
939DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS );
940typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
941 {
942 UINT NodeIndex;
943 GUID DecodeProfile;
944 UINT Width;
945 UINT Height;
946 DXGI_FORMAT DecodeFormat;
947 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
948 UINT BinCount;
949 UINT CounterBitDepth;
950 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
951
952typedef
953enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
954 {
955 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
956 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
957 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
958
959DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS );
960typedef
961enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
962 {
963 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
964 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
965 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2
966 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
967
968DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS );
969typedef struct D3D12_VIDEO_SCALE_SUPPORT
970 {
971 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
972 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
973 } D3D12_VIDEO_SCALE_SUPPORT;
974
975typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
976 {
977 UINT NodeIndex;
978 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
979 D3D12_VIDEO_SAMPLE DecodeSample;
980 D3D12_VIDEO_FORMAT OutputFormat;
981 DXGI_RATIONAL FrameRate;
982 UINT BitRate;
983 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
984 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
985 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
986
987typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
988 {
989 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
990 UINT64 MemoryPoolL0Size;
991 UINT64 MemoryPoolL1Size;
992 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
995 {
996 UINT NodeMask;
997 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
998 UINT NumInputStreamDescs;
999 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1000 UINT64 MemoryPoolL0Size;
1001 UINT64 MemoryPoolL1Size;
1002 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1003
1004typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1005 {
1006 UINT64 Status;
1007 UINT64 NumMacroblocksAffected;
1008 DXGI_RATIONAL FrameRate;
1009 UINT BitRate;
1010 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1011
1012typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1013 {
1014 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1015 UINT Size;
1016 _Field_size_bytes_full_(Size) void *pData;
1017 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1018
1019typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1020 {
1021 UINT NumTexture2Ds;
1022 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1023 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1024 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1025 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1026
1027typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1028 {
1029 ID3D12Resource *pBuffer;
1030 UINT64 Offset;
1031 UINT64 Size;
1032 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1033
1034typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1035 {
1036 BOOL Enable;
1037 ID3D12Resource *pReferenceTexture2D;
1038 UINT ReferenceSubresource;
1039 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1040 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1041 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1042
1043typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1044 {
1045 UINT NumFrameArguments;
1046 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1047 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1048 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1049 ID3D12VideoDecoderHeap *pHeap;
1050 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1051
1052typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1053 {
1054 ID3D12Resource *pOutputTexture2D;
1055 UINT OutputSubresource;
1056 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1057 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1058
1059
1060
1061extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1062extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1063
1064#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1065#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1066
1067/* interface ID3D12VideoProcessor */
1068/* [unique][local][object][uuid] */
1069
1070
1071EXTERN_C const IID IID_ID3D12VideoProcessor;
1072
1073#if defined(__cplusplus) && !defined(CINTERFACE)
1074
1075 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1076 ID3D12VideoProcessor : public ID3D12Pageable
1077 {
1078 public:
1079 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1080
1081 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1082
1083 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1084 UINT NumInputStreamDescs,
1085 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1086
1087 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1088
1089 };
1090
1091
1092#else /* C style interface */
1093
1094 typedef struct ID3D12VideoProcessorVtbl
1095 {
1096 BEGIN_INTERFACE
1097
1098 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1099 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1100 ID3D12VideoProcessor * This,
1101 REFIID riid,
1102 _COM_Outptr_ void **ppvObject);
1103
1104 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1105 ULONG ( STDMETHODCALLTYPE *AddRef )(
1106 ID3D12VideoProcessor * This);
1107
1108 DECLSPEC_XFGVIRT(IUnknown, Release)
1109 ULONG ( STDMETHODCALLTYPE *Release )(
1110 ID3D12VideoProcessor * This);
1111
1112 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1113 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1114 ID3D12VideoProcessor * This,
1115 _In_ REFGUID guid,
1116 _Inout_ UINT *pDataSize,
1117 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1118
1119 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1120 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1121 ID3D12VideoProcessor * This,
1122 _In_ REFGUID guid,
1123 _In_ UINT DataSize,
1124 _In_reads_bytes_opt_( DataSize ) const void *pData);
1125
1126 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1127 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1128 ID3D12VideoProcessor * This,
1129 _In_ REFGUID guid,
1130 _In_opt_ const IUnknown *pData);
1131
1132 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1133 HRESULT ( STDMETHODCALLTYPE *SetName )(
1134 ID3D12VideoProcessor * This,
1135 _In_z_ LPCWSTR Name);
1136
1137 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1138 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1139 ID3D12VideoProcessor * This,
1140 REFIID riid,
1141 _COM_Outptr_opt_ void **ppvDevice);
1142
1143 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1144 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1145 ID3D12VideoProcessor * This);
1146
1147 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1148 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1149 ID3D12VideoProcessor * This);
1150
1151 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1152 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1153 ID3D12VideoProcessor * This,
1154 UINT NumInputStreamDescs,
1155 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1156
1157 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1158 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1159 ID3D12VideoProcessor * This,
1160 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1161
1162 END_INTERFACE
1163 } ID3D12VideoProcessorVtbl;
1164
1165 interface ID3D12VideoProcessor
1166 {
1167 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1168 };
1169
1170
1171
1172#ifdef COBJMACROS
1173
1174
1175#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1176 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1177
1178#define ID3D12VideoProcessor_AddRef(This) \
1179 ( (This)->lpVtbl -> AddRef(This) )
1180
1181#define ID3D12VideoProcessor_Release(This) \
1182 ( (This)->lpVtbl -> Release(This) )
1183
1184
1185#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1186 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1187
1188#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1189 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1190
1191#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1192 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1193
1194#define ID3D12VideoProcessor_SetName(This,Name) \
1195 ( (This)->lpVtbl -> SetName(This,Name) )
1196
1197
1198#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1199 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1200
1201
1202
1203#define ID3D12VideoProcessor_GetNodeMask(This) \
1204 ( (This)->lpVtbl -> GetNodeMask(This) )
1205
1206#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1207 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1208
1209#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1210 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1211
1212#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1213 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1214
1215#endif /* COBJMACROS */
1216
1217
1218#endif /* C style interface */
1219
1220
1221
1222
1223#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1224
1225
1226/* interface __MIDL_itf_d3d12video_0000_0004 */
1227/* [local] */
1228
1229typedef
1230enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1231 {
1232 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1233 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1234 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1235 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1236 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1237 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1238 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1239 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1240 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1241
1242DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS );
1243typedef
1244enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1245 {
1246 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1247 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1248 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1249 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1250 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1251 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1252 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1253 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1254 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1255 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1256 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1257
1258DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS );
1259typedef
1260enum D3D12_VIDEO_PROCESS_ORIENTATION
1261 {
1262 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1263 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1264 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1265 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1266 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1267 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1268 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1269 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1270 } D3D12_VIDEO_PROCESS_ORIENTATION;
1271
1272typedef
1273enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1274 {
1275 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1276 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1277 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1278 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1279
1280DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS );
1281typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1282 {
1283 INT Minimum;
1284 INT Maximum;
1285 INT Default;
1286 FLOAT Multiplier;
1287 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1288
1289typedef
1290enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1291 {
1292 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1293 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1294 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1295
1296DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS );
1297typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1298 {
1299 UINT NodeIndex;
1300 D3D12_VIDEO_SAMPLE InputSample;
1301 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1302 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1303 DXGI_RATIONAL InputFrameRate;
1304 D3D12_VIDEO_FORMAT OutputFormat;
1305 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1306 DXGI_RATIONAL OutputFrameRate;
1307 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1308 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1309 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1310 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1311 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1312 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1313 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1314 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1315
1316typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1317 {
1318 UINT NodeIndex;
1319 UINT MaxInputStreams;
1320 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1321
1322typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1323 {
1324 UINT NodeIndex;
1325 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1326 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1327 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1328 DXGI_RATIONAL InputFrameRate;
1329 DXGI_RATIONAL OutputFrameRate;
1330 BOOL EnableAutoProcessing;
1331 UINT PastFrames;
1332 UINT FutureFrames;
1333 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1334
1335typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1336 {
1337 UINT NumPastFrames;
1338 ID3D12Resource **ppPastFrames;
1339 UINT *pPastSubresources;
1340 UINT NumFutureFrames;
1341 ID3D12Resource **ppFutureFrames;
1342 UINT *pFutureSubresources;
1343 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1344
1345typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1346 {
1347 D3D12_RECT SourceRectangle;
1348 D3D12_RECT DestinationRectangle;
1349 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1350 } D3D12_VIDEO_PROCESS_TRANSFORM;
1351
1352typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1353 {
1354 UINT OutputIndex;
1355 UINT InputFrameOrField;
1356 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1357
1358typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1359 {
1360 ID3D12Resource *pTexture2D;
1361 UINT Subresource;
1362 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1363 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1364
1365typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1366 {
1367 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1368 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1369 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1370 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1371 INT FilterLevels[ 32 ];
1372 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1373 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1374
1375typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1376 {
1377 ID3D12Resource *pTexture2D;
1378 UINT Subresource;
1379 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1380
1381typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1382 {
1383 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1384 D3D12_RECT TargetRectangle;
1385 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1386
1387
1388
1389extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1390extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1391
1392#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1393#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1394
1395/* interface ID3D12VideoDecodeCommandList */
1396/* [unique][local][object][uuid] */
1397
1398
1399EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1400
1401#if defined(__cplusplus) && !defined(CINTERFACE)
1402
1403 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1404 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1405 {
1406 public:
1407 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1408
1409 virtual HRESULT STDMETHODCALLTYPE Reset(
1410 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1411
1412 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1413
1414 virtual void STDMETHODCALLTYPE ResourceBarrier(
1415 _In_ UINT NumBarriers,
1416 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1417
1418 virtual void STDMETHODCALLTYPE DiscardResource(
1419 _In_ ID3D12Resource *pResource,
1420 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1421
1422 virtual void STDMETHODCALLTYPE BeginQuery(
1423 _In_ ID3D12QueryHeap *pQueryHeap,
1424 _In_ D3D12_QUERY_TYPE Type,
1425 _In_ UINT Index) = 0;
1426
1427 virtual void STDMETHODCALLTYPE EndQuery(
1428 _In_ ID3D12QueryHeap *pQueryHeap,
1429 _In_ D3D12_QUERY_TYPE Type,
1430 _In_ UINT Index) = 0;
1431
1432 virtual void STDMETHODCALLTYPE ResolveQueryData(
1433 _In_ ID3D12QueryHeap *pQueryHeap,
1434 _In_ D3D12_QUERY_TYPE Type,
1435 _In_ UINT StartIndex,
1436 _In_ UINT NumQueries,
1437 _In_ ID3D12Resource *pDestinationBuffer,
1438 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1439
1440 virtual void STDMETHODCALLTYPE SetPredication(
1441 _In_opt_ ID3D12Resource *pBuffer,
1442 _In_ UINT64 AlignedBufferOffset,
1443 _In_ D3D12_PREDICATION_OP Operation) = 0;
1444
1445 virtual void STDMETHODCALLTYPE SetMarker(
1446 UINT Metadata,
1447 _In_reads_bytes_opt_(Size) const void *pData,
1448 UINT Size) = 0;
1449
1450 virtual void STDMETHODCALLTYPE BeginEvent(
1451 UINT Metadata,
1452 _In_reads_bytes_opt_(Size) const void *pData,
1453 UINT Size) = 0;
1454
1455 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1456
1457 virtual void STDMETHODCALLTYPE DecodeFrame(
1458 _In_ ID3D12VideoDecoder *pDecoder,
1459 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1460 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1461
1462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1463 UINT Count,
1464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1466
1467 };
1468
1469
1470#else /* C style interface */
1471
1472 typedef struct ID3D12VideoDecodeCommandListVtbl
1473 {
1474 BEGIN_INTERFACE
1475
1476 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1477 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1478 ID3D12VideoDecodeCommandList * This,
1479 REFIID riid,
1480 _COM_Outptr_ void **ppvObject);
1481
1482 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1483 ULONG ( STDMETHODCALLTYPE *AddRef )(
1484 ID3D12VideoDecodeCommandList * This);
1485
1486 DECLSPEC_XFGVIRT(IUnknown, Release)
1487 ULONG ( STDMETHODCALLTYPE *Release )(
1488 ID3D12VideoDecodeCommandList * This);
1489
1490 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1491 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1492 ID3D12VideoDecodeCommandList * This,
1493 _In_ REFGUID guid,
1494 _Inout_ UINT *pDataSize,
1495 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1496
1497 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1498 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1499 ID3D12VideoDecodeCommandList * This,
1500 _In_ REFGUID guid,
1501 _In_ UINT DataSize,
1502 _In_reads_bytes_opt_( DataSize ) const void *pData);
1503
1504 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1505 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1506 ID3D12VideoDecodeCommandList * This,
1507 _In_ REFGUID guid,
1508 _In_opt_ const IUnknown *pData);
1509
1510 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1511 HRESULT ( STDMETHODCALLTYPE *SetName )(
1512 ID3D12VideoDecodeCommandList * This,
1513 _In_z_ LPCWSTR Name);
1514
1515 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1516 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1517 ID3D12VideoDecodeCommandList * This,
1518 REFIID riid,
1519 _COM_Outptr_opt_ void **ppvDevice);
1520
1521 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1522 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1523 ID3D12VideoDecodeCommandList * This);
1524
1525 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1526 HRESULT ( STDMETHODCALLTYPE *Close )(
1527 ID3D12VideoDecodeCommandList * This);
1528
1529 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1530 HRESULT ( STDMETHODCALLTYPE *Reset )(
1531 ID3D12VideoDecodeCommandList * This,
1532 _In_ ID3D12CommandAllocator *pAllocator);
1533
1534 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1535 void ( STDMETHODCALLTYPE *ClearState )(
1536 ID3D12VideoDecodeCommandList * This);
1537
1538 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1539 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1540 ID3D12VideoDecodeCommandList * This,
1541 _In_ UINT NumBarriers,
1542 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1543
1544 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1545 void ( STDMETHODCALLTYPE *DiscardResource )(
1546 ID3D12VideoDecodeCommandList * This,
1547 _In_ ID3D12Resource *pResource,
1548 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1549
1550 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1551 void ( STDMETHODCALLTYPE *BeginQuery )(
1552 ID3D12VideoDecodeCommandList * This,
1553 _In_ ID3D12QueryHeap *pQueryHeap,
1554 _In_ D3D12_QUERY_TYPE Type,
1555 _In_ UINT Index);
1556
1557 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1558 void ( STDMETHODCALLTYPE *EndQuery )(
1559 ID3D12VideoDecodeCommandList * This,
1560 _In_ ID3D12QueryHeap *pQueryHeap,
1561 _In_ D3D12_QUERY_TYPE Type,
1562 _In_ UINT Index);
1563
1564 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1565 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1566 ID3D12VideoDecodeCommandList * This,
1567 _In_ ID3D12QueryHeap *pQueryHeap,
1568 _In_ D3D12_QUERY_TYPE Type,
1569 _In_ UINT StartIndex,
1570 _In_ UINT NumQueries,
1571 _In_ ID3D12Resource *pDestinationBuffer,
1572 _In_ UINT64 AlignedDestinationBufferOffset);
1573
1574 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1575 void ( STDMETHODCALLTYPE *SetPredication )(
1576 ID3D12VideoDecodeCommandList * This,
1577 _In_opt_ ID3D12Resource *pBuffer,
1578 _In_ UINT64 AlignedBufferOffset,
1579 _In_ D3D12_PREDICATION_OP Operation);
1580
1581 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1582 void ( STDMETHODCALLTYPE *SetMarker )(
1583 ID3D12VideoDecodeCommandList * This,
1584 UINT Metadata,
1585 _In_reads_bytes_opt_(Size) const void *pData,
1586 UINT Size);
1587
1588 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1589 void ( STDMETHODCALLTYPE *BeginEvent )(
1590 ID3D12VideoDecodeCommandList * This,
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size);
1594
1595 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1596 void ( STDMETHODCALLTYPE *EndEvent )(
1597 ID3D12VideoDecodeCommandList * This);
1598
1599 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1600 void ( STDMETHODCALLTYPE *DecodeFrame )(
1601 ID3D12VideoDecodeCommandList * This,
1602 _In_ ID3D12VideoDecoder *pDecoder,
1603 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1604 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1605
1606 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1607 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1608 ID3D12VideoDecodeCommandList * This,
1609 UINT Count,
1610 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1611 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1612
1613 END_INTERFACE
1614 } ID3D12VideoDecodeCommandListVtbl;
1615
1616 interface ID3D12VideoDecodeCommandList
1617 {
1618 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1619 };
1620
1621
1622
1623#ifdef COBJMACROS
1624
1625
1626#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1627 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1628
1629#define ID3D12VideoDecodeCommandList_AddRef(This) \
1630 ( (This)->lpVtbl -> AddRef(This) )
1631
1632#define ID3D12VideoDecodeCommandList_Release(This) \
1633 ( (This)->lpVtbl -> Release(This) )
1634
1635
1636#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1637 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1638
1639#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1640 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1641
1642#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1643 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1644
1645#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1646 ( (This)->lpVtbl -> SetName(This,Name) )
1647
1648
1649#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1650 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1651
1652
1653#define ID3D12VideoDecodeCommandList_GetType(This) \
1654 ( (This)->lpVtbl -> GetType(This) )
1655
1656
1657#define ID3D12VideoDecodeCommandList_Close(This) \
1658 ( (This)->lpVtbl -> Close(This) )
1659
1660#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1661 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1662
1663#define ID3D12VideoDecodeCommandList_ClearState(This) \
1664 ( (This)->lpVtbl -> ClearState(This) )
1665
1666#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1667 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1668
1669#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1670 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1671
1672#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1673 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1674
1675#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1676 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1677
1678#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1679 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1680
1681#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1682 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1683
1684#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1685 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1686
1687#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1688 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1689
1690#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1691 ( (This)->lpVtbl -> EndEvent(This) )
1692
1693#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1694 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1695
1696#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1697 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1698
1699#endif /* COBJMACROS */
1700
1701
1702#endif /* C style interface */
1703
1704
1705
1706
1707#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1708
1709
1710#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1711#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1712
1713/* interface ID3D12VideoProcessCommandList */
1714/* [unique][local][object][uuid] */
1715
1716
1717EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1718
1719#if defined(__cplusplus) && !defined(CINTERFACE)
1720
1721 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1722 ID3D12VideoProcessCommandList : public ID3D12CommandList
1723 {
1724 public:
1725 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1726
1727 virtual HRESULT STDMETHODCALLTYPE Reset(
1728 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1729
1730 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1731
1732 virtual void STDMETHODCALLTYPE ResourceBarrier(
1733 _In_ UINT NumBarriers,
1734 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1735
1736 virtual void STDMETHODCALLTYPE DiscardResource(
1737 _In_ ID3D12Resource *pResource,
1738 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1739
1740 virtual void STDMETHODCALLTYPE BeginQuery(
1741 _In_ ID3D12QueryHeap *pQueryHeap,
1742 _In_ D3D12_QUERY_TYPE Type,
1743 _In_ UINT Index) = 0;
1744
1745 virtual void STDMETHODCALLTYPE EndQuery(
1746 _In_ ID3D12QueryHeap *pQueryHeap,
1747 _In_ D3D12_QUERY_TYPE Type,
1748 _In_ UINT Index) = 0;
1749
1750 virtual void STDMETHODCALLTYPE ResolveQueryData(
1751 _In_ ID3D12QueryHeap *pQueryHeap,
1752 _In_ D3D12_QUERY_TYPE Type,
1753 _In_ UINT StartIndex,
1754 _In_ UINT NumQueries,
1755 _In_ ID3D12Resource *pDestinationBuffer,
1756 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1757
1758 virtual void STDMETHODCALLTYPE SetPredication(
1759 _In_opt_ ID3D12Resource *pBuffer,
1760 _In_ UINT64 AlignedBufferOffset,
1761 _In_ D3D12_PREDICATION_OP Operation) = 0;
1762
1763 virtual void STDMETHODCALLTYPE SetMarker(
1764 UINT Metadata,
1765 _In_reads_bytes_opt_(Size) const void *pData,
1766 UINT Size) = 0;
1767
1768 virtual void STDMETHODCALLTYPE BeginEvent(
1769 UINT Metadata,
1770 _In_reads_bytes_opt_(Size) const void *pData,
1771 UINT Size) = 0;
1772
1773 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1774
1775 virtual void STDMETHODCALLTYPE ProcessFrames(
1776 _In_ ID3D12VideoProcessor *pVideoProcessor,
1777 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1778 UINT NumInputStreams,
1779 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1780
1781 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1782 UINT Count,
1783 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1784 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1785
1786 };
1787
1788
1789#else /* C style interface */
1790
1791 typedef struct ID3D12VideoProcessCommandListVtbl
1792 {
1793 BEGIN_INTERFACE
1794
1795 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1796 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1797 ID3D12VideoProcessCommandList * This,
1798 REFIID riid,
1799 _COM_Outptr_ void **ppvObject);
1800
1801 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1802 ULONG ( STDMETHODCALLTYPE *AddRef )(
1803 ID3D12VideoProcessCommandList * This);
1804
1805 DECLSPEC_XFGVIRT(IUnknown, Release)
1806 ULONG ( STDMETHODCALLTYPE *Release )(
1807 ID3D12VideoProcessCommandList * This);
1808
1809 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1810 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1811 ID3D12VideoProcessCommandList * This,
1812 _In_ REFGUID guid,
1813 _Inout_ UINT *pDataSize,
1814 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1815
1816 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1817 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1818 ID3D12VideoProcessCommandList * This,
1819 _In_ REFGUID guid,
1820 _In_ UINT DataSize,
1821 _In_reads_bytes_opt_( DataSize ) const void *pData);
1822
1823 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1824 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1825 ID3D12VideoProcessCommandList * This,
1826 _In_ REFGUID guid,
1827 _In_opt_ const IUnknown *pData);
1828
1829 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1830 HRESULT ( STDMETHODCALLTYPE *SetName )(
1831 ID3D12VideoProcessCommandList * This,
1832 _In_z_ LPCWSTR Name);
1833
1834 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1835 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1836 ID3D12VideoProcessCommandList * This,
1837 REFIID riid,
1838 _COM_Outptr_opt_ void **ppvDevice);
1839
1840 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1841 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1842 ID3D12VideoProcessCommandList * This);
1843
1844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1845 HRESULT ( STDMETHODCALLTYPE *Close )(
1846 ID3D12VideoProcessCommandList * This);
1847
1848 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1849 HRESULT ( STDMETHODCALLTYPE *Reset )(
1850 ID3D12VideoProcessCommandList * This,
1851 _In_ ID3D12CommandAllocator *pAllocator);
1852
1853 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1854 void ( STDMETHODCALLTYPE *ClearState )(
1855 ID3D12VideoProcessCommandList * This);
1856
1857 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
1858 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1859 ID3D12VideoProcessCommandList * This,
1860 _In_ UINT NumBarriers,
1861 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1862
1863 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
1864 void ( STDMETHODCALLTYPE *DiscardResource )(
1865 ID3D12VideoProcessCommandList * This,
1866 _In_ ID3D12Resource *pResource,
1867 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1868
1869 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
1870 void ( STDMETHODCALLTYPE *BeginQuery )(
1871 ID3D12VideoProcessCommandList * This,
1872 _In_ ID3D12QueryHeap *pQueryHeap,
1873 _In_ D3D12_QUERY_TYPE Type,
1874 _In_ UINT Index);
1875
1876 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
1877 void ( STDMETHODCALLTYPE *EndQuery )(
1878 ID3D12VideoProcessCommandList * This,
1879 _In_ ID3D12QueryHeap *pQueryHeap,
1880 _In_ D3D12_QUERY_TYPE Type,
1881 _In_ UINT Index);
1882
1883 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
1884 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1885 ID3D12VideoProcessCommandList * This,
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT StartIndex,
1889 _In_ UINT NumQueries,
1890 _In_ ID3D12Resource *pDestinationBuffer,
1891 _In_ UINT64 AlignedDestinationBufferOffset);
1892
1893 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
1894 void ( STDMETHODCALLTYPE *SetPredication )(
1895 ID3D12VideoProcessCommandList * This,
1896 _In_opt_ ID3D12Resource *pBuffer,
1897 _In_ UINT64 AlignedBufferOffset,
1898 _In_ D3D12_PREDICATION_OP Operation);
1899
1900 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
1901 void ( STDMETHODCALLTYPE *SetMarker )(
1902 ID3D12VideoProcessCommandList * This,
1903 UINT Metadata,
1904 _In_reads_bytes_opt_(Size) const void *pData,
1905 UINT Size);
1906
1907 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
1908 void ( STDMETHODCALLTYPE *BeginEvent )(
1909 ID3D12VideoProcessCommandList * This,
1910 UINT Metadata,
1911 _In_reads_bytes_opt_(Size) const void *pData,
1912 UINT Size);
1913
1914 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
1915 void ( STDMETHODCALLTYPE *EndEvent )(
1916 ID3D12VideoProcessCommandList * This);
1917
1918 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
1919 void ( STDMETHODCALLTYPE *ProcessFrames )(
1920 ID3D12VideoProcessCommandList * This,
1921 _In_ ID3D12VideoProcessor *pVideoProcessor,
1922 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1923 UINT NumInputStreams,
1924 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
1925
1926 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
1927 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1928 ID3D12VideoProcessCommandList * This,
1929 UINT Count,
1930 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1931 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1932
1933 END_INTERFACE
1934 } ID3D12VideoProcessCommandListVtbl;
1935
1936 interface ID3D12VideoProcessCommandList
1937 {
1938 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
1939 };
1940
1941
1942
1943#ifdef COBJMACROS
1944
1945
1946#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
1947 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1948
1949#define ID3D12VideoProcessCommandList_AddRef(This) \
1950 ( (This)->lpVtbl -> AddRef(This) )
1951
1952#define ID3D12VideoProcessCommandList_Release(This) \
1953 ( (This)->lpVtbl -> Release(This) )
1954
1955
1956#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1957 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1958
1959#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
1960 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1961
1962#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
1963 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1964
1965#define ID3D12VideoProcessCommandList_SetName(This,Name) \
1966 ( (This)->lpVtbl -> SetName(This,Name) )
1967
1968
1969#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
1970 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1971
1972
1973#define ID3D12VideoProcessCommandList_GetType(This) \
1974 ( (This)->lpVtbl -> GetType(This) )
1975
1976
1977#define ID3D12VideoProcessCommandList_Close(This) \
1978 ( (This)->lpVtbl -> Close(This) )
1979
1980#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
1981 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1982
1983#define ID3D12VideoProcessCommandList_ClearState(This) \
1984 ( (This)->lpVtbl -> ClearState(This) )
1985
1986#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1987 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1988
1989#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
1990 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1991
1992#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1993 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1994
1995#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1996 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1997
1998#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1999 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2000
2001#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2002 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2003
2004#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2005 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2006
2007#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2008 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2009
2010#define ID3D12VideoProcessCommandList_EndEvent(This) \
2011 ( (This)->lpVtbl -> EndEvent(This) )
2012
2013#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2014 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2015
2016#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2017 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2018
2019#endif /* COBJMACROS */
2020
2021
2022#endif /* C style interface */
2023
2024
2025
2026
2027#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2028
2029
2030/* interface __MIDL_itf_d3d12video_0000_0006 */
2031/* [local] */
2032
2033typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2034 {
2035 UINT64 Offset;
2036 ID3D12Resource *pBuffer;
2037 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2038
2039typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2040 {
2041 BOOL Enable;
2042 ID3D12Resource *pReferenceTexture2D;
2043 UINT ReferenceSubresource;
2044 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2045 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2046 UINT OutputWidth;
2047 UINT OutputHeight;
2048 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2049
2050typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2051 {
2052 ID3D12Resource *pOutputTexture2D;
2053 UINT OutputSubresource;
2054 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2055 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2056 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2057
2058
2059
2060extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2061extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2062
2063#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2064#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2065
2066/* interface ID3D12VideoDecodeCommandList1 */
2067/* [unique][local][object][uuid] */
2068
2069
2070EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2071
2072#if defined(__cplusplus) && !defined(CINTERFACE)
2073
2074 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2075 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2076 {
2077 public:
2078 virtual void STDMETHODCALLTYPE DecodeFrame1(
2079 _In_ ID3D12VideoDecoder *pDecoder,
2080 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2081 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2082
2083 };
2084
2085
2086#else /* C style interface */
2087
2088 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2089 {
2090 BEGIN_INTERFACE
2091
2092 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2093 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2094 ID3D12VideoDecodeCommandList1 * This,
2095 REFIID riid,
2096 _COM_Outptr_ void **ppvObject);
2097
2098 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2099 ULONG ( STDMETHODCALLTYPE *AddRef )(
2100 ID3D12VideoDecodeCommandList1 * This);
2101
2102 DECLSPEC_XFGVIRT(IUnknown, Release)
2103 ULONG ( STDMETHODCALLTYPE *Release )(
2104 ID3D12VideoDecodeCommandList1 * This);
2105
2106 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2107 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2108 ID3D12VideoDecodeCommandList1 * This,
2109 _In_ REFGUID guid,
2110 _Inout_ UINT *pDataSize,
2111 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2112
2113 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2114 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2115 ID3D12VideoDecodeCommandList1 * This,
2116 _In_ REFGUID guid,
2117 _In_ UINT DataSize,
2118 _In_reads_bytes_opt_( DataSize ) const void *pData);
2119
2120 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2121 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2122 ID3D12VideoDecodeCommandList1 * This,
2123 _In_ REFGUID guid,
2124 _In_opt_ const IUnknown *pData);
2125
2126 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2127 HRESULT ( STDMETHODCALLTYPE *SetName )(
2128 ID3D12VideoDecodeCommandList1 * This,
2129 _In_z_ LPCWSTR Name);
2130
2131 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2132 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2133 ID3D12VideoDecodeCommandList1 * This,
2134 REFIID riid,
2135 _COM_Outptr_opt_ void **ppvDevice);
2136
2137 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2138 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2139 ID3D12VideoDecodeCommandList1 * This);
2140
2141 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2142 HRESULT ( STDMETHODCALLTYPE *Close )(
2143 ID3D12VideoDecodeCommandList1 * This);
2144
2145 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2146 HRESULT ( STDMETHODCALLTYPE *Reset )(
2147 ID3D12VideoDecodeCommandList1 * This,
2148 _In_ ID3D12CommandAllocator *pAllocator);
2149
2150 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2151 void ( STDMETHODCALLTYPE *ClearState )(
2152 ID3D12VideoDecodeCommandList1 * This);
2153
2154 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2155 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2156 ID3D12VideoDecodeCommandList1 * This,
2157 _In_ UINT NumBarriers,
2158 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2159
2160 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2161 void ( STDMETHODCALLTYPE *DiscardResource )(
2162 ID3D12VideoDecodeCommandList1 * This,
2163 _In_ ID3D12Resource *pResource,
2164 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2165
2166 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2167 void ( STDMETHODCALLTYPE *BeginQuery )(
2168 ID3D12VideoDecodeCommandList1 * This,
2169 _In_ ID3D12QueryHeap *pQueryHeap,
2170 _In_ D3D12_QUERY_TYPE Type,
2171 _In_ UINT Index);
2172
2173 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2174 void ( STDMETHODCALLTYPE *EndQuery )(
2175 ID3D12VideoDecodeCommandList1 * This,
2176 _In_ ID3D12QueryHeap *pQueryHeap,
2177 _In_ D3D12_QUERY_TYPE Type,
2178 _In_ UINT Index);
2179
2180 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2181 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2182 ID3D12VideoDecodeCommandList1 * This,
2183 _In_ ID3D12QueryHeap *pQueryHeap,
2184 _In_ D3D12_QUERY_TYPE Type,
2185 _In_ UINT StartIndex,
2186 _In_ UINT NumQueries,
2187 _In_ ID3D12Resource *pDestinationBuffer,
2188 _In_ UINT64 AlignedDestinationBufferOffset);
2189
2190 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2191 void ( STDMETHODCALLTYPE *SetPredication )(
2192 ID3D12VideoDecodeCommandList1 * This,
2193 _In_opt_ ID3D12Resource *pBuffer,
2194 _In_ UINT64 AlignedBufferOffset,
2195 _In_ D3D12_PREDICATION_OP Operation);
2196
2197 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2198 void ( STDMETHODCALLTYPE *SetMarker )(
2199 ID3D12VideoDecodeCommandList1 * This,
2200 UINT Metadata,
2201 _In_reads_bytes_opt_(Size) const void *pData,
2202 UINT Size);
2203
2204 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2205 void ( STDMETHODCALLTYPE *BeginEvent )(
2206 ID3D12VideoDecodeCommandList1 * This,
2207 UINT Metadata,
2208 _In_reads_bytes_opt_(Size) const void *pData,
2209 UINT Size);
2210
2211 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2212 void ( STDMETHODCALLTYPE *EndEvent )(
2213 ID3D12VideoDecodeCommandList1 * This);
2214
2215 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2216 void ( STDMETHODCALLTYPE *DecodeFrame )(
2217 ID3D12VideoDecodeCommandList1 * This,
2218 _In_ ID3D12VideoDecoder *pDecoder,
2219 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2220 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2221
2222 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2223 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2224 ID3D12VideoDecodeCommandList1 * This,
2225 UINT Count,
2226 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2227 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2228
2229 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2230 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2231 ID3D12VideoDecodeCommandList1 * This,
2232 _In_ ID3D12VideoDecoder *pDecoder,
2233 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2234 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2235
2236 END_INTERFACE
2237 } ID3D12VideoDecodeCommandList1Vtbl;
2238
2239 interface ID3D12VideoDecodeCommandList1
2240 {
2241 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2242 };
2243
2244
2245
2246#ifdef COBJMACROS
2247
2248
2249#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2250 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2251
2252#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2253 ( (This)->lpVtbl -> AddRef(This) )
2254
2255#define ID3D12VideoDecodeCommandList1_Release(This) \
2256 ( (This)->lpVtbl -> Release(This) )
2257
2258
2259#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2260 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2261
2262#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2263 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2264
2265#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2266 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2267
2268#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2269 ( (This)->lpVtbl -> SetName(This,Name) )
2270
2271
2272#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2273 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2274
2275
2276#define ID3D12VideoDecodeCommandList1_GetType(This) \
2277 ( (This)->lpVtbl -> GetType(This) )
2278
2279
2280#define ID3D12VideoDecodeCommandList1_Close(This) \
2281 ( (This)->lpVtbl -> Close(This) )
2282
2283#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2284 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2285
2286#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2287 ( (This)->lpVtbl -> ClearState(This) )
2288
2289#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2290 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2291
2292#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2293 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2294
2295#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2296 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2297
2298#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2299 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2300
2301#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2302 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2303
2304#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2305 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2306
2307#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2308 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2309
2310#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2311 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2312
2313#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2314 ( (This)->lpVtbl -> EndEvent(This) )
2315
2316#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2317 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2318
2319#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2320 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2321
2322
2323#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2324 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2325
2326#endif /* COBJMACROS */
2327
2328
2329#endif /* C style interface */
2330
2331
2332
2333
2334#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2335
2336
2337/* interface __MIDL_itf_d3d12video_0000_0007 */
2338/* [local] */
2339
2340typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2341 {
2342 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2343 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2344 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2345 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2346 INT FilterLevels[ 32 ];
2347 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2348 D3D12_VIDEO_FIELD_TYPE FieldType;
2349 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2350
2351
2352
2353extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2354extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2355
2356#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2357#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2358
2359/* interface ID3D12VideoProcessCommandList1 */
2360/* [unique][local][object][uuid] */
2361
2362
2363EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2364
2365#if defined(__cplusplus) && !defined(CINTERFACE)
2366
2367 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2368 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2369 {
2370 public:
2371 virtual void STDMETHODCALLTYPE ProcessFrames1(
2372 _In_ ID3D12VideoProcessor *pVideoProcessor,
2373 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2374 UINT NumInputStreams,
2375 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2376
2377 };
2378
2379
2380#else /* C style interface */
2381
2382 typedef struct ID3D12VideoProcessCommandList1Vtbl
2383 {
2384 BEGIN_INTERFACE
2385
2386 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2387 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2388 ID3D12VideoProcessCommandList1 * This,
2389 REFIID riid,
2390 _COM_Outptr_ void **ppvObject);
2391
2392 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2393 ULONG ( STDMETHODCALLTYPE *AddRef )(
2394 ID3D12VideoProcessCommandList1 * This);
2395
2396 DECLSPEC_XFGVIRT(IUnknown, Release)
2397 ULONG ( STDMETHODCALLTYPE *Release )(
2398 ID3D12VideoProcessCommandList1 * This);
2399
2400 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2401 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2402 ID3D12VideoProcessCommandList1 * This,
2403 _In_ REFGUID guid,
2404 _Inout_ UINT *pDataSize,
2405 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2406
2407 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2408 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2409 ID3D12VideoProcessCommandList1 * This,
2410 _In_ REFGUID guid,
2411 _In_ UINT DataSize,
2412 _In_reads_bytes_opt_( DataSize ) const void *pData);
2413
2414 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2415 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2416 ID3D12VideoProcessCommandList1 * This,
2417 _In_ REFGUID guid,
2418 _In_opt_ const IUnknown *pData);
2419
2420 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2421 HRESULT ( STDMETHODCALLTYPE *SetName )(
2422 ID3D12VideoProcessCommandList1 * This,
2423 _In_z_ LPCWSTR Name);
2424
2425 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2426 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2427 ID3D12VideoProcessCommandList1 * This,
2428 REFIID riid,
2429 _COM_Outptr_opt_ void **ppvDevice);
2430
2431 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2432 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2433 ID3D12VideoProcessCommandList1 * This);
2434
2435 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2436 HRESULT ( STDMETHODCALLTYPE *Close )(
2437 ID3D12VideoProcessCommandList1 * This);
2438
2439 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2440 HRESULT ( STDMETHODCALLTYPE *Reset )(
2441 ID3D12VideoProcessCommandList1 * This,
2442 _In_ ID3D12CommandAllocator *pAllocator);
2443
2444 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2445 void ( STDMETHODCALLTYPE *ClearState )(
2446 ID3D12VideoProcessCommandList1 * This);
2447
2448 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2449 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2450 ID3D12VideoProcessCommandList1 * This,
2451 _In_ UINT NumBarriers,
2452 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2453
2454 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2455 void ( STDMETHODCALLTYPE *DiscardResource )(
2456 ID3D12VideoProcessCommandList1 * This,
2457 _In_ ID3D12Resource *pResource,
2458 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2459
2460 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2461 void ( STDMETHODCALLTYPE *BeginQuery )(
2462 ID3D12VideoProcessCommandList1 * This,
2463 _In_ ID3D12QueryHeap *pQueryHeap,
2464 _In_ D3D12_QUERY_TYPE Type,
2465 _In_ UINT Index);
2466
2467 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2468 void ( STDMETHODCALLTYPE *EndQuery )(
2469 ID3D12VideoProcessCommandList1 * This,
2470 _In_ ID3D12QueryHeap *pQueryHeap,
2471 _In_ D3D12_QUERY_TYPE Type,
2472 _In_ UINT Index);
2473
2474 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2475 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2476 ID3D12VideoProcessCommandList1 * This,
2477 _In_ ID3D12QueryHeap *pQueryHeap,
2478 _In_ D3D12_QUERY_TYPE Type,
2479 _In_ UINT StartIndex,
2480 _In_ UINT NumQueries,
2481 _In_ ID3D12Resource *pDestinationBuffer,
2482 _In_ UINT64 AlignedDestinationBufferOffset);
2483
2484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2485 void ( STDMETHODCALLTYPE *SetPredication )(
2486 ID3D12VideoProcessCommandList1 * This,
2487 _In_opt_ ID3D12Resource *pBuffer,
2488 _In_ UINT64 AlignedBufferOffset,
2489 _In_ D3D12_PREDICATION_OP Operation);
2490
2491 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2492 void ( STDMETHODCALLTYPE *SetMarker )(
2493 ID3D12VideoProcessCommandList1 * This,
2494 UINT Metadata,
2495 _In_reads_bytes_opt_(Size) const void *pData,
2496 UINT Size);
2497
2498 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2499 void ( STDMETHODCALLTYPE *BeginEvent )(
2500 ID3D12VideoProcessCommandList1 * This,
2501 UINT Metadata,
2502 _In_reads_bytes_opt_(Size) const void *pData,
2503 UINT Size);
2504
2505 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2506 void ( STDMETHODCALLTYPE *EndEvent )(
2507 ID3D12VideoProcessCommandList1 * This);
2508
2509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2510 void ( STDMETHODCALLTYPE *ProcessFrames )(
2511 ID3D12VideoProcessCommandList1 * This,
2512 _In_ ID3D12VideoProcessor *pVideoProcessor,
2513 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2514 UINT NumInputStreams,
2515 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2516
2517 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2518 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2519 ID3D12VideoProcessCommandList1 * This,
2520 UINT Count,
2521 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2522 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2523
2524 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2525 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2526 ID3D12VideoProcessCommandList1 * This,
2527 _In_ ID3D12VideoProcessor *pVideoProcessor,
2528 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2529 UINT NumInputStreams,
2530 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2531
2532 END_INTERFACE
2533 } ID3D12VideoProcessCommandList1Vtbl;
2534
2535 interface ID3D12VideoProcessCommandList1
2536 {
2537 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2538 };
2539
2540
2541
2542#ifdef COBJMACROS
2543
2544
2545#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2546 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2547
2548#define ID3D12VideoProcessCommandList1_AddRef(This) \
2549 ( (This)->lpVtbl -> AddRef(This) )
2550
2551#define ID3D12VideoProcessCommandList1_Release(This) \
2552 ( (This)->lpVtbl -> Release(This) )
2553
2554
2555#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2556 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2557
2558#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2559 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2560
2561#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2562 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2563
2564#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2565 ( (This)->lpVtbl -> SetName(This,Name) )
2566
2567
2568#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2569 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2570
2571
2572#define ID3D12VideoProcessCommandList1_GetType(This) \
2573 ( (This)->lpVtbl -> GetType(This) )
2574
2575
2576#define ID3D12VideoProcessCommandList1_Close(This) \
2577 ( (This)->lpVtbl -> Close(This) )
2578
2579#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2580 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2581
2582#define ID3D12VideoProcessCommandList1_ClearState(This) \
2583 ( (This)->lpVtbl -> ClearState(This) )
2584
2585#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2586 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2587
2588#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2589 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2590
2591#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2592 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2593
2594#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2595 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2596
2597#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2598 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2599
2600#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2601 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2602
2603#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2604 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2605
2606#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2607 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2608
2609#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2610 ( (This)->lpVtbl -> EndEvent(This) )
2611
2612#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2613 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2614
2615#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2616 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2617
2618
2619#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2620 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2621
2622#endif /* COBJMACROS */
2623
2624
2625#endif /* C style interface */
2626
2627
2628
2629
2630#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2631
2632
2633/* interface __MIDL_itf_d3d12video_0000_0008 */
2634/* [local] */
2635
2636typedef
2637enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2638 {
2639 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2640 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2641 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2642
2643typedef
2644enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2645 {
2646 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2647 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2648 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2649 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2650
2651DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS );
2652typedef
2653enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2654 {
2655 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2656 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2657
2658typedef
2659enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2660 {
2661 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2662 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2663 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2664
2665DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS );
2666typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2667 {
2668 UINT NodeIndex;
2669 BOOL VideoDecodeSupport;
2670 BOOL VideoProcessSupport;
2671 BOOL VideoEncodeSupport;
2672 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2673
2674typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2675 {
2676 UINT NodeIndex;
2677 DXGI_FORMAT InputFormat;
2678 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2679 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2680 D3D12_VIDEO_SIZE_RANGE SizeRange;
2681 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2682
2683typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2684 {
2685 UINT NodeIndex;
2686 DXGI_FORMAT InputFormat;
2687 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2688 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2689 D3D12_VIDEO_SIZE_RANGE SizeRange;
2690 BOOL Protected;
2691 UINT64 MotionVectorHeapMemoryPoolL0Size;
2692 UINT64 MotionVectorHeapMemoryPoolL1Size;
2693 UINT64 MotionEstimatorMemoryPoolL0Size;
2694 UINT64 MotionEstimatorMemoryPoolL1Size;
2695 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2696
2697typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2698 {
2699 UINT NodeMask;
2700 DXGI_FORMAT InputFormat;
2701 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2702 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2703 D3D12_VIDEO_SIZE_RANGE SizeRange;
2704 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2705
2706
2707
2708extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2709extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2710
2711#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2712#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2713
2714/* interface ID3D12VideoMotionEstimator */
2715/* [unique][local][object][uuid] */
2716
2717
2718EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2719
2720#if defined(__cplusplus) && !defined(CINTERFACE)
2721
2722 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2723 ID3D12VideoMotionEstimator : public ID3D12Pageable
2724 {
2725 public:
2726 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2727
2728 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2729 REFIID riid,
2730 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2731
2732 };
2733
2734
2735#else /* C style interface */
2736
2737 typedef struct ID3D12VideoMotionEstimatorVtbl
2738 {
2739 BEGIN_INTERFACE
2740
2741 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2742 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2743 ID3D12VideoMotionEstimator * This,
2744 REFIID riid,
2745 _COM_Outptr_ void **ppvObject);
2746
2747 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2748 ULONG ( STDMETHODCALLTYPE *AddRef )(
2749 ID3D12VideoMotionEstimator * This);
2750
2751 DECLSPEC_XFGVIRT(IUnknown, Release)
2752 ULONG ( STDMETHODCALLTYPE *Release )(
2753 ID3D12VideoMotionEstimator * This);
2754
2755 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2756 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2757 ID3D12VideoMotionEstimator * This,
2758 _In_ REFGUID guid,
2759 _Inout_ UINT *pDataSize,
2760 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2761
2762 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2763 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2764 ID3D12VideoMotionEstimator * This,
2765 _In_ REFGUID guid,
2766 _In_ UINT DataSize,
2767 _In_reads_bytes_opt_( DataSize ) const void *pData);
2768
2769 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2770 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2771 ID3D12VideoMotionEstimator * This,
2772 _In_ REFGUID guid,
2773 _In_opt_ const IUnknown *pData);
2774
2775 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2776 HRESULT ( STDMETHODCALLTYPE *SetName )(
2777 ID3D12VideoMotionEstimator * This,
2778 _In_z_ LPCWSTR Name);
2779
2780 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2781 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2782 ID3D12VideoMotionEstimator * This,
2783 REFIID riid,
2784 _COM_Outptr_opt_ void **ppvDevice);
2785
2786 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2787 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2788 ID3D12VideoMotionEstimator * This,
2789 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2790
2791 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2792 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2793 ID3D12VideoMotionEstimator * This,
2794 REFIID riid,
2795 _COM_Outptr_opt_ void **ppProtectedSession);
2796
2797 END_INTERFACE
2798 } ID3D12VideoMotionEstimatorVtbl;
2799
2800 interface ID3D12VideoMotionEstimator
2801 {
2802 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2803 };
2804
2805
2806
2807#ifdef COBJMACROS
2808
2809
2810#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2811 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2812
2813#define ID3D12VideoMotionEstimator_AddRef(This) \
2814 ( (This)->lpVtbl -> AddRef(This) )
2815
2816#define ID3D12VideoMotionEstimator_Release(This) \
2817 ( (This)->lpVtbl -> Release(This) )
2818
2819
2820#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2821 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2822
2823#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2824 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2825
2826#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2827 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2828
2829#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2830 ( (This)->lpVtbl -> SetName(This,Name) )
2831
2832
2833#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2834 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2835
2836
2837
2838#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
2839 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
2840
2841#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
2842 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
2843
2844#endif /* COBJMACROS */
2845
2846
2847#endif /* C style interface */
2848
2849
2850
2851
2852#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
2853
2854
2855/* interface __MIDL_itf_d3d12video_0000_0009 */
2856/* [local] */
2857
2858typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
2859 {
2860 UINT NodeMask;
2861 DXGI_FORMAT InputFormat;
2862 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2863 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2864 D3D12_VIDEO_SIZE_RANGE SizeRange;
2865 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
2866
2867
2868
2869extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
2870extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
2871
2872#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2873#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
2874
2875/* interface ID3D12VideoMotionVectorHeap */
2876/* [unique][local][object][uuid] */
2877
2878
2879EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
2880
2881#if defined(__cplusplus) && !defined(CINTERFACE)
2882
2883 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
2884 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
2885 {
2886 public:
2887 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2888
2889 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2890 REFIID riid,
2891 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2892
2893 };
2894
2895
2896#else /* C style interface */
2897
2898 typedef struct ID3D12VideoMotionVectorHeapVtbl
2899 {
2900 BEGIN_INTERFACE
2901
2902 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2903 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2904 ID3D12VideoMotionVectorHeap * This,
2905 REFIID riid,
2906 _COM_Outptr_ void **ppvObject);
2907
2908 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2909 ULONG ( STDMETHODCALLTYPE *AddRef )(
2910 ID3D12VideoMotionVectorHeap * This);
2911
2912 DECLSPEC_XFGVIRT(IUnknown, Release)
2913 ULONG ( STDMETHODCALLTYPE *Release )(
2914 ID3D12VideoMotionVectorHeap * This);
2915
2916 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2917 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2918 ID3D12VideoMotionVectorHeap * This,
2919 _In_ REFGUID guid,
2920 _Inout_ UINT *pDataSize,
2921 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2922
2923 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2924 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2925 ID3D12VideoMotionVectorHeap * This,
2926 _In_ REFGUID guid,
2927 _In_ UINT DataSize,
2928 _In_reads_bytes_opt_( DataSize ) const void *pData);
2929
2930 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2931 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2932 ID3D12VideoMotionVectorHeap * This,
2933 _In_ REFGUID guid,
2934 _In_opt_ const IUnknown *pData);
2935
2936 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2937 HRESULT ( STDMETHODCALLTYPE *SetName )(
2938 ID3D12VideoMotionVectorHeap * This,
2939 _In_z_ LPCWSTR Name);
2940
2941 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2942 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2943 ID3D12VideoMotionVectorHeap * This,
2944 REFIID riid,
2945 _COM_Outptr_opt_ void **ppvDevice);
2946
2947 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
2948 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
2949 ID3D12VideoMotionVectorHeap * This,
2950 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
2951
2952 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
2953 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2954 ID3D12VideoMotionVectorHeap * This,
2955 REFIID riid,
2956 _COM_Outptr_opt_ void **ppProtectedSession);
2957
2958 END_INTERFACE
2959 } ID3D12VideoMotionVectorHeapVtbl;
2960
2961 interface ID3D12VideoMotionVectorHeap
2962 {
2963 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
2964 };
2965
2966
2967
2968#ifdef COBJMACROS
2969
2970
2971#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
2972 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2973
2974#define ID3D12VideoMotionVectorHeap_AddRef(This) \
2975 ( (This)->lpVtbl -> AddRef(This) )
2976
2977#define ID3D12VideoMotionVectorHeap_Release(This) \
2978 ( (This)->lpVtbl -> Release(This) )
2979
2980
2981#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
2982 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2983
2984#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
2985 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2986
2987#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
2988 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2989
2990#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
2991 ( (This)->lpVtbl -> SetName(This,Name) )
2992
2993
2994#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
2995 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2996
2997
2998
2999#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001
3002#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3003 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3004
3005#endif /* COBJMACROS */
3006
3007
3008#endif /* C style interface */
3009
3010
3011
3012
3013#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3014
3015
3016#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3017#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3018
3019/* interface ID3D12VideoDevice1 */
3020/* [unique][local][object][uuid] */
3021
3022
3023EXTERN_C const IID IID_ID3D12VideoDevice1;
3024
3025#if defined(__cplusplus) && !defined(CINTERFACE)
3026
3027 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3028 ID3D12VideoDevice1 : public ID3D12VideoDevice
3029 {
3030 public:
3031 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3032 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3033 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3034 _In_ REFIID riid,
3035 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3036
3037 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3038 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3039 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3040 _In_ REFIID riid,
3041 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3042
3043 };
3044
3045
3046#else /* C style interface */
3047
3048 typedef struct ID3D12VideoDevice1Vtbl
3049 {
3050 BEGIN_INTERFACE
3051
3052 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3053 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3054 ID3D12VideoDevice1 * This,
3055 REFIID riid,
3056 _COM_Outptr_ void **ppvObject);
3057
3058 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3059 ULONG ( STDMETHODCALLTYPE *AddRef )(
3060 ID3D12VideoDevice1 * This);
3061
3062 DECLSPEC_XFGVIRT(IUnknown, Release)
3063 ULONG ( STDMETHODCALLTYPE *Release )(
3064 ID3D12VideoDevice1 * This);
3065
3066 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3067 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3068 ID3D12VideoDevice1 * This,
3069 D3D12_FEATURE_VIDEO FeatureVideo,
3070 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3071 UINT FeatureSupportDataSize);
3072
3073 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3074 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3075 ID3D12VideoDevice1 * This,
3076 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3077 _In_ REFIID riid,
3078 _COM_Outptr_ void **ppVideoDecoder);
3079
3080 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3081 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3082 ID3D12VideoDevice1 * This,
3083 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3084 _In_ REFIID riid,
3085 _COM_Outptr_ void **ppVideoDecoderHeap);
3086
3087 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3088 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3089 ID3D12VideoDevice1 * This,
3090 UINT NodeMask,
3091 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3092 UINT NumInputStreamDescs,
3093 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3094 _In_ REFIID riid,
3095 _COM_Outptr_ void **ppVideoProcessor);
3096
3097 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3098 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3099 ID3D12VideoDevice1 * This,
3100 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3101 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3102 _In_ REFIID riid,
3103 _COM_Outptr_ void **ppVideoMotionEstimator);
3104
3105 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3106 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3107 ID3D12VideoDevice1 * This,
3108 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3109 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3110 _In_ REFIID riid,
3111 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3112
3113 END_INTERFACE
3114 } ID3D12VideoDevice1Vtbl;
3115
3116 interface ID3D12VideoDevice1
3117 {
3118 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3119 };
3120
3121
3122
3123#ifdef COBJMACROS
3124
3125
3126#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3127 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3128
3129#define ID3D12VideoDevice1_AddRef(This) \
3130 ( (This)->lpVtbl -> AddRef(This) )
3131
3132#define ID3D12VideoDevice1_Release(This) \
3133 ( (This)->lpVtbl -> Release(This) )
3134
3135
3136#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3137 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3138
3139#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3140 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3141
3142#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3143 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3144
3145#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3146 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3147
3148
3149#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3150 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3151
3152#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3153 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3154
3155#endif /* COBJMACROS */
3156
3157
3158#endif /* C style interface */
3159
3160
3161
3162
3163#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3164
3165
3166/* interface __MIDL_itf_d3d12video_0000_0011 */
3167/* [local] */
3168
3169typedef struct D3D12_RESOURCE_COORDINATE
3170 {
3171 UINT64 X;
3172 UINT Y;
3173 UINT Z;
3174 UINT SubresourceIndex;
3175 } D3D12_RESOURCE_COORDINATE;
3176
3177typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3178 {
3179 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3180 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3181
3182typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3183 {
3184 ID3D12Resource *pInputTexture2D;
3185 UINT InputSubresourceIndex;
3186 ID3D12Resource *pReferenceTexture2D;
3187 UINT ReferenceSubresourceIndex;
3188 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3189 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3190
3191typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3192 {
3193 ID3D12Resource *pMotionVectorTexture2D;
3194 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3195 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3196
3197typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3198 {
3199 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3200 UINT PixelWidth;
3201 UINT PixelHeight;
3202 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3203
3204
3205
3206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3207extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3208
3209#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3210#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3211
3212/* interface ID3D12VideoEncodeCommandList */
3213/* [unique][local][object][uuid] */
3214
3215
3216EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3217
3218#if defined(__cplusplus) && !defined(CINTERFACE)
3219
3220 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3221 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3222 {
3223 public:
3224 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3225
3226 virtual HRESULT STDMETHODCALLTYPE Reset(
3227 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3228
3229 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3230
3231 virtual void STDMETHODCALLTYPE ResourceBarrier(
3232 _In_ UINT NumBarriers,
3233 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3234
3235 virtual void STDMETHODCALLTYPE DiscardResource(
3236 _In_ ID3D12Resource *pResource,
3237 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3238
3239 virtual void STDMETHODCALLTYPE BeginQuery(
3240 _In_ ID3D12QueryHeap *pQueryHeap,
3241 _In_ D3D12_QUERY_TYPE Type,
3242 _In_ UINT Index) = 0;
3243
3244 virtual void STDMETHODCALLTYPE EndQuery(
3245 _In_ ID3D12QueryHeap *pQueryHeap,
3246 _In_ D3D12_QUERY_TYPE Type,
3247 _In_ UINT Index) = 0;
3248
3249 virtual void STDMETHODCALLTYPE ResolveQueryData(
3250 _In_ ID3D12QueryHeap *pQueryHeap,
3251 _In_ D3D12_QUERY_TYPE Type,
3252 _In_ UINT StartIndex,
3253 _In_ UINT NumQueries,
3254 _In_ ID3D12Resource *pDestinationBuffer,
3255 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3256
3257 virtual void STDMETHODCALLTYPE SetPredication(
3258 _In_opt_ ID3D12Resource *pBuffer,
3259 _In_ UINT64 AlignedBufferOffset,
3260 _In_ D3D12_PREDICATION_OP Operation) = 0;
3261
3262 virtual void STDMETHODCALLTYPE SetMarker(
3263 UINT Metadata,
3264 _In_reads_bytes_opt_(Size) const void *pData,
3265 UINT Size) = 0;
3266
3267 virtual void STDMETHODCALLTYPE BeginEvent(
3268 UINT Metadata,
3269 _In_reads_bytes_opt_(Size) const void *pData,
3270 UINT Size) = 0;
3271
3272 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3273
3274 virtual void STDMETHODCALLTYPE EstimateMotion(
3275 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3276 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3277 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3278
3279 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3280 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3281 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3282
3283 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3284 UINT Count,
3285 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3286 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3287
3288 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3289 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3290
3291 };
3292
3293
3294#else /* C style interface */
3295
3296 typedef struct ID3D12VideoEncodeCommandListVtbl
3297 {
3298 BEGIN_INTERFACE
3299
3300 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3301 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3302 ID3D12VideoEncodeCommandList * This,
3303 REFIID riid,
3304 _COM_Outptr_ void **ppvObject);
3305
3306 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3307 ULONG ( STDMETHODCALLTYPE *AddRef )(
3308 ID3D12VideoEncodeCommandList * This);
3309
3310 DECLSPEC_XFGVIRT(IUnknown, Release)
3311 ULONG ( STDMETHODCALLTYPE *Release )(
3312 ID3D12VideoEncodeCommandList * This);
3313
3314 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3315 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3316 ID3D12VideoEncodeCommandList * This,
3317 _In_ REFGUID guid,
3318 _Inout_ UINT *pDataSize,
3319 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3320
3321 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3322 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3323 ID3D12VideoEncodeCommandList * This,
3324 _In_ REFGUID guid,
3325 _In_ UINT DataSize,
3326 _In_reads_bytes_opt_( DataSize ) const void *pData);
3327
3328 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3329 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3330 ID3D12VideoEncodeCommandList * This,
3331 _In_ REFGUID guid,
3332 _In_opt_ const IUnknown *pData);
3333
3334 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3335 HRESULT ( STDMETHODCALLTYPE *SetName )(
3336 ID3D12VideoEncodeCommandList * This,
3337 _In_z_ LPCWSTR Name);
3338
3339 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3340 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3341 ID3D12VideoEncodeCommandList * This,
3342 REFIID riid,
3343 _COM_Outptr_opt_ void **ppvDevice);
3344
3345 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3346 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3347 ID3D12VideoEncodeCommandList * This);
3348
3349 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3350 HRESULT ( STDMETHODCALLTYPE *Close )(
3351 ID3D12VideoEncodeCommandList * This);
3352
3353 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3354 HRESULT ( STDMETHODCALLTYPE *Reset )(
3355 ID3D12VideoEncodeCommandList * This,
3356 _In_ ID3D12CommandAllocator *pAllocator);
3357
3358 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3359 void ( STDMETHODCALLTYPE *ClearState )(
3360 ID3D12VideoEncodeCommandList * This);
3361
3362 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3363 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3364 ID3D12VideoEncodeCommandList * This,
3365 _In_ UINT NumBarriers,
3366 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3367
3368 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3369 void ( STDMETHODCALLTYPE *DiscardResource )(
3370 ID3D12VideoEncodeCommandList * This,
3371 _In_ ID3D12Resource *pResource,
3372 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3373
3374 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3375 void ( STDMETHODCALLTYPE *BeginQuery )(
3376 ID3D12VideoEncodeCommandList * This,
3377 _In_ ID3D12QueryHeap *pQueryHeap,
3378 _In_ D3D12_QUERY_TYPE Type,
3379 _In_ UINT Index);
3380
3381 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3382 void ( STDMETHODCALLTYPE *EndQuery )(
3383 ID3D12VideoEncodeCommandList * This,
3384 _In_ ID3D12QueryHeap *pQueryHeap,
3385 _In_ D3D12_QUERY_TYPE Type,
3386 _In_ UINT Index);
3387
3388 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3389 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3390 ID3D12VideoEncodeCommandList * This,
3391 _In_ ID3D12QueryHeap *pQueryHeap,
3392 _In_ D3D12_QUERY_TYPE Type,
3393 _In_ UINT StartIndex,
3394 _In_ UINT NumQueries,
3395 _In_ ID3D12Resource *pDestinationBuffer,
3396 _In_ UINT64 AlignedDestinationBufferOffset);
3397
3398 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3399 void ( STDMETHODCALLTYPE *SetPredication )(
3400 ID3D12VideoEncodeCommandList * This,
3401 _In_opt_ ID3D12Resource *pBuffer,
3402 _In_ UINT64 AlignedBufferOffset,
3403 _In_ D3D12_PREDICATION_OP Operation);
3404
3405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3406 void ( STDMETHODCALLTYPE *SetMarker )(
3407 ID3D12VideoEncodeCommandList * This,
3408 UINT Metadata,
3409 _In_reads_bytes_opt_(Size) const void *pData,
3410 UINT Size);
3411
3412 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3413 void ( STDMETHODCALLTYPE *BeginEvent )(
3414 ID3D12VideoEncodeCommandList * This,
3415 UINT Metadata,
3416 _In_reads_bytes_opt_(Size) const void *pData,
3417 UINT Size);
3418
3419 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3420 void ( STDMETHODCALLTYPE *EndEvent )(
3421 ID3D12VideoEncodeCommandList * This);
3422
3423 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3424 void ( STDMETHODCALLTYPE *EstimateMotion )(
3425 ID3D12VideoEncodeCommandList * This,
3426 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3427 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3428 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3429
3430 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3431 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3432 ID3D12VideoEncodeCommandList * This,
3433 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3434 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3435
3436 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3437 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3438 ID3D12VideoEncodeCommandList * This,
3439 UINT Count,
3440 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3441 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3442
3443 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3444 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3445 ID3D12VideoEncodeCommandList * This,
3446 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3447
3448 END_INTERFACE
3449 } ID3D12VideoEncodeCommandListVtbl;
3450
3451 interface ID3D12VideoEncodeCommandList
3452 {
3453 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3454 };
3455
3456
3457
3458#ifdef COBJMACROS
3459
3460
3461#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3462 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3463
3464#define ID3D12VideoEncodeCommandList_AddRef(This) \
3465 ( (This)->lpVtbl -> AddRef(This) )
3466
3467#define ID3D12VideoEncodeCommandList_Release(This) \
3468 ( (This)->lpVtbl -> Release(This) )
3469
3470
3471#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3472 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3473
3474#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3475 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3476
3477#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3478 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3479
3480#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3481 ( (This)->lpVtbl -> SetName(This,Name) )
3482
3483
3484#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3485 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3486
3487
3488#define ID3D12VideoEncodeCommandList_GetType(This) \
3489 ( (This)->lpVtbl -> GetType(This) )
3490
3491
3492#define ID3D12VideoEncodeCommandList_Close(This) \
3493 ( (This)->lpVtbl -> Close(This) )
3494
3495#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3496 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3497
3498#define ID3D12VideoEncodeCommandList_ClearState(This) \
3499 ( (This)->lpVtbl -> ClearState(This) )
3500
3501#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3502 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3503
3504#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3505 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3506
3507#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3508 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3509
3510#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3511 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3512
3513#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3514 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3515
3516#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3517 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3518
3519#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3520 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3521
3522#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3523 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3524
3525#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3526 ( (This)->lpVtbl -> EndEvent(This) )
3527
3528#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3529 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3530
3531#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3532 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3533
3534#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3535 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3536
3537#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3538 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3539
3540#endif /* COBJMACROS */
3541
3542
3543#endif /* C style interface */
3544
3545
3546
3547
3548#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3549
3550
3551/* interface __MIDL_itf_d3d12video_0000_0012 */
3552/* [local] */
3553
3554typedef
3555enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3556 {
3557 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3558 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3559 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3560
3561DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS );
3562typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3563 {
3564 UINT NodeIndex;
3565 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3566 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3567 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3568
3569typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3570 {
3571 UINT NodeIndex;
3572 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3573 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3574
3575typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3576 {
3577 UINT NodeIndex;
3578 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3579 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3580
3581typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3582 {
3583 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3584 BOOL Protected;
3585 UINT64 MemoryPoolL0Size;
3586 UINT64 MemoryPoolL1Size;
3587 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3588
3589typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3590 {
3591 UINT NodeMask;
3592 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3593 UINT NumInputStreamDescs;
3594 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3595 BOOL Protected;
3596 UINT64 MemoryPoolL0Size;
3597 UINT64 MemoryPoolL1Size;
3598 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3599
3600typedef
3601enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3602 {
3603 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3604 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3605 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3606 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3607 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3608 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3609 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3610 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3611
3612typedef
3613enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3614 {
3615 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3616 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3617 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3618 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3619 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3620 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3621 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3622 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3623 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3624 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3625 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3626 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3627
3628typedef
3629enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3630 {
3631 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3632 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3633 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3634 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3635
3636DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS );
3637typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3638 {
3639 UINT NodeIndex;
3640 UINT CommandCount;
3641 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3642
3643typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3644 {
3645 GUID CommandId;
3646 LPCWSTR Name;
3647 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3648 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3649
3650typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3651 {
3652 UINT NodeIndex;
3653 UINT CommandCount;
3654 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3655 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3656
3657typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3658 {
3659 GUID CommandId;
3660 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3661 UINT ParameterCount;
3662 UINT ParameterPacking;
3663 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3664
3665typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3666 {
3667 LPCWSTR Name;
3668 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3669 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3670 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3671
3672typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3673 {
3674 GUID CommandId;
3675 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3676 UINT ParameterCount;
3677 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3678 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3679
3680typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3681 {
3682 UINT NodeIndex;
3683 GUID CommandId;
3684 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3685 SIZE_T InputDataSizeInBytes;
3686 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3687 SIZE_T OutputDataSizeInBytes;
3688 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3689
3690typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3691 {
3692 UINT NodeIndex;
3693 GUID CommandId;
3694 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3695 SIZE_T CreationParametersSizeInBytes;
3696 UINT64 MemoryPoolL0Size;
3697 UINT64 MemoryPoolL1Size;
3698 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3699
3700typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3701 {
3702 UINT NodeMask;
3703 GUID CommandId;
3704 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3705
3706
3707
3708extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3709extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3710
3711#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3712#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3713
3714/* interface ID3D12VideoDecoder1 */
3715/* [unique][local][object][uuid] */
3716
3717
3718EXTERN_C const IID IID_ID3D12VideoDecoder1;
3719
3720#if defined(__cplusplus) && !defined(CINTERFACE)
3721
3722 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3723 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3724 {
3725 public:
3726 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3727 REFIID riid,
3728 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3729
3730 };
3731
3732
3733#else /* C style interface */
3734
3735 typedef struct ID3D12VideoDecoder1Vtbl
3736 {
3737 BEGIN_INTERFACE
3738
3739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3741 ID3D12VideoDecoder1 * This,
3742 REFIID riid,
3743 _COM_Outptr_ void **ppvObject);
3744
3745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3746 ULONG ( STDMETHODCALLTYPE *AddRef )(
3747 ID3D12VideoDecoder1 * This);
3748
3749 DECLSPEC_XFGVIRT(IUnknown, Release)
3750 ULONG ( STDMETHODCALLTYPE *Release )(
3751 ID3D12VideoDecoder1 * This);
3752
3753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3755 ID3D12VideoDecoder1 * This,
3756 _In_ REFGUID guid,
3757 _Inout_ UINT *pDataSize,
3758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3759
3760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3762 ID3D12VideoDecoder1 * This,
3763 _In_ REFGUID guid,
3764 _In_ UINT DataSize,
3765 _In_reads_bytes_opt_( DataSize ) const void *pData);
3766
3767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3769 ID3D12VideoDecoder1 * This,
3770 _In_ REFGUID guid,
3771 _In_opt_ const IUnknown *pData);
3772
3773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3774 HRESULT ( STDMETHODCALLTYPE *SetName )(
3775 ID3D12VideoDecoder1 * This,
3776 _In_z_ LPCWSTR Name);
3777
3778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3780 ID3D12VideoDecoder1 * This,
3781 REFIID riid,
3782 _COM_Outptr_opt_ void **ppvDevice);
3783
3784 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3785 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3786 ID3D12VideoDecoder1 * This,
3787 D3D12_VIDEO_DECODER_DESC * RetVal);
3788
3789 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3790 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3791 ID3D12VideoDecoder1 * This,
3792 REFIID riid,
3793 _COM_Outptr_opt_ void **ppProtectedSession);
3794
3795 END_INTERFACE
3796 } ID3D12VideoDecoder1Vtbl;
3797
3798 interface ID3D12VideoDecoder1
3799 {
3800 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3801 };
3802
3803
3804
3805#ifdef COBJMACROS
3806
3807
3808#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3809 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3810
3811#define ID3D12VideoDecoder1_AddRef(This) \
3812 ( (This)->lpVtbl -> AddRef(This) )
3813
3814#define ID3D12VideoDecoder1_Release(This) \
3815 ( (This)->lpVtbl -> Release(This) )
3816
3817
3818#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
3819 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3820
3821#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
3822 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3823
3824#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
3825 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3826
3827#define ID3D12VideoDecoder1_SetName(This,Name) \
3828 ( (This)->lpVtbl -> SetName(This,Name) )
3829
3830
3831#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
3832 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3833
3834
3835
3836#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
3837 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3838
3839
3840#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3841 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3842
3843#endif /* COBJMACROS */
3844
3845
3846#endif /* C style interface */
3847
3848
3849
3850
3851#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
3852
3853
3854#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
3855#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
3856
3857/* interface ID3D12VideoDecoderHeap1 */
3858/* [unique][local][object][uuid] */
3859
3860
3861EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
3862
3863#if defined(__cplusplus) && !defined(CINTERFACE)
3864
3865 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
3866 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
3867 {
3868 public:
3869 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3870 REFIID riid,
3871 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3872
3873 };
3874
3875
3876#else /* C style interface */
3877
3878 typedef struct ID3D12VideoDecoderHeap1Vtbl
3879 {
3880 BEGIN_INTERFACE
3881
3882 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3883 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3884 ID3D12VideoDecoderHeap1 * This,
3885 REFIID riid,
3886 _COM_Outptr_ void **ppvObject);
3887
3888 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3889 ULONG ( STDMETHODCALLTYPE *AddRef )(
3890 ID3D12VideoDecoderHeap1 * This);
3891
3892 DECLSPEC_XFGVIRT(IUnknown, Release)
3893 ULONG ( STDMETHODCALLTYPE *Release )(
3894 ID3D12VideoDecoderHeap1 * This);
3895
3896 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3897 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3898 ID3D12VideoDecoderHeap1 * This,
3899 _In_ REFGUID guid,
3900 _Inout_ UINT *pDataSize,
3901 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3902
3903 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3904 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3905 ID3D12VideoDecoderHeap1 * This,
3906 _In_ REFGUID guid,
3907 _In_ UINT DataSize,
3908 _In_reads_bytes_opt_( DataSize ) const void *pData);
3909
3910 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3911 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3912 ID3D12VideoDecoderHeap1 * This,
3913 _In_ REFGUID guid,
3914 _In_opt_ const IUnknown *pData);
3915
3916 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3917 HRESULT ( STDMETHODCALLTYPE *SetName )(
3918 ID3D12VideoDecoderHeap1 * This,
3919 _In_z_ LPCWSTR Name);
3920
3921 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3922 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3923 ID3D12VideoDecoderHeap1 * This,
3924 REFIID riid,
3925 _COM_Outptr_opt_ void **ppvDevice);
3926
3927 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
3928 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3929 ID3D12VideoDecoderHeap1 * This,
3930 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
3931
3932 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
3933 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3934 ID3D12VideoDecoderHeap1 * This,
3935 REFIID riid,
3936 _COM_Outptr_opt_ void **ppProtectedSession);
3937
3938 END_INTERFACE
3939 } ID3D12VideoDecoderHeap1Vtbl;
3940
3941 interface ID3D12VideoDecoderHeap1
3942 {
3943 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
3944 };
3945
3946
3947
3948#ifdef COBJMACROS
3949
3950
3951#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
3952 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3953
3954#define ID3D12VideoDecoderHeap1_AddRef(This) \
3955 ( (This)->lpVtbl -> AddRef(This) )
3956
3957#define ID3D12VideoDecoderHeap1_Release(This) \
3958 ( (This)->lpVtbl -> Release(This) )
3959
3960
3961#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
3962 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3963
3964#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
3965 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3966
3967#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
3968 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3969
3970#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
3971 ( (This)->lpVtbl -> SetName(This,Name) )
3972
3973
3974#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
3975 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3976
3977
3978
3979#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
3980 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3981
3982
3983#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3984 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3985
3986#endif /* COBJMACROS */
3987
3988
3989#endif /* C style interface */
3990
3991
3992
3993
3994#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
3995
3996
3997#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
3998#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
3999
4000/* interface ID3D12VideoProcessor1 */
4001/* [unique][local][object][uuid] */
4002
4003
4004EXTERN_C const IID IID_ID3D12VideoProcessor1;
4005
4006#if defined(__cplusplus) && !defined(CINTERFACE)
4007
4008 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4009 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4010 {
4011 public:
4012 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4013 REFIID riid,
4014 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4015
4016 };
4017
4018
4019#else /* C style interface */
4020
4021 typedef struct ID3D12VideoProcessor1Vtbl
4022 {
4023 BEGIN_INTERFACE
4024
4025 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4026 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4027 ID3D12VideoProcessor1 * This,
4028 REFIID riid,
4029 _COM_Outptr_ void **ppvObject);
4030
4031 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4032 ULONG ( STDMETHODCALLTYPE *AddRef )(
4033 ID3D12VideoProcessor1 * This);
4034
4035 DECLSPEC_XFGVIRT(IUnknown, Release)
4036 ULONG ( STDMETHODCALLTYPE *Release )(
4037 ID3D12VideoProcessor1 * This);
4038
4039 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4040 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4041 ID3D12VideoProcessor1 * This,
4042 _In_ REFGUID guid,
4043 _Inout_ UINT *pDataSize,
4044 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4045
4046 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4047 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4048 ID3D12VideoProcessor1 * This,
4049 _In_ REFGUID guid,
4050 _In_ UINT DataSize,
4051 _In_reads_bytes_opt_( DataSize ) const void *pData);
4052
4053 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4054 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4055 ID3D12VideoProcessor1 * This,
4056 _In_ REFGUID guid,
4057 _In_opt_ const IUnknown *pData);
4058
4059 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4060 HRESULT ( STDMETHODCALLTYPE *SetName )(
4061 ID3D12VideoProcessor1 * This,
4062 _In_z_ LPCWSTR Name);
4063
4064 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4065 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4066 ID3D12VideoProcessor1 * This,
4067 REFIID riid,
4068 _COM_Outptr_opt_ void **ppvDevice);
4069
4070 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4071 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4072 ID3D12VideoProcessor1 * This);
4073
4074 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4075 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4076 ID3D12VideoProcessor1 * This);
4077
4078 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4079 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4080 ID3D12VideoProcessor1 * This,
4081 UINT NumInputStreamDescs,
4082 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4083
4084 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4085 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4086 ID3D12VideoProcessor1 * This,
4087 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4088
4089 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4090 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4091 ID3D12VideoProcessor1 * This,
4092 REFIID riid,
4093 _COM_Outptr_opt_ void **ppProtectedSession);
4094
4095 END_INTERFACE
4096 } ID3D12VideoProcessor1Vtbl;
4097
4098 interface ID3D12VideoProcessor1
4099 {
4100 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4101 };
4102
4103
4104
4105#ifdef COBJMACROS
4106
4107
4108#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4109 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4110
4111#define ID3D12VideoProcessor1_AddRef(This) \
4112 ( (This)->lpVtbl -> AddRef(This) )
4113
4114#define ID3D12VideoProcessor1_Release(This) \
4115 ( (This)->lpVtbl -> Release(This) )
4116
4117
4118#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4119 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4120
4121#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4122 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4123
4124#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4125 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4126
4127#define ID3D12VideoProcessor1_SetName(This,Name) \
4128 ( (This)->lpVtbl -> SetName(This,Name) )
4129
4130
4131#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4132 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4133
4134
4135
4136#define ID3D12VideoProcessor1_GetNodeMask(This) \
4137 ( (This)->lpVtbl -> GetNodeMask(This) )
4138
4139#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4140 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4141
4142#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4143 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4144
4145#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4146 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4147
4148
4149#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4150 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4151
4152#endif /* COBJMACROS */
4153
4154
4155#endif /* C style interface */
4156
4157
4158
4159
4160#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4161
4162
4163#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4164#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4165
4166/* interface ID3D12VideoExtensionCommand */
4167/* [unique][local][object][uuid] */
4168
4169
4170EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4171
4172#if defined(__cplusplus) && !defined(CINTERFACE)
4173
4174 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4175 ID3D12VideoExtensionCommand : public ID3D12Pageable
4176 {
4177 public:
4178 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4179
4180 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4181 REFIID riid,
4182 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4183
4184 };
4185
4186
4187#else /* C style interface */
4188
4189 typedef struct ID3D12VideoExtensionCommandVtbl
4190 {
4191 BEGIN_INTERFACE
4192
4193 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4194 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4195 ID3D12VideoExtensionCommand * This,
4196 REFIID riid,
4197 _COM_Outptr_ void **ppvObject);
4198
4199 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4200 ULONG ( STDMETHODCALLTYPE *AddRef )(
4201 ID3D12VideoExtensionCommand * This);
4202
4203 DECLSPEC_XFGVIRT(IUnknown, Release)
4204 ULONG ( STDMETHODCALLTYPE *Release )(
4205 ID3D12VideoExtensionCommand * This);
4206
4207 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4208 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4209 ID3D12VideoExtensionCommand * This,
4210 _In_ REFGUID guid,
4211 _Inout_ UINT *pDataSize,
4212 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4213
4214 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4215 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4216 ID3D12VideoExtensionCommand * This,
4217 _In_ REFGUID guid,
4218 _In_ UINT DataSize,
4219 _In_reads_bytes_opt_( DataSize ) const void *pData);
4220
4221 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4222 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4223 ID3D12VideoExtensionCommand * This,
4224 _In_ REFGUID guid,
4225 _In_opt_ const IUnknown *pData);
4226
4227 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4228 HRESULT ( STDMETHODCALLTYPE *SetName )(
4229 ID3D12VideoExtensionCommand * This,
4230 _In_z_ LPCWSTR Name);
4231
4232 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4233 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4234 ID3D12VideoExtensionCommand * This,
4235 REFIID riid,
4236 _COM_Outptr_opt_ void **ppvDevice);
4237
4238 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4239 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4240 ID3D12VideoExtensionCommand * This,
4241 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4242
4243 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4244 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4245 ID3D12VideoExtensionCommand * This,
4246 REFIID riid,
4247 _COM_Outptr_opt_ void **ppProtectedSession);
4248
4249 END_INTERFACE
4250 } ID3D12VideoExtensionCommandVtbl;
4251
4252 interface ID3D12VideoExtensionCommand
4253 {
4254 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4255 };
4256
4257
4258
4259#ifdef COBJMACROS
4260
4261
4262#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4263 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4264
4265#define ID3D12VideoExtensionCommand_AddRef(This) \
4266 ( (This)->lpVtbl -> AddRef(This) )
4267
4268#define ID3D12VideoExtensionCommand_Release(This) \
4269 ( (This)->lpVtbl -> Release(This) )
4270
4271
4272#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4273 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4274
4275#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4276 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4277
4278#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4279 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4280
4281#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4282 ( (This)->lpVtbl -> SetName(This,Name) )
4283
4284
4285#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4286 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4287
4288
4289
4290#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4291 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4292
4293#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4294 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4295
4296#endif /* COBJMACROS */
4297
4298
4299#endif /* C style interface */
4300
4301
4302
4303
4304#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4305
4306
4307#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4308#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4309
4310/* interface ID3D12VideoDevice2 */
4311/* [unique][local][object][uuid] */
4312
4313
4314EXTERN_C const IID IID_ID3D12VideoDevice2;
4315
4316#if defined(__cplusplus) && !defined(CINTERFACE)
4317
4318 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4319 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4320 {
4321 public:
4322 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4323 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4324 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4325 _In_ REFIID riid,
4326 _COM_Outptr_ void **ppVideoDecoder) = 0;
4327
4328 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4329 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4330 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4331 _In_ REFIID riid,
4332 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4333
4334 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4335 UINT NodeMask,
4336 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4337 UINT NumInputStreamDescs,
4338 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4339 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4340 _In_ REFIID riid,
4341 _COM_Outptr_ void **ppVideoProcessor) = 0;
4342
4343 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4344 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4345 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4346 SIZE_T CreationParametersDataSizeInBytes,
4347 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4348 _In_ REFIID riid,
4349 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4350
4351 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4352 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4353 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4354 SIZE_T ExecutionParametersSizeInBytes,
4355 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4356 SIZE_T OutputDataSizeInBytes) = 0;
4357
4358 };
4359
4360
4361#else /* C style interface */
4362
4363 typedef struct ID3D12VideoDevice2Vtbl
4364 {
4365 BEGIN_INTERFACE
4366
4367 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4368 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4369 ID3D12VideoDevice2 * This,
4370 REFIID riid,
4371 _COM_Outptr_ void **ppvObject);
4372
4373 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4374 ULONG ( STDMETHODCALLTYPE *AddRef )(
4375 ID3D12VideoDevice2 * This);
4376
4377 DECLSPEC_XFGVIRT(IUnknown, Release)
4378 ULONG ( STDMETHODCALLTYPE *Release )(
4379 ID3D12VideoDevice2 * This);
4380
4381 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4382 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4383 ID3D12VideoDevice2 * This,
4384 D3D12_FEATURE_VIDEO FeatureVideo,
4385 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4386 UINT FeatureSupportDataSize);
4387
4388 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4389 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4390 ID3D12VideoDevice2 * This,
4391 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4392 _In_ REFIID riid,
4393 _COM_Outptr_ void **ppVideoDecoder);
4394
4395 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4396 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4397 ID3D12VideoDevice2 * This,
4398 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4399 _In_ REFIID riid,
4400 _COM_Outptr_ void **ppVideoDecoderHeap);
4401
4402 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4403 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4404 ID3D12VideoDevice2 * This,
4405 UINT NodeMask,
4406 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4407 UINT NumInputStreamDescs,
4408 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4409 _In_ REFIID riid,
4410 _COM_Outptr_ void **ppVideoProcessor);
4411
4412 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4413 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4414 ID3D12VideoDevice2 * This,
4415 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4416 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4417 _In_ REFIID riid,
4418 _COM_Outptr_ void **ppVideoMotionEstimator);
4419
4420 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4421 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4422 ID3D12VideoDevice2 * This,
4423 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4424 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4425 _In_ REFIID riid,
4426 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4427
4428 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4429 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4430 ID3D12VideoDevice2 * This,
4431 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4432 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4433 _In_ REFIID riid,
4434 _COM_Outptr_ void **ppVideoDecoder);
4435
4436 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4437 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4438 ID3D12VideoDevice2 * This,
4439 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4440 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4441 _In_ REFIID riid,
4442 _COM_Outptr_ void **ppVideoDecoderHeap);
4443
4444 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4445 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4446 ID3D12VideoDevice2 * This,
4447 UINT NodeMask,
4448 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4449 UINT NumInputStreamDescs,
4450 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4451 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4452 _In_ REFIID riid,
4453 _COM_Outptr_ void **ppVideoProcessor);
4454
4455 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4456 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4457 ID3D12VideoDevice2 * This,
4458 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4459 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4460 SIZE_T CreationParametersDataSizeInBytes,
4461 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4462 _In_ REFIID riid,
4463 _COM_Outptr_ void **ppVideoExtensionCommand);
4464
4465 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4466 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4467 ID3D12VideoDevice2 * This,
4468 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4469 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4470 SIZE_T ExecutionParametersSizeInBytes,
4471 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4472 SIZE_T OutputDataSizeInBytes);
4473
4474 END_INTERFACE
4475 } ID3D12VideoDevice2Vtbl;
4476
4477 interface ID3D12VideoDevice2
4478 {
4479 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4480 };
4481
4482
4483
4484#ifdef COBJMACROS
4485
4486
4487#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4488 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4489
4490#define ID3D12VideoDevice2_AddRef(This) \
4491 ( (This)->lpVtbl -> AddRef(This) )
4492
4493#define ID3D12VideoDevice2_Release(This) \
4494 ( (This)->lpVtbl -> Release(This) )
4495
4496
4497#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4498 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4499
4500#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4501 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4502
4503#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4504 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4505
4506#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4507 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4508
4509
4510#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4511 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4512
4513#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4514 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4515
4516
4517#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4518 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4519
4520#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4521 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4522
4523#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4524 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4525
4526#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4527 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4528
4529#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4530 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4531
4532#endif /* COBJMACROS */
4533
4534
4535#endif /* C style interface */
4536
4537
4538
4539
4540#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4541
4542
4543#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4544#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4545
4546/* interface ID3D12VideoDecodeCommandList2 */
4547/* [unique][local][object][uuid] */
4548
4549
4550EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4551
4552#if defined(__cplusplus) && !defined(CINTERFACE)
4553
4554 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4555 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4556 {
4557 public:
4558 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4559 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4560
4561 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4562 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4563 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4564 SIZE_T InitializationParametersSizeInBytes) = 0;
4565
4566 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4567 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4568 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4569 SIZE_T ExecutionParametersSizeInBytes) = 0;
4570
4571 };
4572
4573
4574#else /* C style interface */
4575
4576 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4577 {
4578 BEGIN_INTERFACE
4579
4580 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4581 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4582 ID3D12VideoDecodeCommandList2 * This,
4583 REFIID riid,
4584 _COM_Outptr_ void **ppvObject);
4585
4586 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4587 ULONG ( STDMETHODCALLTYPE *AddRef )(
4588 ID3D12VideoDecodeCommandList2 * This);
4589
4590 DECLSPEC_XFGVIRT(IUnknown, Release)
4591 ULONG ( STDMETHODCALLTYPE *Release )(
4592 ID3D12VideoDecodeCommandList2 * This);
4593
4594 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4595 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4596 ID3D12VideoDecodeCommandList2 * This,
4597 _In_ REFGUID guid,
4598 _Inout_ UINT *pDataSize,
4599 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4600
4601 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4602 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4603 ID3D12VideoDecodeCommandList2 * This,
4604 _In_ REFGUID guid,
4605 _In_ UINT DataSize,
4606 _In_reads_bytes_opt_( DataSize ) const void *pData);
4607
4608 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4609 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4610 ID3D12VideoDecodeCommandList2 * This,
4611 _In_ REFGUID guid,
4612 _In_opt_ const IUnknown *pData);
4613
4614 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4615 HRESULT ( STDMETHODCALLTYPE *SetName )(
4616 ID3D12VideoDecodeCommandList2 * This,
4617 _In_z_ LPCWSTR Name);
4618
4619 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4620 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4621 ID3D12VideoDecodeCommandList2 * This,
4622 REFIID riid,
4623 _COM_Outptr_opt_ void **ppvDevice);
4624
4625 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4626 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4627 ID3D12VideoDecodeCommandList2 * This);
4628
4629 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4630 HRESULT ( STDMETHODCALLTYPE *Close )(
4631 ID3D12VideoDecodeCommandList2 * This);
4632
4633 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4634 HRESULT ( STDMETHODCALLTYPE *Reset )(
4635 ID3D12VideoDecodeCommandList2 * This,
4636 _In_ ID3D12CommandAllocator *pAllocator);
4637
4638 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4639 void ( STDMETHODCALLTYPE *ClearState )(
4640 ID3D12VideoDecodeCommandList2 * This);
4641
4642 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4643 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4644 ID3D12VideoDecodeCommandList2 * This,
4645 _In_ UINT NumBarriers,
4646 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4647
4648 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4649 void ( STDMETHODCALLTYPE *DiscardResource )(
4650 ID3D12VideoDecodeCommandList2 * This,
4651 _In_ ID3D12Resource *pResource,
4652 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4653
4654 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4655 void ( STDMETHODCALLTYPE *BeginQuery )(
4656 ID3D12VideoDecodeCommandList2 * This,
4657 _In_ ID3D12QueryHeap *pQueryHeap,
4658 _In_ D3D12_QUERY_TYPE Type,
4659 _In_ UINT Index);
4660
4661 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4662 void ( STDMETHODCALLTYPE *EndQuery )(
4663 ID3D12VideoDecodeCommandList2 * This,
4664 _In_ ID3D12QueryHeap *pQueryHeap,
4665 _In_ D3D12_QUERY_TYPE Type,
4666 _In_ UINT Index);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4669 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4670 ID3D12VideoDecodeCommandList2 * This,
4671 _In_ ID3D12QueryHeap *pQueryHeap,
4672 _In_ D3D12_QUERY_TYPE Type,
4673 _In_ UINT StartIndex,
4674 _In_ UINT NumQueries,
4675 _In_ ID3D12Resource *pDestinationBuffer,
4676 _In_ UINT64 AlignedDestinationBufferOffset);
4677
4678 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4679 void ( STDMETHODCALLTYPE *SetPredication )(
4680 ID3D12VideoDecodeCommandList2 * This,
4681 _In_opt_ ID3D12Resource *pBuffer,
4682 _In_ UINT64 AlignedBufferOffset,
4683 _In_ D3D12_PREDICATION_OP Operation);
4684
4685 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4686 void ( STDMETHODCALLTYPE *SetMarker )(
4687 ID3D12VideoDecodeCommandList2 * This,
4688 UINT Metadata,
4689 _In_reads_bytes_opt_(Size) const void *pData,
4690 UINT Size);
4691
4692 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4693 void ( STDMETHODCALLTYPE *BeginEvent )(
4694 ID3D12VideoDecodeCommandList2 * This,
4695 UINT Metadata,
4696 _In_reads_bytes_opt_(Size) const void *pData,
4697 UINT Size);
4698
4699 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4700 void ( STDMETHODCALLTYPE *EndEvent )(
4701 ID3D12VideoDecodeCommandList2 * This);
4702
4703 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4704 void ( STDMETHODCALLTYPE *DecodeFrame )(
4705 ID3D12VideoDecodeCommandList2 * This,
4706 _In_ ID3D12VideoDecoder *pDecoder,
4707 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4708 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4709
4710 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4711 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4712 ID3D12VideoDecodeCommandList2 * This,
4713 UINT Count,
4714 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4715 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4716
4717 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4718 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4719 ID3D12VideoDecodeCommandList2 * This,
4720 _In_ ID3D12VideoDecoder *pDecoder,
4721 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4722 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4723
4724 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4725 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4726 ID3D12VideoDecodeCommandList2 * This,
4727 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4728
4729 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4730 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4731 ID3D12VideoDecodeCommandList2 * This,
4732 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4733 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4734 SIZE_T InitializationParametersSizeInBytes);
4735
4736 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4737 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4738 ID3D12VideoDecodeCommandList2 * This,
4739 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4740 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4741 SIZE_T ExecutionParametersSizeInBytes);
4742
4743 END_INTERFACE
4744 } ID3D12VideoDecodeCommandList2Vtbl;
4745
4746 interface ID3D12VideoDecodeCommandList2
4747 {
4748 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4749 };
4750
4751
4752
4753#ifdef COBJMACROS
4754
4755
4756#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4757 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4758
4759#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4760 ( (This)->lpVtbl -> AddRef(This) )
4761
4762#define ID3D12VideoDecodeCommandList2_Release(This) \
4763 ( (This)->lpVtbl -> Release(This) )
4764
4765
4766#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4767 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4768
4769#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
4770 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4771
4772#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
4773 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4774
4775#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
4776 ( (This)->lpVtbl -> SetName(This,Name) )
4777
4778
4779#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
4780 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4781
4782
4783#define ID3D12VideoDecodeCommandList2_GetType(This) \
4784 ( (This)->lpVtbl -> GetType(This) )
4785
4786
4787#define ID3D12VideoDecodeCommandList2_Close(This) \
4788 ( (This)->lpVtbl -> Close(This) )
4789
4790#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
4791 ( (This)->lpVtbl -> Reset(This,pAllocator) )
4792
4793#define ID3D12VideoDecodeCommandList2_ClearState(This) \
4794 ( (This)->lpVtbl -> ClearState(This) )
4795
4796#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
4797 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
4798
4799#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
4800 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
4801
4802#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
4803 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
4804
4805#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
4806 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
4807
4808#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
4809 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
4810
4811#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
4812 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
4813
4814#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
4815 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
4816
4817#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
4818 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
4819
4820#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
4821 ( (This)->lpVtbl -> EndEvent(This) )
4822
4823#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
4824 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
4825
4826#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
4827 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
4828
4829
4830#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
4831 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
4832
4833
4834#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
4835 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
4836
4837#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
4838 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
4839
4840#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
4841 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
4842
4843#endif /* COBJMACROS */
4844
4845
4846#endif /* C style interface */
4847
4848
4849
4850
4851#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
4852
4853
4854#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
4855#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
4856
4857/* interface ID3D12VideoProcessCommandList2 */
4858/* [unique][local][object][uuid] */
4859
4860
4861EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
4862
4863#if defined(__cplusplus) && !defined(CINTERFACE)
4864
4865 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
4866 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
4867 {
4868 public:
4869 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4870 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4871
4872 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4873 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4874 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4875 SIZE_T InitializationParametersSizeInBytes) = 0;
4876
4877 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4878 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4879 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4880 SIZE_T ExecutionParametersSizeInBytes) = 0;
4881
4882 };
4883
4884
4885#else /* C style interface */
4886
4887 typedef struct ID3D12VideoProcessCommandList2Vtbl
4888 {
4889 BEGIN_INTERFACE
4890
4891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4893 ID3D12VideoProcessCommandList2 * This,
4894 REFIID riid,
4895 _COM_Outptr_ void **ppvObject);
4896
4897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4898 ULONG ( STDMETHODCALLTYPE *AddRef )(
4899 ID3D12VideoProcessCommandList2 * This);
4900
4901 DECLSPEC_XFGVIRT(IUnknown, Release)
4902 ULONG ( STDMETHODCALLTYPE *Release )(
4903 ID3D12VideoProcessCommandList2 * This);
4904
4905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4907 ID3D12VideoProcessCommandList2 * This,
4908 _In_ REFGUID guid,
4909 _Inout_ UINT *pDataSize,
4910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4911
4912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4914 ID3D12VideoProcessCommandList2 * This,
4915 _In_ REFGUID guid,
4916 _In_ UINT DataSize,
4917 _In_reads_bytes_opt_( DataSize ) const void *pData);
4918
4919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4921 ID3D12VideoProcessCommandList2 * This,
4922 _In_ REFGUID guid,
4923 _In_opt_ const IUnknown *pData);
4924
4925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4926 HRESULT ( STDMETHODCALLTYPE *SetName )(
4927 ID3D12VideoProcessCommandList2 * This,
4928 _In_z_ LPCWSTR Name);
4929
4930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4932 ID3D12VideoProcessCommandList2 * This,
4933 REFIID riid,
4934 _COM_Outptr_opt_ void **ppvDevice);
4935
4936 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4937 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4938 ID3D12VideoProcessCommandList2 * This);
4939
4940 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
4941 HRESULT ( STDMETHODCALLTYPE *Close )(
4942 ID3D12VideoProcessCommandList2 * This);
4943
4944 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
4945 HRESULT ( STDMETHODCALLTYPE *Reset )(
4946 ID3D12VideoProcessCommandList2 * This,
4947 _In_ ID3D12CommandAllocator *pAllocator);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
4950 void ( STDMETHODCALLTYPE *ClearState )(
4951 ID3D12VideoProcessCommandList2 * This);
4952
4953 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
4954 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4955 ID3D12VideoProcessCommandList2 * This,
4956 _In_ UINT NumBarriers,
4957 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4958
4959 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
4960 void ( STDMETHODCALLTYPE *DiscardResource )(
4961 ID3D12VideoProcessCommandList2 * This,
4962 _In_ ID3D12Resource *pResource,
4963 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4964
4965 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
4966 void ( STDMETHODCALLTYPE *BeginQuery )(
4967 ID3D12VideoProcessCommandList2 * This,
4968 _In_ ID3D12QueryHeap *pQueryHeap,
4969 _In_ D3D12_QUERY_TYPE Type,
4970 _In_ UINT Index);
4971
4972 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
4973 void ( STDMETHODCALLTYPE *EndQuery )(
4974 ID3D12VideoProcessCommandList2 * This,
4975 _In_ ID3D12QueryHeap *pQueryHeap,
4976 _In_ D3D12_QUERY_TYPE Type,
4977 _In_ UINT Index);
4978
4979 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
4980 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4981 ID3D12VideoProcessCommandList2 * This,
4982 _In_ ID3D12QueryHeap *pQueryHeap,
4983 _In_ D3D12_QUERY_TYPE Type,
4984 _In_ UINT StartIndex,
4985 _In_ UINT NumQueries,
4986 _In_ ID3D12Resource *pDestinationBuffer,
4987 _In_ UINT64 AlignedDestinationBufferOffset);
4988
4989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
4990 void ( STDMETHODCALLTYPE *SetPredication )(
4991 ID3D12VideoProcessCommandList2 * This,
4992 _In_opt_ ID3D12Resource *pBuffer,
4993 _In_ UINT64 AlignedBufferOffset,
4994 _In_ D3D12_PREDICATION_OP Operation);
4995
4996 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
4997 void ( STDMETHODCALLTYPE *SetMarker )(
4998 ID3D12VideoProcessCommandList2 * This,
4999 UINT Metadata,
5000 _In_reads_bytes_opt_(Size) const void *pData,
5001 UINT Size);
5002
5003 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5004 void ( STDMETHODCALLTYPE *BeginEvent )(
5005 ID3D12VideoProcessCommandList2 * This,
5006 UINT Metadata,
5007 _In_reads_bytes_opt_(Size) const void *pData,
5008 UINT Size);
5009
5010 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5011 void ( STDMETHODCALLTYPE *EndEvent )(
5012 ID3D12VideoProcessCommandList2 * This);
5013
5014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5015 void ( STDMETHODCALLTYPE *ProcessFrames )(
5016 ID3D12VideoProcessCommandList2 * This,
5017 _In_ ID3D12VideoProcessor *pVideoProcessor,
5018 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5019 UINT NumInputStreams,
5020 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5021
5022 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5023 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5024 ID3D12VideoProcessCommandList2 * This,
5025 UINT Count,
5026 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5027 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5028
5029 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5030 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5031 ID3D12VideoProcessCommandList2 * This,
5032 _In_ ID3D12VideoProcessor *pVideoProcessor,
5033 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5034 UINT NumInputStreams,
5035 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5036
5037 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5038 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5039 ID3D12VideoProcessCommandList2 * This,
5040 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5041
5042 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5043 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5044 ID3D12VideoProcessCommandList2 * This,
5045 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5046 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5047 SIZE_T InitializationParametersSizeInBytes);
5048
5049 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5050 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5051 ID3D12VideoProcessCommandList2 * This,
5052 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5053 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5054 SIZE_T ExecutionParametersSizeInBytes);
5055
5056 END_INTERFACE
5057 } ID3D12VideoProcessCommandList2Vtbl;
5058
5059 interface ID3D12VideoProcessCommandList2
5060 {
5061 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5062 };
5063
5064
5065
5066#ifdef COBJMACROS
5067
5068
5069#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5070 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5071
5072#define ID3D12VideoProcessCommandList2_AddRef(This) \
5073 ( (This)->lpVtbl -> AddRef(This) )
5074
5075#define ID3D12VideoProcessCommandList2_Release(This) \
5076 ( (This)->lpVtbl -> Release(This) )
5077
5078
5079#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5080 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5081
5082#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5083 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5084
5085#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5086 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5087
5088#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5089 ( (This)->lpVtbl -> SetName(This,Name) )
5090
5091
5092#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5093 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5094
5095
5096#define ID3D12VideoProcessCommandList2_GetType(This) \
5097 ( (This)->lpVtbl -> GetType(This) )
5098
5099
5100#define ID3D12VideoProcessCommandList2_Close(This) \
5101 ( (This)->lpVtbl -> Close(This) )
5102
5103#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5104 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5105
5106#define ID3D12VideoProcessCommandList2_ClearState(This) \
5107 ( (This)->lpVtbl -> ClearState(This) )
5108
5109#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5110 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5111
5112#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5113 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5114
5115#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5116 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5117
5118#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5119 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5120
5121#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5122 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5123
5124#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5125 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5126
5127#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5128 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5129
5130#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5131 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5132
5133#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5134 ( (This)->lpVtbl -> EndEvent(This) )
5135
5136#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5137 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5138
5139#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5140 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5141
5142
5143#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5144 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5145
5146
5147#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5148 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5149
5150#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5151 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5152
5153#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5154 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5155
5156#endif /* COBJMACROS */
5157
5158
5159#endif /* C style interface */
5160
5161
5162
5163
5164#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5165
5166
5167#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
5168#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
5169
5170/* interface ID3D12VideoEncodeCommandList1 */
5171/* [unique][local][object][uuid] */
5172
5173
5174EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
5175
5176#if defined(__cplusplus) && !defined(CINTERFACE)
5177
5178 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
5179 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
5180 {
5181 public:
5182 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5183 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5184 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5185 SIZE_T InitializationParametersSizeInBytes) = 0;
5186
5187 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5188 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5189 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5190 SIZE_T ExecutionParametersSizeInBytes) = 0;
5191
5192 };
5193
5194
5195#else /* C style interface */
5196
5197 typedef struct ID3D12VideoEncodeCommandList1Vtbl
5198 {
5199 BEGIN_INTERFACE
5200
5201 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5202 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5203 ID3D12VideoEncodeCommandList1 * This,
5204 REFIID riid,
5205 _COM_Outptr_ void **ppvObject);
5206
5207 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5208 ULONG ( STDMETHODCALLTYPE *AddRef )(
5209 ID3D12VideoEncodeCommandList1 * This);
5210
5211 DECLSPEC_XFGVIRT(IUnknown, Release)
5212 ULONG ( STDMETHODCALLTYPE *Release )(
5213 ID3D12VideoEncodeCommandList1 * This);
5214
5215 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5216 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5217 ID3D12VideoEncodeCommandList1 * This,
5218 _In_ REFGUID guid,
5219 _Inout_ UINT *pDataSize,
5220 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5221
5222 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5223 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5224 ID3D12VideoEncodeCommandList1 * This,
5225 _In_ REFGUID guid,
5226 _In_ UINT DataSize,
5227 _In_reads_bytes_opt_( DataSize ) const void *pData);
5228
5229 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5230 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5231 ID3D12VideoEncodeCommandList1 * This,
5232 _In_ REFGUID guid,
5233 _In_opt_ const IUnknown *pData);
5234
5235 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5236 HRESULT ( STDMETHODCALLTYPE *SetName )(
5237 ID3D12VideoEncodeCommandList1 * This,
5238 _In_z_ LPCWSTR Name);
5239
5240 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5241 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5242 ID3D12VideoEncodeCommandList1 * This,
5243 REFIID riid,
5244 _COM_Outptr_opt_ void **ppvDevice);
5245
5246 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5247 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5248 ID3D12VideoEncodeCommandList1 * This);
5249
5250 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
5251 HRESULT ( STDMETHODCALLTYPE *Close )(
5252 ID3D12VideoEncodeCommandList1 * This);
5253
5254 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
5255 HRESULT ( STDMETHODCALLTYPE *Reset )(
5256 ID3D12VideoEncodeCommandList1 * This,
5257 _In_ ID3D12CommandAllocator *pAllocator);
5258
5259 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
5260 void ( STDMETHODCALLTYPE *ClearState )(
5261 ID3D12VideoEncodeCommandList1 * This);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
5264 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5265 ID3D12VideoEncodeCommandList1 * This,
5266 _In_ UINT NumBarriers,
5267 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5268
5269 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
5270 void ( STDMETHODCALLTYPE *DiscardResource )(
5271 ID3D12VideoEncodeCommandList1 * This,
5272 _In_ ID3D12Resource *pResource,
5273 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5274
5275 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
5276 void ( STDMETHODCALLTYPE *BeginQuery )(
5277 ID3D12VideoEncodeCommandList1 * This,
5278 _In_ ID3D12QueryHeap *pQueryHeap,
5279 _In_ D3D12_QUERY_TYPE Type,
5280 _In_ UINT Index);
5281
5282 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
5283 void ( STDMETHODCALLTYPE *EndQuery )(
5284 ID3D12VideoEncodeCommandList1 * This,
5285 _In_ ID3D12QueryHeap *pQueryHeap,
5286 _In_ D3D12_QUERY_TYPE Type,
5287 _In_ UINT Index);
5288
5289 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
5290 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5291 ID3D12VideoEncodeCommandList1 * This,
5292 _In_ ID3D12QueryHeap *pQueryHeap,
5293 _In_ D3D12_QUERY_TYPE Type,
5294 _In_ UINT StartIndex,
5295 _In_ UINT NumQueries,
5296 _In_ ID3D12Resource *pDestinationBuffer,
5297 _In_ UINT64 AlignedDestinationBufferOffset);
5298
5299 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
5300 void ( STDMETHODCALLTYPE *SetPredication )(
5301 ID3D12VideoEncodeCommandList1 * This,
5302 _In_opt_ ID3D12Resource *pBuffer,
5303 _In_ UINT64 AlignedBufferOffset,
5304 _In_ D3D12_PREDICATION_OP Operation);
5305
5306 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
5307 void ( STDMETHODCALLTYPE *SetMarker )(
5308 ID3D12VideoEncodeCommandList1 * This,
5309 UINT Metadata,
5310 _In_reads_bytes_opt_(Size) const void *pData,
5311 UINT Size);
5312
5313 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
5314 void ( STDMETHODCALLTYPE *BeginEvent )(
5315 ID3D12VideoEncodeCommandList1 * This,
5316 UINT Metadata,
5317 _In_reads_bytes_opt_(Size) const void *pData,
5318 UINT Size);
5319
5320 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
5321 void ( STDMETHODCALLTYPE *EndEvent )(
5322 ID3D12VideoEncodeCommandList1 * This);
5323
5324 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
5325 void ( STDMETHODCALLTYPE *EstimateMotion )(
5326 ID3D12VideoEncodeCommandList1 * This,
5327 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
5328 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
5329 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
5330
5331 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
5332 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
5333 ID3D12VideoEncodeCommandList1 * This,
5334 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
5335 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
5336
5337 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
5338 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5339 ID3D12VideoEncodeCommandList1 * This,
5340 UINT Count,
5341 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5342 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5343
5344 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
5345 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5346 ID3D12VideoEncodeCommandList1 * This,
5347 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5348
5349 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
5350 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5351 ID3D12VideoEncodeCommandList1 * This,
5352 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5353 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5354 SIZE_T InitializationParametersSizeInBytes);
5355
5356 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
5357 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5358 ID3D12VideoEncodeCommandList1 * This,
5359 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5360 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5361 SIZE_T ExecutionParametersSizeInBytes);
5362
5363 END_INTERFACE
5364 } ID3D12VideoEncodeCommandList1Vtbl;
5365
5366 interface ID3D12VideoEncodeCommandList1
5367 {
5368 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
5369 };
5370
5371
5372
5373#ifdef COBJMACROS
5374
5375
5376#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
5377 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5378
5379#define ID3D12VideoEncodeCommandList1_AddRef(This) \
5380 ( (This)->lpVtbl -> AddRef(This) )
5381
5382#define ID3D12VideoEncodeCommandList1_Release(This) \
5383 ( (This)->lpVtbl -> Release(This) )
5384
5385
5386#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
5387 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5388
5389#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
5390 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5391
5392#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
5393 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5394
5395#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
5396 ( (This)->lpVtbl -> SetName(This,Name) )
5397
5398
5399#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
5400 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5401
5402
5403#define ID3D12VideoEncodeCommandList1_GetType(This) \
5404 ( (This)->lpVtbl -> GetType(This) )
5405
5406
5407#define ID3D12VideoEncodeCommandList1_Close(This) \
5408 ( (This)->lpVtbl -> Close(This) )
5409
5410#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
5411 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5412
5413#define ID3D12VideoEncodeCommandList1_ClearState(This) \
5414 ( (This)->lpVtbl -> ClearState(This) )
5415
5416#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
5417 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5418
5419#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
5420 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5421
5422#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
5423 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5424
5425#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
5426 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5427
5428#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5429 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5430
5431#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5432 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5433
5434#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
5435 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5436
5437#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
5438 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5439
5440#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
5441 ( (This)->lpVtbl -> EndEvent(This) )
5442
5443#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
5444 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
5445
5446#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
5447 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
5448
5449#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
5450 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5451
5452#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
5453 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5454
5455
5456#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5457 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5458
5459#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5460 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5461
5462#endif /* COBJMACROS */
5463
5464
5465#endif /* C style interface */
5466
5467
5468
5469
5470#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
5471
5472
5473/* interface __MIDL_itf_d3d12video_0000_0020 */
5474/* [local] */
5475
5476DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
5477DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
5478DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5479DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
5480DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
5481DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
5482DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5483DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
5484DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
5485DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
5486DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
5487DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
5488DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
5489DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
5490DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
5491DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
5492DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
5493DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
5494DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
5495DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
5496#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
5497#pragma endregion
5498DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
5499DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
5500DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
5501DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
5502DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
5503DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
5504DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
5505DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
5506DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
5507DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
5508DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
5509DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
5510DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
5511DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
5512DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
5513DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
5514DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
5515DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
5516DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
5517DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
5518
5519
5520extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0020_v0_0_c_ifspec;
5521extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0020_v0_0_s_ifspec;
5522
5523/* Additional Prototypes for ALL interfaces */
5524
5525/* end of Additional Prototypes */
5526
5527#ifdef __cplusplus
5528}
5529#endif
5530
5531#endif
5532
5533
diff --git a/contrib/DirectX-Headers/include/directx/d3d12video.idl b/contrib/DirectX-Headers/include/directx/d3d12video.idl
new file mode 100644
index 0000000..a4d8945
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3d12video.idl
@@ -0,0 +1,1448 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18typedef enum D3D12_VIDEO_FIELD_TYPE
19{
20 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
21 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
22 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
23} D3D12_VIDEO_FIELD_TYPE;
24
25typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
26{
27 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
28 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
29 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
30 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
31 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
32} D3D12_VIDEO_FRAME_STEREO_FORMAT;
33
34typedef struct D3D12_VIDEO_FORMAT
35{
36 DXGI_FORMAT Format;
37 DXGI_COLOR_SPACE_TYPE ColorSpace;
38} D3D12_VIDEO_FORMAT;
39
40typedef struct D3D12_VIDEO_SAMPLE
41{
42 UINT Width;
43 UINT Height;
44 D3D12_VIDEO_FORMAT Format;
45} D3D12_VIDEO_SAMPLE;
46
47typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
48{
49 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
50 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
51} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
52
53typedef enum D3D12_FEATURE_VIDEO
54{
55 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
56 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
57 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
58 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
59 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
60 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
61 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
62 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
63 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
64 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
65 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
66 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
67 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
68 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
69 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
70 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
71 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
72 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
73 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
74 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
75 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
76 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
77 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
78 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
79 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
80 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
81 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
82
83} D3D12_FEATURE_VIDEO;
84
85typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
86{
87 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
88} D3D12_BITSTREAM_ENCRYPTION_TYPE;
89
90typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
91{
92 GUID DecodeProfile;
93 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
94 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
95} D3D12_VIDEO_DECODE_CONFIGURATION;
96
97typedef struct D3D12_VIDEO_DECODER_DESC
98{
99 UINT NodeMask;
100 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
101} D3D12_VIDEO_DECODER_DESC;
102
103typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
104{
105 UINT NodeMask;
106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
107 UINT DecodeWidth;
108 UINT DecodeHeight;
109 DXGI_FORMAT Format;
110 DXGI_RATIONAL FrameRate;
111 UINT BitRate;
112 UINT MaxDecodePictureBufferCount;
113} D3D12_VIDEO_DECODER_HEAP_DESC;
114
115typedef struct D3D12_VIDEO_SIZE_RANGE
116{
117 UINT MaxWidth;
118 UINT MaxHeight;
119 UINT MinWidth;
120 UINT MinHeight;
121} D3D12_VIDEO_SIZE_RANGE;
122
123typedef enum D3D12_VIDEO_PROCESS_FILTER
124{
125 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
126 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
127 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
128 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
129 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
130 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
131 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
132 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
133} D3D12_VIDEO_PROCESS_FILTER;
134
135typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
136{
137 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
138 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
139 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
140 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
141 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
142 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
143 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
144 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
145 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
146
147} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
148cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS );")
149
150typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
151{
152 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
153 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
154 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
155
156} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
157cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );")
158
159typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
160{
161 BOOL Enable;
162 FLOAT Alpha;
163} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
164
165typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
166{
167 BOOL Enable;
168 FLOAT Lower;
169 FLOAT Upper;
170} D3D12_VIDEO_PROCESS_LUMA_KEY;
171
172typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
173{
174 DXGI_FORMAT Format;
175 DXGI_COLOR_SPACE_TYPE ColorSpace;
176 DXGI_RATIONAL SourceAspectRatio;
177 DXGI_RATIONAL DestinationAspectRatio;
178 DXGI_RATIONAL FrameRate;
179 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
180 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
181 BOOL EnableOrientation;
182 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
183 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
184 D3D12_VIDEO_FIELD_TYPE FieldType;
185 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
186 BOOL EnableAlphaBlending;
187 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
188 UINT NumPastFrames;
189 UINT NumFutureFrames;
190 BOOL EnableAutoProcessing;
191} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
192
193typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
194{
195 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
196 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
197 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
198 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
199} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
200
201typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
202{
203 DXGI_FORMAT Format;
204 DXGI_COLOR_SPACE_TYPE ColorSpace;
205 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
206 UINT AlphaFillModeSourceStreamIndex;
207 FLOAT BackgroundColor[4];
208 DXGI_RATIONAL FrameRate;
209 BOOL EnableStereo;
210} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
211
212[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
213interface ID3D12VideoDecoderHeap
214 : ID3D12Pageable
215{
216 D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
217}
218
219[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
220interface ID3D12VideoDevice
221 : IUnknown
222{
223 HRESULT CheckFeatureSupport(
224 D3D12_FEATURE_VIDEO FeatureVideo,
225 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
226 UINT FeatureSupportDataSize
227 );
228
229 HRESULT CreateVideoDecoder(
230 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
231 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder,
232 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
233 );
234
235 HRESULT CreateVideoDecoderHeap(
236 [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
237 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap,
238 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
239 );
240
241 HRESULT CreateVideoProcessor(
242 UINT NodeMask,
243 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
244 UINT NumInputStreamDescs,
245 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
246 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor,
247 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
248 );
249}
250
251[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
252interface ID3D12VideoDecoder
253 : ID3D12Pageable
254{
255 D3D12_VIDEO_DECODER_DESC GetDesc();
256}
257
258typedef enum D3D12_VIDEO_DECODE_TIER
259{
260 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
261 D3D12_VIDEO_DECODE_TIER_1 = 1,
262 D3D12_VIDEO_DECODE_TIER_2 = 2,
263 D3D12_VIDEO_DECODE_TIER_3 = 3,
264} D3D12_VIDEO_DECODE_TIER;
265
266typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
267{
268 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
269 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
270
271} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
272cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS );")
273
274typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
275{
276 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
277 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
278 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
279 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
280 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8,
281
282} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
283cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS );")
284
285typedef enum D3D12_VIDEO_DECODE_STATUS
286{
287 D3D12_VIDEO_DECODE_STATUS_OK = 0,
288 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
289 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
290 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
291 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
292} D3D12_VIDEO_DECODE_STATUS;
293
294typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
295{
296 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
297 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
298 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
299 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
300} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
301
302typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
303{
304 UINT NodeIndex; // input
305 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
306 UINT Width; // input
307 UINT Height; // input
308 DXGI_FORMAT DecodeFormat; // input
309 DXGI_RATIONAL FrameRate; // input
310 UINT BitRate; // input
311 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output
312 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
313 D3D12_VIDEO_DECODE_TIER DecodeTier; // output
314} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
315
316typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
317{
318 UINT NodeIndex; // input
319 UINT ProfileCount; // output
320} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
321
322typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
323{
324 UINT NodeIndex; // input
325 UINT ProfileCount; // input
326 [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
327} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
328
329typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
330{
331 UINT NodeIndex; // input
332 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
333 UINT FormatCount; // output
334} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
335
336typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
337{
338 UINT NodeIndex; // input
339 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
340 UINT FormatCount; // input
341 [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats; // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
342} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
343
344typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
345{
346 BOOL IOCoherent;
347} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
348
349typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
350{
351 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
352 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
353 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
354
355 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
356 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
357 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
358
359 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
360} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
361
362typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
363{
364 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
365
366 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
367 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U),
368 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
369
370 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
371 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G),
372 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
373
374 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
375} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
376cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS );")
377
378typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
379{
380 UINT NodeIndex; // in
381 GUID DecodeProfile; // in
382 UINT Width; // in
383 UINT Height; // in
384 DXGI_FORMAT DecodeFormat; // in
385 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out
386 UINT BinCount; // out
387 UINT CounterBitDepth; // out
388} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
389
390typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
391{
392 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
393 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
394
395} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
396cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS );")
397
398typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
399{
400 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
401 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
402 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
403
404} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
405cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS );")
406
407typedef struct D3D12_VIDEO_SCALE_SUPPORT
408{
409 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
410 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
411} D3D12_VIDEO_SCALE_SUPPORT;
412
413typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
414{
415 UINT NodeIndex; // input
416 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
417 D3D12_VIDEO_SAMPLE DecodeSample; // input
418 D3D12_VIDEO_FORMAT OutputFormat; // input
419 DXGI_RATIONAL FrameRate; // input
420 UINT BitRate; // input
421 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output
422 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
423} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
424
425typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
426{
427 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
428 UINT64 MemoryPoolL0Size; // output
429 UINT64 MemoryPoolL1Size; // output
430} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
431
432typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
433{
434 UINT NodeMask;
435 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
436 UINT NumInputStreamDescs; // input
437 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
438 UINT64 MemoryPoolL0Size; // output
439 UINT64 MemoryPoolL1Size; // output
440} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
441
442typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
443{
444 UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS
445 UINT64 NumMacroblocksAffected;
446 DXGI_RATIONAL FrameRate;
447 UINT BitRate;
448} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
449
450typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
451{
452 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
453 UINT Size;
454 [annotation("_Field_size_bytes_full_(Size)")] void *pData;
455} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
456
457typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
458{
459 UINT NumTexture2Ds;
460 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
461 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
462 [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
463} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
464
465typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
466{
467 ID3D12Resource* pBuffer;
468 UINT64 Offset;
469 UINT64 Size;
470} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
471
472typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
473{
474 BOOL Enable;
475 ID3D12Resource* pReferenceTexture2D;
476 UINT ReferenceSubresource;
477 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
478 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
479} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
480
481typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
482{
483 UINT NumFrameArguments;
484 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
485 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
486 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
487 ID3D12VideoDecoderHeap *pHeap;
488} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
489
490typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
491{
492 ID3D12Resource* pOutputTexture2D;
493 UINT OutputSubresource;
494 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
495} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
496
497[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
498interface ID3D12VideoProcessor
499 : ID3D12Pageable
500{
501 UINT GetNodeMask();
502 UINT GetNumInputStreamDescs();
503 HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
504 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
505}
506
507typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
508{
509 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
510 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
511 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
512 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
513 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
514 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
515 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
516 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
517
518} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
519cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS );")
520
521typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
522{
523 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
524 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
525 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
526 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
527 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
528 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
529 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
530 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
531 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
532 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
533
534} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
535cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS );")
536
537typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
538{
539 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
540 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
541 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
542 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
543 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
544 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
545 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
546 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
547} D3D12_VIDEO_PROCESS_ORIENTATION;
548
549typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
550{
551 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
552 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
553 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
554
555} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
556cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS );")
557
558typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
559{
560 INT Minimum;
561 INT Maximum;
562 INT Default;
563 FLOAT Multiplier;
564} D3D12_VIDEO_PROCESS_FILTER_RANGE;
565
566typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
567{
568 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
569 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
570
571} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
572cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS );")
573
574typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
575{
576 UINT NodeIndex; // input
577 D3D12_VIDEO_SAMPLE InputSample; // input
578 D3D12_VIDEO_FIELD_TYPE InputFieldType; // input
579 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input
580 DXGI_RATIONAL InputFrameRate; // input
581 D3D12_VIDEO_FORMAT OutputFormat; // input
582 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input
583 DXGI_RATIONAL OutputFrameRate; // input
584 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output
585 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
586 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output
587 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output
588 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output
589 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output
590 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output
591} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
592
593typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
594{
595 UINT NodeIndex; // input
596 UINT MaxInputStreams; // output
597} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
598
599typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
600{
601 UINT NodeIndex; // input
602 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input
603 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input
604 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input
605 DXGI_RATIONAL InputFrameRate; // input
606 DXGI_RATIONAL OutputFrameRate; // input
607 BOOL EnableAutoProcessing; // input
608 UINT PastFrames; // output
609 UINT FutureFrames; // output
610} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
611
612typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
613{
614 UINT NumPastFrames;
615 ID3D12Resource **ppPastFrames;
616 UINT *pPastSubresources;
617 UINT NumFutureFrames;
618 ID3D12Resource **ppFutureFrames;
619 UINT *pFutureSubresources;
620} D3D12_VIDEO_PROCESS_REFERENCE_SET;
621
622typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
623{
624 D3D12_RECT SourceRectangle;
625 D3D12_RECT DestinationRectangle;
626 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
627} D3D12_VIDEO_PROCESS_TRANSFORM;
628
629typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
630{
631 UINT OutputIndex;
632 UINT InputFrameOrField;
633} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
634
635typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
636{
637 ID3D12Resource *pTexture2D;
638 UINT Subresource;
639 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
640} D3D12_VIDEO_PROCESS_INPUT_STREAM;
641
642typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
643{
644 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
645 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
646 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
647 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
648 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
649 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
650} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
651
652typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
653{
654 ID3D12Resource* pTexture2D;
655 UINT Subresource;
656} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
657
658typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
659{
660 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
661 D3D12_RECT TargetRectangle;
662} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
663
664[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
665interface ID3D12VideoDecodeCommandList
666 : ID3D12CommandList
667{
668 HRESULT Close();
669
670 HRESULT Reset(
671 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
672 );
673
674 void ClearState();
675
676 void ResourceBarrier(
677 [annotation("_In_")] UINT NumBarriers,
678 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
679 );
680
681 void DiscardResource(
682 [annotation("_In_")] ID3D12Resource* pResource,
683 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
684 );
685
686 void BeginQuery(
687 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
688 [annotation("_In_")] D3D12_QUERY_TYPE Type,
689 [annotation("_In_")] UINT Index
690 );
691
692 void EndQuery(
693 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
694 [annotation("_In_")] D3D12_QUERY_TYPE Type,
695 [annotation("_In_")] UINT Index
696 );
697
698 void ResolveQueryData(
699 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
700 [annotation("_In_")] D3D12_QUERY_TYPE Type,
701 [annotation("_In_")] UINT StartIndex,
702 [annotation("_In_")] UINT NumQueries,
703 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
704 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
705 );
706
707 void SetPredication(
708 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
709 [annotation("_In_")] UINT64 AlignedBufferOffset,
710 [annotation("_In_")] D3D12_PREDICATION_OP Operation
711 );
712
713 void SetMarker(
714 UINT Metadata,
715 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
716 UINT Size);
717
718 void BeginEvent(
719 UINT Metadata,
720 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
721 UINT Size);
722
723 void EndEvent();
724
725 void DecodeFrame(
726 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
727 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
728 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
729 );
730
731 void WriteBufferImmediate(
732 UINT Count,
733 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
734 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
735 );
736}
737
738[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
739interface ID3D12VideoProcessCommandList
740 : ID3D12CommandList
741{
742 HRESULT Close();
743
744 HRESULT Reset(
745 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
746 );
747
748 void ClearState();
749
750 void ResourceBarrier(
751 [annotation("_In_")] UINT NumBarriers,
752 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
753 );
754
755 void DiscardResource(
756 [annotation("_In_")] ID3D12Resource* pResource,
757 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
758 );
759
760 void BeginQuery(
761 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
762 [annotation("_In_")] D3D12_QUERY_TYPE Type,
763 [annotation("_In_")] UINT Index
764 );
765
766 void EndQuery(
767 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
768 [annotation("_In_")] D3D12_QUERY_TYPE Type,
769 [annotation("_In_")] UINT Index
770 );
771
772 void ResolveQueryData(
773 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
774 [annotation("_In_")] D3D12_QUERY_TYPE Type,
775 [annotation("_In_")] UINT StartIndex,
776 [annotation("_In_")] UINT NumQueries,
777 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
778 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
779 );
780
781 void SetPredication(
782 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
783 [annotation("_In_")] UINT64 AlignedBufferOffset,
784 [annotation("_In_")] D3D12_PREDICATION_OP Operation
785 );
786
787 void SetMarker(
788 UINT Metadata,
789 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
790 UINT Size);
791
792 void BeginEvent(
793 UINT Metadata,
794 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
795 UINT Size);
796
797 void EndEvent();
798
799 void ProcessFrames(
800 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
801 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
802 UINT NumInputStreams,
803 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
804 );
805
806 void WriteBufferImmediate(
807 UINT Count,
808 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
809 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
810 );
811}
812
813typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
814{
815 UINT64 Offset;
816 ID3D12Resource* pBuffer;
817} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
818
819typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
820{
821 BOOL Enable;
822 ID3D12Resource* pReferenceTexture2D;
823 UINT ReferenceSubresource;
824 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
825 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
826 UINT OutputWidth;
827 UINT OutputHeight;
828} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
829
830typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
831{
832 ID3D12Resource* pOutputTexture2D;
833 UINT OutputSubresource;
834 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
835 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
836} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
837
838[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
839interface ID3D12VideoDecodeCommandList1
840 : ID3D12VideoDecodeCommandList
841{
842 void DecodeFrame1(
843 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
844 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
845 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
846 );
847}
848
849typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
850{
851 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
852 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
853 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
854 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
855 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
856 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
857 D3D12_VIDEO_FIELD_TYPE FieldType;
858} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
859
860[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
861interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
862{
863 void ProcessFrames1(
864 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
865 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
866 UINT NumInputStreams,
867 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
868 );
869}
870
871typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
872{
873 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
874 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1,
875} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
876
877typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
878{
879 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
880 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
881 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
882
883} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
884cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS );" )
885
886typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
887{
888 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0,
889} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
890
891typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
892{
893 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
894 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
895
896} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
897cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS );" )
898
899// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
900typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
901{
902 UINT NodeIndex; // input
903 BOOL VideoDecodeSupport; // output
904 BOOL VideoProcessSupport; // output
905 BOOL VideoEncodeSupport; // output
906} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
907
908// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
909typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
910{
911 UINT NodeIndex; // input
912 DXGI_FORMAT InputFormat; // input
913 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output
914 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output
915 D3D12_VIDEO_SIZE_RANGE SizeRange; // output
916} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
917
918// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
919typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
920{
921 UINT NodeIndex; // input
922 DXGI_FORMAT InputFormat; // input
923 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input
924 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input
925 D3D12_VIDEO_SIZE_RANGE SizeRange; // input
926 BOOL Protected; // input
927 UINT64 MotionVectorHeapMemoryPoolL0Size; // output
928 UINT64 MotionVectorHeapMemoryPoolL1Size; // output
929 UINT64 MotionEstimatorMemoryPoolL0Size; // output
930 UINT64 MotionEstimatorMemoryPoolL1Size; // output
931} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
932
933typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
934{
935 UINT NodeMask;
936 DXGI_FORMAT InputFormat;
937 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
938 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
939 D3D12_VIDEO_SIZE_RANGE SizeRange;
940
941} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
942
943[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
944interface ID3D12VideoMotionEstimator
945 : ID3D12Pageable
946{
947 D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
948
949 HRESULT GetProtectedResourceSession(
950 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
951 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
952}
953
954typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
955{
956 UINT NodeMask;
957 DXGI_FORMAT InputFormat;
958 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
959 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
960 D3D12_VIDEO_SIZE_RANGE SizeRange;
961
962} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
963
964[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
965interface ID3D12VideoMotionVectorHeap
966 : ID3D12Pageable
967{
968 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
969
970 HRESULT GetProtectedResourceSession(
971 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
972 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
973}
974
975[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
976interface ID3D12VideoDevice1
977 : ID3D12VideoDevice
978{
979 HRESULT CreateVideoMotionEstimator(
980 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
981 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
982 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator,
983 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
984 );
985
986 HRESULT CreateVideoMotionVectorHeap(
987 [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
988 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
989 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap,
990 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
991 );
992}
993
994typedef struct D3D12_RESOURCE_COORDINATE
995{
996 // Coordinate values below index pixels.
997 UINT64 X; // Used for buffer, 1D, 2D, 3D
998 UINT Y; // Used for 2D, 3D
999 UINT Z; // Used for 3D
1000 UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
1001} D3D12_RESOURCE_COORDINATE;
1002
1003typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
1004{
1005 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1006} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1007
1008typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
1009{
1010 ID3D12Resource* pInputTexture2D;
1011 UINT InputSubresourceIndex;
1012 ID3D12Resource* pReferenceTexture2D;
1013 UINT ReferenceSubresourceIndex;
1014 ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap;
1015} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1016
1017typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
1018{
1019 ID3D12Resource* pMotionVectorTexture2D;
1020 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1021} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1022
1023typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
1024{
1025 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1026 UINT PixelWidth;
1027 UINT PixelHeight;
1028} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1029
1030[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
1031interface ID3D12VideoEncodeCommandList
1032 : ID3D12CommandList
1033{
1034 HRESULT Close();
1035
1036 HRESULT Reset(
1037 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
1038 );
1039
1040 void ClearState();
1041
1042 void ResourceBarrier(
1043 [annotation("_In_")] UINT NumBarriers,
1044 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
1045 );
1046
1047 void DiscardResource(
1048 [annotation("_In_")] ID3D12Resource* pResource,
1049 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
1050 );
1051
1052 void BeginQuery(
1053 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1054 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1055 [annotation("_In_")] UINT Index
1056 );
1057
1058 void EndQuery(
1059 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1060 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1061 [annotation("_In_")] UINT Index
1062 );
1063
1064 void ResolveQueryData(
1065 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1066 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1067 [annotation("_In_")] UINT StartIndex,
1068 [annotation("_In_")] UINT NumQueries,
1069 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
1070 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
1071 );
1072
1073 void SetPredication(
1074 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
1075 [annotation("_In_")] UINT64 AlignedBufferOffset,
1076 [annotation("_In_")] D3D12_PREDICATION_OP Operation
1077 );
1078
1079 void SetMarker(
1080 UINT Metadata,
1081 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1082 UINT Size);
1083
1084 void BeginEvent(
1085 UINT Metadata,
1086 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1087 UINT Size);
1088
1089 void EndEvent();
1090
1091 void EstimateMotion(
1092 [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
1093 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
1094 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
1095 );
1096
1097 void ResolveMotionVectorHeap(
1098 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
1099 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
1100 );
1101
1102 void WriteBufferImmediate(
1103 UINT Count,
1104 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1105 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
1106 );
1107
1108 void SetProtectedResourceSession(
1109 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1110 );
1111}
1112
1113typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
1114{
1115 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0,
1116 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1,
1117
1118} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
1119cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS );")
1120
1121// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
1122typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
1123{
1124 UINT NodeIndex; // input
1125 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
1126 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1127} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
1128
1129// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
1130typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
1131{
1132 UINT NodeIndex; // input
1133 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1134} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
1135
1136// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1137typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1138{
1139 UINT NodeIndex; // input
1140 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1141} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
1142
1143//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
1144typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
1145{
1146 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
1147 BOOL Protected; // input
1148 UINT64 MemoryPoolL0Size; // output
1149 UINT64 MemoryPoolL1Size; // output
1150} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
1151
1152// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
1153typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
1154{
1155 UINT NodeMask;
1156 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
1157 UINT NumInputStreamDescs; // input
1158 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
1159 BOOL Protected; // input
1160 UINT64 MemoryPoolL0Size; // output
1161 UINT64 MemoryPoolL1Size; // output
1162} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
1163
1164typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
1165{
1166 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
1167 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
1168 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
1169 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
1170 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
1171 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
1172 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
1173} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
1174
1175typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
1176{
1177 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
1178 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
1179 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
1180 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
1181 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
1182 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
1183 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
1184 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
1185 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
1186 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
1187 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
1188} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
1189
1190typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
1191{
1192 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
1193 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
1194 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
1195} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
1196
1197cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS );")
1198
1199typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
1200{
1201 UINT NodeIndex; // in
1202 UINT CommandCount; // out
1203} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
1204
1205typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
1206{
1207 GUID CommandId;
1208 LPCWSTR Name;
1209 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
1210} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
1211
1212typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
1213{
1214 UINT NodeIndex;
1215 UINT CommandCount;
1216 [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
1217} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
1218
1219typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
1220{
1221 GUID CommandId; // in
1222 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1223 UINT ParameterCount; // out
1224 UINT ParameterPacking; // out
1225} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
1226
1227typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
1228{
1229 LPCWSTR Name;
1230 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
1231 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
1232} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
1233
1234typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
1235{
1236 GUID CommandId; // in
1237 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1238 UINT ParameterCount; // in
1239 [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
1240} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
1241
1242typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
1243{
1244 UINT NodeIndex;
1245 GUID CommandId;
1246 [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
1247 SIZE_T InputDataSizeInBytes;
1248 [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
1249 SIZE_T OutputDataSizeInBytes;
1250} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
1251
1252typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
1253{
1254 UINT NodeIndex;
1255 GUID CommandId;
1256 [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
1257 SIZE_T CreationParametersSizeInBytes;
1258 UINT64 MemoryPoolL0Size; // output
1259 UINT64 MemoryPoolL1Size; // output
1260} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
1261
1262typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
1263{
1264 UINT NodeMask;
1265 GUID CommandId;
1266} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
1267
1268[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
1269interface ID3D12VideoDecoder1
1270 : ID3D12VideoDecoder
1271{
1272 HRESULT GetProtectedResourceSession(
1273 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1274 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1275}
1276
1277[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
1278interface ID3D12VideoDecoderHeap1
1279 : ID3D12VideoDecoderHeap
1280{
1281 HRESULT GetProtectedResourceSession(
1282 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1283 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1284}
1285
1286[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
1287interface ID3D12VideoProcessor1
1288 : ID3D12VideoProcessor
1289{
1290 HRESULT GetProtectedResourceSession(
1291 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1292 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1293}
1294
1295[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
1296interface ID3D12VideoExtensionCommand
1297 : ID3D12Pageable
1298{
1299 D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
1300
1301 HRESULT GetProtectedResourceSession(
1302 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1303 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1304}
1305
1306[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
1307interface ID3D12VideoDevice2
1308 : ID3D12VideoDevice1
1309{
1310 HRESULT CreateVideoDecoder1(
1311 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
1312 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1313 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1,
1314 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
1315 );
1316
1317 HRESULT CreateVideoDecoderHeap1(
1318 [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
1319 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1320 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1,
1321 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
1322 );
1323
1324 HRESULT CreateVideoProcessor1(
1325 UINT NodeMask,
1326 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
1327 UINT NumInputStreamDescs,
1328 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
1329 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1330 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1,
1331 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
1332 );
1333
1334 HRESULT CreateVideoExtensionCommand(
1335 [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,
1336 [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters,
1337 SIZE_T CreationParametersDataSizeInBytes,
1338 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
1339 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand,
1340 [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
1341
1342 HRESULT ExecuteExtensionCommand(
1343 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1344 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1345 SIZE_T ExecutionParametersSizeInBytes,
1346 [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
1347 SIZE_T OutputDataSizeInBytes
1348 );
1349}
1350
1351[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
1352interface ID3D12VideoDecodeCommandList2
1353 : ID3D12VideoDecodeCommandList1
1354{
1355 void SetProtectedResourceSession(
1356 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1357 );
1358
1359 void InitializeExtensionCommand(
1360 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1361 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1362 SIZE_T InitializationParametersSizeInBytes);
1363
1364 void ExecuteExtensionCommand(
1365 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1366 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1367 SIZE_T ExecutionParametersSizeInBytes);
1368}
1369
1370[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
1371interface ID3D12VideoProcessCommandList2
1372 : ID3D12VideoProcessCommandList1
1373{
1374
1375 void SetProtectedResourceSession(
1376 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1377 );
1378
1379 void InitializeExtensionCommand(
1380 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1381 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1382 SIZE_T InitializationParametersSizeInBytes);
1383
1384 void ExecuteExtensionCommand(
1385 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1386 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1387 SIZE_T ExecutionParametersSizeInBytes);
1388}
1389
1390[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
1391interface ID3D12VideoEncodeCommandList1
1392 : ID3D12VideoEncodeCommandList
1393{
1394 void InitializeExtensionCommand(
1395 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1396 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1397 SIZE_T InitializationParametersSizeInBytes);
1398
1399 void ExecuteExtensionCommand(
1400 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1401 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1402 SIZE_T ExecutionParametersSizeInBytes);
1403}
1404
1405cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
1406cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
1407cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1408cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
1409cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
1410cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
1411cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1412cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1413cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
1414cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
1415cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
1416cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
1417cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
1418cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
1419cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
1420cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
1421cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
1422cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
1423cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
1424cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
1425
1426cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1427#pragma endregion
1428
1429cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
1430cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
1431cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
1432cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
1433cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
1434cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
1435cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
1436cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
1437cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
1438cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
1439cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
1440cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
1441cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
1442cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
1443cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
1444cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
1445cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
1446cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
1447cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
1448cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
diff --git a/contrib/DirectX-Headers/include/directx/d3dcommon.h b/contrib/DirectX-Headers/include/directx/d3dcommon.h
new file mode 100644
index 0000000..b41fbbf
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dcommon.h
@@ -0,0 +1,1068 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0625 */
13/* @@MIDL_FILE_HEADING( ) */
14
15
16
17/* verify that the <rpcndr.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCNDR_H_VERSION__
19#define __REQUIRED_RPCNDR_H_VERSION__ 500
20#endif
21
22/* verify that the <rpcsal.h> version is high enough to compile this file*/
23#ifndef __REQUIRED_RPCSAL_H_VERSION__
24#define __REQUIRED_RPCSAL_H_VERSION__ 100
25#endif
26
27#include "rpc.h"
28#include "rpcndr.h"
29
30#ifndef __RPCNDR_H_VERSION__
31#error this stub requires an updated version of <rpcndr.h>
32#endif /* __RPCNDR_H_VERSION__ */
33
34#ifndef COM_NO_WINDOWS_H
35#include "windows.h"
36#include "ole2.h"
37#endif /*COM_NO_WINDOWS_H*/
38
39#ifndef __d3dcommon_h__
40#define __d3dcommon_h__
41
42#if defined(_MSC_VER) && (_MSC_VER >= 1020)
43#pragma once
44#endif
45
46#ifndef DECLSPEC_XFGVIRT
47#if _CONTROL_FLOW_GUARD_XFG
48#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
49#else
50#define DECLSPEC_XFGVIRT(base, func)
51#endif
52#endif
53
54/* Forward Declarations */
55
56#ifndef __ID3D10Blob_FWD_DEFINED__
57#define __ID3D10Blob_FWD_DEFINED__
58typedef interface ID3D10Blob ID3D10Blob;
59
60#endif /* __ID3D10Blob_FWD_DEFINED__ */
61
62
63#ifndef __ID3DDestructionNotifier_FWD_DEFINED__
64#define __ID3DDestructionNotifier_FWD_DEFINED__
65typedef interface ID3DDestructionNotifier ID3DDestructionNotifier;
66
67#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */
68
69
70/* header files for imported files */
71#include "OAIdl.h"
72#include "OCIdl.h"
73
74#ifdef __cplusplus
75extern "C"{
76#endif
77
78
79/* interface __MIDL_itf_d3dcommon_0000_0000 */
80/* [local] */
81
82typedef
83enum D3D_DRIVER_TYPE
84 {
85 D3D_DRIVER_TYPE_UNKNOWN = 0,
86 D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
87 D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
88 D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
89 D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) ,
90 D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
91 } D3D_DRIVER_TYPE;
92
93typedef
94enum D3D_FEATURE_LEVEL
95 {
96 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
97 D3D_FEATURE_LEVEL_9_1 = 0x9100,
98 D3D_FEATURE_LEVEL_9_2 = 0x9200,
99 D3D_FEATURE_LEVEL_9_3 = 0x9300,
100 D3D_FEATURE_LEVEL_10_0 = 0xa000,
101 D3D_FEATURE_LEVEL_10_1 = 0xa100,
102 D3D_FEATURE_LEVEL_11_0 = 0xb000,
103 D3D_FEATURE_LEVEL_11_1 = 0xb100,
104 D3D_FEATURE_LEVEL_12_0 = 0xc000,
105 D3D_FEATURE_LEVEL_12_1 = 0xc100,
106 D3D_FEATURE_LEVEL_12_2 = 0xc200
107 } D3D_FEATURE_LEVEL;
108
109#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
110#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
111#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
112#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
113#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
114#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
115#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
116#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
117#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
118#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
119#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
120#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
121#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
122#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
123#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
124typedef
125enum D3D_PRIMITIVE_TOPOLOGY
126 {
127 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
128 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
129 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
130 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
131 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
132 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
133 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
134 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
135 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
136 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
137 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
138 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
139 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
140 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
141 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
142 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
143 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
144 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
145 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
146 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
147 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
148 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
149 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
150 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
151 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
152 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
153 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
154 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
155 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
156 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
157 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
158 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
159 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
160 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
161 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
162 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
163 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
164 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
165 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
166 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
167 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
168 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
169 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
170 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
171 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
172 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
173 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
174 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
175 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
176 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
177 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
178 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
179 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
180 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
181 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
182 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
183 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
184 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
185 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
186 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
187 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
188 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
189 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
190 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
191 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
192 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
193 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
194 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
195 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
196 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
197 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
198 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
199 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
200 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
201 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
202 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
203 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
204 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
205 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
206 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
207 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
208 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
209 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
210 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
211 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
212 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
213 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
214 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
215 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
216 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
217 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
218 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
219 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
220 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
221 } D3D_PRIMITIVE_TOPOLOGY;
222
223typedef
224enum D3D_PRIMITIVE
225 {
226 D3D_PRIMITIVE_UNDEFINED = 0,
227 D3D_PRIMITIVE_POINT = 1,
228 D3D_PRIMITIVE_LINE = 2,
229 D3D_PRIMITIVE_TRIANGLE = 3,
230 D3D_PRIMITIVE_LINE_ADJ = 6,
231 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
232 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
233 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
234 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
235 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
236 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
237 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
238 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
239 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
240 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
241 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
242 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
243 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
244 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
245 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
246 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
247 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
248 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
249 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
250 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
251 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
252 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
253 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
254 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
255 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
256 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
257 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
258 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
259 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
260 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
261 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
262 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
263 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
264 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
265 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
266 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
267 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
268 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
269 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
270 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
271 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
272 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
273 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
274 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
275 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
276 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
277 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
278 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
279 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
280 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
281 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
282 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
283 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
284 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
285 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
286 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
287 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
288 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
289 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
290 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
291 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
292 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
293 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
294 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
295 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
296 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
297 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
298 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
299 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
300 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
301 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
302 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
303 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
304 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
305 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
306 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
307 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
308 } D3D_PRIMITIVE;
309
310typedef
311enum D3D_SRV_DIMENSION
312 {
313 D3D_SRV_DIMENSION_UNKNOWN = 0,
314 D3D_SRV_DIMENSION_BUFFER = 1,
315 D3D_SRV_DIMENSION_TEXTURE1D = 2,
316 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
317 D3D_SRV_DIMENSION_TEXTURE2D = 4,
318 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
319 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
320 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
321 D3D_SRV_DIMENSION_TEXTURE3D = 8,
322 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
323 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
324 D3D_SRV_DIMENSION_BUFFEREX = 11,
325 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
326 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
327 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
328 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
329 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
330 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
331 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
332 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
333 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
334 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
335 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
336 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
337 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
338 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
339 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
340 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
341 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
342 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
343 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
344 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
345 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
346 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
347 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
348 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
349 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
350 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
351 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
352 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
353 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
354 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
355 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
356 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
357 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
358 } D3D_SRV_DIMENSION;
359
360#define D3D_SHADER_FEATURE_DOUBLES 0x00001
361#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
362#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
363#define D3D_SHADER_FEATURE_64_UAVS 0x00008
364#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
365#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
366#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
367#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
368#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
369#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
370#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
371#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
372#define D3D_SHADER_FEATURE_ROVS 0x01000
373#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
374#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
375#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
376#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
377#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
378#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
379#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
380#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
381#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
382#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
383#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
384#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
385#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
386#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
387#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
388#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
389typedef struct _D3D_SHADER_MACRO
390 {
391 LPCSTR Name;
392 LPCSTR Definition;
393 } D3D_SHADER_MACRO;
394
395typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
396
397DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
398
399
400extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
401extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
402
403#ifndef __ID3D10Blob_INTERFACE_DEFINED__
404#define __ID3D10Blob_INTERFACE_DEFINED__
405
406/* interface ID3D10Blob */
407/* [unique][local][object][uuid] */
408
409
410EXTERN_C const IID IID_ID3D10Blob;
411
412#if defined(__cplusplus) && !defined(CINTERFACE)
413
414 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
415 ID3D10Blob : public IUnknown
416 {
417 public:
418 virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
419
420 virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
421
422 };
423
424
425#else /* C style interface */
426
427 typedef struct ID3D10BlobVtbl
428 {
429 BEGIN_INTERFACE
430
431 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
432 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
433 ID3D10Blob * This,
434 /* [in] */ REFIID riid,
435 /* [annotation][iid_is][out] */
436 _COM_Outptr_ void **ppvObject);
437
438 DECLSPEC_XFGVIRT(IUnknown, AddRef)
439 ULONG ( STDMETHODCALLTYPE *AddRef )(
440 ID3D10Blob * This);
441
442 DECLSPEC_XFGVIRT(IUnknown, Release)
443 ULONG ( STDMETHODCALLTYPE *Release )(
444 ID3D10Blob * This);
445
446 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
447 LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
448 ID3D10Blob * This);
449
450 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
451 SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
452 ID3D10Blob * This);
453
454 END_INTERFACE
455 } ID3D10BlobVtbl;
456
457 interface ID3D10Blob
458 {
459 CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
460 };
461
462
463
464#ifdef COBJMACROS
465
466
467#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
468 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
469
470#define ID3D10Blob_AddRef(This) \
471 ( (This)->lpVtbl -> AddRef(This) )
472
473#define ID3D10Blob_Release(This) \
474 ( (This)->lpVtbl -> Release(This) )
475
476
477#define ID3D10Blob_GetBufferPointer(This) \
478 ( (This)->lpVtbl -> GetBufferPointer(This) )
479
480#define ID3D10Blob_GetBufferSize(This) \
481 ( (This)->lpVtbl -> GetBufferSize(This) )
482
483#endif /* COBJMACROS */
484
485
486#endif /* C style interface */
487
488
489
490
491#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
492
493
494/* interface __MIDL_itf_d3dcommon_0000_0001 */
495/* [local] */
496
497typedef interface ID3D10Blob* LPD3D10BLOB;
498typedef ID3D10Blob ID3DBlob;
499
500typedef ID3DBlob* LPD3DBLOB;
501#define IID_ID3DBlob IID_ID3D10Blob
502typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
503 void *pData);
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
509
510#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
511#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
512
513/* interface ID3DDestructionNotifier */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3DDestructionNotifier;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
522 ID3DDestructionNotifier : public IUnknown
523 {
524 public:
525 virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
526 /* [annotation] */
527 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
528 /* [annotation] */
529 _In_ void *pData,
530 /* [annotation] */
531 _Out_ UINT *pCallbackID) = 0;
532
533 virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
534 /* [annotation] */
535 _In_ UINT callbackID) = 0;
536
537 };
538
539
540#else /* C style interface */
541
542 typedef struct ID3DDestructionNotifierVtbl
543 {
544 BEGIN_INTERFACE
545
546 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
547 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
548 ID3DDestructionNotifier * This,
549 /* [in] */ REFIID riid,
550 /* [annotation][iid_is][out] */
551 _COM_Outptr_ void **ppvObject);
552
553 DECLSPEC_XFGVIRT(IUnknown, AddRef)
554 ULONG ( STDMETHODCALLTYPE *AddRef )(
555 ID3DDestructionNotifier * This);
556
557 DECLSPEC_XFGVIRT(IUnknown, Release)
558 ULONG ( STDMETHODCALLTYPE *Release )(
559 ID3DDestructionNotifier * This);
560
561 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
562 HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
563 ID3DDestructionNotifier * This,
564 /* [annotation] */
565 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
566 /* [annotation] */
567 _In_ void *pData,
568 /* [annotation] */
569 _Out_ UINT *pCallbackID);
570
571 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
572 HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
573 ID3DDestructionNotifier * This,
574 /* [annotation] */
575 _In_ UINT callbackID);
576
577 END_INTERFACE
578 } ID3DDestructionNotifierVtbl;
579
580 interface ID3DDestructionNotifier
581 {
582 CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
583 };
584
585
586
587#ifdef COBJMACROS
588
589
590#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
591 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
592
593#define ID3DDestructionNotifier_AddRef(This) \
594 ( (This)->lpVtbl -> AddRef(This) )
595
596#define ID3DDestructionNotifier_Release(This) \
597 ( (This)->lpVtbl -> Release(This) )
598
599
600#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
601 ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
602
603#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
604 ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
605
606#endif /* COBJMACROS */
607
608
609#endif /* C style interface */
610
611
612
613
614#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
615
616
617/* interface __MIDL_itf_d3dcommon_0000_0002 */
618/* [local] */
619
620typedef
621enum _D3D_INCLUDE_TYPE
622 {
623 D3D_INCLUDE_LOCAL = 0,
624 D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
625 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
626 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
627 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
628 } D3D_INCLUDE_TYPE;
629
630typedef interface ID3DInclude ID3DInclude;
631#undef INTERFACE
632#define INTERFACE ID3DInclude
633DECLARE_INTERFACE(ID3DInclude)
634{
635 STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
636 STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
637};
638typedef ID3DInclude* LPD3DINCLUDE;
639typedef
640enum _D3D_SHADER_VARIABLE_CLASS
641 {
642 D3D_SVC_SCALAR = 0,
643 D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
644 D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
645 D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
646 D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
647 D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
648 D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
649 D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
650 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
651 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
652 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
653 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
654 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
655 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
656 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
657 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
658 D3D_SVC_FORCE_DWORD = 0x7fffffff
659 } D3D_SHADER_VARIABLE_CLASS;
660
661typedef
662enum _D3D_SHADER_VARIABLE_FLAGS
663 {
664 D3D_SVF_USERPACKED = 1,
665 D3D_SVF_USED = 2,
666 D3D_SVF_INTERFACE_POINTER = 4,
667 D3D_SVF_INTERFACE_PARAMETER = 8,
668 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
669 D3D10_SVF_USED = D3D_SVF_USED,
670 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
671 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
672 D3D_SVF_FORCE_DWORD = 0x7fffffff
673 } D3D_SHADER_VARIABLE_FLAGS;
674
675typedef
676enum _D3D_SHADER_VARIABLE_TYPE
677 {
678 D3D_SVT_VOID = 0,
679 D3D_SVT_BOOL = 1,
680 D3D_SVT_INT = 2,
681 D3D_SVT_FLOAT = 3,
682 D3D_SVT_STRING = 4,
683 D3D_SVT_TEXTURE = 5,
684 D3D_SVT_TEXTURE1D = 6,
685 D3D_SVT_TEXTURE2D = 7,
686 D3D_SVT_TEXTURE3D = 8,
687 D3D_SVT_TEXTURECUBE = 9,
688 D3D_SVT_SAMPLER = 10,
689 D3D_SVT_SAMPLER1D = 11,
690 D3D_SVT_SAMPLER2D = 12,
691 D3D_SVT_SAMPLER3D = 13,
692 D3D_SVT_SAMPLERCUBE = 14,
693 D3D_SVT_PIXELSHADER = 15,
694 D3D_SVT_VERTEXSHADER = 16,
695 D3D_SVT_PIXELFRAGMENT = 17,
696 D3D_SVT_VERTEXFRAGMENT = 18,
697 D3D_SVT_UINT = 19,
698 D3D_SVT_UINT8 = 20,
699 D3D_SVT_GEOMETRYSHADER = 21,
700 D3D_SVT_RASTERIZER = 22,
701 D3D_SVT_DEPTHSTENCIL = 23,
702 D3D_SVT_BLEND = 24,
703 D3D_SVT_BUFFER = 25,
704 D3D_SVT_CBUFFER = 26,
705 D3D_SVT_TBUFFER = 27,
706 D3D_SVT_TEXTURE1DARRAY = 28,
707 D3D_SVT_TEXTURE2DARRAY = 29,
708 D3D_SVT_RENDERTARGETVIEW = 30,
709 D3D_SVT_DEPTHSTENCILVIEW = 31,
710 D3D_SVT_TEXTURE2DMS = 32,
711 D3D_SVT_TEXTURE2DMSARRAY = 33,
712 D3D_SVT_TEXTURECUBEARRAY = 34,
713 D3D_SVT_HULLSHADER = 35,
714 D3D_SVT_DOMAINSHADER = 36,
715 D3D_SVT_INTERFACE_POINTER = 37,
716 D3D_SVT_COMPUTESHADER = 38,
717 D3D_SVT_DOUBLE = 39,
718 D3D_SVT_RWTEXTURE1D = 40,
719 D3D_SVT_RWTEXTURE1DARRAY = 41,
720 D3D_SVT_RWTEXTURE2D = 42,
721 D3D_SVT_RWTEXTURE2DARRAY = 43,
722 D3D_SVT_RWTEXTURE3D = 44,
723 D3D_SVT_RWBUFFER = 45,
724 D3D_SVT_BYTEADDRESS_BUFFER = 46,
725 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
726 D3D_SVT_STRUCTURED_BUFFER = 48,
727 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
728 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
729 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
730 D3D_SVT_MIN8FLOAT = 52,
731 D3D_SVT_MIN10FLOAT = 53,
732 D3D_SVT_MIN16FLOAT = 54,
733 D3D_SVT_MIN12INT = 55,
734 D3D_SVT_MIN16INT = 56,
735 D3D_SVT_MIN16UINT = 57,
736 D3D10_SVT_VOID = D3D_SVT_VOID,
737 D3D10_SVT_BOOL = D3D_SVT_BOOL,
738 D3D10_SVT_INT = D3D_SVT_INT,
739 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
740 D3D10_SVT_STRING = D3D_SVT_STRING,
741 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
742 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
743 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
744 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
745 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
746 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
747 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
748 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
749 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
750 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
751 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
752 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
753 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
754 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
755 D3D10_SVT_UINT = D3D_SVT_UINT,
756 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
757 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
758 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
759 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
760 D3D10_SVT_BLEND = D3D_SVT_BLEND,
761 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
762 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
763 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
764 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
765 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
766 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
767 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
768 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
769 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
770 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
771 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
772 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
773 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
774 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
775 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
776 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
777 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
778 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
779 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
780 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
781 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
782 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
783 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
784 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
785 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
786 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
787 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
788 D3D_SVT_FORCE_DWORD = 0x7fffffff
789 } D3D_SHADER_VARIABLE_TYPE;
790
791typedef
792enum _D3D_SHADER_INPUT_FLAGS
793 {
794 D3D_SIF_USERPACKED = 0x1,
795 D3D_SIF_COMPARISON_SAMPLER = 0x2,
796 D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
797 D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
798 D3D_SIF_TEXTURE_COMPONENTS = 0xc,
799 D3D_SIF_UNUSED = 0x10,
800 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
801 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
802 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
803 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
804 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
805 D3D_SIF_FORCE_DWORD = 0x7fffffff
806 } D3D_SHADER_INPUT_FLAGS;
807
808typedef
809enum _D3D_SHADER_INPUT_TYPE
810 {
811 D3D_SIT_CBUFFER = 0,
812 D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
813 D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
814 D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
815 D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
816 D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
817 D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
818 D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
819 D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
820 D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
821 D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
822 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
823 D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
824 D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
825 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
826 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
827 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
828 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
829 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
830 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
831 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
832 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
833 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
834 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
835 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
836 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
837 } D3D_SHADER_INPUT_TYPE;
838
839typedef
840enum _D3D_SHADER_CBUFFER_FLAGS
841 {
842 D3D_CBF_USERPACKED = 1,
843 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
844 D3D_CBF_FORCE_DWORD = 0x7fffffff
845 } D3D_SHADER_CBUFFER_FLAGS;
846
847typedef
848enum _D3D_CBUFFER_TYPE
849 {
850 D3D_CT_CBUFFER = 0,
851 D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
852 D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
853 D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
854 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
855 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
856 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
857 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
858 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
859 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
860 } D3D_CBUFFER_TYPE;
861
862typedef
863enum D3D_NAME
864 {
865 D3D_NAME_UNDEFINED = 0,
866 D3D_NAME_POSITION = 1,
867 D3D_NAME_CLIP_DISTANCE = 2,
868 D3D_NAME_CULL_DISTANCE = 3,
869 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
870 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
871 D3D_NAME_VERTEX_ID = 6,
872 D3D_NAME_PRIMITIVE_ID = 7,
873 D3D_NAME_INSTANCE_ID = 8,
874 D3D_NAME_IS_FRONT_FACE = 9,
875 D3D_NAME_SAMPLE_INDEX = 10,
876 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
877 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
878 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
879 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
880 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
881 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
882 D3D_NAME_BARYCENTRICS = 23,
883 D3D_NAME_SHADINGRATE = 24,
884 D3D_NAME_CULLPRIMITIVE = 25,
885 D3D_NAME_TARGET = 64,
886 D3D_NAME_DEPTH = 65,
887 D3D_NAME_COVERAGE = 66,
888 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
889 D3D_NAME_DEPTH_LESS_EQUAL = 68,
890 D3D_NAME_STENCIL_REF = 69,
891 D3D_NAME_INNER_COVERAGE = 70,
892 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
893 D3D10_NAME_POSITION = D3D_NAME_POSITION,
894 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
895 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
896 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
897 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
898 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
899 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
900 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
901 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
902 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
903 D3D10_NAME_TARGET = D3D_NAME_TARGET,
904 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
905 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
906 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
907 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
908 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
909 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
910 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
911 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
912 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
913 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
914 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
915 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
916 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
917 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
918 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
919 } D3D_NAME;
920
921typedef
922enum D3D_RESOURCE_RETURN_TYPE
923 {
924 D3D_RETURN_TYPE_UNORM = 1,
925 D3D_RETURN_TYPE_SNORM = 2,
926 D3D_RETURN_TYPE_SINT = 3,
927 D3D_RETURN_TYPE_UINT = 4,
928 D3D_RETURN_TYPE_FLOAT = 5,
929 D3D_RETURN_TYPE_MIXED = 6,
930 D3D_RETURN_TYPE_DOUBLE = 7,
931 D3D_RETURN_TYPE_CONTINUED = 8,
932 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
933 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
934 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
935 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
936 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
937 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
938 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
939 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
940 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
941 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
942 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
943 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
944 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
945 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
946 } D3D_RESOURCE_RETURN_TYPE;
947
948typedef
949enum D3D_REGISTER_COMPONENT_TYPE
950 {
951 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
952 D3D_REGISTER_COMPONENT_UINT32 = 1,
953 D3D_REGISTER_COMPONENT_SINT32 = 2,
954 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
955 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
956 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
957 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
958 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32
959 } D3D_REGISTER_COMPONENT_TYPE;
960
961typedef
962enum D3D_TESSELLATOR_DOMAIN
963 {
964 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
965 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
966 D3D_TESSELLATOR_DOMAIN_TRI = 2,
967 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
968 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
969 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
970 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
971 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
972 } D3D_TESSELLATOR_DOMAIN;
973
974typedef
975enum D3D_TESSELLATOR_PARTITIONING
976 {
977 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
978 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
979 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
980 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
981 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
982 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
983 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
984 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
985 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
986 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
987 } D3D_TESSELLATOR_PARTITIONING;
988
989typedef
990enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
991 {
992 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
993 D3D_TESSELLATOR_OUTPUT_POINT = 1,
994 D3D_TESSELLATOR_OUTPUT_LINE = 2,
995 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
996 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
997 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
998 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
999 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
1000 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1001 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1002 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
1003
1004typedef
1005enum D3D_MIN_PRECISION
1006 {
1007 D3D_MIN_PRECISION_DEFAULT = 0,
1008 D3D_MIN_PRECISION_FLOAT_16 = 1,
1009 D3D_MIN_PRECISION_FLOAT_2_8 = 2,
1010 D3D_MIN_PRECISION_RESERVED = 3,
1011 D3D_MIN_PRECISION_SINT_16 = 4,
1012 D3D_MIN_PRECISION_UINT_16 = 5,
1013 D3D_MIN_PRECISION_ANY_16 = 0xf0,
1014 D3D_MIN_PRECISION_ANY_10 = 0xf1
1015 } D3D_MIN_PRECISION;
1016
1017typedef
1018enum D3D_INTERPOLATION_MODE
1019 {
1020 D3D_INTERPOLATION_UNDEFINED = 0,
1021 D3D_INTERPOLATION_CONSTANT = 1,
1022 D3D_INTERPOLATION_LINEAR = 2,
1023 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
1024 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
1025 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
1026 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
1027 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
1028 } D3D_INTERPOLATION_MODE;
1029
1030typedef
1031enum _D3D_PARAMETER_FLAGS
1032 {
1033 D3D_PF_NONE = 0,
1034 D3D_PF_IN = 0x1,
1035 D3D_PF_OUT = 0x2,
1036 D3D_PF_FORCE_DWORD = 0x7fffffff
1037 } D3D_PARAMETER_FLAGS;
1038
1039DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
1040DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
1041DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
1042DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
1043#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
1044#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
1045#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
1046#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
1047#define D3D_COMPONENT_MASK_X 1
1048#define D3D_COMPONENT_MASK_Y 2
1049#define D3D_COMPONENT_MASK_Z 4
1050#define D3D_COMPONENT_MASK_W 8
1051DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
1052DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
1053
1054
1055extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
1056extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
1057
1058/* Additional Prototypes for ALL interfaces */
1059
1060/* end of Additional Prototypes */
1061
1062#ifdef __cplusplus
1063}
1064#endif
1065
1066#endif
1067
1068
diff --git a/contrib/DirectX-Headers/include/directx/d3dcommon.idl b/contrib/DirectX-Headers/include/directx/d3dcommon.idl
new file mode 100644
index 0000000..c7bf623
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dcommon.idl
@@ -0,0 +1,911 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "OAIdl.idl";
8import "OCIdl.idl";
9
10//----------------------------------------------------------------------------
11//
12// D3D-version-neutral runtime information.
13//
14//----------------------------------------------------------------------------
15
16typedef enum D3D_DRIVER_TYPE
17{
18 D3D_DRIVER_TYPE_UNKNOWN,
19 D3D_DRIVER_TYPE_HARDWARE,
20 D3D_DRIVER_TYPE_REFERENCE,
21 D3D_DRIVER_TYPE_NULL,
22 D3D_DRIVER_TYPE_SOFTWARE,
23 D3D_DRIVER_TYPE_WARP,
24} D3D_DRIVER_TYPE;
25
26typedef enum D3D_FEATURE_LEVEL
27{
28 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
29 D3D_FEATURE_LEVEL_9_1 = 0x9100,
30 D3D_FEATURE_LEVEL_9_2 = 0x9200,
31 D3D_FEATURE_LEVEL_9_3 = 0x9300,
32 D3D_FEATURE_LEVEL_10_0 = 0xa000,
33 D3D_FEATURE_LEVEL_10_1 = 0xa100,
34 D3D_FEATURE_LEVEL_11_0 = 0xb000,
35 D3D_FEATURE_LEVEL_11_1 = 0xb100,
36 D3D_FEATURE_LEVEL_12_0 = 0xc000,
37 D3D_FEATURE_LEVEL_12_1 = 0xc100,
38 D3D_FEATURE_LEVEL_12_2 = 0xc200
39} D3D_FEATURE_LEVEL;
40
41cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048")
42cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096")
43cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048")
44cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096")
45cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512")
46cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096")
47cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256")
48cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2")
49cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535")
50cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575")
51cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1")
52cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4")
53cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128")
54cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048")
55cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192")
56
57typedef enum D3D_PRIMITIVE_TOPOLOGY
58{
59 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
60 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
61 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
62 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
63 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
64 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
65 // 6 is reserved for legacy triangle fans
66 // Adjacency values should be equal to (0x8 & non-adjacency):
67 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
68 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
69 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
70 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
71 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
72 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
73 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
74 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
75 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
76 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
77 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
78 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
79 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
80 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
81 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
82 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
83 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
84 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
85 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
86 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
87 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
88 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
89 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
90 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
91 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
92 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
93 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
94 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
95 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
96 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
97 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
98 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
99 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
100 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
101 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
102 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
103
104 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
105 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
106 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
107 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
108 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
109 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
110 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
111 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
112 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
113 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
114
115 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
116 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
117 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
118 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
119 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
120 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
121 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
122 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
123 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
124 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
125 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
126 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
127 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
128 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
129 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
130 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
131 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
132 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
133 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
134 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
135 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
136 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
137 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
138 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
139 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
140 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
141 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
142 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
143 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
144 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
145 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
146 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
147 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
148 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
149 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
150 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
151 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
152 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
153 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
154 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
155 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
156 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST,
157} D3D_PRIMITIVE_TOPOLOGY;
158
159typedef enum D3D_PRIMITIVE
160{
161 D3D_PRIMITIVE_UNDEFINED = 0,
162 D3D_PRIMITIVE_POINT = 1,
163 D3D_PRIMITIVE_LINE = 2,
164 D3D_PRIMITIVE_TRIANGLE = 3,
165 // Adjacency values should be equal to (0x4 & non-adjacency):
166 D3D_PRIMITIVE_LINE_ADJ = 6,
167 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
168 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
169 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
170 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
171 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
172 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
173 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
174 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
175 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
176 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
177 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
178 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
179 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
180 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
181 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
182 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
183 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
184 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
185 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
186 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
187 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
188 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
189 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
190 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
191 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
192 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
193 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
194 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
195 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
196 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
197 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
198 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
199 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
200
201 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
202 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
203 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
204 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
205 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
206 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
207
208 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
209 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
210 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
211 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
212 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
213 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
214 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
215 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
216 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
217 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
218 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
219 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
220 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
221 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
222 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
223 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
224 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
225 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
226 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
227 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
228 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
229 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
230 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
231 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
232 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
233 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
234 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
235 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
236 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
237 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
238 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
239 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
240 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
241 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
242 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
243 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
244 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
245 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
246} D3D_PRIMITIVE;
247
248typedef enum D3D_SRV_DIMENSION
249{
250 D3D_SRV_DIMENSION_UNKNOWN = 0,
251 D3D_SRV_DIMENSION_BUFFER = 1,
252 D3D_SRV_DIMENSION_TEXTURE1D = 2,
253 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
254 D3D_SRV_DIMENSION_TEXTURE2D = 4,
255 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
256 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
257 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
258 D3D_SRV_DIMENSION_TEXTURE3D = 8,
259 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
260 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
261 D3D_SRV_DIMENSION_BUFFEREX = 11,
262
263 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
264 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
265 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
266 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
267 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
268 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
269 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
270 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
271 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
272 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
273
274 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
275 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
276 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
277 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
278 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
279 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
280 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
281 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
282 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
283 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
284 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
285
286 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
287 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
288 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
289 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
290 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
291 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
292 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
293 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
294 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
295 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
296 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
297 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
298} D3D_SRV_DIMENSION;
299
300// Bits in shaders indicating features they use which the runtime checks against current device support:
301cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES 0x00001")
302cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
303cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004")
304cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS 0x00008")
305cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010")
306cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020")
307cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040")
308cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080")
309cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100")
310cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200")
311cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400")
312cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800")
313cpp_quote("#define D3D_SHADER_FEATURE_ROVS 0x01000")
314cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
315cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000")
316cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS 0x08000")
317cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID 0x10000")
318cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000")
319cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000")
320cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000")
321cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000")
322cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000")
323cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000")
324cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000")
325cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000")
326cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000")
327cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000")
328cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000")
329cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000")
330
331// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
332// When adding entries here, make sure they don't conflict with what's there.
333
334//----------------------------------------------------------------------------
335//
336// Shader compilation information.
337//
338//----------------------------------------------------------------------------
339
340//----------------------------------------------------------------------------
341// D3D_SHADER_MACRO:
342// ----------
343// Preprocessor macro definition. The application pass in a NULL-terminated
344// array of this structure to various D3D APIs. This enables the application
345// to #define tokens at runtime, before the file is parsed.
346//----------------------------------------------------------------------------
347
348typedef struct _D3D_SHADER_MACRO
349{
350 LPCSTR Name;
351 LPCSTR Definition;
352} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
353
354//----------------------------------------------------------------------------
355// ID3DBlob:
356// ------------
357// The buffer object is used by D3D to return arbitrary size data.
358// For compatibility with D3D10 this interface is also called ID3D10Blob,
359// but the version-neutral form is preferred.
360//
361// GetBufferPointer -
362// Returns a pointer to the beginning of the buffer.
363//
364// GetBufferSize -
365// Returns the size of the buffer, in bytes.
366//----------------------------------------------------------------------------
367
368// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
369cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
370
371[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
372interface ID3D10Blob : IUnknown
373{
374 LPVOID GetBufferPointer();
375 SIZE_T GetBufferSize();
376};
377
378cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
379
380typedef ID3D10Blob ID3DBlob;
381cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
382cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
383
384// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
385typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
386
387[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
388interface ID3DDestructionNotifier
389 : IUnknown
390{
391 HRESULT RegisterDestructionCallback(
392 [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
393 [annotation("_In_")] void* pData,
394 [annotation("_Out_")] UINT* pCallbackID
395 );
396 HRESULT UnregisterDestructionCallback(
397 [annotation("_In_")] UINT callbackID
398 );
399};
400
401typedef enum _D3D_INCLUDE_TYPE
402{
403 D3D_INCLUDE_LOCAL,
404 D3D_INCLUDE_SYSTEM,
405
406 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
407 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
408
409 // force 32-bit size enum
410 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
411} D3D_INCLUDE_TYPE;
412
413//----------------------------------------------------------------------------
414// ID3DInclude:
415// -------------
416// This interface is intended to be implemented by the application, and can
417// be used by various D3D APIs. This enables application-specific handling
418// of #include directives in source files.
419//
420// Open()
421// Opens an include file. If successful, it should fill in ppData and
422// pBytes. The data pointer returned must remain valid until Close is
423// subsequently called. The name of the file is encoded in UTF-8 format.
424// Close()
425// Closes an include file. If Open was successful, Close is guaranteed
426// to be called before the API using this interface returns.
427//----------------------------------------------------------------------------
428
429cpp_quote("typedef interface ID3DInclude ID3DInclude;")
430
431cpp_quote("#undef INTERFACE")
432cpp_quote("#define INTERFACE ID3DInclude")
433
434cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
435cpp_quote("{")
436cpp_quote(" STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
437cpp_quote(" STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
438cpp_quote("};")
439
440cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
441
442//----------------------------------------------------------------------------
443//
444// Shader reflection information.
445//
446//----------------------------------------------------------------------------
447
448typedef enum _D3D_SHADER_VARIABLE_CLASS
449{
450 D3D_SVC_SCALAR,
451 D3D_SVC_VECTOR,
452 D3D_SVC_MATRIX_ROWS,
453 D3D_SVC_MATRIX_COLUMNS,
454 D3D_SVC_OBJECT,
455 D3D_SVC_STRUCT,
456 D3D_SVC_INTERFACE_CLASS,
457 D3D_SVC_INTERFACE_POINTER,
458
459 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
460 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
461 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
462 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
463 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
464 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
465
466 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
467 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
468
469 // force 32-bit size enum
470 D3D_SVC_FORCE_DWORD = 0x7fffffff
471} D3D_SHADER_VARIABLE_CLASS;
472
473typedef enum _D3D_SHADER_VARIABLE_FLAGS
474{
475 D3D_SVF_USERPACKED = 1,
476 D3D_SVF_USED = 2,
477
478 D3D_SVF_INTERFACE_POINTER = 4,
479 D3D_SVF_INTERFACE_PARAMETER = 8,
480
481 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
482 D3D10_SVF_USED = D3D_SVF_USED,
483
484 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
485 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
486
487 // force 32-bit size enum
488 D3D_SVF_FORCE_DWORD = 0x7fffffff
489} D3D_SHADER_VARIABLE_FLAGS;
490
491typedef enum _D3D_SHADER_VARIABLE_TYPE
492{
493 D3D_SVT_VOID = 0,
494 D3D_SVT_BOOL = 1,
495 D3D_SVT_INT = 2,
496 D3D_SVT_FLOAT = 3,
497 D3D_SVT_STRING = 4,
498 D3D_SVT_TEXTURE = 5,
499 D3D_SVT_TEXTURE1D = 6,
500 D3D_SVT_TEXTURE2D = 7,
501 D3D_SVT_TEXTURE3D = 8,
502 D3D_SVT_TEXTURECUBE = 9,
503 D3D_SVT_SAMPLER = 10,
504 D3D_SVT_SAMPLER1D = 11,
505 D3D_SVT_SAMPLER2D = 12,
506 D3D_SVT_SAMPLER3D = 13,
507 D3D_SVT_SAMPLERCUBE = 14,
508 D3D_SVT_PIXELSHADER = 15,
509 D3D_SVT_VERTEXSHADER = 16,
510 D3D_SVT_PIXELFRAGMENT = 17,
511 D3D_SVT_VERTEXFRAGMENT = 18,
512 D3D_SVT_UINT = 19,
513 D3D_SVT_UINT8 = 20,
514 D3D_SVT_GEOMETRYSHADER = 21,
515 D3D_SVT_RASTERIZER = 22,
516 D3D_SVT_DEPTHSTENCIL = 23,
517 D3D_SVT_BLEND = 24,
518 D3D_SVT_BUFFER = 25,
519 D3D_SVT_CBUFFER = 26,
520 D3D_SVT_TBUFFER = 27,
521 D3D_SVT_TEXTURE1DARRAY = 28,
522 D3D_SVT_TEXTURE2DARRAY = 29,
523 D3D_SVT_RENDERTARGETVIEW = 30,
524 D3D_SVT_DEPTHSTENCILVIEW = 31,
525
526 D3D_SVT_TEXTURE2DMS = 32,
527 D3D_SVT_TEXTURE2DMSARRAY = 33,
528
529 D3D_SVT_TEXTURECUBEARRAY = 34,
530
531 D3D_SVT_HULLSHADER = 35,
532 D3D_SVT_DOMAINSHADER = 36,
533
534 D3D_SVT_INTERFACE_POINTER = 37,
535 D3D_SVT_COMPUTESHADER = 38,
536
537 D3D_SVT_DOUBLE = 39,
538
539 D3D_SVT_RWTEXTURE1D = 40,
540 D3D_SVT_RWTEXTURE1DARRAY = 41,
541 D3D_SVT_RWTEXTURE2D = 42,
542 D3D_SVT_RWTEXTURE2DARRAY = 43,
543 D3D_SVT_RWTEXTURE3D = 44,
544 D3D_SVT_RWBUFFER = 45,
545
546 D3D_SVT_BYTEADDRESS_BUFFER = 46,
547 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
548 D3D_SVT_STRUCTURED_BUFFER = 48,
549 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
550 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
551 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
552
553 D3D_SVT_MIN8FLOAT = 52,
554 D3D_SVT_MIN10FLOAT = 53,
555 D3D_SVT_MIN16FLOAT = 54,
556 D3D_SVT_MIN12INT = 55,
557 D3D_SVT_MIN16INT = 56,
558 D3D_SVT_MIN16UINT = 57,
559
560 D3D10_SVT_VOID = D3D_SVT_VOID,
561 D3D10_SVT_BOOL = D3D_SVT_BOOL,
562 D3D10_SVT_INT = D3D_SVT_INT,
563 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
564 D3D10_SVT_STRING = D3D_SVT_STRING,
565 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
566 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
567 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
568 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
569 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
570 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
571 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
572 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
573 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
574 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
575 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
576 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
577 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
578 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
579 D3D10_SVT_UINT = D3D_SVT_UINT,
580 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
581 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
582 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
583 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
584 D3D10_SVT_BLEND = D3D_SVT_BLEND,
585 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
586 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
587 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
588 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
589 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
590 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
591 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
592
593 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
594 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
595
596 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
597
598 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
599 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
600
601 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
602 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
603
604 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
605
606 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
607 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
608 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
609 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
610 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
611 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
612
613 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
614 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
615 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
616 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
617 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
618 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
619
620 // force 32-bit size enum
621 D3D_SVT_FORCE_DWORD = 0x7fffffff
622} D3D_SHADER_VARIABLE_TYPE;
623
624typedef enum _D3D_SHADER_INPUT_FLAGS
625{
626 D3D_SIF_USERPACKED = 0x01,
627 D3D_SIF_COMPARISON_SAMPLER = 0x02, // is this a comparison sampler?
628 D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
629 D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
630 D3D_SIF_TEXTURE_COMPONENTS = 0x0c,
631 D3D_SIF_UNUSED = 0x10,
632
633 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
634 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
635 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
636 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
637 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
638
639 // force 32-bit size enum
640 D3D_SIF_FORCE_DWORD = 0x7fffffff
641} D3D_SHADER_INPUT_FLAGS;
642
643typedef enum _D3D_SHADER_INPUT_TYPE
644{
645 D3D_SIT_CBUFFER,
646 D3D_SIT_TBUFFER,
647 D3D_SIT_TEXTURE,
648 D3D_SIT_SAMPLER,
649 D3D_SIT_UAV_RWTYPED,
650 D3D_SIT_STRUCTURED,
651 D3D_SIT_UAV_RWSTRUCTURED,
652 D3D_SIT_BYTEADDRESS,
653 D3D_SIT_UAV_RWBYTEADDRESS,
654 D3D_SIT_UAV_APPEND_STRUCTURED,
655 D3D_SIT_UAV_CONSUME_STRUCTURED,
656 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
657 D3D_SIT_RTACCELERATIONSTRUCTURE,
658 D3D_SIT_UAV_FEEDBACKTEXTURE,
659
660 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
661 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
662 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
663 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
664
665 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
666 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
667 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
668 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
669 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
670 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
671 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
672 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
673} D3D_SHADER_INPUT_TYPE;
674
675typedef enum _D3D_SHADER_CBUFFER_FLAGS
676{
677 D3D_CBF_USERPACKED = 1,
678
679 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
680
681 // force 32-bit size enum
682 D3D_CBF_FORCE_DWORD = 0x7fffffff
683} D3D_SHADER_CBUFFER_FLAGS;
684
685typedef enum _D3D_CBUFFER_TYPE
686{
687 D3D_CT_CBUFFER,
688 D3D_CT_TBUFFER,
689 D3D_CT_INTERFACE_POINTERS,
690 D3D_CT_RESOURCE_BIND_INFO,
691
692 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
693 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
694
695 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
696 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
697 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
698 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
699} D3D_CBUFFER_TYPE;
700
701typedef enum D3D_NAME
702{
703 D3D_NAME_UNDEFINED = 0,
704
705 // Names meaningful to both HLSL and hardware
706 D3D_NAME_POSITION = 1,
707 D3D_NAME_CLIP_DISTANCE = 2,
708 D3D_NAME_CULL_DISTANCE = 3,
709 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
710 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
711 D3D_NAME_VERTEX_ID = 6,
712 D3D_NAME_PRIMITIVE_ID = 7,
713 D3D_NAME_INSTANCE_ID = 8,
714 D3D_NAME_IS_FRONT_FACE = 9,
715 D3D_NAME_SAMPLE_INDEX = 10,
716 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
717 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
718 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
719 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
720 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
721 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
722 D3D_NAME_BARYCENTRICS = 23,
723 D3D_NAME_SHADINGRATE = 24,
724 D3D_NAME_CULLPRIMITIVE = 25,
725
726 // Names meaningful to HLSL only
727 D3D_NAME_TARGET = 64,
728 D3D_NAME_DEPTH = 65,
729 D3D_NAME_COVERAGE = 66,
730 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
731 D3D_NAME_DEPTH_LESS_EQUAL = 68,
732 D3D_NAME_STENCIL_REF = 69,
733 D3D_NAME_INNER_COVERAGE = 70,
734
735 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
736 D3D10_NAME_POSITION = D3D_NAME_POSITION,
737 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
738 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
739 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
740 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
741 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
742 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
743 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
744 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
745 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
746 D3D10_NAME_TARGET = D3D_NAME_TARGET,
747 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
748 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
749
750 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
751 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
752 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
753 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
754 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
755 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
756 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
757 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
758
759 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
760 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
761
762 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
763 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
764 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
765} D3D_NAME;
766
767typedef enum D3D_RESOURCE_RETURN_TYPE
768{
769 D3D_RETURN_TYPE_UNORM = 1,
770 D3D_RETURN_TYPE_SNORM = 2,
771 D3D_RETURN_TYPE_SINT = 3,
772 D3D_RETURN_TYPE_UINT = 4,
773 D3D_RETURN_TYPE_FLOAT = 5,
774 D3D_RETURN_TYPE_MIXED = 6,
775 D3D_RETURN_TYPE_DOUBLE = 7,
776 D3D_RETURN_TYPE_CONTINUED = 8,
777
778 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
779 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
780 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
781 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
782 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
783 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
784
785 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
786 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
787 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
788 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
789 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
790 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
791 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
792 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
793} D3D_RESOURCE_RETURN_TYPE;
794
795typedef enum D3D_REGISTER_COMPONENT_TYPE
796{
797 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
798 D3D_REGISTER_COMPONENT_UINT32 = 1,
799 D3D_REGISTER_COMPONENT_SINT32 = 2,
800 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
801
802 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
803 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
804 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
805 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
806} D3D_REGISTER_COMPONENT_TYPE;
807
808typedef enum D3D_TESSELLATOR_DOMAIN
809{
810 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
811 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
812 D3D_TESSELLATOR_DOMAIN_TRI = 2,
813 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
814
815 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
816 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
817 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
818 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
819} D3D_TESSELLATOR_DOMAIN;
820
821typedef enum D3D_TESSELLATOR_PARTITIONING
822{
823 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
824 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
825 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
826 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
827 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
828
829 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
830 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
831 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
832 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
833 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
834} D3D_TESSELLATOR_PARTITIONING;
835
836typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
837{
838 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
839 D3D_TESSELLATOR_OUTPUT_POINT = 1,
840 D3D_TESSELLATOR_OUTPUT_LINE = 2,
841 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
842 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
843
844 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
845 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
846 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
847 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
848 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
849} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
850
851typedef enum D3D_MIN_PRECISION
852{
853 D3D_MIN_PRECISION_DEFAULT = 0, // Default precision for the shader model
854 D3D_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
855 D3D_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
856 D3D_MIN_PRECISION_RESERVED = 3, // Reserved for future use
857 D3D_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
858 D3D_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
859
860 // These values are abstractions of width only for use in situations
861 // where a general width is needed instead of specific types. They
862 // will never be used in shader operands.
863 D3D_MIN_PRECISION_ANY_16 = 0xf0,
864 D3D_MIN_PRECISION_ANY_10 = 0xf1,
865} D3D_MIN_PRECISION;
866
867typedef enum D3D_INTERPOLATION_MODE
868{
869 D3D_INTERPOLATION_UNDEFINED = 0,
870 D3D_INTERPOLATION_CONSTANT = 1,
871 D3D_INTERPOLATION_LINEAR = 2,
872 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
873 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
874 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
875 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
876 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
877} D3D_INTERPOLATION_MODE;
878
879// Parameter flags.
880typedef enum _D3D_PARAMETER_FLAGS
881{
882 D3D_PF_NONE = 0x00000000,
883 D3D_PF_IN = 0x00000001,
884 D3D_PF_OUT = 0x00000002,
885 D3D_PF_FORCE_DWORD = 0x7fffffff
886} D3D_PARAMETER_FLAGS;
887
888// Well-Known Private Data IDs (WKPDID_*):
889
890// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
891//
892// const char c_szName[] = "texture.jpg";
893// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
894cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
895cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
896cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
897cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
898
899cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
900cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
901cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
902cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
903
904cpp_quote("#define D3D_COMPONENT_MASK_X 1")
905cpp_quote("#define D3D_COMPONENT_MASK_Y 2")
906cpp_quote("#define D3D_COMPONENT_MASK_Z 4")
907cpp_quote("#define D3D_COMPONENT_MASK_W 8")
908
909cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
910cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
911
diff --git a/contrib/DirectX-Headers/include/directx/d3dx12.h b/contrib/DirectX-Headers/include/directx/d3dx12.h
new file mode 100644
index 0000000..b135598
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/d3dx12.h
@@ -0,0 +1,4049 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_H__
9#define __D3DX12_H__
10
11#include "d3d12.h"
12
13#if defined( __cplusplus )
14
15struct CD3DX12_DEFAULT {};
16extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
17
18//------------------------------------------------------------------------------------------------
19inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
20{
21 return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
22 l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
23}
24
25//------------------------------------------------------------------------------------------------
26inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
27{ return !( l == r ); }
28
29//------------------------------------------------------------------------------------------------
30struct CD3DX12_RECT : public D3D12_RECT
31{
32 CD3DX12_RECT() = default;
33 explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
34 D3D12_RECT( o )
35 {}
36 explicit CD3DX12_RECT(
37 LONG Left,
38 LONG Top,
39 LONG Right,
40 LONG Bottom ) noexcept
41 {
42 left = Left;
43 top = Top;
44 right = Right;
45 bottom = Bottom;
46 }
47};
48
49//------------------------------------------------------------------------------------------------
50struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
51{
52 CD3DX12_VIEWPORT() = default;
53 explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
54 D3D12_VIEWPORT( o )
55 {}
56 explicit CD3DX12_VIEWPORT(
57 FLOAT topLeftX,
58 FLOAT topLeftY,
59 FLOAT width,
60 FLOAT height,
61 FLOAT minDepth = D3D12_MIN_DEPTH,
62 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
63 {
64 TopLeftX = topLeftX;
65 TopLeftY = topLeftY;
66 Width = width;
67 Height = height;
68 MinDepth = minDepth;
69 MaxDepth = maxDepth;
70 }
71 explicit CD3DX12_VIEWPORT(
72 _In_ ID3D12Resource* pResource,
73 UINT mipSlice = 0,
74 FLOAT topLeftX = 0.0f,
75 FLOAT topLeftY = 0.0f,
76 FLOAT minDepth = D3D12_MIN_DEPTH,
77 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
78 {
79 auto Desc = pResource->GetDesc();
80 const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
81 const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
82 switch (Desc.Dimension)
83 {
84 case D3D12_RESOURCE_DIMENSION_BUFFER:
85 TopLeftX = topLeftX;
86 TopLeftY = 0.0f;
87 Width = float(Desc.Width) - topLeftX;
88 Height = 1.0f;
89 break;
90 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
91 TopLeftX = topLeftX;
92 TopLeftY = 0.0f;
93 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
94 Height = 1.0f;
95 break;
96 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
97 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
98 TopLeftX = topLeftX;
99 TopLeftY = topLeftY;
100 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
101 Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
102 break;
103 default: break;
104 }
105
106 MinDepth = minDepth;
107 MaxDepth = maxDepth;
108 }
109};
110
111//------------------------------------------------------------------------------------------------
112struct CD3DX12_BOX : public D3D12_BOX
113{
114 CD3DX12_BOX() = default;
115 explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
116 D3D12_BOX( o )
117 {}
118 explicit CD3DX12_BOX(
119 LONG Left,
120 LONG Right ) noexcept
121 {
122 left = static_cast<UINT>(Left);
123 top = 0;
124 front = 0;
125 right = static_cast<UINT>(Right);
126 bottom = 1;
127 back = 1;
128 }
129 explicit CD3DX12_BOX(
130 LONG Left,
131 LONG Top,
132 LONG Right,
133 LONG Bottom ) noexcept
134 {
135 left = static_cast<UINT>(Left);
136 top = static_cast<UINT>(Top);
137 front = 0;
138 right = static_cast<UINT>(Right);
139 bottom = static_cast<UINT>(Bottom);
140 back = 1;
141 }
142 explicit CD3DX12_BOX(
143 LONG Left,
144 LONG Top,
145 LONG Front,
146 LONG Right,
147 LONG Bottom,
148 LONG Back ) noexcept
149 {
150 left = static_cast<UINT>(Left);
151 top = static_cast<UINT>(Top);
152 front = static_cast<UINT>(Front);
153 right = static_cast<UINT>(Right);
154 bottom = static_cast<UINT>(Bottom);
155 back = static_cast<UINT>(Back);
156 }
157};
158inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
159{
160 return l.left == r.left && l.top == r.top && l.front == r.front &&
161 l.right == r.right && l.bottom == r.bottom && l.back == r.back;
162}
163inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
164{ return !( l == r ); }
165
166//------------------------------------------------------------------------------------------------
167struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
168{
169 CD3DX12_DEPTH_STENCIL_DESC() = default;
170 explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
171 D3D12_DEPTH_STENCIL_DESC( o )
172 {}
173 explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
174 {
175 DepthEnable = TRUE;
176 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
177 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
178 StencilEnable = FALSE;
179 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
180 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
181 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
182 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
183 FrontFace = defaultStencilOp;
184 BackFace = defaultStencilOp;
185 }
186 explicit CD3DX12_DEPTH_STENCIL_DESC(
187 BOOL depthEnable,
188 D3D12_DEPTH_WRITE_MASK depthWriteMask,
189 D3D12_COMPARISON_FUNC depthFunc,
190 BOOL stencilEnable,
191 UINT8 stencilReadMask,
192 UINT8 stencilWriteMask,
193 D3D12_STENCIL_OP frontStencilFailOp,
194 D3D12_STENCIL_OP frontStencilDepthFailOp,
195 D3D12_STENCIL_OP frontStencilPassOp,
196 D3D12_COMPARISON_FUNC frontStencilFunc,
197 D3D12_STENCIL_OP backStencilFailOp,
198 D3D12_STENCIL_OP backStencilDepthFailOp,
199 D3D12_STENCIL_OP backStencilPassOp,
200 D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
201 {
202 DepthEnable = depthEnable;
203 DepthWriteMask = depthWriteMask;
204 DepthFunc = depthFunc;
205 StencilEnable = stencilEnable;
206 StencilReadMask = stencilReadMask;
207 StencilWriteMask = stencilWriteMask;
208 FrontFace.StencilFailOp = frontStencilFailOp;
209 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
210 FrontFace.StencilPassOp = frontStencilPassOp;
211 FrontFace.StencilFunc = frontStencilFunc;
212 BackFace.StencilFailOp = backStencilFailOp;
213 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
214 BackFace.StencilPassOp = backStencilPassOp;
215 BackFace.StencilFunc = backStencilFunc;
216 }
217};
218
219//------------------------------------------------------------------------------------------------
220struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
221{
222 CD3DX12_DEPTH_STENCIL_DESC1() = default;
223 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
224 D3D12_DEPTH_STENCIL_DESC1( o )
225 {}
226 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
227 {
228 DepthEnable = o.DepthEnable;
229 DepthWriteMask = o.DepthWriteMask;
230 DepthFunc = o.DepthFunc;
231 StencilEnable = o.StencilEnable;
232 StencilReadMask = o.StencilReadMask;
233 StencilWriteMask = o.StencilWriteMask;
234 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
235 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
236 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
237 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
238 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
239 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
240 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
241 BackFace.StencilFunc = o.BackFace.StencilFunc;
242 DepthBoundsTestEnable = FALSE;
243 }
244 explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
245 {
246 DepthEnable = TRUE;
247 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
248 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
249 StencilEnable = FALSE;
250 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
251 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
252 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
253 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
254 FrontFace = defaultStencilOp;
255 BackFace = defaultStencilOp;
256 DepthBoundsTestEnable = FALSE;
257 }
258 explicit CD3DX12_DEPTH_STENCIL_DESC1(
259 BOOL depthEnable,
260 D3D12_DEPTH_WRITE_MASK depthWriteMask,
261 D3D12_COMPARISON_FUNC depthFunc,
262 BOOL stencilEnable,
263 UINT8 stencilReadMask,
264 UINT8 stencilWriteMask,
265 D3D12_STENCIL_OP frontStencilFailOp,
266 D3D12_STENCIL_OP frontStencilDepthFailOp,
267 D3D12_STENCIL_OP frontStencilPassOp,
268 D3D12_COMPARISON_FUNC frontStencilFunc,
269 D3D12_STENCIL_OP backStencilFailOp,
270 D3D12_STENCIL_OP backStencilDepthFailOp,
271 D3D12_STENCIL_OP backStencilPassOp,
272 D3D12_COMPARISON_FUNC backStencilFunc,
273 BOOL depthBoundsTestEnable ) noexcept
274 {
275 DepthEnable = depthEnable;
276 DepthWriteMask = depthWriteMask;
277 DepthFunc = depthFunc;
278 StencilEnable = stencilEnable;
279 StencilReadMask = stencilReadMask;
280 StencilWriteMask = stencilWriteMask;
281 FrontFace.StencilFailOp = frontStencilFailOp;
282 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
283 FrontFace.StencilPassOp = frontStencilPassOp;
284 FrontFace.StencilFunc = frontStencilFunc;
285 BackFace.StencilFailOp = backStencilFailOp;
286 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
287 BackFace.StencilPassOp = backStencilPassOp;
288 BackFace.StencilFunc = backStencilFunc;
289 DepthBoundsTestEnable = depthBoundsTestEnable;
290 }
291 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
292 {
293 D3D12_DEPTH_STENCIL_DESC D;
294 D.DepthEnable = DepthEnable;
295 D.DepthWriteMask = DepthWriteMask;
296 D.DepthFunc = DepthFunc;
297 D.StencilEnable = StencilEnable;
298 D.StencilReadMask = StencilReadMask;
299 D.StencilWriteMask = StencilWriteMask;
300 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
301 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
302 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
303 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
304 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
305 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
306 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
307 D.BackFace.StencilFunc = BackFace.StencilFunc;
308 return D;
309 }
310};
311
312//------------------------------------------------------------------------------------------------
313struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
314{
315 CD3DX12_BLEND_DESC() = default;
316 explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
317 D3D12_BLEND_DESC( o )
318 {}
319 explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
320 {
321 AlphaToCoverageEnable = FALSE;
322 IndependentBlendEnable = FALSE;
323 const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
324 {
325 FALSE,FALSE,
326 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
327 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
328 D3D12_LOGIC_OP_NOOP,
329 D3D12_COLOR_WRITE_ENABLE_ALL,
330 };
331 for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
332 RenderTarget[ i ] = defaultRenderTargetBlendDesc;
333 }
334};
335
336//------------------------------------------------------------------------------------------------
337struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
338{
339 CD3DX12_RASTERIZER_DESC() = default;
340 explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
341 D3D12_RASTERIZER_DESC( o )
342 {}
343 explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
344 {
345 FillMode = D3D12_FILL_MODE_SOLID;
346 CullMode = D3D12_CULL_MODE_BACK;
347 FrontCounterClockwise = FALSE;
348 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
349 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
350 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
351 DepthClipEnable = TRUE;
352 MultisampleEnable = FALSE;
353 AntialiasedLineEnable = FALSE;
354 ForcedSampleCount = 0;
355 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
356 }
357 explicit CD3DX12_RASTERIZER_DESC(
358 D3D12_FILL_MODE fillMode,
359 D3D12_CULL_MODE cullMode,
360 BOOL frontCounterClockwise,
361 INT depthBias,
362 FLOAT depthBiasClamp,
363 FLOAT slopeScaledDepthBias,
364 BOOL depthClipEnable,
365 BOOL multisampleEnable,
366 BOOL antialiasedLineEnable,
367 UINT forcedSampleCount,
368 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
369 {
370 FillMode = fillMode;
371 CullMode = cullMode;
372 FrontCounterClockwise = frontCounterClockwise;
373 DepthBias = depthBias;
374 DepthBiasClamp = depthBiasClamp;
375 SlopeScaledDepthBias = slopeScaledDepthBias;
376 DepthClipEnable = depthClipEnable;
377 MultisampleEnable = multisampleEnable;
378 AntialiasedLineEnable = antialiasedLineEnable;
379 ForcedSampleCount = forcedSampleCount;
380 ConservativeRaster = conservativeRaster;
381 }
382};
383
384//------------------------------------------------------------------------------------------------
385struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
386{
387 CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
388 explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
389 D3D12_RESOURCE_ALLOCATION_INFO( o )
390 {}
391 CD3DX12_RESOURCE_ALLOCATION_INFO(
392 UINT64 size,
393 UINT64 alignment ) noexcept
394 {
395 SizeInBytes = size;
396 Alignment = alignment;
397 }
398};
399
400//------------------------------------------------------------------------------------------------
401struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
402{
403 CD3DX12_HEAP_PROPERTIES() = default;
404 explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
405 D3D12_HEAP_PROPERTIES(o)
406 {}
407 CD3DX12_HEAP_PROPERTIES(
408 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
409 D3D12_MEMORY_POOL memoryPoolPreference,
410 UINT creationNodeMask = 1,
411 UINT nodeMask = 1 ) noexcept
412 {
413 Type = D3D12_HEAP_TYPE_CUSTOM;
414 CPUPageProperty = cpuPageProperty;
415 MemoryPoolPreference = memoryPoolPreference;
416 CreationNodeMask = creationNodeMask;
417 VisibleNodeMask = nodeMask;
418 }
419 explicit CD3DX12_HEAP_PROPERTIES(
420 D3D12_HEAP_TYPE type,
421 UINT creationNodeMask = 1,
422 UINT nodeMask = 1 ) noexcept
423 {
424 Type = type;
425 CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
426 MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
427 CreationNodeMask = creationNodeMask;
428 VisibleNodeMask = nodeMask;
429 }
430 bool IsCPUAccessible() const noexcept
431 {
432 return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK || (Type == D3D12_HEAP_TYPE_CUSTOM &&
433 (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
434 }
435};
436inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
437{
438 return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
439 l.MemoryPoolPreference == r.MemoryPoolPreference &&
440 l.CreationNodeMask == r.CreationNodeMask &&
441 l.VisibleNodeMask == r.VisibleNodeMask;
442}
443inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
444{ return !( l == r ); }
445
446//------------------------------------------------------------------------------------------------
447struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
448{
449 CD3DX12_HEAP_DESC() = default;
450 explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
451 D3D12_HEAP_DESC(o)
452 {}
453 CD3DX12_HEAP_DESC(
454 UINT64 size,
455 D3D12_HEAP_PROPERTIES properties,
456 UINT64 alignment = 0,
457 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
458 {
459 SizeInBytes = size;
460 Properties = properties;
461 Alignment = alignment;
462 Flags = flags;
463 }
464 CD3DX12_HEAP_DESC(
465 UINT64 size,
466 D3D12_HEAP_TYPE type,
467 UINT64 alignment = 0,
468 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
469 {
470 SizeInBytes = size;
471 Properties = CD3DX12_HEAP_PROPERTIES( type );
472 Alignment = alignment;
473 Flags = flags;
474 }
475 CD3DX12_HEAP_DESC(
476 UINT64 size,
477 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
478 D3D12_MEMORY_POOL memoryPoolPreference,
479 UINT64 alignment = 0,
480 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
481 {
482 SizeInBytes = size;
483 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
484 Alignment = alignment;
485 Flags = flags;
486 }
487 CD3DX12_HEAP_DESC(
488 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
489 D3D12_HEAP_PROPERTIES properties,
490 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
491 {
492 SizeInBytes = resAllocInfo.SizeInBytes;
493 Properties = properties;
494 Alignment = resAllocInfo.Alignment;
495 Flags = flags;
496 }
497 CD3DX12_HEAP_DESC(
498 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
499 D3D12_HEAP_TYPE type,
500 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
501 {
502 SizeInBytes = resAllocInfo.SizeInBytes;
503 Properties = CD3DX12_HEAP_PROPERTIES( type );
504 Alignment = resAllocInfo.Alignment;
505 Flags = flags;
506 }
507 CD3DX12_HEAP_DESC(
508 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
509 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
510 D3D12_MEMORY_POOL memoryPoolPreference,
511 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
512 {
513 SizeInBytes = resAllocInfo.SizeInBytes;
514 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
515 Alignment = resAllocInfo.Alignment;
516 Flags = flags;
517 }
518 bool IsCPUAccessible() const noexcept
519 { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
520};
521inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
522{
523 return l.SizeInBytes == r.SizeInBytes &&
524 l.Properties == r.Properties &&
525 l.Alignment == r.Alignment &&
526 l.Flags == r.Flags;
527}
528inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
529{ return !( l == r ); }
530
531//------------------------------------------------------------------------------------------------
532struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
533{
534 CD3DX12_CLEAR_VALUE() = default;
535 explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
536 D3D12_CLEAR_VALUE(o)
537 {}
538 CD3DX12_CLEAR_VALUE(
539 DXGI_FORMAT format,
540 const FLOAT color[4] ) noexcept
541 {
542 Format = format;
543 memcpy( Color, color, sizeof( Color ) );
544 }
545 CD3DX12_CLEAR_VALUE(
546 DXGI_FORMAT format,
547 FLOAT depth,
548 UINT8 stencil ) noexcept
549 {
550 Format = format;
551 memset( &Color, 0, sizeof( Color ) );
552 /* Use memcpy to preserve NAN values */
553 memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
554 DepthStencil.Stencil = stencil;
555 }
556};
557
558//------------------------------------------------------------------------------------------------
559struct CD3DX12_RANGE : public D3D12_RANGE
560{
561 CD3DX12_RANGE() = default;
562 explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
563 D3D12_RANGE(o)
564 {}
565 CD3DX12_RANGE(
566 SIZE_T begin,
567 SIZE_T end ) noexcept
568 {
569 Begin = begin;
570 End = end;
571 }
572};
573
574//------------------------------------------------------------------------------------------------
575struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
576{
577 CD3DX12_RANGE_UINT64() = default;
578 explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
579 D3D12_RANGE_UINT64(o)
580 {}
581 CD3DX12_RANGE_UINT64(
582 UINT64 begin,
583 UINT64 end ) noexcept
584 {
585 Begin = begin;
586 End = end;
587 }
588};
589
590//------------------------------------------------------------------------------------------------
591struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
592{
593 CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
594 explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
595 D3D12_SUBRESOURCE_RANGE_UINT64(o)
596 {}
597 CD3DX12_SUBRESOURCE_RANGE_UINT64(
598 UINT subresource,
599 const D3D12_RANGE_UINT64& range ) noexcept
600 {
601 Subresource = subresource;
602 Range = range;
603 }
604 CD3DX12_SUBRESOURCE_RANGE_UINT64(
605 UINT subresource,
606 UINT64 begin,
607 UINT64 end ) noexcept
608 {
609 Subresource = subresource;
610 Range.Begin = begin;
611 Range.End = end;
612 }
613};
614
615//------------------------------------------------------------------------------------------------
616struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
617{
618 CD3DX12_SHADER_BYTECODE() = default;
619 explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
620 D3D12_SHADER_BYTECODE(o)
621 {}
622 CD3DX12_SHADER_BYTECODE(
623 _In_ ID3DBlob* pShaderBlob ) noexcept
624 {
625 pShaderBytecode = pShaderBlob->GetBufferPointer();
626 BytecodeLength = pShaderBlob->GetBufferSize();
627 }
628 CD3DX12_SHADER_BYTECODE(
629 const void* _pShaderBytecode,
630 SIZE_T bytecodeLength ) noexcept
631 {
632 pShaderBytecode = _pShaderBytecode;
633 BytecodeLength = bytecodeLength;
634 }
635};
636
637//------------------------------------------------------------------------------------------------
638struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
639{
640 CD3DX12_TILED_RESOURCE_COORDINATE() = default;
641 explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
642 D3D12_TILED_RESOURCE_COORDINATE(o)
643 {}
644 CD3DX12_TILED_RESOURCE_COORDINATE(
645 UINT x,
646 UINT y,
647 UINT z,
648 UINT subresource ) noexcept
649 {
650 X = x;
651 Y = y;
652 Z = z;
653 Subresource = subresource;
654 }
655};
656
657//------------------------------------------------------------------------------------------------
658struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
659{
660 CD3DX12_TILE_REGION_SIZE() = default;
661 explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
662 D3D12_TILE_REGION_SIZE(o)
663 {}
664 CD3DX12_TILE_REGION_SIZE(
665 UINT numTiles,
666 BOOL useBox,
667 UINT width,
668 UINT16 height,
669 UINT16 depth ) noexcept
670 {
671 NumTiles = numTiles;
672 UseBox = useBox;
673 Width = width;
674 Height = height;
675 Depth = depth;
676 }
677};
678
679//------------------------------------------------------------------------------------------------
680struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
681{
682 CD3DX12_SUBRESOURCE_TILING() = default;
683 explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
684 D3D12_SUBRESOURCE_TILING(o)
685 {}
686 CD3DX12_SUBRESOURCE_TILING(
687 UINT widthInTiles,
688 UINT16 heightInTiles,
689 UINT16 depthInTiles,
690 UINT startTileIndexInOverallResource ) noexcept
691 {
692 WidthInTiles = widthInTiles;
693 HeightInTiles = heightInTiles;
694 DepthInTiles = depthInTiles;
695 StartTileIndexInOverallResource = startTileIndexInOverallResource;
696 }
697};
698
699//------------------------------------------------------------------------------------------------
700struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
701{
702 CD3DX12_TILE_SHAPE() = default;
703 explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
704 D3D12_TILE_SHAPE(o)
705 {}
706 CD3DX12_TILE_SHAPE(
707 UINT widthInTexels,
708 UINT heightInTexels,
709 UINT depthInTexels ) noexcept
710 {
711 WidthInTexels = widthInTexels;
712 HeightInTexels = heightInTexels;
713 DepthInTexels = depthInTexels;
714 }
715};
716
717//------------------------------------------------------------------------------------------------
718struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
719{
720 CD3DX12_RESOURCE_BARRIER() = default;
721 explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
722 D3D12_RESOURCE_BARRIER(o)
723 {}
724 static inline CD3DX12_RESOURCE_BARRIER Transition(
725 _In_ ID3D12Resource* pResource,
726 D3D12_RESOURCE_STATES stateBefore,
727 D3D12_RESOURCE_STATES stateAfter,
728 UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
729 D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
730 {
731 CD3DX12_RESOURCE_BARRIER result = {};
732 D3D12_RESOURCE_BARRIER &barrier = result;
733 result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
734 result.Flags = flags;
735 barrier.Transition.pResource = pResource;
736 barrier.Transition.StateBefore = stateBefore;
737 barrier.Transition.StateAfter = stateAfter;
738 barrier.Transition.Subresource = subresource;
739 return result;
740 }
741 static inline CD3DX12_RESOURCE_BARRIER Aliasing(
742 _In_ ID3D12Resource* pResourceBefore,
743 _In_ ID3D12Resource* pResourceAfter) noexcept
744 {
745 CD3DX12_RESOURCE_BARRIER result = {};
746 D3D12_RESOURCE_BARRIER &barrier = result;
747 result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
748 barrier.Aliasing.pResourceBefore = pResourceBefore;
749 barrier.Aliasing.pResourceAfter = pResourceAfter;
750 return result;
751 }
752 static inline CD3DX12_RESOURCE_BARRIER UAV(
753 _In_ ID3D12Resource* pResource) noexcept
754 {
755 CD3DX12_RESOURCE_BARRIER result = {};
756 D3D12_RESOURCE_BARRIER &barrier = result;
757 result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
758 barrier.UAV.pResource = pResource;
759 return result;
760 }
761};
762
763//------------------------------------------------------------------------------------------------
764struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
765{
766 CD3DX12_PACKED_MIP_INFO() = default;
767 explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
768 D3D12_PACKED_MIP_INFO(o)
769 {}
770 CD3DX12_PACKED_MIP_INFO(
771 UINT8 numStandardMips,
772 UINT8 numPackedMips,
773 UINT numTilesForPackedMips,
774 UINT startTileIndexInOverallResource ) noexcept
775 {
776 NumStandardMips = numStandardMips;
777 NumPackedMips = numPackedMips;
778 NumTilesForPackedMips = numTilesForPackedMips;
779 StartTileIndexInOverallResource = startTileIndexInOverallResource;
780 }
781};
782
783//------------------------------------------------------------------------------------------------
784struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
785{
786 CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
787 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
788 D3D12_SUBRESOURCE_FOOTPRINT(o)
789 {}
790 CD3DX12_SUBRESOURCE_FOOTPRINT(
791 DXGI_FORMAT format,
792 UINT width,
793 UINT height,
794 UINT depth,
795 UINT rowPitch ) noexcept
796 {
797 Format = format;
798 Width = width;
799 Height = height;
800 Depth = depth;
801 RowPitch = rowPitch;
802 }
803 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
804 const D3D12_RESOURCE_DESC& resDesc,
805 UINT rowPitch ) noexcept
806 {
807 Format = resDesc.Format;
808 Width = UINT( resDesc.Width );
809 Height = resDesc.Height;
810 Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1);
811 RowPitch = rowPitch;
812 }
813};
814
815//------------------------------------------------------------------------------------------------
816struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
817{
818 CD3DX12_TEXTURE_COPY_LOCATION() = default;
819 explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
820 D3D12_TEXTURE_COPY_LOCATION(o)
821 {}
822 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
823 {
824 pResource = pRes;
825 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
826 PlacedFootprint = {};
827 }
828 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
829 {
830 pResource = pRes;
831 Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
832 PlacedFootprint = Footprint;
833 }
834 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
835 {
836 pResource = pRes;
837 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
838 PlacedFootprint = {};
839 SubresourceIndex = Sub;
840 }
841};
842
843//------------------------------------------------------------------------------------------------
844struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
845{
846 CD3DX12_DESCRIPTOR_RANGE() = default;
847 explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
848 D3D12_DESCRIPTOR_RANGE(o)
849 {}
850 CD3DX12_DESCRIPTOR_RANGE(
851 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
852 UINT numDescriptors,
853 UINT baseShaderRegister,
854 UINT registerSpace = 0,
855 UINT offsetInDescriptorsFromTableStart =
856 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
857 {
858 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
859 }
860
861 inline void Init(
862 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
863 UINT numDescriptors,
864 UINT baseShaderRegister,
865 UINT registerSpace = 0,
866 UINT offsetInDescriptorsFromTableStart =
867 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
868 {
869 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
870 }
871
872 static inline void Init(
873 _Out_ D3D12_DESCRIPTOR_RANGE &range,
874 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
875 UINT numDescriptors,
876 UINT baseShaderRegister,
877 UINT registerSpace = 0,
878 UINT offsetInDescriptorsFromTableStart =
879 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
880 {
881 range.RangeType = rangeType;
882 range.NumDescriptors = numDescriptors;
883 range.BaseShaderRegister = baseShaderRegister;
884 range.RegisterSpace = registerSpace;
885 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
886 }
887};
888
889//------------------------------------------------------------------------------------------------
890struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
891{
892 CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
893 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
894 D3D12_ROOT_DESCRIPTOR_TABLE(o)
895 {}
896 CD3DX12_ROOT_DESCRIPTOR_TABLE(
897 UINT numDescriptorRanges,
898 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
899 {
900 Init(numDescriptorRanges, _pDescriptorRanges);
901 }
902
903 inline void Init(
904 UINT numDescriptorRanges,
905 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
906 {
907 Init(*this, numDescriptorRanges, _pDescriptorRanges);
908 }
909
910 static inline void Init(
911 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
912 UINT numDescriptorRanges,
913 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
914 {
915 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
916 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
917 }
918};
919
920//------------------------------------------------------------------------------------------------
921struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
922{
923 CD3DX12_ROOT_CONSTANTS() = default;
924 explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
925 D3D12_ROOT_CONSTANTS(o)
926 {}
927 CD3DX12_ROOT_CONSTANTS(
928 UINT num32BitValues,
929 UINT shaderRegister,
930 UINT registerSpace = 0) noexcept
931 {
932 Init(num32BitValues, shaderRegister, registerSpace);
933 }
934
935 inline void Init(
936 UINT num32BitValues,
937 UINT shaderRegister,
938 UINT registerSpace = 0) noexcept
939 {
940 Init(*this, num32BitValues, shaderRegister, registerSpace);
941 }
942
943 static inline void Init(
944 _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
945 UINT num32BitValues,
946 UINT shaderRegister,
947 UINT registerSpace = 0) noexcept
948 {
949 rootConstants.Num32BitValues = num32BitValues;
950 rootConstants.ShaderRegister = shaderRegister;
951 rootConstants.RegisterSpace = registerSpace;
952 }
953};
954
955//------------------------------------------------------------------------------------------------
956struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
957{
958 CD3DX12_ROOT_DESCRIPTOR() = default;
959 explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
960 D3D12_ROOT_DESCRIPTOR(o)
961 {}
962 CD3DX12_ROOT_DESCRIPTOR(
963 UINT shaderRegister,
964 UINT registerSpace = 0) noexcept
965 {
966 Init(shaderRegister, registerSpace);
967 }
968
969 inline void Init(
970 UINT shaderRegister,
971 UINT registerSpace = 0) noexcept
972 {
973 Init(*this, shaderRegister, registerSpace);
974 }
975
976 static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
977 {
978 table.ShaderRegister = shaderRegister;
979 table.RegisterSpace = registerSpace;
980 }
981};
982
983//------------------------------------------------------------------------------------------------
984struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
985{
986 CD3DX12_ROOT_PARAMETER() = default;
987 explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
988 D3D12_ROOT_PARAMETER(o)
989 {}
990
991 static inline void InitAsDescriptorTable(
992 _Out_ D3D12_ROOT_PARAMETER &rootParam,
993 UINT numDescriptorRanges,
994 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
995 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
996 {
997 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
998 rootParam.ShaderVisibility = visibility;
999 CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
1000 }
1001
1002 static inline void InitAsConstants(
1003 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1004 UINT num32BitValues,
1005 UINT shaderRegister,
1006 UINT registerSpace = 0,
1007 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1008 {
1009 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
1010 rootParam.ShaderVisibility = visibility;
1011 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
1012 }
1013
1014 static inline void InitAsConstantBufferView(
1015 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1016 UINT shaderRegister,
1017 UINT registerSpace = 0,
1018 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1019 {
1020 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
1021 rootParam.ShaderVisibility = visibility;
1022 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1023 }
1024
1025 static inline void InitAsShaderResourceView(
1026 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1027 UINT shaderRegister,
1028 UINT registerSpace = 0,
1029 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1030 {
1031 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
1032 rootParam.ShaderVisibility = visibility;
1033 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1034 }
1035
1036 static inline void InitAsUnorderedAccessView(
1037 _Out_ D3D12_ROOT_PARAMETER &rootParam,
1038 UINT shaderRegister,
1039 UINT registerSpace = 0,
1040 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1041 {
1042 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
1043 rootParam.ShaderVisibility = visibility;
1044 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
1045 }
1046
1047 inline void InitAsDescriptorTable(
1048 UINT numDescriptorRanges,
1049 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
1050 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1051 {
1052 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
1053 }
1054
1055 inline void InitAsConstants(
1056 UINT num32BitValues,
1057 UINT shaderRegister,
1058 UINT registerSpace = 0,
1059 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1060 {
1061 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
1062 }
1063
1064 inline void InitAsConstantBufferView(
1065 UINT shaderRegister,
1066 UINT registerSpace = 0,
1067 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1068 {
1069 InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
1070 }
1071
1072 inline void InitAsShaderResourceView(
1073 UINT shaderRegister,
1074 UINT registerSpace = 0,
1075 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1076 {
1077 InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
1078 }
1079
1080 inline void InitAsUnorderedAccessView(
1081 UINT shaderRegister,
1082 UINT registerSpace = 0,
1083 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1084 {
1085 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
1086 }
1087};
1088
1089//------------------------------------------------------------------------------------------------
1090struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
1091{
1092 CD3DX12_STATIC_SAMPLER_DESC() = default;
1093 explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
1094 D3D12_STATIC_SAMPLER_DESC(o)
1095 {}
1096 CD3DX12_STATIC_SAMPLER_DESC(
1097 UINT shaderRegister,
1098 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1099 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1100 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1101 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1102 FLOAT mipLODBias = 0,
1103 UINT maxAnisotropy = 16,
1104 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1105 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1106 FLOAT minLOD = 0.f,
1107 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1108 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1109 UINT registerSpace = 0) noexcept
1110 {
1111 Init(
1112 shaderRegister,
1113 filter,
1114 addressU,
1115 addressV,
1116 addressW,
1117 mipLODBias,
1118 maxAnisotropy,
1119 comparisonFunc,
1120 borderColor,
1121 minLOD,
1122 maxLOD,
1123 shaderVisibility,
1124 registerSpace);
1125 }
1126
1127 static inline void Init(
1128 _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
1129 UINT shaderRegister,
1130 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1131 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1132 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1133 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1134 FLOAT mipLODBias = 0,
1135 UINT maxAnisotropy = 16,
1136 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1137 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1138 FLOAT minLOD = 0.f,
1139 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1140 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1141 UINT registerSpace = 0) noexcept
1142 {
1143 samplerDesc.ShaderRegister = shaderRegister;
1144 samplerDesc.Filter = filter;
1145 samplerDesc.AddressU = addressU;
1146 samplerDesc.AddressV = addressV;
1147 samplerDesc.AddressW = addressW;
1148 samplerDesc.MipLODBias = mipLODBias;
1149 samplerDesc.MaxAnisotropy = maxAnisotropy;
1150 samplerDesc.ComparisonFunc = comparisonFunc;
1151 samplerDesc.BorderColor = borderColor;
1152 samplerDesc.MinLOD = minLOD;
1153 samplerDesc.MaxLOD = maxLOD;
1154 samplerDesc.ShaderVisibility = shaderVisibility;
1155 samplerDesc.RegisterSpace = registerSpace;
1156 }
1157 inline void Init(
1158 UINT shaderRegister,
1159 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
1160 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1161 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1162 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
1163 FLOAT mipLODBias = 0,
1164 UINT maxAnisotropy = 16,
1165 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
1166 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
1167 FLOAT minLOD = 0.f,
1168 FLOAT maxLOD = D3D12_FLOAT32_MAX,
1169 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
1170 UINT registerSpace = 0) noexcept
1171 {
1172 Init(
1173 *this,
1174 shaderRegister,
1175 filter,
1176 addressU,
1177 addressV,
1178 addressW,
1179 mipLODBias,
1180 maxAnisotropy,
1181 comparisonFunc,
1182 borderColor,
1183 minLOD,
1184 maxLOD,
1185 shaderVisibility,
1186 registerSpace);
1187 }
1188
1189};
1190
1191//------------------------------------------------------------------------------------------------
1192struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
1193{
1194 CD3DX12_ROOT_SIGNATURE_DESC() = default;
1195 explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
1196 D3D12_ROOT_SIGNATURE_DESC(o)
1197 {}
1198 CD3DX12_ROOT_SIGNATURE_DESC(
1199 UINT numParameters,
1200 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1201 UINT numStaticSamplers = 0,
1202 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1203 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1204 {
1205 Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1206 }
1207 CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
1208 {
1209 Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
1210 }
1211
1212 inline void Init(
1213 UINT numParameters,
1214 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1215 UINT numStaticSamplers = 0,
1216 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1217 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1218 {
1219 Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1220 }
1221
1222 static inline void Init(
1223 _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
1224 UINT numParameters,
1225 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1226 UINT numStaticSamplers = 0,
1227 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1228 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1229 {
1230 desc.NumParameters = numParameters;
1231 desc.pParameters = _pParameters;
1232 desc.NumStaticSamplers = numStaticSamplers;
1233 desc.pStaticSamplers = _pStaticSamplers;
1234 desc.Flags = flags;
1235 }
1236};
1237
1238//------------------------------------------------------------------------------------------------
1239struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
1240{
1241 CD3DX12_DESCRIPTOR_RANGE1() = default;
1242 explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
1243 D3D12_DESCRIPTOR_RANGE1(o)
1244 {}
1245 CD3DX12_DESCRIPTOR_RANGE1(
1246 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1247 UINT numDescriptors,
1248 UINT baseShaderRegister,
1249 UINT registerSpace = 0,
1250 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1251 UINT offsetInDescriptorsFromTableStart =
1252 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1253 {
1254 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
1255 }
1256
1257 inline void Init(
1258 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1259 UINT numDescriptors,
1260 UINT baseShaderRegister,
1261 UINT registerSpace = 0,
1262 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1263 UINT offsetInDescriptorsFromTableStart =
1264 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1265 {
1266 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
1267 }
1268
1269 static inline void Init(
1270 _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
1271 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
1272 UINT numDescriptors,
1273 UINT baseShaderRegister,
1274 UINT registerSpace = 0,
1275 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
1276 UINT offsetInDescriptorsFromTableStart =
1277 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
1278 {
1279 range.RangeType = rangeType;
1280 range.NumDescriptors = numDescriptors;
1281 range.BaseShaderRegister = baseShaderRegister;
1282 range.RegisterSpace = registerSpace;
1283 range.Flags = flags;
1284 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
1285 }
1286};
1287
1288//------------------------------------------------------------------------------------------------
1289struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
1290{
1291 CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
1292 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
1293 D3D12_ROOT_DESCRIPTOR_TABLE1(o)
1294 {}
1295 CD3DX12_ROOT_DESCRIPTOR_TABLE1(
1296 UINT numDescriptorRanges,
1297 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1298 {
1299 Init(numDescriptorRanges, _pDescriptorRanges);
1300 }
1301
1302 inline void Init(
1303 UINT numDescriptorRanges,
1304 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1305 {
1306 Init(*this, numDescriptorRanges, _pDescriptorRanges);
1307 }
1308
1309 static inline void Init(
1310 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
1311 UINT numDescriptorRanges,
1312 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
1313 {
1314 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
1315 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
1316 }
1317};
1318
1319//------------------------------------------------------------------------------------------------
1320struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
1321{
1322 CD3DX12_ROOT_DESCRIPTOR1() = default;
1323 explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
1324 D3D12_ROOT_DESCRIPTOR1(o)
1325 {}
1326 CD3DX12_ROOT_DESCRIPTOR1(
1327 UINT shaderRegister,
1328 UINT registerSpace = 0,
1329 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1330 {
1331 Init(shaderRegister, registerSpace, flags);
1332 }
1333
1334 inline void Init(
1335 UINT shaderRegister,
1336 UINT registerSpace = 0,
1337 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1338 {
1339 Init(*this, shaderRegister, registerSpace, flags);
1340 }
1341
1342 static inline void Init(
1343 _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
1344 UINT shaderRegister,
1345 UINT registerSpace = 0,
1346 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
1347 {
1348 table.ShaderRegister = shaderRegister;
1349 table.RegisterSpace = registerSpace;
1350 table.Flags = flags;
1351 }
1352};
1353
1354//------------------------------------------------------------------------------------------------
1355struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
1356{
1357 CD3DX12_ROOT_PARAMETER1() = default;
1358 explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
1359 D3D12_ROOT_PARAMETER1(o)
1360 {}
1361
1362 static inline void InitAsDescriptorTable(
1363 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1364 UINT numDescriptorRanges,
1365 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
1366 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1367 {
1368 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
1369 rootParam.ShaderVisibility = visibility;
1370 CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
1371 }
1372
1373 static inline void InitAsConstants(
1374 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1375 UINT num32BitValues,
1376 UINT shaderRegister,
1377 UINT registerSpace = 0,
1378 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1379 {
1380 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
1381 rootParam.ShaderVisibility = visibility;
1382 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
1383 }
1384
1385 static inline void InitAsConstantBufferView(
1386 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1387 UINT shaderRegister,
1388 UINT registerSpace = 0,
1389 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1390 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1391 {
1392 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
1393 rootParam.ShaderVisibility = visibility;
1394 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1395 }
1396
1397 static inline void InitAsShaderResourceView(
1398 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1399 UINT shaderRegister,
1400 UINT registerSpace = 0,
1401 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1402 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1403 {
1404 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
1405 rootParam.ShaderVisibility = visibility;
1406 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1407 }
1408
1409 static inline void InitAsUnorderedAccessView(
1410 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
1411 UINT shaderRegister,
1412 UINT registerSpace = 0,
1413 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1414 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1415 {
1416 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
1417 rootParam.ShaderVisibility = visibility;
1418 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
1419 }
1420
1421 inline void InitAsDescriptorTable(
1422 UINT numDescriptorRanges,
1423 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
1424 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1425 {
1426 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
1427 }
1428
1429 inline void InitAsConstants(
1430 UINT num32BitValues,
1431 UINT shaderRegister,
1432 UINT registerSpace = 0,
1433 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1434 {
1435 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
1436 }
1437
1438 inline void InitAsConstantBufferView(
1439 UINT shaderRegister,
1440 UINT registerSpace = 0,
1441 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1442 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1443 {
1444 InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
1445 }
1446
1447 inline void InitAsShaderResourceView(
1448 UINT shaderRegister,
1449 UINT registerSpace = 0,
1450 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1451 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1452 {
1453 InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
1454 }
1455
1456 inline void InitAsUnorderedAccessView(
1457 UINT shaderRegister,
1458 UINT registerSpace = 0,
1459 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
1460 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
1461 {
1462 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
1463 }
1464};
1465
1466//------------------------------------------------------------------------------------------------
1467struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
1468{
1469 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
1470 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
1471 D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
1472 {}
1473 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
1474 {
1475 Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
1476 Desc_1_0 = o;
1477 }
1478 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
1479 {
1480 Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
1481 Desc_1_1 = o;
1482 }
1483 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
1484 UINT numParameters,
1485 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1486 UINT numStaticSamplers = 0,
1487 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1488 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1489 {
1490 Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1491 }
1492 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
1493 UINT numParameters,
1494 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1495 UINT numStaticSamplers = 0,
1496 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1497 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1498 {
1499 Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1500 }
1501 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
1502 {
1503 Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
1504 }
1505
1506 inline void Init_1_0(
1507 UINT numParameters,
1508 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1509 UINT numStaticSamplers = 0,
1510 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1511 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1512 {
1513 Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1514 }
1515
1516 static inline void Init_1_0(
1517 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
1518 UINT numParameters,
1519 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
1520 UINT numStaticSamplers = 0,
1521 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1522 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1523 {
1524 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
1525 desc.Desc_1_0.NumParameters = numParameters;
1526 desc.Desc_1_0.pParameters = _pParameters;
1527 desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
1528 desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
1529 desc.Desc_1_0.Flags = flags;
1530 }
1531
1532 inline void Init_1_1(
1533 UINT numParameters,
1534 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1535 UINT numStaticSamplers = 0,
1536 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1537 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1538 {
1539 Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
1540 }
1541
1542 static inline void Init_1_1(
1543 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
1544 UINT numParameters,
1545 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
1546 UINT numStaticSamplers = 0,
1547 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
1548 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
1549 {
1550 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
1551 desc.Desc_1_1.NumParameters = numParameters;
1552 desc.Desc_1_1.pParameters = _pParameters;
1553 desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
1554 desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
1555 desc.Desc_1_1.Flags = flags;
1556 }
1557};
1558
1559//------------------------------------------------------------------------------------------------
1560struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
1561{
1562 CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
1563 explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
1564 D3D12_CPU_DESCRIPTOR_HANDLE(o)
1565 {}
1566 CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
1567 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
1568 {
1569 InitOffsetted(other, offsetScaledByIncrementSize);
1570 }
1571 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1572 {
1573 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1574 }
1575 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1576 {
1577 ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1578 return *this;
1579 }
1580 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
1581 {
1582 ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
1583 return *this;
1584 }
1585 bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
1586 {
1587 return (ptr == other.ptr);
1588 }
1589 bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
1590 {
1591 return (ptr != other.ptr);
1592 }
1593 CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
1594 {
1595 ptr = other.ptr;
1596 return *this;
1597 }
1598
1599 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1600 {
1601 InitOffsetted(*this, base, offsetScaledByIncrementSize);
1602 }
1603
1604 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1605 {
1606 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1607 }
1608
1609 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1610 {
1611 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
1612 }
1613
1614 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1615 {
1616 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1617 }
1618};
1619
1620//------------------------------------------------------------------------------------------------
1621struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
1622{
1623 CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
1624 explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
1625 D3D12_GPU_DESCRIPTOR_HANDLE(o)
1626 {}
1627 CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
1628 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
1629 {
1630 InitOffsetted(other, offsetScaledByIncrementSize);
1631 }
1632 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1633 {
1634 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
1635 }
1636 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1637 {
1638 ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1639 return *this;
1640 }
1641 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
1642 {
1643 ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
1644 return *this;
1645 }
1646 inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
1647 {
1648 return (ptr == other.ptr);
1649 }
1650 inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
1651 {
1652 return (ptr != other.ptr);
1653 }
1654 CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
1655 {
1656 ptr = other.ptr;
1657 return *this;
1658 }
1659
1660 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1661 {
1662 InitOffsetted(*this, base, offsetScaledByIncrementSize);
1663 }
1664
1665 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1666 {
1667 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
1668 }
1669
1670 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
1671 {
1672 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
1673 }
1674
1675 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
1676 {
1677 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
1678 }
1679};
1680
1681//------------------------------------------------------------------------------------------------
1682inline constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
1683{
1684 return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1685}
1686
1687//------------------------------------------------------------------------------------------------
1688template <typename T, typename U, typename V>
1689inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
1690{
1691 MipSlice = static_cast<T>(Subresource % MipLevels);
1692 ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
1693 PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
1694}
1695
1696//------------------------------------------------------------------------------------------------
1697inline UINT8 D3D12GetFormatPlaneCount(
1698 _In_ ID3D12Device* pDevice,
1699 DXGI_FORMAT Format
1700 ) noexcept
1701{
1702 D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
1703 if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1704 {
1705 return 0;
1706 }
1707 return formatInfo.PlaneCount;
1708}
1709
1710//------------------------------------------------------------------------------------------------
1711struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1712{
1713 CD3DX12_RESOURCE_DESC() = default;
1714 explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
1715 D3D12_RESOURCE_DESC( o )
1716 {}
1717 CD3DX12_RESOURCE_DESC(
1718 D3D12_RESOURCE_DIMENSION dimension,
1719 UINT64 alignment,
1720 UINT64 width,
1721 UINT height,
1722 UINT16 depthOrArraySize,
1723 UINT16 mipLevels,
1724 DXGI_FORMAT format,
1725 UINT sampleCount,
1726 UINT sampleQuality,
1727 D3D12_TEXTURE_LAYOUT layout,
1728 D3D12_RESOURCE_FLAGS flags ) noexcept
1729 {
1730 Dimension = dimension;
1731 Alignment = alignment;
1732 Width = width;
1733 Height = height;
1734 DepthOrArraySize = depthOrArraySize;
1735 MipLevels = mipLevels;
1736 Format = format;
1737 SampleDesc.Count = sampleCount;
1738 SampleDesc.Quality = sampleQuality;
1739 Layout = layout;
1740 Flags = flags;
1741 }
1742 static inline CD3DX12_RESOURCE_DESC Buffer(
1743 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1744 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1745 {
1746 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1747 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1748 }
1749 static inline CD3DX12_RESOURCE_DESC Buffer(
1750 UINT64 width,
1751 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1752 UINT64 alignment = 0 ) noexcept
1753 {
1754 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1755 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1756 }
1757 static inline CD3DX12_RESOURCE_DESC Tex1D(
1758 DXGI_FORMAT format,
1759 UINT64 width,
1760 UINT16 arraySize = 1,
1761 UINT16 mipLevels = 0,
1762 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1763 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1764 UINT64 alignment = 0 ) noexcept
1765 {
1766 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1767 mipLevels, format, 1, 0, layout, flags );
1768 }
1769 static inline CD3DX12_RESOURCE_DESC Tex2D(
1770 DXGI_FORMAT format,
1771 UINT64 width,
1772 UINT height,
1773 UINT16 arraySize = 1,
1774 UINT16 mipLevels = 0,
1775 UINT sampleCount = 1,
1776 UINT sampleQuality = 0,
1777 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1778 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1779 UINT64 alignment = 0 ) noexcept
1780 {
1781 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1782 mipLevels, format, sampleCount, sampleQuality, layout, flags );
1783 }
1784 static inline CD3DX12_RESOURCE_DESC Tex3D(
1785 DXGI_FORMAT format,
1786 UINT64 width,
1787 UINT height,
1788 UINT16 depth,
1789 UINT16 mipLevels = 0,
1790 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1791 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1792 UINT64 alignment = 0 ) noexcept
1793 {
1794 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1795 mipLevels, format, 1, 0, layout, flags );
1796 }
1797 inline UINT16 Depth() const noexcept
1798 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1799 inline UINT16 ArraySize() const noexcept
1800 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1801 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1802 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1803 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1804 { return MipLevels * ArraySize() * PlaneCount(pDevice); }
1805 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1806 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1807};
1808inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1809{
1810 return l.Dimension == r.Dimension &&
1811 l.Alignment == r.Alignment &&
1812 l.Width == r.Width &&
1813 l.Height == r.Height &&
1814 l.DepthOrArraySize == r.DepthOrArraySize &&
1815 l.MipLevels == r.MipLevels &&
1816 l.Format == r.Format &&
1817 l.SampleDesc.Count == r.SampleDesc.Count &&
1818 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1819 l.Layout == r.Layout &&
1820 l.Flags == r.Flags;
1821}
1822inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1823{ return !( l == r ); }
1824
1825//------------------------------------------------------------------------------------------------
1826struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
1827{
1828 CD3DX12_RESOURCE_DESC1() = default;
1829 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
1830 D3D12_RESOURCE_DESC1( o )
1831 {}
1832 CD3DX12_RESOURCE_DESC1(
1833 D3D12_RESOURCE_DIMENSION dimension,
1834 UINT64 alignment,
1835 UINT64 width,
1836 UINT height,
1837 UINT16 depthOrArraySize,
1838 UINT16 mipLevels,
1839 DXGI_FORMAT format,
1840 UINT sampleCount,
1841 UINT sampleQuality,
1842 D3D12_TEXTURE_LAYOUT layout,
1843 D3D12_RESOURCE_FLAGS flags,
1844 UINT samplerFeedbackMipRegionWidth = 0,
1845 UINT samplerFeedbackMipRegionHeight = 0,
1846 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1847 {
1848 Dimension = dimension;
1849 Alignment = alignment;
1850 Width = width;
1851 Height = height;
1852 DepthOrArraySize = depthOrArraySize;
1853 MipLevels = mipLevels;
1854 Format = format;
1855 SampleDesc.Count = sampleCount;
1856 SampleDesc.Quality = sampleQuality;
1857 Layout = layout;
1858 Flags = flags;
1859 SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
1860 SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
1861 SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
1862 }
1863 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1864 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1865 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1866 {
1867 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1868 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1869 }
1870 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1871 UINT64 width,
1872 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1873 UINT64 alignment = 0 ) noexcept
1874 {
1875 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1876 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1877 }
1878 static inline CD3DX12_RESOURCE_DESC1 Tex1D(
1879 DXGI_FORMAT format,
1880 UINT64 width,
1881 UINT16 arraySize = 1,
1882 UINT16 mipLevels = 0,
1883 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1884 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1885 UINT64 alignment = 0 ) noexcept
1886 {
1887 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1888 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1889 }
1890 static inline CD3DX12_RESOURCE_DESC1 Tex2D(
1891 DXGI_FORMAT format,
1892 UINT64 width,
1893 UINT height,
1894 UINT16 arraySize = 1,
1895 UINT16 mipLevels = 0,
1896 UINT sampleCount = 1,
1897 UINT sampleQuality = 0,
1898 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1899 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1900 UINT64 alignment = 0,
1901 UINT samplerFeedbackMipRegionWidth = 0,
1902 UINT samplerFeedbackMipRegionHeight = 0,
1903 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1904 {
1905 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1906 mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
1907 samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
1908 }
1909 static inline CD3DX12_RESOURCE_DESC1 Tex3D(
1910 DXGI_FORMAT format,
1911 UINT64 width,
1912 UINT height,
1913 UINT16 depth,
1914 UINT16 mipLevels = 0,
1915 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1916 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1917 UINT64 alignment = 0 ) noexcept
1918 {
1919 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1920 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1921 }
1922 inline UINT16 Depth() const noexcept
1923 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1924 inline UINT16 ArraySize() const noexcept
1925 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1); }
1926 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1927 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1928 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1929 { return MipLevels * ArraySize() * PlaneCount(pDevice); }
1930 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1931 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1932};
1933inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1934{
1935 return l.Dimension == r.Dimension &&
1936 l.Alignment == r.Alignment &&
1937 l.Width == r.Width &&
1938 l.Height == r.Height &&
1939 l.DepthOrArraySize == r.DepthOrArraySize &&
1940 l.MipLevels == r.MipLevels &&
1941 l.Format == r.Format &&
1942 l.SampleDesc.Count == r.SampleDesc.Count &&
1943 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1944 l.Layout == r.Layout &&
1945 l.Flags == r.Flags &&
1946 l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
1947 l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
1948 l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
1949}
1950inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1951{ return !( l == r ); }
1952
1953//------------------------------------------------------------------------------------------------
1954struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
1955{
1956 CD3DX12_VIEW_INSTANCING_DESC() = default;
1957 explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
1958 D3D12_VIEW_INSTANCING_DESC( o )
1959 {}
1960 explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
1961 {
1962 ViewInstanceCount = 0;
1963 pViewInstanceLocations = nullptr;
1964 Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
1965 }
1966 explicit CD3DX12_VIEW_INSTANCING_DESC(
1967 UINT InViewInstanceCount,
1968 const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
1969 D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
1970 {
1971 ViewInstanceCount = InViewInstanceCount;
1972 pViewInstanceLocations = InViewInstanceLocations;
1973 Flags = InFlags;
1974 }
1975};
1976
1977//------------------------------------------------------------------------------------------------
1978// Row-by-row memcpy
1979inline void MemcpySubresource(
1980 _In_ const D3D12_MEMCPY_DEST* pDest,
1981 _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
1982 SIZE_T RowSizeInBytes,
1983 UINT NumRows,
1984 UINT NumSlices) noexcept
1985{
1986 for (UINT z = 0; z < NumSlices; ++z)
1987 {
1988 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
1989 auto pSrcSlice = static_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
1990 for (UINT y = 0; y < NumRows; ++y)
1991 {
1992 memcpy(pDestSlice + pDest->RowPitch * y,
1993 pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
1994 RowSizeInBytes);
1995 }
1996 }
1997}
1998
1999//------------------------------------------------------------------------------------------------
2000// Row-by-row memcpy
2001inline void MemcpySubresource(
2002 _In_ const D3D12_MEMCPY_DEST* pDest,
2003 _In_ const void* pResourceData,
2004 _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
2005 SIZE_T RowSizeInBytes,
2006 UINT NumRows,
2007 UINT NumSlices) noexcept
2008{
2009 for (UINT z = 0; z < NumSlices; ++z)
2010 {
2011 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
2012 auto pSrcSlice = (static_cast<const BYTE*>(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
2013 for (UINT y = 0; y < NumRows; ++y)
2014 {
2015 memcpy(pDestSlice + pDest->RowPitch * y,
2016 pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
2017 RowSizeInBytes);
2018 }
2019 }
2020}
2021
2022//------------------------------------------------------------------------------------------------
2023// Returns required size of a buffer to be used for data upload
2024inline UINT64 GetRequiredIntermediateSize(
2025 _In_ ID3D12Resource* pDestinationResource,
2026 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2027 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
2028{
2029 auto Desc = pDestinationResource->GetDesc();
2030 UINT64 RequiredSize = 0;
2031
2032 ID3D12Device* pDevice = nullptr;
2033 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2034 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
2035 pDevice->Release();
2036
2037 return RequiredSize;
2038}
2039
2040//------------------------------------------------------------------------------------------------
2041// All arrays must be populated (e.g. by calling GetCopyableFootprints)
2042inline UINT64 UpdateSubresources(
2043 _In_ ID3D12GraphicsCommandList* pCmdList,
2044 _In_ ID3D12Resource* pDestinationResource,
2045 _In_ ID3D12Resource* pIntermediate,
2046 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2047 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2048 UINT64 RequiredSize,
2049 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
2050 _In_reads_(NumSubresources) const UINT* pNumRows,
2051 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
2052 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2053{
2054 // Minor validation
2055 auto IntermediateDesc = pIntermediate->GetDesc();
2056 auto DestinationDesc = pDestinationResource->GetDesc();
2057 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
2058 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
2059 RequiredSize > SIZE_T(-1) ||
2060 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
2061 (FirstSubresource != 0 || NumSubresources != 1)))
2062 {
2063 return 0;
2064 }
2065
2066 BYTE* pData;
2067 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
2068 if (FAILED(hr))
2069 {
2070 return 0;
2071 }
2072
2073 for (UINT i = 0; i < NumSubresources; ++i)
2074 {
2075 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
2076 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
2077 MemcpySubresource(&DestData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
2078 }
2079 pIntermediate->Unmap(0, nullptr);
2080
2081 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
2082 {
2083 pCmdList->CopyBufferRegion(
2084 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
2085 }
2086 else
2087 {
2088 for (UINT i = 0; i < NumSubresources; ++i)
2089 {
2090 CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
2091 CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
2092 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
2093 }
2094 }
2095 return RequiredSize;
2096}
2097
2098//------------------------------------------------------------------------------------------------
2099// All arrays must be populated (e.g. by calling GetCopyableFootprints)
2100inline UINT64 UpdateSubresources(
2101 _In_ ID3D12GraphicsCommandList* pCmdList,
2102 _In_ ID3D12Resource* pDestinationResource,
2103 _In_ ID3D12Resource* pIntermediate,
2104 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2105 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2106 UINT64 RequiredSize,
2107 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
2108 _In_reads_(NumSubresources) const UINT* pNumRows,
2109 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
2110 _In_ const void* pResourceData,
2111 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2112{
2113 // Minor validation
2114 auto IntermediateDesc = pIntermediate->GetDesc();
2115 auto DestinationDesc = pDestinationResource->GetDesc();
2116 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
2117 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
2118 RequiredSize > SIZE_T(-1) ||
2119 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
2120 (FirstSubresource != 0 || NumSubresources != 1)))
2121 {
2122 return 0;
2123 }
2124
2125 BYTE* pData;
2126 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
2127 if (FAILED(hr))
2128 {
2129 return 0;
2130 }
2131
2132 for (UINT i = 0; i < NumSubresources; ++i)
2133 {
2134 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
2135 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
2136 MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
2137 }
2138 pIntermediate->Unmap(0, nullptr);
2139
2140 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
2141 {
2142 pCmdList->CopyBufferRegion(
2143 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
2144 }
2145 else
2146 {
2147 for (UINT i = 0; i < NumSubresources; ++i)
2148 {
2149 CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
2150 CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
2151 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
2152 }
2153 }
2154 return RequiredSize;
2155}
2156
2157//------------------------------------------------------------------------------------------------
2158// Heap-allocating UpdateSubresources implementation
2159inline UINT64 UpdateSubresources(
2160 _In_ ID3D12GraphicsCommandList* pCmdList,
2161 _In_ ID3D12Resource* pDestinationResource,
2162 _In_ ID3D12Resource* pIntermediate,
2163 UINT64 IntermediateOffset,
2164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2166 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2167{
2168 UINT64 RequiredSize = 0;
2169 auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
2170 if (MemToAlloc > SIZE_MAX)
2171 {
2172 return 0;
2173 }
2174 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
2175 if (pMem == nullptr)
2176 {
2177 return 0;
2178 }
2179 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
2180 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
2181 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
2182
2183 auto Desc = pDestinationResource->GetDesc();
2184 ID3D12Device* pDevice = nullptr;
2185 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2186 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
2187 pDevice->Release();
2188
2189 UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
2190 HeapFree(GetProcessHeap(), 0, pMem);
2191 return Result;
2192}
2193
2194//------------------------------------------------------------------------------------------------
2195// Heap-allocating UpdateSubresources implementation
2196inline UINT64 UpdateSubresources(
2197 _In_ ID3D12GraphicsCommandList* pCmdList,
2198 _In_ ID3D12Resource* pDestinationResource,
2199 _In_ ID3D12Resource* pIntermediate,
2200 UINT64 IntermediateOffset,
2201 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
2202 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
2203 _In_ const void* pResourceData,
2204 _In_reads_(NumSubresources) D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2205{
2206 UINT64 RequiredSize = 0;
2207 auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
2208 if (MemToAlloc > SIZE_MAX)
2209 {
2210 return 0;
2211 }
2212 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
2213 if (pMem == nullptr)
2214 {
2215 return 0;
2216 }
2217 auto pLayouts = reinterpret_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
2218 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
2219 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
2220
2221 auto Desc = pDestinationResource->GetDesc();
2222 ID3D12Device* pDevice = nullptr;
2223 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2224 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
2225 pDevice->Release();
2226
2227 UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
2228 HeapFree(GetProcessHeap(), 0, pMem);
2229 return Result;
2230}
2231
2232//------------------------------------------------------------------------------------------------
2233// Stack-allocating UpdateSubresources implementation
2234template <UINT MaxSubresources>
2235inline UINT64 UpdateSubresources(
2236 _In_ ID3D12GraphicsCommandList* pCmdList,
2237 _In_ ID3D12Resource* pDestinationResource,
2238 _In_ ID3D12Resource* pIntermediate,
2239 UINT64 IntermediateOffset,
2240 _In_range_(0,MaxSubresources) UINT FirstSubresource,
2241 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
2242 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
2243{
2244 UINT64 RequiredSize = 0;
2245 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
2246 UINT NumRows[MaxSubresources];
2247 UINT64 RowSizesInBytes[MaxSubresources];
2248
2249 auto Desc = pDestinationResource->GetDesc();
2250 ID3D12Device* pDevice = nullptr;
2251 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2252 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
2253 pDevice->Release();
2254
2255 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
2256}
2257
2258//------------------------------------------------------------------------------------------------
2259// Stack-allocating UpdateSubresources implementation
2260template <UINT MaxSubresources>
2261inline UINT64 UpdateSubresources(
2262 _In_ ID3D12GraphicsCommandList* pCmdList,
2263 _In_ ID3D12Resource* pDestinationResource,
2264 _In_ ID3D12Resource* pIntermediate,
2265 UINT64 IntermediateOffset,
2266 _In_range_(0,MaxSubresources) UINT FirstSubresource,
2267 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
2268 _In_ const void* pResourceData,
2269 _In_reads_(NumSubresources) D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
2270{
2271 UINT64 RequiredSize = 0;
2272 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
2273 UINT NumRows[MaxSubresources];
2274 UINT64 RowSizesInBytes[MaxSubresources];
2275
2276 auto Desc = pDestinationResource->GetDesc();
2277 ID3D12Device* pDevice = nullptr;
2278 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
2279 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
2280 pDevice->Release();
2281
2282 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
2283}
2284
2285//------------------------------------------------------------------------------------------------
2286inline constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
2287{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
2288
2289//------------------------------------------------------------------------------------------------
2290template <typename t_CommandListType>
2291inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
2292{
2293 // This cast is useful for passing strongly typed command list pointers into
2294 // ExecuteCommandLists.
2295 // This cast is valid as long as the const-ness is respected. D3D12 APIs do
2296 // respect the const-ness of their arguments.
2297 return reinterpret_cast<ID3D12CommandList * const *>(pp);
2298}
2299
2300//------------------------------------------------------------------------------------------------
2301// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
2302// To help enable root signature 1.1 features when they are available and not require maintaining
2303// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
2304// 1.1 is not supported.
2305inline HRESULT D3DX12SerializeVersionedRootSignature(
2306 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
2307 D3D_ROOT_SIGNATURE_VERSION MaxVersion,
2308 _Outptr_ ID3DBlob** ppBlob,
2309 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
2310{
2311 if (ppErrorBlob != nullptr)
2312 {
2313 *ppErrorBlob = nullptr;
2314 }
2315
2316 switch (MaxVersion)
2317 {
2318 case D3D_ROOT_SIGNATURE_VERSION_1_0:
2319 switch (pRootSignatureDesc->Version)
2320 {
2321 case D3D_ROOT_SIGNATURE_VERSION_1_0:
2322 return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
2323
2324 case D3D_ROOT_SIGNATURE_VERSION_1_1:
2325 {
2326 HRESULT hr = S_OK;
2327 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
2328
2329 const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
2330 void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
2331 if (ParametersSize > 0 && pParameters == nullptr)
2332 {
2333 hr = E_OUTOFMEMORY;
2334 }
2335 auto pParameters_1_0 = static_cast<D3D12_ROOT_PARAMETER*>(pParameters);
2336
2337 if (SUCCEEDED(hr))
2338 {
2339 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
2340 {
2341 __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
2342 pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
2343 pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
2344
2345 switch (desc_1_1.pParameters[n].ParameterType)
2346 {
2347 case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
2348 pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
2349 pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
2350 pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
2351 break;
2352
2353 case D3D12_ROOT_PARAMETER_TYPE_CBV:
2354 case D3D12_ROOT_PARAMETER_TYPE_SRV:
2355 case D3D12_ROOT_PARAMETER_TYPE_UAV:
2356 pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
2357 pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
2358 break;
2359
2360 case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
2361 const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
2362
2363 const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
2364 void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
2365 if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
2366 {
2367 hr = E_OUTOFMEMORY;
2368 }
2369 auto pDescriptorRanges_1_0 = static_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges);
2370
2371 if (SUCCEEDED(hr))
2372 {
2373 for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
2374 {
2375 __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
2376 pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
2377 pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
2378 pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
2379 pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
2380 pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
2381 }
2382 }
2383
2384 D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
2385 table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
2386 table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
2387 }
2388 }
2389 }
2390
2391 if (SUCCEEDED(hr))
2392 {
2393 CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, desc_1_1.pStaticSamplers, desc_1_1.Flags);
2394 hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
2395 }
2396
2397 if (pParameters)
2398 {
2399 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
2400 {
2401 if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
2402 {
2403 auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
2404 HeapFree(GetProcessHeap(), 0, reinterpret_cast<void*>(const_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges_1_0)));
2405 }
2406 }
2407 HeapFree(GetProcessHeap(), 0, pParameters);
2408 }
2409 return hr;
2410 }
2411 }
2412 break;
2413
2414 case D3D_ROOT_SIGNATURE_VERSION_1_1:
2415 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
2416 }
2417
2418 return E_INVALIDARG;
2419}
2420
2421//------------------------------------------------------------------------------------------------
2422struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
2423{
2424 CD3DX12_RT_FORMAT_ARRAY() = default;
2425 explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
2426 : D3D12_RT_FORMAT_ARRAY(o)
2427 {}
2428 explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
2429 {
2430 NumRenderTargets = NumFormats;
2431 memcpy(RTFormats, pFormats, sizeof(RTFormats));
2432 // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
2433 }
2434};
2435
2436//------------------------------------------------------------------------------------------------
2437// Pipeline State Stream Helpers
2438//------------------------------------------------------------------------------------------------
2439
2440//------------------------------------------------------------------------------------------------
2441// Stream Subobjects, i.e. elements of a stream
2442
2443struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
2444struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
2445
2446#pragma warning(push)
2447#pragma warning(disable : 4324)
2448template <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
2449class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
2450{
2451private:
2452 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE _Type;
2453 InnerStructType _Inner;
2454public:
2455 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : _Type(Type), _Inner(DefaultArg()) {}
2456 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : _Type(Type), _Inner(i) {}
2457 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { _Type = Type; _Inner = i; return *this; }
2458 operator InnerStructType const&() const noexcept { return _Inner; }
2459 operator InnerStructType&() noexcept { return _Inner; }
2460 InnerStructType* operator&() noexcept { return &_Inner; }
2461 InnerStructType const* operator&() const noexcept { return &_Inner; }
2462};
2463#pragma warning(pop)
2464typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
2465typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
2466typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
2467typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
2468typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE;
2469typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
2470typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
2471typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
2472typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
2473typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
2474typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
2475typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
2476typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
2477typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
2478typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
2479typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
2480typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
2481typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
2482typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
2483typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
2484typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
2485typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
2486typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
2487typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
2488typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
2489
2490//------------------------------------------------------------------------------------------------
2491// Stream Parser Helpers
2492
2493struct ID3DX12PipelineParserCallbacks
2494{
2495 // Subobject Callbacks
2496 virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
2497 virtual void NodeMaskCb(UINT) {}
2498 virtual void RootSignatureCb(ID3D12RootSignature*) {}
2499 virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
2500 virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
2501 virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
2502 virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
2503 virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
2504 virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
2505 virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
2506 virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
2507 virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
2508 virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
2509 virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
2510 virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
2511 virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
2512 virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
2513 virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
2514 virtual void DSVFormatCb(DXGI_FORMAT) {}
2515 virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
2516 virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
2517 virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
2518 virtual void SampleMaskCb(UINT) {}
2519 virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
2520 virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
2521
2522 // Error Callbacks
2523 virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
2524 virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
2525 virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
2526
2527 virtual ~ID3DX12PipelineParserCallbacks() = default;
2528};
2529
2530struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
2531{
2532 ID3D12RootSignature* pRootSignature;
2533 D3D12_SHADER_BYTECODE AS;
2534 D3D12_SHADER_BYTECODE MS;
2535 D3D12_SHADER_BYTECODE PS;
2536 D3D12_BLEND_DESC BlendState;
2537 UINT SampleMask;
2538 D3D12_RASTERIZER_DESC RasterizerState;
2539 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
2540 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
2541 UINT NumRenderTargets;
2542 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
2543 DXGI_FORMAT DSVFormat;
2544 DXGI_SAMPLE_DESC SampleDesc;
2545 UINT NodeMask;
2546 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2547 D3D12_PIPELINE_STATE_FLAGS Flags;
2548};
2549
2550// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
2551// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
2552// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
2553struct CD3DX12_PIPELINE_STATE_STREAM2
2554{
2555 CD3DX12_PIPELINE_STATE_STREAM2() = default;
2556 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
2557 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2558 : Flags(Desc.Flags)
2559 , NodeMask(Desc.NodeMask)
2560 , pRootSignature(Desc.pRootSignature)
2561 , InputLayout(Desc.InputLayout)
2562 , IBStripCutValue(Desc.IBStripCutValue)
2563 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2564 , VS(Desc.VS)
2565 , GS(Desc.GS)
2566 , StreamOutput(Desc.StreamOutput)
2567 , HS(Desc.HS)
2568 , DS(Desc.DS)
2569 , PS(Desc.PS)
2570 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2571 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2572 , DSVFormat(Desc.DSVFormat)
2573 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2574 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2575 , SampleDesc(Desc.SampleDesc)
2576 , SampleMask(Desc.SampleMask)
2577 , CachedPSO(Desc.CachedPSO)
2578 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2579 {}
2580 CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2581 : Flags(Desc.Flags)
2582 , NodeMask(Desc.NodeMask)
2583 , pRootSignature(Desc.pRootSignature)
2584 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2585 , PS(Desc.PS)
2586 , AS(Desc.AS)
2587 , MS(Desc.MS)
2588 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2589 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2590 , DSVFormat(Desc.DSVFormat)
2591 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2592 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2593 , SampleDesc(Desc.SampleDesc)
2594 , SampleMask(Desc.SampleMask)
2595 , CachedPSO(Desc.CachedPSO)
2596 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2597 {}
2598 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2599 : Flags(Desc.Flags)
2600 , NodeMask(Desc.NodeMask)
2601 , pRootSignature(Desc.pRootSignature)
2602 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2603 , CachedPSO(Desc.CachedPSO)
2604 {
2605 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
2606 }
2607 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2608 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2609 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2610 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2611 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2612 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2613 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2614 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2615 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2616 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2617 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2618 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2619 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
2620 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
2621 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2622 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2623 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2624 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2625 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2626 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2627 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2628 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2629 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2630 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2631 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2632 {
2633 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2634 D.Flags = this->Flags;
2635 D.NodeMask = this->NodeMask;
2636 D.pRootSignature = this->pRootSignature;
2637 D.InputLayout = this->InputLayout;
2638 D.IBStripCutValue = this->IBStripCutValue;
2639 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2640 D.VS = this->VS;
2641 D.GS = this->GS;
2642 D.StreamOutput = this->StreamOutput;
2643 D.HS = this->HS;
2644 D.DS = this->DS;
2645 D.PS = this->PS;
2646 D.BlendState = this->BlendState;
2647 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2648 D.DSVFormat = this->DSVFormat;
2649 D.RasterizerState = this->RasterizerState;
2650 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2651 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2652 D.SampleDesc = this->SampleDesc;
2653 D.SampleMask = this->SampleMask;
2654 D.CachedPSO = this->CachedPSO;
2655 return D;
2656 }
2657 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2658 {
2659 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2660 D.Flags = this->Flags;
2661 D.NodeMask = this->NodeMask;
2662 D.pRootSignature = this->pRootSignature;
2663 D.CS = this->CS;
2664 D.CachedPSO = this->CachedPSO;
2665 return D;
2666 }
2667};
2668
2669// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
2670// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
2671struct CD3DX12_PIPELINE_STATE_STREAM1
2672{
2673 CD3DX12_PIPELINE_STATE_STREAM1() = default;
2674 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
2675 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2676 : Flags(Desc.Flags)
2677 , NodeMask(Desc.NodeMask)
2678 , pRootSignature(Desc.pRootSignature)
2679 , InputLayout(Desc.InputLayout)
2680 , IBStripCutValue(Desc.IBStripCutValue)
2681 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2682 , VS(Desc.VS)
2683 , GS(Desc.GS)
2684 , StreamOutput(Desc.StreamOutput)
2685 , HS(Desc.HS)
2686 , DS(Desc.DS)
2687 , PS(Desc.PS)
2688 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2689 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2690 , DSVFormat(Desc.DSVFormat)
2691 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2692 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2693 , SampleDesc(Desc.SampleDesc)
2694 , SampleMask(Desc.SampleMask)
2695 , CachedPSO(Desc.CachedPSO)
2696 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2697 {}
2698 CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2699 : Flags(Desc.Flags)
2700 , NodeMask(Desc.NodeMask)
2701 , pRootSignature(Desc.pRootSignature)
2702 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2703 , PS(Desc.PS)
2704 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2705 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2706 , DSVFormat(Desc.DSVFormat)
2707 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2708 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2709 , SampleDesc(Desc.SampleDesc)
2710 , SampleMask(Desc.SampleMask)
2711 , CachedPSO(Desc.CachedPSO)
2712 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2713 {}
2714 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2715 : Flags(Desc.Flags)
2716 , NodeMask(Desc.NodeMask)
2717 , pRootSignature(Desc.pRootSignature)
2718 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2719 , CachedPSO(Desc.CachedPSO)
2720 {
2721 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
2722 }
2723 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2724 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2725 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2726 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2727 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2728 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2729 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2730 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2731 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2732 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2733 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2734 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2735 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2736 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2737 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2738 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2739 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2740 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2741 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2742 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2743 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2744 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2745 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2746 {
2747 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2748 D.Flags = this->Flags;
2749 D.NodeMask = this->NodeMask;
2750 D.pRootSignature = this->pRootSignature;
2751 D.InputLayout = this->InputLayout;
2752 D.IBStripCutValue = this->IBStripCutValue;
2753 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2754 D.VS = this->VS;
2755 D.GS = this->GS;
2756 D.StreamOutput = this->StreamOutput;
2757 D.HS = this->HS;
2758 D.DS = this->DS;
2759 D.PS = this->PS;
2760 D.BlendState = this->BlendState;
2761 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2762 D.DSVFormat = this->DSVFormat;
2763 D.RasterizerState = this->RasterizerState;
2764 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2765 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2766 D.SampleDesc = this->SampleDesc;
2767 D.SampleMask = this->SampleMask;
2768 D.CachedPSO = this->CachedPSO;
2769 return D;
2770 }
2771 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2772 {
2773 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2774 D.Flags = this->Flags;
2775 D.NodeMask = this->NodeMask;
2776 D.pRootSignature = this->pRootSignature;
2777 D.CS = this->CS;
2778 D.CachedPSO = this->CachedPSO;
2779 return D;
2780 }
2781};
2782
2783
2784struct CD3DX12_PIPELINE_MESH_STATE_STREAM
2785{
2786 CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
2787 CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
2788 : Flags(Desc.Flags)
2789 , NodeMask(Desc.NodeMask)
2790 , pRootSignature(Desc.pRootSignature)
2791 , PS(Desc.PS)
2792 , AS(Desc.AS)
2793 , MS(Desc.MS)
2794 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2795 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2796 , DSVFormat(Desc.DSVFormat)
2797 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2798 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2799 , SampleDesc(Desc.SampleDesc)
2800 , SampleMask(Desc.SampleMask)
2801 , CachedPSO(Desc.CachedPSO)
2802 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
2803 {}
2804 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2805 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2806 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2807 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2808 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
2809 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
2810 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2811 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2812 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2813 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2814 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2815 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2816 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2817 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2818 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
2819 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
2820 {
2821 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
2822 D.Flags = this->Flags;
2823 D.NodeMask = this->NodeMask;
2824 D.pRootSignature = this->pRootSignature;
2825 D.PS = this->PS;
2826 D.AS = this->AS;
2827 D.MS = this->MS;
2828 D.BlendState = this->BlendState;
2829 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2830 D.DSVFormat = this->DSVFormat;
2831 D.RasterizerState = this->RasterizerState;
2832 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2833 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2834 D.SampleDesc = this->SampleDesc;
2835 D.SampleMask = this->SampleMask;
2836 D.CachedPSO = this->CachedPSO;
2837 return D;
2838 }
2839};
2840
2841// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
2842// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
2843struct CD3DX12_PIPELINE_STATE_STREAM
2844{
2845 CD3DX12_PIPELINE_STATE_STREAM() = default;
2846 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
2847 : Flags(Desc.Flags)
2848 , NodeMask(Desc.NodeMask)
2849 , pRootSignature(Desc.pRootSignature)
2850 , InputLayout(Desc.InputLayout)
2851 , IBStripCutValue(Desc.IBStripCutValue)
2852 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
2853 , VS(Desc.VS)
2854 , GS(Desc.GS)
2855 , StreamOutput(Desc.StreamOutput)
2856 , HS(Desc.HS)
2857 , DS(Desc.DS)
2858 , PS(Desc.PS)
2859 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
2860 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
2861 , DSVFormat(Desc.DSVFormat)
2862 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
2863 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
2864 , SampleDesc(Desc.SampleDesc)
2865 , SampleMask(Desc.SampleMask)
2866 , CachedPSO(Desc.CachedPSO)
2867 {}
2868 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
2869 : Flags(Desc.Flags)
2870 , NodeMask(Desc.NodeMask)
2871 , pRootSignature(Desc.pRootSignature)
2872 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
2873 , CachedPSO(Desc.CachedPSO)
2874 {}
2875 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
2876 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
2877 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
2878 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
2879 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
2880 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
2881 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
2882 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
2883 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
2884 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
2885 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
2886 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
2887 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
2888 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
2889 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
2890 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
2891 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
2892 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
2893 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
2894 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
2895 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
2896 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
2897 {
2898 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
2899 D.Flags = this->Flags;
2900 D.NodeMask = this->NodeMask;
2901 D.pRootSignature = this->pRootSignature;
2902 D.InputLayout = this->InputLayout;
2903 D.IBStripCutValue = this->IBStripCutValue;
2904 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
2905 D.VS = this->VS;
2906 D.GS = this->GS;
2907 D.StreamOutput = this->StreamOutput;
2908 D.HS = this->HS;
2909 D.DS = this->DS;
2910 D.PS = this->PS;
2911 D.BlendState = this->BlendState;
2912 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
2913 D.DSVFormat = this->DSVFormat;
2914 D.RasterizerState = this->RasterizerState;
2915 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
2916 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
2917 D.SampleDesc = this->SampleDesc;
2918 D.SampleMask = this->SampleMask;
2919 D.CachedPSO = this->CachedPSO;
2920 return D;
2921 }
2922 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
2923 {
2924 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
2925 D.Flags = this->Flags;
2926 D.NodeMask = this->NodeMask;
2927 D.pRootSignature = this->pRootSignature;
2928 D.CS = this->CS;
2929 D.CachedPSO = this->CachedPSO;
2930 return D;
2931 }
2932};
2933
2934struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
2935{
2936 CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
2937 CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
2938 : SeenDSS(false)
2939 {
2940 // Adjust defaults to account for absent members.
2941 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
2942
2943 // Depth disabled if no DSV format specified.
2944 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
2945 }
2946
2947 // ID3DX12PipelineParserCallbacks
2948 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
2949 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
2950 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
2951 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
2952 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
2953 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
2954 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
2955 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
2956 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
2957 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
2958 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
2959 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
2960 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
2961 void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
2962 void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
2963 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
2964 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
2965 {
2966 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
2967 SeenDSS = true;
2968 }
2969 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
2970 {
2971 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
2972 SeenDSS = true;
2973 }
2974 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
2975 {
2976 PipelineStream.DSVFormat = DSVFormat;
2977 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
2978 {
2979 // Re-enable depth for the default state.
2980 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
2981 }
2982 }
2983 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
2984 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
2985 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
2986 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
2987 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
2988 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
2989
2990private:
2991 bool SeenDSS;
2992};
2993
2994
2995struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
2996{
2997 CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
2998 CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
2999 : SeenDSS(false)
3000 {
3001 // Adjust defaults to account for absent members.
3002 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
3003
3004 // Depth disabled if no DSV format specified.
3005 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
3006 }
3007
3008 // ID3DX12PipelineParserCallbacks
3009 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
3010 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
3011 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
3012 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
3013 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
3014 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
3015 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
3016 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
3017 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
3018 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
3019 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
3020 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
3021 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
3022 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
3023 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
3024 {
3025 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
3026 SeenDSS = true;
3027 }
3028 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
3029 {
3030 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
3031 SeenDSS = true;
3032 }
3033 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
3034 {
3035 PipelineStream.DSVFormat = DSVFormat;
3036 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
3037 {
3038 // Re-enable depth for the default state.
3039 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
3040 }
3041 }
3042 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
3043 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
3044 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
3045 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
3046 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
3047 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
3048
3049private:
3050 bool SeenDSS;
3051};
3052
3053inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
3054{
3055 switch (SubobjectType)
3056 {
3057 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
3058 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
3059 default:
3060 return SubobjectType;
3061 }
3062}
3063
3064inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
3065{
3066 if (pCallbacks == nullptr)
3067 {
3068 return E_INVALIDARG;
3069 }
3070
3071 if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
3072 {
3073 pCallbacks->ErrorBadInputParameter(1); // first parameter issue
3074 return E_INVALIDARG;
3075 }
3076
3077 bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
3078 for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
3079 {
3080 BYTE* pStream = static_cast<BYTE*>(Desc.pPipelineStateSubobjectStream)+CurOffset;
3081 auto SubobjectType = *reinterpret_cast<D3D12_PIPELINE_STATE_SUBOBJECT_TYPE*>(pStream);
3082 if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
3083 {
3084 pCallbacks->ErrorUnknownSubobject(SubobjectType);
3085 return E_INVALIDARG;
3086 }
3087 if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
3088 {
3089 pCallbacks->ErrorDuplicateSubobject(SubobjectType);
3090 return E_INVALIDARG; // disallow subobject duplicates in a stream
3091 }
3092 SubobjectSeen[SubobjectType] = true;
3093 switch (SubobjectType)
3094 {
3095 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
3096 pCallbacks->RootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature)*>(pStream));
3097 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
3098 break;
3099 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
3100 pCallbacks->VSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::VS)*>(pStream));
3101 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
3102 break;
3103 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
3104 pCallbacks->PSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PS)*>(pStream));
3105 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
3106 break;
3107 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
3108 pCallbacks->DSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DS)*>(pStream));
3109 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
3110 break;
3111 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
3112 pCallbacks->HSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::HS)*>(pStream));
3113 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
3114 break;
3115 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
3116 pCallbacks->GSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::GS)*>(pStream));
3117 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
3118 break;
3119 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
3120 pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
3121 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
3122 break;
3123 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
3124 pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
3125 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
3126 break;
3127 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
3128 pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
3129 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
3130 break;
3131 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
3132 pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
3133 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
3134 break;
3135 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
3136 pCallbacks->BlendStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::BlendState)*>(pStream));
3137 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
3138 break;
3139 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
3140 pCallbacks->SampleMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleMask)*>(pStream));
3141 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
3142 break;
3143 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
3144 pCallbacks->RasterizerStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState)*>(pStream));
3145 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
3146 break;
3147 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
3148 pCallbacks->DepthStencilStateCb(*reinterpret_cast<CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL*>(pStream));
3149 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
3150 break;
3151 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
3152 pCallbacks->DepthStencilState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState)*>(pStream));
3153 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
3154 break;
3155 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
3156 pCallbacks->InputLayoutCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::InputLayout)*>(pStream));
3157 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
3158 break;
3159 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
3160 pCallbacks->IBStripCutValueCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue)*>(pStream));
3161 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
3162 break;
3163 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
3164 pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType)*>(pStream));
3165 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
3166 break;
3167 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
3168 pCallbacks->RTVFormatsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats)*>(pStream));
3169 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
3170 break;
3171 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
3172 pCallbacks->DSVFormatCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat)*>(pStream));
3173 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
3174 break;
3175 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
3176 pCallbacks->SampleDescCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc)*>(pStream));
3177 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
3178 break;
3179 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
3180 pCallbacks->NodeMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::NodeMask)*>(pStream));
3181 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
3182 break;
3183 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
3184 pCallbacks->CachedPSOCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO)*>(pStream));
3185 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
3186 break;
3187 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
3188 pCallbacks->FlagsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::Flags)*>(pStream));
3189 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
3190 break;
3191 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
3192 pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
3193 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
3194 break;
3195 default:
3196 pCallbacks->ErrorUnknownSubobject(SubobjectType);
3197 return E_INVALIDARG;
3198 }
3199 }
3200
3201 return S_OK;
3202}
3203
3204//------------------------------------------------------------------------------------------------
3205inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
3206{
3207 if (a.Format != b.Format) return false;
3208 if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
3209 || a.Format == DXGI_FORMAT_D16_UNORM
3210 || a.Format == DXGI_FORMAT_D32_FLOAT
3211 || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
3212 {
3213 return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
3214 (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
3215 } else {
3216 return (a.Color[0] == b.Color[0]) &&
3217 (a.Color[1] == b.Color[1]) &&
3218 (a.Color[2] == b.Color[2]) &&
3219 (a.Color[3] == b.Color[3]);
3220 }
3221}
3222inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
3223{
3224 return a.ClearValue == b.ClearValue;
3225}
3226inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
3227{
3228 if (a.pSrcResource != b.pSrcResource) return false;
3229 if (a.pDstResource != b.pDstResource) return false;
3230 if (a.SubresourceCount != b.SubresourceCount) return false;
3231 if (a.Format != b.Format) return false;
3232 if (a.ResolveMode != b.ResolveMode) return false;
3233 if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
3234 return true;
3235}
3236inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
3237{
3238 if (a.Type != b.Type) return false;
3239 if (a.Type == D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR && !(a.Clear == b.Clear)) return false;
3240 return true;
3241}
3242inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS &a, const D3D12_RENDER_PASS_ENDING_ACCESS &b) noexcept
3243{
3244 if (a.Type != b.Type) return false;
3245 if (a.Type == D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE && !(a.Resolve == b.Resolve)) return false;
3246 return true;
3247}
3248inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
3249{
3250 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
3251 if (!(a.BeginningAccess == b.BeginningAccess)) return false;
3252 if (!(a.EndingAccess == b.EndingAccess)) return false;
3253 return true;
3254}
3255inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
3256{
3257 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
3258 if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
3259 if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
3260 if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
3261 if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
3262 return true;
3263}
3264
3265
3266#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
3267
3268//================================================================================================
3269// D3DX12 State Object Creation Helpers
3270//
3271// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
3272// Uses STL
3273//
3274// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see it's public methods).
3275// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
3276// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
3277// etc.). The subobject helpers each have methods specific to the subobject for configuring it's
3278// contents.
3279//
3280//================================================================================================
3281#include <list>
3282#include <vector>
3283#include <string>
3284#include <memory>
3285#ifndef D3DX12_USE_ATL
3286#include <wrl/client.h>
3287#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
3288#define D3DX12_COM_PTR_GET(x) x.Get()
3289#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
3290#else
3291#include <atlbase.h>
3292#define D3DX12_COM_PTR ATL::CComPtr
3293#define D3DX12_COM_PTR_GET(x) x.p
3294#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
3295#endif
3296
3297//------------------------------------------------------------------------------------------------
3298class CD3DX12_STATE_OBJECT_DESC
3299{
3300public:
3301 CD3DX12_STATE_OBJECT_DESC() noexcept
3302 {
3303 Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
3304 }
3305 CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
3306 {
3307 Init(Type);
3308 }
3309 void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
3310 operator const D3D12_STATE_OBJECT_DESC&()
3311 {
3312 // Do final preparation work
3313 m_RepointedAssociations.clear();
3314 m_SubobjectArray.clear();
3315 m_SubobjectArray.reserve(m_Desc.NumSubobjects);
3316 // Flatten subobjects into an array (each flattened subobject still has a
3317 // member that's a pointer to it's desc that's not flattened)
3318 for (auto Iter = m_SubobjectList.begin();
3319 Iter != m_SubobjectList.end(); Iter++)
3320 {
3321 m_SubobjectArray.push_back(*Iter);
3322 // Store new location in array so we can redirect pointers contained in subobjects
3323 Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
3324 }
3325 // For subobjects with pointer fields, create a new copy of those subobject definitions
3326 // with fixed pointers
3327 for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
3328 {
3329 if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
3330 {
3331 auto pOriginalSubobjectAssociation =
3332 static_cast<const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION*>(m_SubobjectArray[i].pDesc);
3333 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
3334 auto pWrapper =
3335 static_cast<const SUBOBJECT_WRAPPER*>(pOriginalSubobjectAssociation->pSubobjectToAssociate);
3336 Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
3337 m_RepointedAssociations.push_back(Repointed);
3338 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
3339 }
3340 }
3341 // Below: using ugly way to get pointer in case .data() is not defined
3342 m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
3343 return m_Desc;
3344 }
3345 operator const D3D12_STATE_OBJECT_DESC*()
3346 {
3347 // Cast calls the above final preparation work
3348 return &static_cast<const D3D12_STATE_OBJECT_DESC&>(*this);
3349 }
3350
3351 // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
3352 // whose lifetime is owned by this class.
3353 // e.g.
3354 //
3355 // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
3356 // auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
3357 // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
3358 // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
3359 // // data/engine driven
3360 // etc.
3361 //
3362 // Alternatively, users can instantiate sububject helpers explicitly, such as via local
3363 // variables instead, passing the state object desc that should point to it into the helper
3364 // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
3365 // In this alternative scenario, the user must keep the subobject alive as long as the state
3366 // object it is associated with is alive, else it's pointer references will be stale.
3367 // e.g.
3368 //
3369 // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
3370 // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
3371 // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
3372 // // - meaning all exports in the libraries
3373 // // are exported
3374 // etc.
3375
3376 template<typename T>
3377 T* CreateSubobject()
3378 {
3379 T* pSubobject = new T(*this);
3380 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
3381 return pSubobject;
3382 }
3383
3384private:
3385 D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
3386 {
3387 SUBOBJECT_WRAPPER Subobject;
3388 Subobject.pSubobjectArrayLocation = nullptr;
3389 Subobject.Type = Type;
3390 Subobject.pDesc = pDesc;
3391 m_SubobjectList.push_back(Subobject);
3392 m_Desc.NumSubobjects++;
3393 return &m_SubobjectList.back();
3394 }
3395 void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
3396 {
3397 SetStateObjectType(Type);
3398 m_Desc.pSubobjects = nullptr;
3399 m_Desc.NumSubobjects = 0;
3400 m_SubobjectList.clear();
3401 m_SubobjectArray.clear();
3402 m_RepointedAssociations.clear();
3403 }
3404 typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
3405 {
3406 D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
3407 // for repointing pointers in subobjects
3408 } SUBOBJECT_WRAPPER;
3409 D3D12_STATE_OBJECT_DESC m_Desc;
3410 std::list<SUBOBJECT_WRAPPER> m_SubobjectList; // Pointers to list nodes handed out so
3411 // these can be edited live
3412 std::vector<D3D12_STATE_SUBOBJECT> m_SubobjectArray; // Built at the end, copying list contents
3413
3414 std::list<D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION>
3415 m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
3416 // repointed to flattened array
3417
3418 class StringContainer
3419 {
3420 public:
3421 LPCWSTR LocalCopy(LPCWSTR string, bool bSingleString = false)
3422 {
3423 if (string)
3424 {
3425 if (bSingleString)
3426 {
3427 m_Strings.clear();
3428 m_Strings.push_back(string);
3429 }
3430 else
3431 {
3432 m_Strings.push_back(string);
3433 }
3434 return m_Strings.back().c_str();
3435 }
3436 else
3437 {
3438 return nullptr;
3439 }
3440 }
3441 void clear() noexcept { m_Strings.clear(); }
3442 private:
3443 std::list<std::wstring> m_Strings;
3444 };
3445
3446 class SUBOBJECT_HELPER_BASE
3447 {
3448 public:
3449 SUBOBJECT_HELPER_BASE() noexcept { Init(); }
3450 virtual ~SUBOBJECT_HELPER_BASE() = default;
3451 virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
3452 void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3453 {
3454 m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
3455 }
3456 protected:
3457 virtual void* Data() noexcept = 0;
3458 void Init() noexcept { m_pSubobject = nullptr; }
3459 D3D12_STATE_SUBOBJECT* m_pSubobject;
3460 };
3461
3462#if(__cplusplus >= 201103L)
3463 std::list<std::unique_ptr<const SUBOBJECT_HELPER_BASE>> m_OwnedSubobjectHelpers;
3464#else
3465 class OWNED_HELPER
3466 {
3467 public:
3468 OWNED_HELPER(const SUBOBJECT_HELPER_BASE* pHelper) noexcept { m_pHelper = pHelper; }
3469 ~OWNED_HELPER() { delete m_pHelper; }
3470 const SUBOBJECT_HELPER_BASE* m_pHelper;
3471 };
3472
3473 std::list<OWNED_HELPER> m_OwnedSubobjectHelpers;
3474#endif
3475
3476 friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
3477 friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
3478 friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
3479 friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3480 friend class CD3DX12_HIT_GROUP_SUBOBJECT;
3481 friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
3482 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
3483 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
3484 friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
3485 friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
3486 friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
3487 friend class CD3DX12_NODE_MASK_SUBOBJECT;
3488};
3489
3490//------------------------------------------------------------------------------------------------
3491class CD3DX12_DXIL_LIBRARY_SUBOBJECT
3492 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3493{
3494public:
3495 CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
3496 {
3497 Init();
3498 }
3499 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3500 {
3501 Init();
3502 AddToStateObject(ContainingStateObject);
3503 }
3504 void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
3505 {
3506 static const D3D12_SHADER_BYTECODE Default = {};
3507 m_Desc.DXILLibrary = pCode ? *pCode : Default;
3508 }
3509 void DefineExport(
3510 LPCWSTR Name,
3511 LPCWSTR ExportToRename = nullptr,
3512 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
3513 {
3514 D3D12_EXPORT_DESC Export;
3515 Export.Name = m_Strings.LocalCopy(Name);
3516 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
3517 Export.Flags = Flags;
3518 m_Exports.push_back(Export);
3519 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3520 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
3521 }
3522 template<size_t N>
3523 void DefineExports(LPCWSTR(&Exports)[N])
3524 {
3525 for (UINT i = 0; i < N; i++)
3526 {
3527 DefineExport(Exports[i]);
3528 }
3529 }
3530 void DefineExports(const LPCWSTR* Exports, UINT N)
3531 {
3532 for (UINT i = 0; i < N; i++)
3533 {
3534 DefineExport(Exports[i]);
3535 }
3536 }
3537 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3538 {
3539 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
3540 }
3541 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3542 operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
3543private:
3544 void Init() noexcept
3545 {
3546 SUBOBJECT_HELPER_BASE::Init();
3547 m_Desc = {};
3548 m_Strings.clear();
3549 m_Exports.clear();
3550 }
3551 void* Data() noexcept override { return &m_Desc; }
3552 D3D12_DXIL_LIBRARY_DESC m_Desc;
3553 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3554 std::vector<D3D12_EXPORT_DESC> m_Exports;
3555};
3556
3557//------------------------------------------------------------------------------------------------
3558class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
3559 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3560{
3561public:
3562 CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
3563 {
3564 Init();
3565 }
3566 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3567 {
3568 Init();
3569 AddToStateObject(ContainingStateObject);
3570 }
3571 void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
3572 {
3573 m_Desc.pExistingCollection = pExistingCollection;
3574 m_CollectionRef = pExistingCollection;
3575 }
3576 void DefineExport(
3577 LPCWSTR Name,
3578 LPCWSTR ExportToRename = nullptr,
3579 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
3580 {
3581 D3D12_EXPORT_DESC Export;
3582 Export.Name = m_Strings.LocalCopy(Name);
3583 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
3584 Export.Flags = Flags;
3585 m_Exports.push_back(Export);
3586 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3587 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
3588 }
3589 template<size_t N>
3590 void DefineExports(LPCWSTR(&Exports)[N])
3591 {
3592 for (UINT i = 0; i < N; i++)
3593 {
3594 DefineExport(Exports[i]);
3595 }
3596 }
3597 void DefineExports(const LPCWSTR* Exports, UINT N)
3598 {
3599 for (UINT i = 0; i < N; i++)
3600 {
3601 DefineExport(Exports[i]);
3602 }
3603 }
3604 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3605 {
3606 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
3607 }
3608 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3609 operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
3610private:
3611 void Init() noexcept
3612 {
3613 SUBOBJECT_HELPER_BASE::Init();
3614 m_Desc = {};
3615 m_CollectionRef = nullptr;
3616 m_Strings.clear();
3617 m_Exports.clear();
3618 }
3619 void* Data() noexcept override { return &m_Desc; }
3620 D3D12_EXISTING_COLLECTION_DESC m_Desc;
3621 D3DX12_COM_PTR<ID3D12StateObject> m_CollectionRef;
3622 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3623 std::vector<D3D12_EXPORT_DESC> m_Exports;
3624};
3625
3626//------------------------------------------------------------------------------------------------
3627class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
3628 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3629{
3630public:
3631 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
3632 {
3633 Init();
3634 }
3635 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3636 {
3637 Init();
3638 AddToStateObject(ContainingStateObject);
3639 }
3640 void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
3641 {
3642 m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
3643 }
3644 void AddExport(LPCWSTR Export)
3645 {
3646 m_Desc.NumExports++;
3647 m_Exports.push_back(m_Strings.LocalCopy(Export));
3648 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3649 }
3650 template<size_t N>
3651 void AddExports(LPCWSTR (&Exports)[N])
3652 {
3653 for (UINT i = 0; i < N; i++)
3654 {
3655 AddExport(Exports[i]);
3656 }
3657 }
3658 void AddExports(const LPCWSTR* Exports, UINT N)
3659 {
3660 for (UINT i = 0; i < N; i++)
3661 {
3662 AddExport(Exports[i]);
3663 }
3664 }
3665 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3666 {
3667 return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3668 }
3669 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3670 operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
3671private:
3672 void Init() noexcept
3673 {
3674 SUBOBJECT_HELPER_BASE::Init();
3675 m_Desc = {};
3676 m_Strings.clear();
3677 m_Exports.clear();
3678 }
3679 void* Data() noexcept override { return &m_Desc; }
3680 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
3681 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3682 std::vector<LPCWSTR> m_Exports;
3683};
3684
3685//------------------------------------------------------------------------------------------------
3686class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
3687 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3688{
3689public:
3690 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
3691 {
3692 Init();
3693 }
3694 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3695 {
3696 Init();
3697 AddToStateObject(ContainingStateObject);
3698 }
3699 void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
3700 {
3701 m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
3702 }
3703 void AddExport(LPCWSTR Export)
3704 {
3705 m_Desc.NumExports++;
3706 m_Exports.push_back(m_Strings.LocalCopy(Export));
3707 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
3708 }
3709 template<size_t N>
3710 void AddExports(LPCWSTR (&Exports)[N])
3711 {
3712 for (UINT i = 0; i < N; i++)
3713 {
3714 AddExport(Exports[i]);
3715 }
3716 }
3717 void AddExports(const LPCWSTR* Exports, UINT N)
3718 {
3719 for (UINT i = 0; i < N; i++)
3720 {
3721 AddExport(Exports[i]);
3722 }
3723 }
3724 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3725 {
3726 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
3727 }
3728 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3729 operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
3730private:
3731 void Init() noexcept
3732 {
3733 SUBOBJECT_HELPER_BASE::Init();
3734 m_Desc = {};
3735 m_Strings.clear();
3736 m_SubobjectName.clear();
3737 m_Exports.clear();
3738 }
3739 void* Data() noexcept override { return &m_Desc; }
3740 D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
3741 CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
3742 CD3DX12_STATE_OBJECT_DESC::StringContainer m_SubobjectName;
3743 std::vector<LPCWSTR> m_Exports;
3744};
3745
3746//------------------------------------------------------------------------------------------------
3747class CD3DX12_HIT_GROUP_SUBOBJECT
3748 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3749{
3750public:
3751 CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
3752 {
3753 Init();
3754 }
3755 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3756 {
3757 Init();
3758 AddToStateObject(ContainingStateObject);
3759 }
3760 void SetHitGroupExport(LPCWSTR exportName)
3761 {
3762 m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
3763 }
3764 void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
3765 void SetAnyHitShaderImport(LPCWSTR importName)
3766 {
3767 m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
3768 }
3769 void SetClosestHitShaderImport(LPCWSTR importName)
3770 {
3771 m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
3772 }
3773 void SetIntersectionShaderImport(LPCWSTR importName)
3774 {
3775 m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
3776 }
3777 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3778 {
3779 return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
3780 }
3781 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3782 operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
3783private:
3784 void Init() noexcept
3785 {
3786 SUBOBJECT_HELPER_BASE::Init();
3787 m_Desc = {};
3788 for (UINT i = 0; i < m_NumStrings; i++)
3789 {
3790 m_Strings[i].clear();
3791 }
3792 }
3793 void* Data() noexcept override { return &m_Desc; }
3794 D3D12_HIT_GROUP_DESC m_Desc;
3795 static const UINT m_NumStrings = 4;
3796 CD3DX12_STATE_OBJECT_DESC::StringContainer
3797 m_Strings[m_NumStrings]; // one string for every entrypoint name
3798};
3799
3800//------------------------------------------------------------------------------------------------
3801class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
3802 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3803{
3804public:
3805 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
3806 {
3807 Init();
3808 }
3809 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3810 {
3811 Init();
3812 AddToStateObject(ContainingStateObject);
3813 }
3814 void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
3815 {
3816 m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
3817 m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
3818 }
3819 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3820 {
3821 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
3822 }
3823 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3824 operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
3825private:
3826 void Init() noexcept
3827 {
3828 SUBOBJECT_HELPER_BASE::Init();
3829 m_Desc = {};
3830 }
3831 void* Data() noexcept override { return &m_Desc; }
3832 D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
3833};
3834
3835//------------------------------------------------------------------------------------------------
3836class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
3837 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3838{
3839public:
3840 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
3841 {
3842 Init();
3843 }
3844 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3845 {
3846 Init();
3847 AddToStateObject(ContainingStateObject);
3848 }
3849 void Config(UINT MaxTraceRecursionDepth) noexcept
3850 {
3851 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
3852 }
3853 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3854 {
3855 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
3856 }
3857 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3858 operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
3859private:
3860 void Init() noexcept
3861 {
3862 SUBOBJECT_HELPER_BASE::Init();
3863 m_Desc = {};
3864 }
3865 void* Data() noexcept override { return &m_Desc; }
3866 D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
3867};
3868
3869//------------------------------------------------------------------------------------------------
3870class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
3871 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3872{
3873public:
3874 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
3875 {
3876 Init();
3877 }
3878 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3879 {
3880 Init();
3881 AddToStateObject(ContainingStateObject);
3882 }
3883 void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
3884 {
3885 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
3886 m_Desc.Flags = Flags;
3887 }
3888 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3889 {
3890 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
3891 }
3892 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3893 operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
3894private:
3895 void Init() noexcept
3896 {
3897 SUBOBJECT_HELPER_BASE::Init();
3898 m_Desc = {};
3899 }
3900 void* Data() noexcept override { return &m_Desc; }
3901 D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
3902};
3903
3904//------------------------------------------------------------------------------------------------
3905class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
3906 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3907{
3908public:
3909 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
3910 {
3911 Init();
3912 }
3913 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3914 {
3915 Init();
3916 AddToStateObject(ContainingStateObject);
3917 }
3918 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
3919 {
3920 m_pRootSig = pRootSig;
3921 }
3922 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3923 {
3924 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
3925 }
3926 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3927 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
3928private:
3929 void Init() noexcept
3930 {
3931 SUBOBJECT_HELPER_BASE::Init();
3932 m_pRootSig = nullptr;
3933 }
3934 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
3935 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
3936};
3937
3938//------------------------------------------------------------------------------------------------
3939class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
3940 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3941{
3942public:
3943 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
3944 {
3945 Init();
3946 }
3947 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3948 {
3949 Init();
3950 AddToStateObject(ContainingStateObject);
3951 }
3952 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
3953 {
3954 m_pRootSig = pRootSig;
3955 }
3956 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3957 {
3958 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
3959 }
3960 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3961 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
3962private:
3963 void Init() noexcept
3964 {
3965 SUBOBJECT_HELPER_BASE::Init();
3966 m_pRootSig = nullptr;
3967 }
3968 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
3969 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
3970};
3971
3972//------------------------------------------------------------------------------------------------
3973class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
3974 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
3975{
3976public:
3977 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
3978 {
3979 Init();
3980 }
3981 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
3982 {
3983 Init();
3984 AddToStateObject(ContainingStateObject);
3985 }
3986 void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
3987 {
3988 m_Desc.Flags = Flags;
3989 }
3990 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
3991 {
3992 return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
3993 }
3994 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
3995 operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
3996private:
3997 void Init() noexcept
3998 {
3999 SUBOBJECT_HELPER_BASE::Init();
4000 m_Desc = {};
4001 }
4002 void* Data() noexcept override { return &m_Desc; }
4003 D3D12_STATE_OBJECT_CONFIG m_Desc;
4004};
4005
4006//------------------------------------------------------------------------------------------------
4007class CD3DX12_NODE_MASK_SUBOBJECT
4008 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
4009{
4010public:
4011 CD3DX12_NODE_MASK_SUBOBJECT() noexcept
4012 {
4013 Init();
4014 }
4015 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
4016 {
4017 Init();
4018 AddToStateObject(ContainingStateObject);
4019 }
4020 void SetNodeMask(UINT NodeMask) noexcept
4021 {
4022 m_Desc.NodeMask = NodeMask;
4023 }
4024 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
4025 {
4026 return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
4027 }
4028 operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
4029 operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
4030private:
4031 void Init() noexcept
4032 {
4033 SUBOBJECT_HELPER_BASE::Init();
4034 m_Desc = {};
4035 }
4036 void* Data() noexcept override { return &m_Desc; }
4037 D3D12_NODE_MASK m_Desc;
4038};
4039
4040#undef D3DX12_COM_PTR
4041#undef D3DX12_COM_PTR_GET
4042#undef D3DX12_COM_PTR_ADDRESSOF
4043#endif // #ifndef D3DX12_NO_STATE_OBJECT_HELPERS
4044
4045#endif // defined( __cplusplus )
4046
4047#endif //__D3DX12_H__
4048
4049
diff --git a/contrib/DirectX-Headers/include/directx/dxcore.h b/contrib/DirectX-Headers/include/directx/dxcore.h
new file mode 100644
index 0000000..4244eaa
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxcore.h
@@ -0,0 +1,41 @@
1/************************************************************
2* *
3* Copyright (c) Microsoft Corporation. *
4* Licensed under the MIT license. *
5* *
6************************************************************/
7
8#ifndef _DXCOREEXTMODULE_H_
9#define _DXCOREEXTMODULE_H_
10
11#include <winapifamily.h>
12#include "dxcore_interface.h"
13
14#pragma region Application Family or OneCore Family
15#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
16
17#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
18
19STDAPI
20DXCoreCreateAdapterFactory(
21 REFIID riid,
22 _COM_Outptr_ void** ppvFactory
23);
24
25template <class T>
26HRESULT
27DXCoreCreateAdapterFactory(
28 _COM_Outptr_ T** ppvFactory
29)
30{
31 return DXCoreCreateAdapterFactory(IID_PPV_ARGS(ppvFactory));
32}
33
34#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
35
36#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
37#pragma endregion
38
39#endif // _DXCOREEXTMODULE_H_
40
41
diff --git a/contrib/DirectX-Headers/include/directx/dxcore_interface.h b/contrib/DirectX-Headers/include/directx/dxcore_interface.h
new file mode 100644
index 0000000..b487fe1
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxcore_interface.h
@@ -0,0 +1,316 @@
1//
2// DXCore Interface
3// Copyright (C) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6
7#ifndef __dxcore_interface_h__
8#define __dxcore_interface_h__
9
10#ifndef COM_NO_WINDOWS_H
11#include "windows.h"
12#include "ole2.h"
13#endif /*COM_NO_WINDOWS_H*/
14
15#include <stdint.h>
16
17#ifdef __cplusplus
18
19#define _FACDXCORE 0x880
20#define MAKE_DXCORE_HRESULT( code ) MAKE_HRESULT( 1, _FACDXCORE, code )
21
22enum class DXCoreAdapterProperty : uint32_t
23{
24 InstanceLuid = 0,
25 DriverVersion = 1,
26 DriverDescription = 2,
27 HardwareID = 3, // Use HardwareIDParts instead, if available.
28 KmdModelVersion = 4,
29 ComputePreemptionGranularity = 5,
30 GraphicsPreemptionGranularity = 6,
31 DedicatedAdapterMemory = 7,
32 DedicatedSystemMemory = 8,
33 SharedSystemMemory = 9,
34 AcgCompatible = 10,
35 IsHardware = 11,
36 IsIntegrated = 12,
37 IsDetachable = 13,
38 HardwareIDParts = 14
39};
40
41enum class DXCoreAdapterState : uint32_t
42{
43 IsDriverUpdateInProgress = 0,
44 AdapterMemoryBudget = 1
45};
46
47enum class DXCoreSegmentGroup : uint32_t
48{
49 Local = 0,
50 NonLocal = 1
51};
52
53enum class DXCoreNotificationType : uint32_t
54{
55 AdapterListStale = 0,
56 AdapterNoLongerValid = 1,
57 AdapterBudgetChange = 2,
58 AdapterHardwareContentProtectionTeardown = 3
59};
60
61enum class DXCoreAdapterPreference : uint32_t
62{
63 Hardware = 0,
64 MinimumPower = 1,
65 HighPerformance = 2
66};
67
68struct DXCoreHardwareID
69{
70 uint32_t vendorID;
71 uint32_t deviceID;
72 uint32_t subSysID;
73 uint32_t revision;
74};
75
76struct DXCoreHardwareIDParts
77{
78 uint32_t vendorID;
79 uint32_t deviceID;
80 uint32_t subSystemID;
81 uint32_t subVendorID;
82 uint32_t revisionID;
83};
84
85struct DXCoreAdapterMemoryBudgetNodeSegmentGroup
86{
87 uint32_t nodeIndex;
88 DXCoreSegmentGroup segmentGroup;
89};
90
91struct DXCoreAdapterMemoryBudget
92{
93 uint64_t budget;
94 uint64_t currentUsage;
95 uint64_t availableForReservation;
96 uint64_t currentReservation;
97};
98
99typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
100 DXCoreNotificationType notificationType,
101 _In_ IUnknown *object,
102 _In_opt_ void *context);
103
104static_assert(sizeof(bool) == 1, "bool assumed as one byte");
105
106DEFINE_GUID(IID_IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
107DEFINE_GUID(IID_IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
108DEFINE_GUID(IID_IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
109DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D11_GRAPHICS, 0x8c47866b, 0x7583, 0x450d, 0xf0, 0xf0, 0x6b, 0xad, 0xa8, 0x95, 0xaf, 0x4b);
110DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GRAPHICS, 0x0c9ece4d, 0x2f6e, 0x4f01, 0x8c, 0x96, 0xe8, 0x9e, 0x33, 0x1b, 0x47, 0xb1);
111DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, 0x248e2800, 0xa793, 0x4724, 0xab, 0xaa, 0x23, 0xa6, 0xde, 0x1b, 0xe0, 0x90);
112
113/* interface IDXCoreAdapter */
114MIDL_INTERFACE("f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e")
115IDXCoreAdapter : public IUnknown
116{
117public:
118 virtual bool STDMETHODCALLTYPE IsValid() = 0;
119
120 virtual bool STDMETHODCALLTYPE IsAttributeSupported(
121 REFGUID attributeGUID) = 0;
122
123 virtual bool STDMETHODCALLTYPE IsPropertySupported(
124 DXCoreAdapterProperty property) = 0;
125
126 virtual HRESULT STDMETHODCALLTYPE GetProperty(
127 DXCoreAdapterProperty property,
128 size_t bufferSize,
129 _Out_writes_bytes_(bufferSize) void *propertyData) = 0;
130
131 template <class T>
132 HRESULT GetProperty(
133 DXCoreAdapterProperty property,
134 _Out_writes_bytes_(sizeof(T)) T *propertyData)
135 {
136 return GetProperty(property,
137 sizeof(T),
138 (void*)propertyData);
139 }
140
141 virtual HRESULT STDMETHODCALLTYPE GetPropertySize(
142 DXCoreAdapterProperty property,
143 _Out_ size_t *bufferSize) = 0;
144
145 virtual bool STDMETHODCALLTYPE IsQueryStateSupported(
146 DXCoreAdapterState property) = 0;
147
148 virtual HRESULT STDMETHODCALLTYPE QueryState(
149 DXCoreAdapterState state,
150 size_t inputStateDetailsSize,
151 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
152 size_t outputBufferSize,
153 _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
154
155 template <class T1, class T2>
156 HRESULT QueryState(
157 DXCoreAdapterState state,
158 _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputStateDetails,
159 _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
160 {
161 return QueryState(state,
162 sizeof(T1),
163 (const void*)inputStateDetails,
164 sizeof(T2),
165 (void*)outputBuffer);
166 }
167
168 template <class T>
169 HRESULT QueryState(
170 DXCoreAdapterState state,
171 _Out_writes_bytes_(sizeof(T)) T *outputBuffer)
172 {
173 return QueryState(state,
174 0,
175 nullptr,
176 sizeof(T),
177 (void*)outputBuffer);
178 }
179
180 virtual bool STDMETHODCALLTYPE IsSetStateSupported(
181 DXCoreAdapterState property) = 0;
182
183 virtual HRESULT STDMETHODCALLTYPE SetState(
184 DXCoreAdapterState state,
185 size_t inputStateDetailsSize,
186 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
187 size_t inputDataSize,
188 _In_reads_bytes_(inputDataSize) const void *inputData) = 0;
189
190 template <class T1, class T2>
191 HRESULT SetState(
192 DXCoreAdapterState state,
193 const T1 *inputStateDetails,
194 const T2 *inputData)
195 {
196 return SetState(state,
197 sizeof(T1),
198 (const void*)inputStateDetails,
199 sizeof(T2),
200 (const void*)inputData);
201 }
202
203 virtual HRESULT STDMETHODCALLTYPE GetFactory(
204 REFIID riid,
205 _COM_Outptr_ void** ppvFactory
206 ) = 0;
207
208 template <class T>
209 HRESULT GetFactory(
210 _COM_Outptr_ T** ppvFactory
211 )
212 {
213 return GetFactory(IID_PPV_ARGS(ppvFactory));
214 }
215};
216
217/* interface IDXCoreAdapterList */
218MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28")
219IDXCoreAdapterList : public IUnknown
220{
221public:
222 virtual HRESULT STDMETHODCALLTYPE GetAdapter(
223 uint32_t index,
224 REFIID riid,
225 _COM_Outptr_ void **ppvAdapter) = 0;
226
227 template<class T>
228 HRESULT STDMETHODCALLTYPE GetAdapter(
229 uint32_t index,
230 _COM_Outptr_ T **ppvAdapter)
231 {
232 return GetAdapter(index,
233 IID_PPV_ARGS(ppvAdapter));
234 }
235
236 virtual uint32_t STDMETHODCALLTYPE GetAdapterCount() = 0;
237
238 virtual bool STDMETHODCALLTYPE IsStale() = 0;
239
240 virtual HRESULT STDMETHODCALLTYPE GetFactory(
241 REFIID riid,
242 _COM_Outptr_ void** ppvFactory
243 ) = 0;
244
245 template <class T>
246 HRESULT GetFactory(
247 _COM_Outptr_ T** ppvFactory
248 )
249 {
250 return GetFactory(IID_PPV_ARGS(ppvFactory));
251 }
252
253 virtual HRESULT STDMETHODCALLTYPE Sort(
254 uint32_t numPreferences,
255 _In_reads_(numPreferences) const DXCoreAdapterPreference* preferences) = 0;
256
257 virtual bool STDMETHODCALLTYPE IsAdapterPreferenceSupported(
258 DXCoreAdapterPreference preference) = 0;
259};
260
261/* interface IDXCoreAdapterFactory */
262MIDL_INTERFACE("78ee5945-c36e-4b13-a669-005dd11c0f06")
263IDXCoreAdapterFactory : public IUnknown
264{
265public:
266
267 virtual HRESULT STDMETHODCALLTYPE CreateAdapterList(
268 uint32_t numAttributes,
269 _In_reads_(numAttributes) const GUID *filterAttributes,
270 REFIID riid,
271 _COM_Outptr_ void **ppvAdapterList) = 0;
272
273 template<class T>
274 HRESULT STDMETHODCALLTYPE CreateAdapterList(
275 uint32_t numAttributes,
276 _In_reads_(numAttributes) const GUID *filterAttributes,
277 _COM_Outptr_ T **ppvAdapterList)
278 {
279 return CreateAdapterList(numAttributes,
280 filterAttributes,
281 IID_PPV_ARGS(ppvAdapterList));
282 }
283
284 virtual HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
285 const LUID &adapterLUID,
286 REFIID riid,
287 _COM_Outptr_ void **ppvAdapter) = 0;
288
289 template<class T>
290 HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
291 const LUID &adapterLUID,
292 _COM_Outptr_ T **ppvAdapter)
293 {
294 return GetAdapterByLuid(adapterLUID,
295 IID_PPV_ARGS(ppvAdapter));
296 }
297
298 virtual bool STDMETHODCALLTYPE IsNotificationTypeSupported(
299 DXCoreNotificationType notificationType) = 0;
300
301 virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
302 _In_ IUnknown *dxCoreObject,
303 DXCoreNotificationType notificationType,
304 _In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
305 _In_opt_ void *callbackContext,
306 _Out_ uint32_t *eventCookie) = 0;
307
308 virtual HRESULT STDMETHODCALLTYPE UnregisterEventNotification(
309 uint32_t eventCookie) = 0;
310};
311
312#endif // __cplusplus
313
314#endif // __dxcore_interface_h__
315
316
diff --git a/contrib/DirectX-Headers/include/directx/dxgicommon.h b/contrib/DirectX-Headers/include/directx/dxgicommon.h
new file mode 100644
index 0000000..f83aa01
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgicommon.h
@@ -0,0 +1,57 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgicommon_h__
7#define __dxgicommon_h__
8
9
10typedef struct DXGI_RATIONAL
11{
12 UINT Numerator;
13 UINT Denominator;
14} DXGI_RATIONAL;
15
16// The following values are used with DXGI_SAMPLE_DESC::Quality:
17#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
18#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
19
20typedef struct DXGI_SAMPLE_DESC
21{
22 UINT Count;
23 UINT Quality;
24} DXGI_SAMPLE_DESC;
25
26typedef enum DXGI_COLOR_SPACE_TYPE
27{
28 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
29 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
30 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
31 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
32 DXGI_COLOR_SPACE_RESERVED = 4,
33 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
34 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
35 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
36 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
37 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
38 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
39 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
40 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
42 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
43 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
44 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
45 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
46 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
47 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
48 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
49 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
50 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
51 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
52 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
53 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
54} DXGI_COLOR_SPACE_TYPE;
55
56#endif // __dxgicommon_h__
57
diff --git a/contrib/DirectX-Headers/include/directx/dxgicommon.idl b/contrib/DirectX-Headers/include/directx/dxgicommon.idl
new file mode 100644
index 0000000..ab73230
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgicommon.idl
@@ -0,0 +1,52 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef struct DXGI_RATIONAL
8{
9 UINT Numerator;
10 UINT Denominator;
11} DXGI_RATIONAL;
12
13// The following values are used with DXGI_SAMPLE_DESC::Quality:
14#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
15#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
16
17typedef struct DXGI_SAMPLE_DESC
18{
19 UINT Count;
20 UINT Quality;
21} DXGI_SAMPLE_DESC;
22
23typedef enum DXGI_COLOR_SPACE_TYPE
24{
25 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
26 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
27 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
28 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
29 DXGI_COLOR_SPACE_RESERVED = 4,
30 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
31 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
32 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
33 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
34 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
35 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
36 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
37 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
38 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
39 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
40 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
42 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
43 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
44 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
45 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
46 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
47 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
48 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
49 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
50 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
51} DXGI_COLOR_SPACE_TYPE;
52
diff --git a/contrib/DirectX-Headers/include/directx/dxgiformat.h b/contrib/DirectX-Headers/include/directx/dxgiformat.h
new file mode 100644
index 0000000..52aae1b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgiformat.h
@@ -0,0 +1,142 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgiformat_h__
7#define __dxgiformat_h__
8
9#define DXGI_FORMAT_DEFINED 1
10
11typedef enum DXGI_FORMAT
12{
13 DXGI_FORMAT_UNKNOWN = 0,
14 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
15 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
16 DXGI_FORMAT_R32G32B32A32_UINT = 3,
17 DXGI_FORMAT_R32G32B32A32_SINT = 4,
18 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
19 DXGI_FORMAT_R32G32B32_FLOAT = 6,
20 DXGI_FORMAT_R32G32B32_UINT = 7,
21 DXGI_FORMAT_R32G32B32_SINT = 8,
22 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
23 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
24 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
25 DXGI_FORMAT_R16G16B16A16_UINT = 12,
26 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
27 DXGI_FORMAT_R16G16B16A16_SINT = 14,
28 DXGI_FORMAT_R32G32_TYPELESS = 15,
29 DXGI_FORMAT_R32G32_FLOAT = 16,
30 DXGI_FORMAT_R32G32_UINT = 17,
31 DXGI_FORMAT_R32G32_SINT = 18,
32 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
33 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
34 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
35 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
36 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
37 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
38 DXGI_FORMAT_R10G10B10A2_UINT = 25,
39 DXGI_FORMAT_R11G11B10_FLOAT = 26,
40 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
41 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
42 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
43 DXGI_FORMAT_R8G8B8A8_UINT = 30,
44 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
45 DXGI_FORMAT_R8G8B8A8_SINT = 32,
46 DXGI_FORMAT_R16G16_TYPELESS = 33,
47 DXGI_FORMAT_R16G16_FLOAT = 34,
48 DXGI_FORMAT_R16G16_UNORM = 35,
49 DXGI_FORMAT_R16G16_UINT = 36,
50 DXGI_FORMAT_R16G16_SNORM = 37,
51 DXGI_FORMAT_R16G16_SINT = 38,
52 DXGI_FORMAT_R32_TYPELESS = 39,
53 DXGI_FORMAT_D32_FLOAT = 40,
54 DXGI_FORMAT_R32_FLOAT = 41,
55 DXGI_FORMAT_R32_UINT = 42,
56 DXGI_FORMAT_R32_SINT = 43,
57 DXGI_FORMAT_R24G8_TYPELESS = 44,
58 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
59 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
60 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
61 DXGI_FORMAT_R8G8_TYPELESS = 48,
62 DXGI_FORMAT_R8G8_UNORM = 49,
63 DXGI_FORMAT_R8G8_UINT = 50,
64 DXGI_FORMAT_R8G8_SNORM = 51,
65 DXGI_FORMAT_R8G8_SINT = 52,
66 DXGI_FORMAT_R16_TYPELESS = 53,
67 DXGI_FORMAT_R16_FLOAT = 54,
68 DXGI_FORMAT_D16_UNORM = 55,
69 DXGI_FORMAT_R16_UNORM = 56,
70 DXGI_FORMAT_R16_UINT = 57,
71 DXGI_FORMAT_R16_SNORM = 58,
72 DXGI_FORMAT_R16_SINT = 59,
73 DXGI_FORMAT_R8_TYPELESS = 60,
74 DXGI_FORMAT_R8_UNORM = 61,
75 DXGI_FORMAT_R8_UINT = 62,
76 DXGI_FORMAT_R8_SNORM = 63,
77 DXGI_FORMAT_R8_SINT = 64,
78 DXGI_FORMAT_A8_UNORM = 65,
79 DXGI_FORMAT_R1_UNORM = 66,
80 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
81 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
82 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
83 DXGI_FORMAT_BC1_TYPELESS = 70,
84 DXGI_FORMAT_BC1_UNORM = 71,
85 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
86 DXGI_FORMAT_BC2_TYPELESS = 73,
87 DXGI_FORMAT_BC2_UNORM = 74,
88 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
89 DXGI_FORMAT_BC3_TYPELESS = 76,
90 DXGI_FORMAT_BC3_UNORM = 77,
91 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
92 DXGI_FORMAT_BC4_TYPELESS = 79,
93 DXGI_FORMAT_BC4_UNORM = 80,
94 DXGI_FORMAT_BC4_SNORM = 81,
95 DXGI_FORMAT_BC5_TYPELESS = 82,
96 DXGI_FORMAT_BC5_UNORM = 83,
97 DXGI_FORMAT_BC5_SNORM = 84,
98 DXGI_FORMAT_B5G6R5_UNORM = 85,
99 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
100 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
101 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
102 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
103 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
104 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
105 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
106 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
107 DXGI_FORMAT_BC6H_TYPELESS = 94,
108 DXGI_FORMAT_BC6H_UF16 = 95,
109 DXGI_FORMAT_BC6H_SF16 = 96,
110 DXGI_FORMAT_BC7_TYPELESS = 97,
111 DXGI_FORMAT_BC7_UNORM = 98,
112 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
113 DXGI_FORMAT_AYUV = 100,
114 DXGI_FORMAT_Y410 = 101,
115 DXGI_FORMAT_Y416 = 102,
116 DXGI_FORMAT_NV12 = 103,
117 DXGI_FORMAT_P010 = 104,
118 DXGI_FORMAT_P016 = 105,
119 DXGI_FORMAT_420_OPAQUE = 106,
120 DXGI_FORMAT_YUY2 = 107,
121 DXGI_FORMAT_Y210 = 108,
122 DXGI_FORMAT_Y216 = 109,
123 DXGI_FORMAT_NV11 = 110,
124 DXGI_FORMAT_AI44 = 111,
125 DXGI_FORMAT_IA44 = 112,
126 DXGI_FORMAT_P8 = 113,
127 DXGI_FORMAT_A8P8 = 114,
128 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
129
130 DXGI_FORMAT_P208 = 130,
131 DXGI_FORMAT_V208 = 131,
132 DXGI_FORMAT_V408 = 132,
133
134
135 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
136 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
137
138
139 DXGI_FORMAT_FORCE_UINT = 0xffffffff
140} DXGI_FORMAT;
141
142#endif // __dxgiformat_h__
diff --git a/contrib/DirectX-Headers/include/directx/dxgiformat.idl b/contrib/DirectX-Headers/include/directx/dxgiformat.idl
new file mode 100644
index 0000000..d9576ef
--- /dev/null
+++ b/contrib/DirectX-Headers/include/directx/dxgiformat.idl
@@ -0,0 +1,137 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef enum DXGI_FORMAT
8{
9 DXGI_FORMAT_UNKNOWN = 0,
10 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
11 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
12 DXGI_FORMAT_R32G32B32A32_UINT = 3,
13 DXGI_FORMAT_R32G32B32A32_SINT = 4,
14 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
15 DXGI_FORMAT_R32G32B32_FLOAT = 6,
16 DXGI_FORMAT_R32G32B32_UINT = 7,
17 DXGI_FORMAT_R32G32B32_SINT = 8,
18 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
19 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
20 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
21 DXGI_FORMAT_R16G16B16A16_UINT = 12,
22 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
23 DXGI_FORMAT_R16G16B16A16_SINT = 14,
24 DXGI_FORMAT_R32G32_TYPELESS = 15,
25 DXGI_FORMAT_R32G32_FLOAT = 16,
26 DXGI_FORMAT_R32G32_UINT = 17,
27 DXGI_FORMAT_R32G32_SINT = 18,
28 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
29 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
30 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
31 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
32 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
33 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
34 DXGI_FORMAT_R10G10B10A2_UINT = 25,
35 DXGI_FORMAT_R11G11B10_FLOAT = 26,
36 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
37 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
38 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
39 DXGI_FORMAT_R8G8B8A8_UINT = 30,
40 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
41 DXGI_FORMAT_R8G8B8A8_SINT = 32,
42 DXGI_FORMAT_R16G16_TYPELESS = 33,
43 DXGI_FORMAT_R16G16_FLOAT = 34,
44 DXGI_FORMAT_R16G16_UNORM = 35,
45 DXGI_FORMAT_R16G16_UINT = 36,
46 DXGI_FORMAT_R16G16_SNORM = 37,
47 DXGI_FORMAT_R16G16_SINT = 38,
48 DXGI_FORMAT_R32_TYPELESS = 39,
49 DXGI_FORMAT_D32_FLOAT = 40,
50 DXGI_FORMAT_R32_FLOAT = 41,
51 DXGI_FORMAT_R32_UINT = 42,
52 DXGI_FORMAT_R32_SINT = 43,
53 DXGI_FORMAT_R24G8_TYPELESS = 44,
54 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
55 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
56 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
57 DXGI_FORMAT_R8G8_TYPELESS = 48,
58 DXGI_FORMAT_R8G8_UNORM = 49,
59 DXGI_FORMAT_R8G8_UINT = 50,
60 DXGI_FORMAT_R8G8_SNORM = 51,
61 DXGI_FORMAT_R8G8_SINT = 52,
62 DXGI_FORMAT_R16_TYPELESS = 53,
63 DXGI_FORMAT_R16_FLOAT = 54,
64 DXGI_FORMAT_D16_UNORM = 55,
65 DXGI_FORMAT_R16_UNORM = 56,
66 DXGI_FORMAT_R16_UINT = 57,
67 DXGI_FORMAT_R16_SNORM = 58,
68 DXGI_FORMAT_R16_SINT = 59,
69 DXGI_FORMAT_R8_TYPELESS = 60,
70 DXGI_FORMAT_R8_UNORM = 61,
71 DXGI_FORMAT_R8_UINT = 62,
72 DXGI_FORMAT_R8_SNORM = 63,
73 DXGI_FORMAT_R8_SINT = 64,
74 DXGI_FORMAT_A8_UNORM = 65,
75 DXGI_FORMAT_R1_UNORM = 66,
76 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
77 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
78 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
79 DXGI_FORMAT_BC1_TYPELESS = 70,
80 DXGI_FORMAT_BC1_UNORM = 71,
81 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
82 DXGI_FORMAT_BC2_TYPELESS = 73,
83 DXGI_FORMAT_BC2_UNORM = 74,
84 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
85 DXGI_FORMAT_BC3_TYPELESS = 76,
86 DXGI_FORMAT_BC3_UNORM = 77,
87 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
88 DXGI_FORMAT_BC4_TYPELESS = 79,
89 DXGI_FORMAT_BC4_UNORM = 80,
90 DXGI_FORMAT_BC4_SNORM = 81,
91 DXGI_FORMAT_BC5_TYPELESS = 82,
92 DXGI_FORMAT_BC5_UNORM = 83,
93 DXGI_FORMAT_BC5_SNORM = 84,
94 DXGI_FORMAT_B5G6R5_UNORM = 85,
95 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
96 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
97 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
98 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
99 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
100 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
101 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
102 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
103 DXGI_FORMAT_BC6H_TYPELESS = 94,
104 DXGI_FORMAT_BC6H_UF16 = 95,
105 DXGI_FORMAT_BC6H_SF16 = 96,
106 DXGI_FORMAT_BC7_TYPELESS = 97,
107 DXGI_FORMAT_BC7_UNORM = 98,
108 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
109 DXGI_FORMAT_AYUV = 100,
110 DXGI_FORMAT_Y410 = 101,
111 DXGI_FORMAT_Y416 = 102,
112 DXGI_FORMAT_NV12 = 103,
113 DXGI_FORMAT_P010 = 104,
114 DXGI_FORMAT_P016 = 105,
115 DXGI_FORMAT_420_OPAQUE = 106,
116 DXGI_FORMAT_YUY2 = 107,
117 DXGI_FORMAT_Y210 = 108,
118 DXGI_FORMAT_Y216 = 109,
119 DXGI_FORMAT_NV11 = 110,
120 DXGI_FORMAT_AI44 = 111,
121 DXGI_FORMAT_IA44 = 112,
122 DXGI_FORMAT_P8 = 113,
123 DXGI_FORMAT_A8P8 = 114,
124 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
125
126 DXGI_FORMAT_P208 = 130,
127 DXGI_FORMAT_V208 = 131,
128 DXGI_FORMAT_V408 = 132,
129
130
131 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
132 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
133
134
135 DXGI_FORMAT_FORCE_UINT = 0xffffffff
136} DXGI_FORMAT;
137
diff --git a/contrib/DirectX-Headers/include/dxguids/dxguids.h b/contrib/DirectX-Headers/include/dxguids/dxguids.h
new file mode 100644
index 0000000..4ee66ff
--- /dev/null
+++ b/contrib/DirectX-Headers/include/dxguids/dxguids.h
@@ -0,0 +1,126 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#ifndef __cplusplus
7#error "This header requires C++"
8#endif
9
10constexpr inline bool ConstexprIsEqualGUID(REFGUID a, REFGUID b)
11{
12 return a.Data1 == b.Data1 &&
13 a.Data2 == b.Data2 &&
14 a.Data3 == b.Data3 &&
15 a.Data4[0] == b.Data4[0] &&
16 a.Data4[1] == b.Data4[1] &&
17 a.Data4[2] == b.Data4[2] &&
18 a.Data4[3] == b.Data4[3] &&
19 a.Data4[4] == b.Data4[4] &&
20 a.Data4[5] == b.Data4[5] &&
21 a.Data4[6] == b.Data4[6] &&
22 a.Data4[7] == b.Data4[7];
23}
24
25// Each COM interface (e.g. ID3D12Device) has a unique interface ID (IID) associated with it. With MSVC, the IID is defined
26// along with the interface declaration using compiler intrinsics (__declspec(uuid(...)); the IID can then be retrieved
27// using __uuidof. These intrinsics are not supported with all toolchains, so these helpers redefine IID values that can be
28// used with the various adapter COM helpers (ComPtr, IID_PPV_ARGS, etc.) for Linux. IIDs are stable and cannot change, but as
29// a precaution we statically assert the values are as expected when compiling for Windows.
30#ifdef _WIN32
31// winadapter.h isn't included when building for Windows, so the base function template needs to be declared.
32template <typename T> GUID uuidof() = delete;
33#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
34template <> constexpr GUID uuidof<InterfaceName>() \
35{ \
36 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
37} \
38static_assert(ConstexprIsEqualGUID(uuidof<InterfaceName>(), __uuidof(InterfaceName)), "GUID definition mismatch: "#InterfaceName);
39#else
40#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
41template <> constexpr GUID uuidof<InterfaceName>() \
42{ \
43 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
44}
45#endif
46
47// Direct3D
48WINADAPTER_IID(ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8);
49WINADAPTER_IID(ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57);
50WINADAPTER_IID(ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14);
51WINADAPTER_IID(ID3D12RootSignatureDeserializer, 0x34AB647B, 0x3CC8, 0x46AC, 0x84, 0x1B, 0xC0, 0x96, 0x56, 0x45, 0xC0, 0x46);
52WINADAPTER_IID(ID3D12VersionedRootSignatureDeserializer, 0x7F91CE67, 0x090C, 0x4BB7, 0xB7, 0x8E, 0xED, 0x8F, 0xF2, 0xE3, 0x1D, 0xA0);
53WINADAPTER_IID(ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6);
54WINADAPTER_IID(ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3);
55WINADAPTER_IID(ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad);
56WINADAPTER_IID(ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24);
57WINADAPTER_IID(ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76);
58WINADAPTER_IID(ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a);
59WINADAPTER_IID(ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45);
60WINADAPTER_IID(ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51);
61WINADAPTER_IID(ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4);
62WINADAPTER_IID(ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1);
63WINADAPTER_IID(ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5);
64WINADAPTER_IID(ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55);
65WINADAPTER_IID(ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7);
66WINADAPTER_IID(ID3D12GraphicsCommandList2, 0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28);
67WINADAPTER_IID(ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed);
68WINADAPTER_IID(ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7);
69WINADAPTER_IID(ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f);
70WINADAPTER_IID(ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3);
71WINADAPTER_IID(ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e);
72WINADAPTER_IID(ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28);
73WINADAPTER_IID(ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98);
74WINADAPTER_IID(ID3D12ProtectedSession, 0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B);
75WINADAPTER_IID(ID3D12ProtectedResourceSession, 0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0x0A, 0x09, 0x9C, 0x3D);
76WINADAPTER_IID(ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5);
77WINADAPTER_IID(ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8);
78WINADAPTER_IID(ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f);
79WINADAPTER_IID(ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13);
80WINADAPTER_IID(ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d);
81WINADAPTER_IID(ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60);
82WINADAPTER_IID(ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d);
83WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings, 0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63);
84WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings1, 0xDBD5AE51, 0x3317, 0x4F0A, 0xAD, 0xF9, 0x1D, 0x7C, 0xED, 0xCA, 0xAE, 0x0B);
85WINADAPTER_IID(ID3D12DeviceRemovedExtendedData, 0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71);
86WINADAPTER_IID(ID3D12DeviceRemovedExtendedData1, 0x9727A022, 0xCF1D, 0x4DDA, 0x9E, 0xBA, 0xEF, 0xFA, 0x65, 0x3F, 0xC5, 0x06);
87WINADAPTER_IID(ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc);
88WINADAPTER_IID(ID3D12ProtectedResourceSession1, 0xD6F12DD6, 0x76FB, 0x406E, 0x89, 0x61, 0x42, 0x96, 0xEE, 0xFC, 0x04, 0x09);
89WINADAPTER_IID(ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b, 0xd1, 0xdd, 0x60, 0x46, 0xb9, 0x35, 0x8b);
90WINADAPTER_IID(ID3D12Device8, 0x9218E6BB, 0xF944, 0x4F7E, 0xA7, 0x5C, 0xB1, 0xB2, 0xC7, 0xB7, 0x01, 0xF3);
91WINADAPTER_IID(ID3D12Resource1, 0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19);
92WINADAPTER_IID(ID3D12Resource2, 0xBE36EC3B, 0xEA85, 0x4AEB, 0xA4, 0x5A, 0xE9, 0xD7, 0x64, 0x04, 0xA4, 0x95);
93WINADAPTER_IID(ID3D12Heap1, 0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D);
94WINADAPTER_IID(ID3D12GraphicsCommandList3, 0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D);
95WINADAPTER_IID(ID3D12MetaCommand, 0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70);
96WINADAPTER_IID(ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74);
97WINADAPTER_IID(ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6, 0xec, 0x12, 0x92, 0x55, 0xdc, 0x49, 0xa8);
98WINADAPTER_IID(ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc, 0x9e, 0xeb, 0xc2, 0xcf, 0xa1, 0xd8, 0x3c);
99WINADAPTER_IID(ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5);
100WINADAPTER_IID(ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7, 0x18, 0xd7, 0x7f, 0x58, 0xb1, 0xf1, 0xc7);
101WINADAPTER_IID(ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea);
102WINADAPTER_IID(ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96, 0xcf, 0x56, 0x89, 0xa9, 0x37, 0x0f, 0x80);
103
104#ifdef __d3d12sdklayers_h__
105WINADAPTER_IID(ID3D12Debug, 0x344488b7, 0x6846, 0x474b, 0xb9, 0x89, 0xf0, 0x27, 0x44, 0x82, 0x45, 0xe0);
106WINADAPTER_IID(ID3D12Debug1, 0xaffaa4ca, 0x63fe, 0x4d8e, 0xb8, 0xad, 0x15, 0x90, 0x00, 0xaf, 0x43, 0x04);
107WINADAPTER_IID(ID3D12Debug2, 0x93a665c4, 0xa3b2, 0x4e5d, 0xb6, 0x92, 0xa2, 0x6a, 0xe1, 0x4e, 0x33, 0x74);
108WINADAPTER_IID(ID3D12Debug3, 0x5cf4e58f, 0xf671, 0x4ff1, 0xa5, 0x42, 0x36, 0x86, 0xe3, 0xd1, 0x53, 0xd1);
109WINADAPTER_IID(ID3D12Debug4, 0x014b816e, 0x9ec5, 0x4a2f, 0xa8, 0x45, 0xff, 0xbe, 0x44, 0x1c, 0xe1, 0x3a);
110WINADAPTER_IID(ID3D12DebugDevice1, 0xa9b71770, 0xd099, 0x4a65, 0xa6, 0x98, 0x3d, 0xee, 0x10, 0x02, 0x0f, 0x88);
111WINADAPTER_IID(ID3D12DebugDevice, 0x3febd6dd, 0x4973, 0x4787, 0x81, 0x94, 0xe4, 0x5f, 0x9e, 0x28, 0x92, 0x3e);
112WINADAPTER_IID(ID3D12DebugDevice2, 0x60eccbc1, 0x378d, 0x4df1, 0x89, 0x4c, 0xf8, 0xac, 0x5c, 0xe4, 0xd7, 0xdd);
113WINADAPTER_IID(ID3D12DebugCommandQueue, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3a);
114WINADAPTER_IID(ID3D12DebugCommandList1, 0x102ca951, 0x311b, 0x4b01, 0xb1, 0x1f, 0xec, 0xb8, 0x3e, 0x06, 0x1b, 0x37);
115WINADAPTER_IID(ID3D12DebugCommandList, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3f);
116WINADAPTER_IID(ID3D12DebugCommandList2, 0xaeb575cf, 0x4e06, 0x48be, 0xba, 0x3b, 0xc4, 0x50, 0xfc, 0x96, 0x65, 0x2e);
117WINADAPTER_IID(ID3D12SharingContract, 0x0adf7d52, 0x929c, 0x4e61, 0xad, 0xdb, 0xff, 0xed, 0x30, 0xde, 0x66, 0xef);
118WINADAPTER_IID(ID3D12InfoQueue, 0x0742a90b, 0xc387, 0x483f, 0xb9, 0x46, 0x30, 0xa7, 0xe4, 0xe6, 0x14, 0x58);
119#endif
120
121// DXCore
122#ifdef __dxcore_interface_h__
123WINADAPTER_IID(IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
124WINADAPTER_IID(IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
125WINADAPTER_IID(IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
126#endif
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h b/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/OAIdl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h b/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/OCIdl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/rpc.h b/contrib/DirectX-Headers/include/wsl/stubs/rpc.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/rpc.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h b/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h
new file mode 100644
index 0000000..5b5f2e8
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/rpcndr.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once
6#define __RPCNDR_H_VERSION__ \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h b/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h
new file mode 100644
index 0000000..064c4c2
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/winapifamily.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include. Unconditionally light up all APIs.
5#pragma once
6#define WINAPI_FAMILY_PARTITION(Partitions) 1 \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h b/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h
new file mode 100644
index 0000000..43e7d0b
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/wrl/client.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy d3dx12.h include
5#pragma once
6#include "../wrladapter.h" \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h b/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h
new file mode 100644
index 0000000..fb2bebc
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/stubs/wrl/implements.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy DML TF runtime includes
5#pragma once
6#include "wrladapter.h" \ No newline at end of file
diff --git a/contrib/DirectX-Headers/include/wsl/winadapter.h b/contrib/DirectX-Headers/include/wsl/winadapter.h
new file mode 100644
index 0000000..8400f4a
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/winadapter.h
@@ -0,0 +1,340 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6// These #defines prevent the idl-generated headers from trying to include
7// Windows.h from the SDK rather than this one.
8#define RPC_NO_WINDOWS_H
9#define COM_NO_WINDOWS_H
10
11// Allcaps type definitions
12#include <stddef.h>
13#include <stdint.h>
14#include <string.h>
15#include <limits.h>
16
17// Note: using fixed-width here to match Windows widths
18// Specifically this is different for 'long' vs 'LONG'
19typedef uint8_t UINT8;
20typedef int8_t INT8;
21typedef uint16_t UINT16;
22typedef int16_t INT16;
23typedef uint32_t UINT32, UINT, ULONG, DWORD, BOOL;
24typedef int32_t INT32, INT, LONG;
25typedef uint64_t UINT64, ULONG_PTR;
26typedef int64_t INT64, LONG_PTR;
27typedef void VOID, *HANDLE, *RPC_IF_HANDLE, *LPVOID;
28typedef const void *LPCVOID;
29typedef size_t SIZE_T;
30typedef float FLOAT;
31typedef double DOUBLE;
32typedef unsigned char BYTE;
33typedef int HWND;
34
35// Note: WCHAR is not the same between Windows and Linux, to enable
36// string manipulation APIs to work with resulting strings.
37// APIs to D3D/DXCore will work on Linux wchars, but beware with
38// interactions directly with the Windows kernel.
39typedef char CHAR, *PSTR, *LPSTR, TCHAR, *PTSTR;
40typedef const char *LPCSTR, *PCSTR, *LPCTSTR, *PCTSTR;
41typedef wchar_t WCHAR, *PWSTR, *LPWSTR, *PWCHAR;
42typedef const wchar_t *LPCWSTR, *PCWSTR;
43
44#undef LONG_MAX
45#define LONG_MAX INT_MAX
46#undef ULONG_MAX
47#define ULONG_MAX UINT_MAX
48
49// Misc defines
50#define interface struct
51#define MIDL_INTERFACE(x) interface
52#define __analysis_assume(x)
53#define TRUE 1u
54#define FALSE 0u
55#define DECLARE_INTERFACE(iface) interface iface
56#define PURE = 0
57#define THIS_
58#define DECLSPEC_UUID(x)
59#define DECLSPEC_NOVTABLE
60#define DECLSPEC_SELECTANY
61#define EXTERN_C extern "C"
62
63typedef struct _GUID {
64 uint32_t Data1;
65 uint16_t Data2;
66 uint16_t Data3;
67 uint8_t Data4[ 8 ];
68} GUID;
69
70#ifdef __cplusplus
71#ifdef INITGUID
72#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern "C" const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
73#else
74#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern "C" const GUID name
75#endif
76
77template <typename T> GUID uuidof() = delete;
78template <typename T> GUID uuidof(T*) { return uuidof<T>(); }
79template <typename T> GUID uuidof(T**) { return uuidof<T>(); }
80template <typename T> GUID uuidof(T&) { return uuidof<T>(); }
81#define __uuidof(x) uuidof(x)
82#else
83#ifdef INITGUID
84#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
85#else
86#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) extern const GUID name
87#endif
88#endif
89
90typedef GUID IID;
91typedef GUID UUID;
92typedef GUID CLSID;
93#ifdef __cplusplus
94#define REFGUID const GUID &
95#define REFIID const IID &
96#define REFCLSID const IID &
97
98__inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
99{
100 return (
101 ((uint32_t *)&rguid1)[0] == ((uint32_t *)&rguid2)[0] &&
102 ((uint32_t *)&rguid1)[1] == ((uint32_t *)&rguid2)[1] &&
103 ((uint32_t *)&rguid1)[2] == ((uint32_t *)&rguid2)[2] &&
104 ((uint32_t *)&rguid1)[3] == ((uint32_t *)&rguid2)[3]);
105}
106#else
107#define REFGUID const GUID *
108#define REFIID const IID *
109#define REFCLSID const IID *
110#endif
111
112// SAL annotations
113#define _In_
114#define _In_z_
115#define _In_opt_
116#define _In_opt_z_
117#define _In_reads_(x)
118#define _In_reads_opt_(x)
119#define _In_reads_bytes_(x)
120#define _In_reads_bytes_opt_(x)
121#define _In_range_(x, y)
122#define _In_bytecount_(x)
123#define _Out_
124#define _Out_opt_
125#define _Outptr_
126#define _Outptr_opt_result_z_
127#define _Outptr_opt_result_bytebuffer_(x)
128#define _COM_Outptr_
129#define _COM_Outptr_result_maybenull_
130#define _COM_Outptr_opt_
131#define _COM_Outptr_opt_result_maybenull_
132#define _Out_writes_(x)
133#define _Out_writes_z_(x)
134#define _Out_writes_opt_(x)
135#define _Out_writes_all_(x)
136#define _Out_writes_all_opt_(x)
137#define _Out_writes_to_opt_(x, y)
138#define _Out_writes_bytes_(x)
139#define _Out_writes_bytes_all_(x)
140#define _Out_writes_bytes_all_opt_(x)
141#define _Out_writes_bytes_opt_(x)
142#define _Inout_
143#define _Inout_opt_
144#define _Inout_updates_(x)
145#define _Inout_updates_bytes_(x)
146#define _Field_size_(x)
147#define _Field_size_opt_(x)
148#define _Field_size_bytes_(x)
149#define _Field_size_full_(x)
150#define _Field_size_bytes_full_(x)
151#define _Field_size_bytes_full_opt_(x)
152#define _Field_size_bytes_part_(x, y)
153#define _Field_range_(x, y)
154#define _Field_z_
155#define _Check_return_
156#define _IRQL_requires_(x)
157#define _IRQL_requires_min_(x)
158#define _IRQL_requires_max_(x)
159#define _At_(x, y)
160#define _Always_(x)
161#define _Return_type_success_(x)
162#define _Translates_Win32_to_HRESULT_(x)
163#define _Maybenull_
164#define _Outptr_result_maybenull_
165#define _Outptr_result_nullonfailure_
166#define _Analysis_assume_(x)
167#define _Success_(x)
168#define _In_count_(x)
169#define _In_opt_count_(x)
170#define _Use_decl_annotations_
171
172// Calling conventions
173#define __cdecl
174#define __stdcall
175#define STDMETHODCALLTYPE
176#define STDAPICALLTYPE
177#define STDAPI extern "C" HRESULT STDAPICALLTYPE
178#define WINAPI
179#define STDMETHOD(name) virtual HRESULT name
180#define STDMETHOD_(type,name) virtual type name
181#define IFACEMETHOD(method) /*__override*/ STDMETHOD(method)
182#define IFACEMETHOD_(type, method) /*__override*/ STDMETHOD_(type, method)
183
184// Error codes
185typedef LONG HRESULT;
186#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
187#define FAILED(hr) (((HRESULT)(hr)) < 0)
188#define S_OK ((HRESULT)0L)
189#define S_FALSE ((HRESULT)1L)
190#define E_NOTIMPL ((HRESULT)0x80000001L)
191#define E_OUTOFMEMORY ((HRESULT)0x80000002L)
192#define E_INVALIDARG ((HRESULT)0x80000003L)
193#define E_NOINTERFACE ((HRESULT)0x80000004L)
194#define E_POINTER ((HRESULT)0x80000005L)
195#define E_HANDLE ((HRESULT)0x80000006L)
196#define E_ABORT ((HRESULT)0x80000007L)
197#define E_FAIL ((HRESULT)0x80000008L)
198#define E_ACCESSDENIED ((HRESULT)0x80000009L)
199#define E_UNEXPECTED ((HRESULT)0x8000FFFFL)
200#define DXGI_ERROR_DEVICE_HUNG ((HRESULT)0x887A0006L)
201#define DXGI_ERROR_DEVICE_REMOVED ((HRESULT)0x887A0005L)
202#define DXGI_ERROR_DEVICE_RESET ((HRESULT)0x887A0007L)
203#define DXGI_ERROR_DRIVER_INTERNAL_ERROR ((HRESULT)0x887A0020L)
204#define DXGI_ERROR_INVALID_CALL ((HRESULT)0x887A0001L)
205
206typedef struct _LUID
207{
208 ULONG LowPart;
209 LONG HighPart;
210} LUID;
211
212struct RECT
213{
214 int left;
215 int top;
216 int right;
217 int bottom;
218};
219
220typedef union _LARGE_INTEGER {
221 struct {
222 uint32_t LowPart;
223 uint32_t HighPart;
224 } u;
225 int64_t QuadPart;
226} LARGE_INTEGER;
227
228typedef union _ULARGE_INTEGER {
229 struct {
230 uint32_t LowPart;
231 uint32_t HighPart;
232 } u;
233 uint64_t QuadPart;
234} ULARGE_INTEGER;
235
236struct SECURITY_ATTRIBUTES;
237struct STATSTG;
238
239#ifdef __cplusplus
240// ENUM_FLAG_OPERATORS
241// Define operator overloads to enable bit operations on enum values that are
242// used to define flags. Use DEFINE_ENUM_FLAG_OPERATORS(YOUR_TYPE) to enable these
243// operators on YOUR_TYPE.
244extern "C++" {
245 template <size_t S>
246 struct _ENUM_FLAG_INTEGER_FOR_SIZE;
247
248 template <>
249 struct _ENUM_FLAG_INTEGER_FOR_SIZE<1>
250 {
251 typedef int8_t type;
252 };
253
254 template <>
255 struct _ENUM_FLAG_INTEGER_FOR_SIZE<2>
256 {
257 typedef int16_t type;
258 };
259
260 template <>
261 struct _ENUM_FLAG_INTEGER_FOR_SIZE<4>
262 {
263 typedef int32_t type;
264 };
265
266 template <>
267 struct _ENUM_FLAG_INTEGER_FOR_SIZE<8>
268 {
269 typedef int64_t type;
270 };
271
272 // used as an approximation of std::underlying_type<T>
273 template <class T>
274 struct _ENUM_FLAG_SIZED_INTEGER
275 {
276 typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type;
277 };
278
279}
280#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
281extern "C++" { \
282inline constexpr ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
283inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
284inline constexpr ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
285inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
286inline constexpr ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a)); } \
287inline constexpr ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
288inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
289}
290#endif
291
292// D3DX12 uses these
293#include <stdlib.h>
294#define HeapAlloc(heap, flags, size) malloc(size)
295#define HeapFree(heap, flags, ptr) free(ptr)
296
297#ifdef __cplusplus
298// IUnknown
299
300interface DECLSPEC_UUID("00000000-0000-0000-C000-000000000046") DECLSPEC_NOVTABLE IUnknown
301{
302 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) = 0;
303 virtual ULONG STDMETHODCALLTYPE AddRef() = 0;
304 virtual ULONG STDMETHODCALLTYPE Release() = 0;
305
306 template <class Q> HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp) {
307 return QueryInterface(uuidof<Q>(), (void **)pp);
308 }
309};
310
311template <> constexpr GUID uuidof<IUnknown>()
312{
313 return { 0x00000000, 0x0000, 0x0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
314}
315
316extern "C++"
317{
318 template<typename T> void** IID_PPV_ARGS_Helper(T** pp)
319 {
320 static_cast<IUnknown*>(*pp);
321 return reinterpret_cast<void**>(pp);
322 }
323}
324
325#define IID_PPV_ARGS(ppType) __uuidof(**(ppType)), IID_PPV_ARGS_Helper(ppType)
326#endif
327
328#if defined(lint)
329// Note: lint -e530 says don't complain about uninitialized variables for
330// this variable. Error 527 has to do with unreachable code.
331// -restore restores checking to the -save state
332#define UNREFERENCED_PARAMETER(P) \
333 /*lint -save -e527 -e530 */ \
334 { \
335 (P) = (P); \
336 } \
337 /*lint -restore */
338#else
339#define UNREFERENCED_PARAMETER(P) (P)
340#endif
diff --git a/contrib/DirectX-Headers/include/wsl/wrladapter.h b/contrib/DirectX-Headers/include/wsl/wrladapter.h
new file mode 100644
index 0000000..883ecab
--- /dev/null
+++ b/contrib/DirectX-Headers/include/wsl/wrladapter.h
@@ -0,0 +1,801 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include "winadapter.h"
7
8// defined by winadapter.h and needed by some windows headers, but conflicts
9// with some libc++ implementation headers
10#ifdef __in
11#undef __in
12#endif
13#ifdef __out
14#undef __out
15#endif
16
17#include <type_traits>
18#include <atomic>
19#include <memory>
20#include <climits>
21#include <cassert>
22
23namespace Microsoft
24{
25namespace WRL
26{
27 namespace Details
28 {
29 struct BoolStruct { int Member; };
30 typedef int BoolStruct::* BoolType;
31
32 template <typename T> // T should be the ComPtr<T> or a derived type of it, not just the interface
33 class ComPtrRefBase
34 {
35 public:
36 typedef typename T::InterfaceType InterfaceType;
37
38 operator IUnknown**() const throw()
39 {
40 static_assert(__is_base_of(IUnknown, InterfaceType), "Invalid cast: InterfaceType does not derive from IUnknown");
41 return reinterpret_cast<IUnknown**>(ptr_->ReleaseAndGetAddressOf());
42 }
43
44 protected:
45 T* ptr_;
46 };
47
48 template <typename T>
49 class ComPtrRef : public Details::ComPtrRefBase<T> // T should be the ComPtr<T> or a derived type of it, not just the interface
50 {
51 using Super = Details::ComPtrRefBase<T>;
52 using InterfaceType = typename Super::InterfaceType;
53 public:
54 ComPtrRef(_In_opt_ T* ptr) throw()
55 {
56 this->ptr_ = ptr;
57 }
58
59 // Conversion operators
60 operator void**() const throw()
61 {
62 return reinterpret_cast<void**>(this->ptr_->ReleaseAndGetAddressOf());
63 }
64
65 // This is our operator ComPtr<U> (or the latest derived class from ComPtr (e.g. WeakRef))
66 operator T*() throw()
67 {
68 *this->ptr_ = nullptr;
69 return this->ptr_;
70 }
71
72 // We define operator InterfaceType**() here instead of on ComPtrRefBase<T>, since
73 // if InterfaceType is IUnknown or IInspectable, having it on the base will collide.
74 operator InterfaceType**() throw()
75 {
76 return this->ptr_->ReleaseAndGetAddressOf();
77 }
78
79 // This is used for IID_PPV_ARGS in order to do __uuidof(**(ppType)).
80 // It does not need to clear ptr_ at this point, it is done at IID_PPV_ARGS_Helper(ComPtrRef&) later in this file.
81 InterfaceType* operator *() throw()
82 {
83 return this->ptr_->Get();
84 }
85
86 // Explicit functions
87 InterfaceType* const * GetAddressOf() const throw()
88 {
89 return this->ptr_->GetAddressOf();
90 }
91
92 InterfaceType** ReleaseAndGetAddressOf() throw()
93 {
94 return this->ptr_->ReleaseAndGetAddressOf();
95 }
96 };
97 }
98
99 template <typename T>
100 class ComPtr
101 {
102 public:
103 typedef T InterfaceType;
104
105 protected:
106 InterfaceType *ptr_;
107 template<class U> friend class ComPtr;
108
109 void InternalAddRef() const throw()
110 {
111 if (ptr_ != nullptr)
112 {
113 ptr_->AddRef();
114 }
115 }
116
117 unsigned long InternalRelease() throw()
118 {
119 unsigned long ref = 0;
120 T* temp = ptr_;
121
122 if (temp != nullptr)
123 {
124 ptr_ = nullptr;
125 ref = temp->Release();
126 }
127
128 return ref;
129 }
130
131 public:
132 ComPtr() throw() : ptr_(nullptr)
133 {
134 }
135
136 ComPtr(decltype(nullptr)) throw() : ptr_(nullptr)
137 {
138 }
139
140 template<class U>
141 ComPtr(_In_opt_ U *other) throw() : ptr_(other)
142 {
143 InternalAddRef();
144 }
145
146 ComPtr(const ComPtr& other) throw() : ptr_(other.ptr_)
147 {
148 InternalAddRef();
149 }
150
151 // copy constructor that allows to instantiate class when U* is convertible to T*
152 template<class U>
153 ComPtr(const ComPtr<U> &other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
154 ptr_(other.ptr_)
155 {
156 InternalAddRef();
157 }
158
159 ComPtr(_Inout_ ComPtr &&other) throw() : ptr_(nullptr)
160 {
161 if (this != reinterpret_cast<ComPtr*>(&reinterpret_cast<unsigned char&>(other)))
162 {
163 Swap(other);
164 }
165 }
166
167 // Move constructor that allows instantiation of a class when U* is convertible to T*
168 template<class U>
169 ComPtr(_Inout_ ComPtr<U>&& other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
170 ptr_(other.ptr_)
171 {
172 other.ptr_ = nullptr;
173 }
174
175 ~ComPtr() throw()
176 {
177 InternalRelease();
178 }
179
180 ComPtr& operator=(decltype(nullptr)) throw()
181 {
182 InternalRelease();
183 return *this;
184 }
185
186 ComPtr& operator=(_In_opt_ T *other) throw()
187 {
188 if (ptr_ != other)
189 {
190 ComPtr(other).Swap(*this);
191 }
192 return *this;
193 }
194
195 template <typename U>
196 ComPtr& operator=(_In_opt_ U *other) throw()
197 {
198 ComPtr(other).Swap(*this);
199 return *this;
200 }
201
202 ComPtr& operator=(const ComPtr &other) throw()
203 {
204 if (ptr_ != other.ptr_)
205 {
206 ComPtr(other).Swap(*this);
207 }
208 return *this;
209 }
210
211 template<class U>
212 ComPtr& operator=(const ComPtr<U>& other) throw()
213 {
214 ComPtr(other).Swap(*this);
215 return *this;
216 }
217
218 ComPtr& operator=(_Inout_ ComPtr &&other) throw()
219 {
220 ComPtr(static_cast<ComPtr&&>(other)).Swap(*this);
221 return *this;
222 }
223
224 template<class U>
225 ComPtr& operator=(_Inout_ ComPtr<U>&& other) throw()
226 {
227 ComPtr(static_cast<ComPtr<U>&&>(other)).Swap(*this);
228 return *this;
229 }
230
231 void Swap(_Inout_ ComPtr&& r) throw()
232 {
233 T* tmp = ptr_;
234 ptr_ = r.ptr_;
235 r.ptr_ = tmp;
236 }
237
238 void Swap(_Inout_ ComPtr& r) throw()
239 {
240 T* tmp = ptr_;
241 ptr_ = r.ptr_;
242 r.ptr_ = tmp;
243 }
244
245 operator Details::BoolType() const throw()
246 {
247 return Get() != nullptr ? &Details::BoolStruct::Member : nullptr;
248 }
249
250 T* Get() const throw()
251 {
252 return ptr_;
253 }
254
255 InterfaceType* operator->() const throw()
256 {
257 return ptr_;
258 }
259
260 Details::ComPtrRef<ComPtr<T>> operator&() throw()
261 {
262 return Details::ComPtrRef<ComPtr<T>>(this);
263 }
264
265 const Details::ComPtrRef<const ComPtr<T>> operator&() const throw()
266 {
267 return Details::ComPtrRef<const ComPtr<T>>(this);
268 }
269
270 T* const* GetAddressOf() const throw()
271 {
272 return &ptr_;
273 }
274
275 T** GetAddressOf() throw()
276 {
277 return &ptr_;
278 }
279
280 T** ReleaseAndGetAddressOf() throw()
281 {
282 InternalRelease();
283 return &ptr_;
284 }
285
286 T* Detach() throw()
287 {
288 T* ptr = ptr_;
289 ptr_ = nullptr;
290 return ptr;
291 }
292
293 void Attach(_In_opt_ InterfaceType* other) throw()
294 {
295 if (ptr_ != nullptr)
296 {
297 auto ref = ptr_->Release();
298 // DBG_UNREFERENCED_LOCAL_VARIABLE(ref);
299 // Attaching to the same object only works if duplicate references are being coalesced. Otherwise
300 // re-attaching will cause the pointer to be released and may cause a crash on a subsequent dereference.
301 assert(ref != 0 || ptr_ != other);
302 }
303
304 ptr_ = other;
305 }
306
307 unsigned long Reset()
308 {
309 return InternalRelease();
310 }
311
312 // Previously, unsafe behavior could be triggered when 'this' is ComPtr<IInspectable> or ComPtr<IUnknown> and CopyTo is used to copy to another type U.
313 // The user will use operator& to convert the destination into a ComPtrRef, which can then implicit cast to IInspectable** and IUnknown**.
314 // If this overload of CopyTo is not present, it will implicitly cast to IInspectable or IUnknown and match CopyTo(InterfaceType**) instead.
315 // A valid polymoprhic downcast requires run-time type checking via QueryInterface, so CopyTo(InterfaceType**) will break type safety.
316 // This overload matches ComPtrRef before the implicit cast takes place, preventing the unsafe downcast.
317 template <typename U>
318 HRESULT CopyTo(Details::ComPtrRef<ComPtr<U>> ptr, typename std::enable_if<
319 (std::is_same<T, IUnknown>::value)
320 && !std::is_same<U*, T*>::value, void *>::type * = 0) const throw()
321 {
322 return ptr_->QueryInterface(uuidof<U>(), ptr);
323 }
324
325 HRESULT CopyTo(_Outptr_result_maybenull_ InterfaceType** ptr) const throw()
326 {
327 InternalAddRef();
328 *ptr = ptr_;
329 return S_OK;
330 }
331
332 HRESULT CopyTo(REFIID riid, _Outptr_result_nullonfailure_ void** ptr) const throw()
333 {
334 return ptr_->QueryInterface(riid, ptr);
335 }
336
337 template<typename U>
338 HRESULT CopyTo(_Outptr_result_nullonfailure_ U** ptr) const throw()
339 {
340 return ptr_->QueryInterface(uuidof<U>(), reinterpret_cast<void**>(ptr));
341 }
342
343 // query for U interface
344 template<typename U>
345 HRESULT As(_Inout_ Details::ComPtrRef<ComPtr<U>> p) const throw()
346 {
347 return ptr_->QueryInterface(uuidof<U>(), p);
348 }
349
350 // query for U interface
351 template<typename U>
352 HRESULT As(_Out_ ComPtr<U>* p) const throw()
353 {
354 return ptr_->QueryInterface(uuidof<U>(), reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
355 }
356
357 // query for riid interface and return as IUnknown
358 HRESULT AsIID(REFIID riid, _Out_ ComPtr<IUnknown>* p) const throw()
359 {
360 return ptr_->QueryInterface(riid, reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
361 }
362
363 }; // ComPtr
364
365
366 namespace Details
367 {
368 // Empty struct used as default template parameter
369 class Nil
370 {
371 };
372
373 // Empty struct used for validating template parameter types in Implements
374 struct ImplementsBase
375 {
376 };
377
378 class RuntimeClassBase
379 {
380 protected:
381 template<typename T>
382 static HRESULT AsIID(_In_ T* implements, REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject) noexcept
383 {
384 *ppvObject = nullptr;
385 bool isRefDelegated = false;
386 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
387 if (InlineIsEqualGUID(riid, uuidof<IUnknown>()))
388 {
389 *ppvObject = implements->CastToUnknown();
390 static_cast<IUnknown*>(*ppvObject)->AddRef();
391 return S_OK;
392 }
393
394 HRESULT hr = implements->CanCastTo(riid, ppvObject, &isRefDelegated);
395 if (SUCCEEDED(hr) && !isRefDelegated)
396 {
397 static_cast<IUnknown*>(*ppvObject)->AddRef();
398 }
399
400#ifdef _MSC_VER
401#pragma warning(push)
402#pragma warning(disable: 6102) // '*ppvObject' is used but may not be initialized
403#endif
404 _Analysis_assume_(SUCCEEDED(hr) || (*ppvObject == nullptr));
405#ifdef _MSC_VER
406#pragma warning(pop)
407#endif
408 return hr;
409 }
410
411 public:
412 HRESULT RuntimeClassInitialize() noexcept
413 {
414 return S_OK;
415 }
416 };
417
418 // Interface traits provides casting and filling iids methods helpers
419 template<typename I0>
420 struct InterfaceTraits
421 {
422 typedef I0 Base;
423
424 template<typename T>
425 static Base* CastToBase(_In_ T* ptr) noexcept
426 {
427 return static_cast<Base*>(ptr);
428 }
429
430 template<typename T>
431 static IUnknown* CastToUnknown(_In_ T* ptr) noexcept
432 {
433 return static_cast<IUnknown*>(static_cast<Base*>(ptr));
434 }
435
436 template <typename T>
437 _Success_(return == true)
438 static bool CanCastTo(_In_ T* ptr, REFIID riid, _Outptr_ void **ppv) noexcept
439 {
440 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
441 if (InlineIsEqualGUID(riid, uuidof<Base>()))
442 {
443 *ppv = static_cast<Base*>(ptr);
444 return true;
445 }
446
447 return false;
448 }
449 };
450
451 // Specialization for Nil parameter
452 template<>
453 struct InterfaceTraits<Nil>
454 {
455 typedef Nil Base;
456
457 template <typename T>
458 _Success_(return == true)
459 static bool CanCastTo(_In_ T*, REFIID, _Outptr_ void **) noexcept
460 {
461 return false;
462 }
463 };
464
465 // ChainInterfaces - template allows specifying a derived COM interface along with its class hierarchy to allow QI for the base interfaces
466 template <typename I0, typename I1, typename I2 = Nil, typename I3 = Nil,
467 typename I4 = Nil, typename I5 = Nil, typename I6 = Nil,
468 typename I7 = Nil, typename I8 = Nil, typename I9 = Nil>
469 struct ChainInterfaces : I0
470 {
471 protected:
472 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) throw()
473 {
474 typename InterfaceTraits<I0>::Base* ptr = InterfaceTraits<I0>::CastToBase(this);
475
476 return (InterfaceTraits<I0>::CanCastTo(this, riid, ppv) ||
477 InterfaceTraits<I1>::CanCastTo(ptr, riid, ppv) ||
478 InterfaceTraits<I2>::CanCastTo(ptr, riid, ppv) ||
479 InterfaceTraits<I3>::CanCastTo(ptr, riid, ppv) ||
480 InterfaceTraits<I4>::CanCastTo(ptr, riid, ppv) ||
481 InterfaceTraits<I5>::CanCastTo(ptr, riid, ppv) ||
482 InterfaceTraits<I6>::CanCastTo(ptr, riid, ppv) ||
483 InterfaceTraits<I7>::CanCastTo(ptr, riid, ppv) ||
484 InterfaceTraits<I8>::CanCastTo(ptr, riid, ppv) ||
485 InterfaceTraits<I9>::CanCastTo(ptr, riid, ppv)) ? S_OK : E_NOINTERFACE;
486 }
487
488 IUnknown* CastToUnknown() throw()
489 {
490 return InterfaceTraits<I0>::CastToUnknown(this);
491 }
492 };
493
494 // Helper template used by Implements. This template traverses a list of interfaces and adds them as base class and information
495 // to enable QI.
496 template <typename ...TInterfaces>
497 struct ImplementsHelper;
498
499 template <typename T>
500 struct ImplementsMarker
501 {};
502
503 template <typename I0, bool isImplements>
504 struct MarkImplements;
505
506 template <typename I0>
507 struct MarkImplements<I0, false>
508 {
509 typedef I0 Type;
510 };
511
512 template <typename I0>
513 struct MarkImplements<I0, true>
514 {
515 typedef ImplementsMarker<I0> Type;
516 };
517
518 // AdjustImplements pre-processes the type list for more efficient builds.
519 template <typename ...Bases>
520 struct AdjustImplements;
521
522 template <typename I0, typename ...Bases>
523 struct AdjustImplements<I0, Bases...>
524 {
525 typedef ImplementsHelper<typename MarkImplements<I0, std::is_base_of<ImplementsBase, I0>::value>::Type, Bases...> Type;
526 };
527
528 // Use AdjustImplements to remove instances of "Nil" from the type list.
529 template <typename ...Bases>
530 struct AdjustImplements<Nil, Bases...>
531 {
532 typedef typename AdjustImplements<Bases...>::Type Type;
533 };
534
535 template <>
536 struct AdjustImplements<>
537 {
538 typedef ImplementsHelper<> Type;
539 };
540
541 // Specialization handles unadorned interfaces
542 template <typename I0, typename ...TInterfaces>
543 struct ImplementsHelper<I0, TInterfaces...> :
544 I0,
545 AdjustImplements<TInterfaces...>::Type
546 {
547 template <typename ...> friend struct ImplementsHelper;
548 friend class RuntimeClassBase;
549
550 protected:
551
552 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
553 {
554 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
555 if (InlineIsEqualGUID(riid, uuidof<I0>()))
556 {
557 *ppv = reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
558 return S_OK;
559 }
560 return AdjustImplements<TInterfaces...>::Type::CanCastTo(riid, ppv, pRefDelegated);
561 }
562
563 IUnknown* CastToUnknown() noexcept
564 {
565 return reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
566 }
567 };
568
569
570 // Selector is used to "tag" base interfaces to be used in casting, since a runtime class may indirectly derive from
571 // the same interface or Implements<> template multiple times
572 template <typename base, typename disciminator>
573 struct Selector : public base
574 {
575 };
576
577 // Specialization handles types that derive from ImplementsHelper (e.g. nested Implements).
578 template <typename I0, typename ...TInterfaces>
579 struct ImplementsHelper<ImplementsMarker<I0>, TInterfaces...> :
580 Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>,
581 Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>
582 {
583 template <typename ...> friend struct ImplementsHelper;
584 friend class RuntimeClassBase;
585
586 protected:
587 typedef Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> CurrentType;
588 typedef Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> BaseType;
589
590 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
591 {
592 HRESULT hr = CurrentType::CanCastTo(riid, ppv);
593 if (hr == E_NOINTERFACE)
594 {
595 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
596 }
597 return hr;
598 }
599
600 IUnknown* CastToUnknown() noexcept
601 {
602 // First in list wins.
603 return CurrentType::CastToUnknown();
604 }
605 };
606
607 // terminal case specialization.
608 template <>
609 struct ImplementsHelper<>
610 {
611 template <typename ...> friend struct ImplementsHelper;
612 friend class RuntimeClassBase;
613
614 protected:
615 HRESULT CanCastTo(_In_ REFIID /*riid*/, _Outptr_ void ** /*ppv*/, bool * /*pRefDelegated*/ = nullptr) noexcept
616 {
617 return E_NOINTERFACE;
618 }
619
620 // IUnknown* CastToUnknown() noexcept; // not defined for terminal case.
621 };
622
623 // Specialization handles chaining interfaces
624 template <typename C0, typename C1, typename C2, typename C3, typename C4, typename C5, typename C6, typename C7, typename C8, typename C9, typename ...TInterfaces>
625 struct ImplementsHelper<ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, TInterfaces...> :
626 ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>,
627 AdjustImplements<TInterfaces...>::Type
628 {
629 template <typename ...> friend struct ImplementsHelper;
630 friend class RuntimeClassBase;
631
632 protected:
633 typedef typename AdjustImplements<TInterfaces...>::Type BaseType;
634
635 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
636 {
637 HRESULT hr = ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CanCastTo(riid, ppv);
638 if (FAILED(hr))
639 {
640 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
641 }
642
643 return hr;
644 }
645
646 IUnknown* CastToUnknown() noexcept
647 {
648 return ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CastToUnknown();
649 }
650 };
651
652 // Implements - template implementing QI using the information provided through its template parameters
653 // Each template parameter has to be one of the following:
654 // * COM Interface
655 // * A class that implements one or more COM interfaces
656 // * ChainInterfaces template
657 template <typename I0, typename ...TInterfaces>
658 struct Implements :
659 AdjustImplements<I0, TInterfaces...>::Type,
660 ImplementsBase
661 {
662 public:
663 typedef I0 FirstInterface;
664 protected:
665 typedef typename AdjustImplements<I0, TInterfaces...>::Type BaseType;
666 template <typename ...> friend struct ImplementsHelper;
667 friend class RuntimeClassBase;
668
669 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) noexcept
670 {
671 return BaseType::CanCastTo(riid, ppv);
672 }
673
674 IUnknown* CastToUnknown() noexcept
675 {
676 return BaseType::CastToUnknown();
677 }
678 };
679
680 // Used on RuntimeClass to protect it from being constructed with new
681 class DontUseNewUseMake
682 {
683 private:
684 void* operator new(size_t) noexcept
685 {
686 assert(false);
687 return 0;
688 }
689
690 public:
691 void* operator new(size_t, _In_ void* placement) noexcept
692 {
693 return placement;
694 }
695 };
696
697 template <typename ...TInterfaces>
698 class RuntimeClassImpl :
699 public AdjustImplements<TInterfaces...>::Type,
700 public RuntimeClassBase,
701 public DontUseNewUseMake
702 {
703 public:
704 STDMETHOD(QueryInterface)(REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject)
705 {
706 return Super::AsIID(this, riid, ppvObject);
707 }
708
709 STDMETHOD_(ULONG, AddRef)()
710 {
711 return InternalAddRef();
712 }
713
714 STDMETHOD_(ULONG, Release)()
715 {
716 ULONG ref = InternalRelease();
717 if (ref == 0)
718 {
719 delete this;
720 }
721
722 return ref;
723 }
724
725 protected:
726 using Super = RuntimeClassBase;
727 static const LONG c_lProtectDestruction = -(LONG_MAX / 2);
728
729 RuntimeClassImpl() noexcept = default;
730
731 virtual ~RuntimeClassImpl() noexcept
732 {
733 // Set refcount_ to -(LONG_MAX/2) to protect destruction and
734 // also catch mismatched Release in debug builds
735 refcount_ = static_cast<ULONG>(c_lProtectDestruction);
736 }
737
738 ULONG InternalAddRef() noexcept
739 {
740 return ++refcount_;
741 }
742
743 ULONG InternalRelease() noexcept
744 {
745 return --refcount_;
746 }
747
748 unsigned long GetRefCount() const noexcept
749 {
750 return refcount_;
751 }
752
753 std::atomic<ULONG> refcount_{1};
754 };
755 }
756
757 template <typename ...TInterfaces>
758 class Base : public Details::RuntimeClassImpl<TInterfaces...>
759 {
760 Base(const Base&) = delete;
761 Base& operator=(const Base&) = delete;
762
763 protected:
764 HRESULT CustomQueryInterface(REFIID /*riid*/, _Outptr_result_nullonfailure_ void** /*ppvObject*/, _Out_ bool *handled)
765 {
766 *handled = false;
767 return S_OK;
768 }
769
770 public:
771 Base() throw() = default;
772 typedef Base RuntimeClassT;
773 };
774
775 // Creates a Nano-COM object wrapped in a smart pointer.
776 template <typename T, typename ...TArgs>
777 ComPtr<T> Make(TArgs&&... args)
778 {
779 ComPtr<T> object;
780
781 std::unique_ptr<unsigned char[]> buffer(new unsigned char[sizeof(T)]);
782 if (buffer)
783 {
784 T* ptr = new (buffer.get())T(std::forward<TArgs>(args)...);
785 object.Attach(ptr);
786 buffer.release();
787 }
788
789 return object;
790 }
791
792 using Details::ChainInterfaces;
793}
794}
795
796// Overloaded global function to provide to IID_PPV_ARGS that support Details::ComPtrRef
797template<typename T>
798void** IID_PPV_ARGS_Helper(Microsoft::WRL::Details::ComPtrRef<T> pp) throw()
799{
800 return pp;
801} \ No newline at end of file
diff --git a/contrib/DirectX-Headers/meson.build b/contrib/DirectX-Headers/meson.build
new file mode 100644
index 0000000..3174221
--- /dev/null
+++ b/contrib/DirectX-Headers/meson.build
@@ -0,0 +1,35 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4project('DirectX-Headers', 'cpp', version : '1.4.9',
5 default_options : ['cpp_std=c++14'])
6
7inc_dirs = [include_directories('include', is_system : true)]
8install_inc_subdirs = ['']
9
10if host_machine.system() != 'windows'
11 inc_dirs += include_directories('include/wsl/stubs', is_system : true)
12 install_inc_subdirs += ['', 'wsl/stubs', 'directx']
13endif
14
15guids_lib = static_library('DirectX-Guids', 'src/dxguids.cpp', include_directories : inc_dirs, install : true)
16
17dep_dxheaders = declare_dependency(
18 link_with : guids_lib,
19 include_directories : inc_dirs)
20
21if meson.version().version_compare('>=0.54.0')
22 meson.override_dependency('DirectX-Headers', dep_dxheaders)
23endif
24
25if not meson.is_subproject() and get_option('build-test')
26 subdir('test')
27endif
28
29pkg = import('pkgconfig')
30pkg.generate(name : 'DirectX-Headers',
31 description : 'Headers for using D3D12',
32 libraries : [guids_lib],
33 version : meson.project_version(),
34 subdirs : install_inc_subdirs)
35install_subdir('include', install_dir : '')
diff --git a/contrib/DirectX-Headers/meson_options.txt b/contrib/DirectX-Headers/meson_options.txt
new file mode 100644
index 0000000..af5cd47
--- /dev/null
+++ b/contrib/DirectX-Headers/meson_options.txt
@@ -0,0 +1,7 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4option('build-test',
5 type : 'boolean',
6 value : true,
7 description : 'Build the test')
diff --git a/contrib/DirectX-Headers/src/dxguids.cpp b/contrib/DirectX-Headers/src/dxguids.cpp
new file mode 100644
index 0000000..8b6d116
--- /dev/null
+++ b/contrib/DirectX-Headers/src/dxguids.cpp
@@ -0,0 +1,12 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// This file's sole purpose is to initialize the GUIDs declared using the DEFINE_GUID macro.
5#define INITGUID
6
7#ifndef _WIN32
8#include <wsl/winadapter.h>
9#endif
10
11#include <directx/dxcore.h>
12#include <directx/d3d12.h> \ No newline at end of file
diff --git a/contrib/DirectX-Headers/test/CMakeLists.txt b/contrib/DirectX-Headers/test/CMakeLists.txt
new file mode 100644
index 0000000..cba8b59
--- /dev/null
+++ b/contrib/DirectX-Headers/test/CMakeLists.txt
@@ -0,0 +1,6 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4project(DirectX-Headers-Test CXX)
5add_executable(DirectX-Headers-Test test.cpp)
6target_link_libraries(DirectX-Headers-Test DirectX-Headers DirectX-Guids d3d12 dxcore) \ No newline at end of file
diff --git a/contrib/DirectX-Headers/test/meson.build b/contrib/DirectX-Headers/test/meson.build
new file mode 100644
index 0000000..0e43a91
--- /dev/null
+++ b/contrib/DirectX-Headers/test/meson.build
@@ -0,0 +1,9 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4cpp = meson.get_compiler('cpp')
5d3d12_lib = cpp.find_library('d3d12')
6dxcore_lib = cpp.find_library('dxcore')
7
8headers_test = executable('DirectX-Headers-Test', 'test.cpp',
9 dependencies : [dep_dxheaders, d3d12_lib, dxcore_lib]) \ No newline at end of file
diff --git a/contrib/DirectX-Headers/test/test.cpp b/contrib/DirectX-Headers/test/test.cpp
new file mode 100644
index 0000000..8f34d73
--- /dev/null
+++ b/contrib/DirectX-Headers/test/test.cpp
@@ -0,0 +1,32 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#ifndef _WIN32
5#include <wsl/winadapter.h>
6#endif
7
8#include <directx/d3d12.h>
9#include <directx/dxcore.h>
10#include <directx/d3dx12.h>
11#include "dxguids/dxguids.h"
12
13int main()
14{
15 IDXCoreAdapter *adapter = nullptr;
16 ID3D12Device *device = nullptr;
17
18 {
19 IDXCoreAdapterFactory *factory = nullptr;
20 if (FAILED(DXCoreCreateAdapterFactory(&factory)))
21 return -1;
22
23 IDXCoreAdapterList *list = nullptr;
24 if (FAILED(factory->CreateAdapterList(1, &DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, &list)))
25 return -1;
26
27 if (FAILED(list->GetAdapter(0, &adapter)))
28 return -1;
29 }
30
31 return D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&device));
32}
diff --git a/contrib/glfw/CMakeLists.txt b/contrib/glfw/CMakeLists.txt
new file mode 100644
index 0000000..a4e4955
--- /dev/null
+++ b/contrib/glfw/CMakeLists.txt
@@ -0,0 +1,11 @@
1cmake_minimum_required(VERSION 3.0)
2
3add_library(glfw INTERFACE)
4
5set(GLFW_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glfw-3.3.5.bin.WIN64)
6
7target_include_directories(glfw INTERFACE
8 ${GLFW_DIR}/include)
9
10target_link_libraries(glfw INTERFACE
11 ${GLFW_DIR}/lib-vc2019/glfw3_mt.lib)
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/LICENSE.md b/contrib/glfw/glfw-3.3.5.bin.WIN64/LICENSE.md
new file mode 100644
index 0000000..7494a3f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/LICENSE.md
@@ -0,0 +1,23 @@
1Copyright (c) 2002-2006 Marcus Geelnard
2
3Copyright (c) 2006-2019 Camilla Löwy
4
5This software is provided 'as-is', without any express or implied
6warranty. In no event will the authors be held liable for any damages
7arising from the use of this software.
8
9Permission is granted to anyone to use this software for any purpose,
10including commercial applications, and to alter it and redistribute it
11freely, subject to the following restrictions:
12
131. The origin of this software must not be misrepresented; you must not
14 claim that you wrote the original software. If you use this software
15 in a product, an acknowledgment in the product documentation would
16 be appreciated but is not required.
17
182. Altered source versions must be plainly marked as such, and must not
19 be misrepresented as being the original software.
20
213. This notice may not be removed or altered from any source
22 distribution.
23
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/README.md b/contrib/glfw/glfw-3.3.5.bin.WIN64/README.md
new file mode 100644
index 0000000..25b8fc7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/README.md
@@ -0,0 +1,69 @@
1# GLFW binaries for 64-bit Windows
2
3This archive contains documentation, headers, pre-compiled static libraries,
4import libraries and DLLs for GLFW 3.3.5.
5
6Binaries for the following compilers are included
7
8 - Visual C++ 2022 (built with 17.0.0 preview 7.0)
9 - Visual C++ 2019 (built with 16.11.5)
10 - Visual C++ 2017 (built with 15.9.40)
11 - Visual C++ 2015 (built with 14.0.25431.01)
12 - Visual C++ 2013 (built with 12.0.40629.00)
13 - Visual C++ 2012 (built with 11.0.61219.00)
14 - MinGW-w64 (built with GCC 8.1.0)
15
16
17## Binaries for Visual C++
18
19All binaries for Visual C++ 2017 and earlier are compatible with Windows XP, but
20this is not supported by Visual C++ 2019.
21
22### GLFW as a DLL
23
24To use GLFW as a DLL, link against the `glfw3dll.lib` file for your
25environment. This will add a load time dependency on `glfw3.dll`. The
26remaining files in the same directory are not needed.
27
28This DLL is built in release mode for the Multithreaded DLL runtime library.
29
30There is also a GLFW DLL and import library pair in the `lib-static-ucrt`
31directory. These are built with Visual C++ 2019 and the static Multithreaded
32runtime library.
33
34### GLFW as a static library
35
36To use GLFW as a static library, link against `glfw3.lib` if your application
37is using the Multithreaded DLL runtime library, or `glfw3_mt.lib` if it is
38using the static Multithreaded runtime library. The remaining files in the same
39directory are not needed.
40
41The static libraries are built in release mode and do not contain debug
42information but can still be linked with the debug versions of the runtime
43library.
44
45
46## Binaries for MinGW-w64
47
48### GLFW as a DLL
49
50To use GLFW as a DLL, link against the `libglfw3dll.a` file for your
51environment. This will add a load time dependency on `glfw3.dll`. The
52remaining files in the same directory are not needed.
53
54The DLLs are built in release mode.
55
56The DLLs depend on the `msvcrt.dll` C runtime library. There is also a GLFW
57DLL and import library in the `lib-static-ucrt` directory that is built with
58Visual C++ 2019 and statically linked against the UCRT.
59
60All DLLs in this archive provide the same ABI and can be used as drop-in
61replacements for one another, as long as the C runtime library they depend on is
62available.
63
64### GLFW as a static library
65
66To use GLFW as a static library, link against the `libglfw3.a` file for your
67environment. The other files in the same directory are not needed.
68
69The library is built in release mode and do not contain debug information.
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bc_s.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bc_s.png
new file mode 100644
index 0000000..224b29a
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bc_s.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bdwn.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bdwn.png
new file mode 100644
index 0000000..940a0b9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/bdwn.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_8dox.html
new file mode 100644
index 0000000..cbfdd89
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: build.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">build.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_guide.html
new file mode 100644
index 0000000..0c47ff7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/build_guide.html
@@ -0,0 +1,192 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Building applications</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Building applications </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#build_include">Including the GLFW header file</a><ul><li class="level2"><a href="#build_macros">GLFW header option macros</a></li>
69</ul>
70</li>
71<li class="level1"><a href="#build_link">Link with the right libraries</a><ul><li class="level2"><a href="#build_link_win32">With MinGW or Visual C++ on Windows</a></li>
72<li class="level2"><a href="#build_link_cmake_source">With CMake and GLFW source</a></li>
73<li class="level2"><a href="#build_link_cmake_package">With CMake and installed GLFW binaries</a></li>
74<li class="level2"><a href="#build_link_pkgconfig">With makefiles and pkg-config on Unix</a></li>
75<li class="level2"><a href="#build_link_xcode">With Xcode on macOS</a></li>
76<li class="level2"><a href="#build_link_osx">With command-line on macOS</a></li>
77</ul>
78</li>
79</ul>
80</div>
81<div class="textblock"><p >This is about compiling and linking applications that use GLFW. For information on how to write such applications, start with the <a class="el" href="quick_guide.html">introductory tutorial</a>. For information on how to compile the GLFW library itself, see <a class="el" href="compile_guide.html">Compiling GLFW</a>.</p>
82<p >This is not a tutorial on compilation or linking. It assumes basic understanding of how to compile and link a C program as well as how to use the specific compiler of your chosen development environment. The compilation and linking process should be explained in your C programming material and in the documentation for your development environment.</p>
83<h1><a class="anchor" id="build_include"></a>
84Including the GLFW header file</h1>
85<p >You should include the GLFW header in the source files where you use OpenGL or GLFW.</p>
86<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
87<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
88</div><!-- fragment --><p >This header defines all the constants and declares all the types and function prototypes of the GLFW API. By default it also includes the OpenGL header from your development environment. See <a class="el" href="build_guide.html#build_macros">option macros</a> below for how to select OpenGL ES headers and more.</p>
89<p >The GLFW header also defines any platform-specific macros needed by your OpenGL header, so that it can be included without needing any window system headers.</p>
90<p >It does this only when needed, so if window system headers are included, the GLFW header does not try to redefine those symbols. The reverse is not true, i.e. <code>windows.h</code> cannot cope if any Win32 symbols have already been defined.</p>
91<p >In other words:</p>
92<ul>
93<li>Use the GLFW header to include OpenGL or OpenGL ES headers portably</li>
94<li>Do not include window system headers unless you will use those APIs directly</li>
95<li>If you do need such headers, include them before the GLFW header</li>
96</ul>
97<p >If you are using an OpenGL extension loading library such as <a href="https://github.com/Dav1dde/glad">glad</a>, the extension loader header should be included before the GLFW one. GLFW attempts to detect any OpenGL or OpenGL ES header or extension loader header included before it and will then disable the inclusion of the default OpenGL header. Most extension loaders also define macros that disable similar headers below it.</p>
98<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
99<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
100</div><!-- fragment --><p >Both of these mechanisms depend on the extension loader header defining a known macro. If yours doesn't or you don't know which one your users will pick, the <a class="el" href="build_guide.html#GLFW_INCLUDE_NONE">GLFW_INCLUDE_NONE</a> macro will explicitly to prevent the GLFW header from including the OpenGL header. This will also allow you to include the two headers in any order.</p>
101<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_NONE</span></div>
102<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
103<div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
104</div><!-- fragment --><h2><a class="anchor" id="build_macros"></a>
105GLFW header option macros</h2>
106<p >These macros may be defined before the inclusion of the GLFW header and affect its behavior.</p>
107<p ><a class="anchor" id="GLFW_DLL"></a><b>GLFW_DLL</b> is required on Windows when using the GLFW DLL, to tell the compiler that the GLFW functions are defined in a DLL.</p>
108<p >The following macros control which OpenGL or OpenGL ES API header is included. Only one of these may be defined at a time.</p>
109<dl class="section note"><dt>Note</dt><dd>GLFW does not provide any of the API headers mentioned below. They are provided by your development environment or your OpenGL, OpenGL ES or Vulkan SDK, and most of them can be downloaded from the <a href="https://www.khronos.org/registry/">Khronos Registry</a>.</dd></dl>
110<p><a class="anchor" id="GLFW_INCLUDE_GLCOREARB"></a><b>GLFW_INCLUDE_GLCOREARB</b> makes the GLFW header include the modern <code>GL/glcorearb.h</code> header (<code>OpenGL/gl3.h</code> on macOS) instead of the regular OpenGL header.</p>
111<p ><a class="anchor" id="GLFW_INCLUDE_ES1"></a><b>GLFW_INCLUDE_ES1</b> makes the GLFW header include the OpenGL ES 1.x <code>GLES/gl.h</code> header instead of the regular OpenGL header.</p>
112<p ><a class="anchor" id="GLFW_INCLUDE_ES2"></a><b>GLFW_INCLUDE_ES2</b> makes the GLFW header include the OpenGL ES 2.0 <code>GLES2/gl2.h</code> header instead of the regular OpenGL header.</p>
113<p ><a class="anchor" id="GLFW_INCLUDE_ES3"></a><b>GLFW_INCLUDE_ES3</b> makes the GLFW header include the OpenGL ES 3.0 <code>GLES3/gl3.h</code> header instead of the regular OpenGL header.</p>
114<p ><a class="anchor" id="GLFW_INCLUDE_ES31"></a><b>GLFW_INCLUDE_ES31</b> makes the GLFW header include the OpenGL ES 3.1 <code>GLES3/gl31.h</code> header instead of the regular OpenGL header.</p>
115<p ><a class="anchor" id="GLFW_INCLUDE_ES32"></a><b>GLFW_INCLUDE_ES32</b> makes the GLFW header include the OpenGL ES 3.2 <code>GLES3/gl32.h</code> header instead of the regular OpenGL header.</p>
116<p ><a class="anchor" id="GLFW_INCLUDE_NONE"></a><b>GLFW_INCLUDE_NONE</b> makes the GLFW header not include any OpenGL or OpenGL ES API header. This is useful in combination with an extension loading library.</p>
117<p >If none of the above inclusion macros are defined, the standard OpenGL <code>GL/gl.h</code> header (<code>OpenGL/gl.h</code> on macOS) is included, unless GLFW detects the inclusion guards of any OpenGL, OpenGL ES or extension loader header it knows about.</p>
118<p >The following macros control the inclusion of additional API headers. Any number of these may be defined simultaneously, and/or together with one of the above macros.</p>
119<p ><a class="anchor" id="GLFW_INCLUDE_VULKAN"></a><b>GLFW_INCLUDE_VULKAN</b> makes the GLFW header include the Vulkan <code>vulkan/vulkan.h</code> header in addition to any selected OpenGL or OpenGL ES header.</p>
120<p ><a class="anchor" id="GLFW_INCLUDE_GLEXT"></a><b>GLFW_INCLUDE_GLEXT</b> makes the GLFW header include the appropriate extension header for the OpenGL or OpenGL ES header selected above after and in addition to that header.</p>
121<p ><a class="anchor" id="GLFW_INCLUDE_GLU"></a><b>GLFW_INCLUDE_GLU</b> makes the header include the GLU header in addition to the header selected above. This should only be used with the standard OpenGL header and only for compatibility with legacy code. GLU has been deprecated and should not be used in new code.</p>
122<dl class="section note"><dt>Note</dt><dd>None of these macros may be defined during the compilation of GLFW itself. If your build includes GLFW and you define any these in your build files, make sure they are not applied to the GLFW sources.</dd></dl>
123<h1><a class="anchor" id="build_link"></a>
124Link with the right libraries</h1>
125<p >GLFW is essentially a wrapper of various platform-specific APIs and therefore needs to link against many different system libraries. If you are using GLFW as a shared library / dynamic library / DLL then it takes care of these links. However, if you are using GLFW as a static library then your executable will need to link against these libraries.</p>
126<p >On Windows and macOS, the list of system libraries is static and can be hard-coded into your build environment. See the section for your development environment below. On Linux and other Unix-like operating systems, the list varies but can be retrieved in various ways as described below.</p>
127<p >A good general introduction to linking is <a href="https://www.lurklurk.org/linkers/linkers.html">Beginner's Guide to Linkers</a> by David Drysdale.</p>
128<h2><a class="anchor" id="build_link_win32"></a>
129With MinGW or Visual C++ on Windows</h2>
130<p >The static version of the GLFW library is named <code>glfw3</code>. When using this version, it is also necessary to link with some libraries that GLFW uses.</p>
131<p >When using MinGW to link an application with the static version of GLFW, you must also explicitly link with <code>gdi32</code>. Other toolchains including MinGW-w64 include it in the set of default libraries along with other dependencies like <code>user32</code> and <code>kernel32</code>.</p>
132<p >The link library for the GLFW DLL is named <code>glfw3dll</code>. When compiling an application that uses the DLL version of GLFW, you need to define the <a class="el" href="build_guide.html#GLFW_DLL">GLFW_DLL</a> macro <em>before</em> any inclusion of the GLFW header. This can be done either with a compiler switch or by defining it in your source code.</p>
133<h2><a class="anchor" id="build_link_cmake_source"></a>
134With CMake and GLFW source</h2>
135<p >This section is about using CMake to compile and link GLFW along with your application. If you want to use an installed binary instead, see <a class="el" href="build_guide.html#build_link_cmake_package">With CMake and installed GLFW binaries</a>.</p>
136<p >With a few changes to your <code>CMakeLists.txt</code> you can have the GLFW source tree built along with your application.</p>
137<p >When including GLFW as part of your build, you probably don't want to build the GLFW tests, examples and documentation. To disable these, set the corresponding cache variables before adding the GLFW source tree.</p>
138<div class="fragment"><div class="line">set(GLFW_BUILD_DOCS OFF CACHE BOOL <span class="stringliteral">&quot;&quot;</span> FORCE)</div>
139<div class="line">set(GLFW_BUILD_TESTS OFF CACHE BOOL <span class="stringliteral">&quot;&quot;</span> FORCE)</div>
140<div class="line">set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL <span class="stringliteral">&quot;&quot;</span> FORCE)</div>
141</div><!-- fragment --><p >Add the root directory of the GLFW source tree to your project. This will add the <code>glfw</code> target to your project.</p>
142<div class="fragment"><div class="line">add_subdirectory(path/to/glfw)</div>
143</div><!-- fragment --><p >Once GLFW has been added, link your application against the <code>glfw</code> target. This adds the GLFW library and its link-time dependencies as it is currently configured, the include directory for the GLFW header and, when applicable, the <a class="el" href="build_guide.html#GLFW_DLL">GLFW_DLL</a> macro.</p>
144<div class="fragment"><div class="line">target_link_libraries(myapp glfw)</div>
145</div><!-- fragment --><p >Note that the <code>glfw</code> target does not depend on OpenGL, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime. If your application calls OpenGL directly, instead of using a modern <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a>, use the OpenGL CMake package.</p>
146<div class="fragment"><div class="line">find_package(OpenGL REQUIRED)</div>
147</div><!-- fragment --><p >If OpenGL is found, the <code>OpenGL::GL</code> target is added to your project, containing library and include directory paths. Link against this like any other library.</p>
148<div class="fragment"><div class="line">target_link_libraries(myapp OpenGL::GL)</div>
149</div><!-- fragment --><p >For a minimal example of a program and GLFW sources built with CMake, see the <a href="https://github.com/juliettef/GLFW-CMake-starter">GLFW CMake Starter</a> on GitHub.</p>
150<h2><a class="anchor" id="build_link_cmake_package"></a>
151With CMake and installed GLFW binaries</h2>
152<p >This section is about using CMake to link GLFW after it has been built and installed. If you want to build it along with your application instead, see <a class="el" href="build_guide.html#build_link_cmake_source">With CMake and GLFW source</a>.</p>
153<p >With a few changes to your <code>CMakeLists.txt</code> you can locate the package and target files generated when GLFW is installed.</p>
154<div class="fragment"><div class="line">find_package(glfw3 3.3 REQUIRED)</div>
155</div><!-- fragment --><p >Once GLFW has been added to the project, link against it with the <code>glfw</code> target. This adds the GLFW library and its link-time dependencies, the include directory for the GLFW header and, when applicable, the <a class="el" href="build_guide.html#GLFW_DLL">GLFW_DLL</a> macro.</p>
156<div class="fragment"><div class="line">target_link_libraries(myapp glfw)</div>
157</div><!-- fragment --><p >Note that the <code>glfw</code> target does not depend on OpenGL, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime. If your application calls OpenGL directly, instead of using a modern <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a>, use the OpenGL CMake package.</p>
158<div class="fragment"><div class="line">find_package(OpenGL REQUIRED)</div>
159</div><!-- fragment --><p >If OpenGL is found, the <code>OpenGL::GL</code> target is added to your project, containing library and include directory paths. Link against this like any other library.</p>
160<div class="fragment"><div class="line">target_link_libraries(myapp OpenGL::GL)</div>
161</div><!-- fragment --><h2><a class="anchor" id="build_link_pkgconfig"></a>
162With makefiles and pkg-config on Unix</h2>
163<p >GLFW supports <a href="https://www.freedesktop.org/wiki/Software/pkg-config/">pkg-config</a>, and the <code>glfw3.pc</code> pkg-config file is generated when the GLFW library is built and is installed along with it. A pkg-config file describes all necessary compile-time and link-time flags and dependencies needed to use a library. When they are updated or if they differ between systems, you will get the correct ones automatically.</p>
164<p >A typical compile and link command-line when using the static version of the GLFW library may look like this:</p>
165<div class="fragment"><div class="line">cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --static --libs glfw3)</div>
166</div><!-- fragment --><p >If you are using the shared version of the GLFW library, omit the <code>--static</code> flag.</p>
167<div class="fragment"><div class="line">cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)</div>
168</div><!-- fragment --><p >You can also use the <code>glfw3.pc</code> file without installing it first, by using the <code>PKG_CONFIG_PATH</code> environment variable.</p>
169<div class="fragment"><div class="line">env PKG_CONFIG_PATH=path/to/glfw/src cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)</div>
170</div><!-- fragment --><p >The dependencies do not include OpenGL, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime. If your application calls OpenGL directly, instead of using a modern <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a>, you should add the <code>gl</code> pkg-config package.</p>
171<div class="fragment"><div class="line">cc $(pkg-config --cflags glfw3 gl) -o myprog myprog.c $(pkg-config --libs glfw3 gl)</div>
172</div><!-- fragment --><h2><a class="anchor" id="build_link_xcode"></a>
173With Xcode on macOS</h2>
174<p >If you are using the dynamic library version of GLFW, add it to the project dependencies.</p>
175<p >If you are using the static library version of GLFW, add it and the Cocoa, OpenGL and IOKit frameworks to the project as dependencies. They can all be found in <code>/System/Library/Frameworks</code>.</p>
176<h2><a class="anchor" id="build_link_osx"></a>
177With command-line on macOS</h2>
178<p >It is recommended that you use <a class="el" href="build_guide.html#build_link_pkgconfig">pkg-config</a> when building from the command line on macOS. That way you will get any new dependencies added automatically. If you still wish to build manually, you need to add the required frameworks and libraries to your command-line yourself using the <code>-l</code> and <code>-framework</code> switches.</p>
179<p >If you are using the dynamic GLFW library, which is named <code>libglfw.3.dylib</code>, do:</p>
180<div class="fragment"><div class="line">cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit</div>
181</div><!-- fragment --><p >If you are using the static library, named <code>libglfw3.a</code>, substitute <code>-lglfw3</code> for <code>-lglfw</code>.</p>
182<p >Note that you do not add the <code>.framework</code> extension to a framework when linking against it from the command-line.</p>
183<dl class="section note"><dt>Note</dt><dd>Your machine may have <code>libGL.*.dylib</code> style OpenGL library, but that is for the X Window System and will not work with the macOS native version of GLFW. </dd></dl>
184</div></div><!-- contents -->
185</div><!-- PageDoc -->
186<address class="footer">
187<p>
188Last update on Thu Oct 28 2021 for GLFW 3.3.5
189</p>
190</address>
191</body>
192</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/closed.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/closed.png
new file mode 100644
index 0000000..98cc2c9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/closed.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_8dox.html
new file mode 100644
index 0000000..0c927fb
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: compat.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">compat.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_guide.html
new file mode 100644
index 0000000..7287704
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compat_guide.html
@@ -0,0 +1,145 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Standards conformance</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Standards conformance </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#compat_x11">X11 extensions, protocols and IPC standards</a></li>
69<li class="level1"><a href="#compat_wayland">Wayland protocols and IPC standards</a></li>
70<li class="level1"><a href="#compat_glx">GLX extensions</a></li>
71<li class="level1"><a href="#compat_wgl">WGL extensions</a></li>
72<li class="level1"><a href="#compat_osx">OpenGL on macOS</a></li>
73<li class="level1"><a href="#compat_vulkan">Vulkan loader and API</a></li>
74<li class="level1"><a href="#compat_wsi">Vulkan WSI extensions</a></li>
75</ul>
76</div>
77<div class="textblock"><p >This guide describes the various API extensions used by this version of GLFW. It lists what are essentially implementation details, but which are nonetheless vital knowledge for developers intending to deploy their applications on a wide range of machines.</p>
78<p >The information in this guide is not a part of GLFW API, but merely preconditions for some parts of the library to function on a given machine. Any part of this information may change in future versions of GLFW and that will not be considered a breaking API change.</p>
79<h1><a class="anchor" id="compat_x11"></a>
80X11 extensions, protocols and IPC standards</h1>
81<p >As GLFW uses Xlib directly, without any intervening toolkit library, it has sole responsibility for interacting well with the many and varied window managers in use on Unix-like systems. In order for applications and window managers to work well together, a number of standards and conventions have been developed that regulate behavior outside the scope of the X11 API; most importantly the <a href="https://www.tronche.com/gui/x/icccm/">Inter-Client Communication Conventions Manual</a> (ICCCM) and <a href="https://standards.freedesktop.org/wm-spec/wm-spec-latest.html">Extended Window Manager Hints</a> (EWMH) standards.</p>
82<p >GLFW uses the <code>_MOTIF_WM_HINTS</code> window property to support borderless windows. If the running window manager does not support this property, the <code>GLFW_DECORATED</code> hint will have no effect.</p>
83<p >GLFW uses the ICCCM <code>WM_DELETE_WINDOW</code> protocol to intercept the user attempting to close the GLFW window. If the running window manager does not support this protocol, the close callback will never be called.</p>
84<p >GLFW uses the EWMH <code>_NET_WM_PING</code> protocol, allowing the window manager notify the user when the application has stopped responding, i.e. when it has ceased to process events. If the running window manager does not support this protocol, the user will not be notified if the application locks up.</p>
85<p >GLFW uses the EWMH <code>_NET_WM_STATE_FULLSCREEN</code> window state to tell the window manager to make the GLFW window full screen. If the running window manager does not support this state, full screen windows may not work properly. GLFW has a fallback code path in case this state is unavailable, but every window manager behaves slightly differently in this regard.</p>
86<p >GLFW uses the EWMH <code>_NET_WM_BYPASS_COMPOSITOR</code> window property to tell a compositing window manager to un-redirect full screen GLFW windows. If the running window manager uses compositing but does not support this property then additional copying may be performed for each buffer swap of full screen windows.</p>
87<p >GLFW uses the <a href="https://www.freedesktop.org/wiki/ClipboardManager/">clipboard manager protocol</a> to push a clipboard string (i.e. selection) owned by a GLFW window about to be destroyed to the clipboard manager. If there is no running clipboard manager, the clipboard string will be unavailable once the window has been destroyed.</p>
88<p >GLFW uses the <a href="https://www.freedesktop.org/wiki/Specifications/XDND/">X drag-and-drop protocol</a> to provide file drop events. If the application originating the drag does not support this protocol, drag and drop will not work.</p>
89<p >GLFW uses the XRandR 1.3 extension to provide multi-monitor support. If the running X server does not support this version of this extension, multi-monitor support will not function and only a single, desktop-spanning monitor will be reported.</p>
90<p >GLFW uses the XRandR 1.3 and Xf86vidmode extensions to provide gamma ramp support. If the running X server does not support either or both of these extensions, gamma ramp support will not function.</p>
91<p >GLFW uses the Xkb extension and detectable auto-repeat to provide keyboard input. If the running X server does not support this extension, a non-Xkb fallback path is used.</p>
92<p >GLFW uses the XInput2 extension to provide raw, non-accelerated mouse motion when the cursor is disabled. If the running X server does not support this extension, regular accelerated mouse motion will be used.</p>
93<p >GLFW uses both the XRender extension and the compositing manager to support transparent window framebuffers. If the running X server does not support this extension or there is no running compositing manager, the <code>GLFW_TRANSPARENT_FRAMEBUFFER</code> framebuffer hint will have no effect.</p>
94<h1><a class="anchor" id="compat_wayland"></a>
95Wayland protocols and IPC standards</h1>
96<p >As GLFW uses libwayland directly, without any intervening toolkit library, it has sole responsibility for interacting well with every compositor in use on Unix-like systems. Most of the features are provided by the core protocol, while cursor support is provided by the libwayland-cursor helper library, EGL integration by libwayland-egl, and keyboard handling by <a href="https://xkbcommon.org/">libxkbcommon</a>. In addition, GLFW uses some protocols from wayland-protocols to provide additional features if the compositor supports them.</p>
97<p >GLFW uses xkbcommon 0.5.0 to provide compose key support. When it has been built against an older xkbcommon, the compose key will be disabled even if it has been configured in the compositor.</p>
98<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/xdg-shell/xdg-shell.xml">xdg-shell protocol</a> to provide better window management. This protocol is part of wayland-protocols 1.12, and mandatory at build time. If the running compositor does not support this protocol, the older <a href="https://cgit.freedesktop.org/wayland/wayland/tree/protocol/wayland.xml#n972">wl_shell interface</a> will be used instead. This will result in a worse integration with the desktop, especially on tiling compositors.</p>
99<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml">relative pointer protocol</a> alongside the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml">pointer constraints protocol</a> to implement disabled cursor. These two protocols are part of wayland-protocols 1.1, and mandatory at build time. If the running compositor does not support both of these protocols, disabling the cursor will have no effect.</p>
100<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml">idle inhibit protocol</a> to prohibit the screensaver from starting. This protocol is part of wayland-protocols 1.6, and mandatory at build time. If the running compositor does not support this protocol, the screensaver may start even for full screen windows.</p>
101<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml">xdg-decoration protocol</a> to request decorations to be drawn around its windows. This protocol is part of wayland-protocols 1.15, and mandatory at build time. If the running compositor does not support this protocol, a very simple frame will be drawn by GLFW itself, using the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/viewporter/viewporter.xml">viewporter protocol</a> alongside <a href="https://cgit.freedesktop.org/wayland/wayland/tree/protocol/wayland.xml#n2598">subsurfaces</a>. This protocol is part of wayland-protocols 1.4, and mandatory at build time. If the running compositor does not support this protocol either, no decorations will be drawn around windows.</p>
102<h1><a class="anchor" id="compat_glx"></a>
103GLX extensions</h1>
104<p >The GLX API is the default API used to create OpenGL contexts on Unix-like systems using the X Window System.</p>
105<p >GLFW uses the GLX 1.3 <code>GLXFBConfig</code> functions to enumerate and select framebuffer pixel formats. If GLX 1.3 is not supported, <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> will fail.</p>
106<p >GLFW uses the <code>GLX_MESA_swap_control,</code> <code>GLX_EXT_swap_control</code> and <code>GLX_SGI_swap_control</code> extensions to provide vertical retrace synchronization (or <em>vsync</em>), in that order of preference. Where none of these extension are available, calling <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> will have no effect.</p>
107<p >GLFW uses the <code>GLX_ARB_multisample</code> extension to create contexts with multisampling anti-aliasing. Where this extension is unavailable, the <code>GLFW_SAMPLES</code> hint will have no effect.</p>
108<p >GLFW uses the <code>GLX_ARB_create_context</code> extension when available, even when creating OpenGL contexts of version 2.1 and below. Where this extension is unavailable, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will only be partially supported, the <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint will have no effect, and setting the <code>GLFW_OPENGL_PROFILE</code> or <code>GLFW_OPENGL_FORWARD_COMPAT</code> hints to <code>GLFW_TRUE</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
109<p >GLFW uses the <code>GLX_ARB_create_context_profile</code> extension to provide support for context profiles. Where this extension is unavailable, setting the <code>GLFW_OPENGL_PROFILE</code> hint to anything but <code>GLFW_OPENGL_ANY_PROFILE</code>, or setting <code>GLFW_CLIENT_API</code> to anything but <code>GLFW_OPENGL_API</code> or <code>GLFW_NO_API</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
110<p >GLFW uses the <code>GLX_ARB_context_flush_control</code> extension to provide control over whether a context is flushed when it is released (made non-current). Where this extension is unavailable, the <code>GLFW_CONTEXT_RELEASE_BEHAVIOR</code> hint will have no effect and the context will always be flushed when released.</p>
111<p >GLFW uses the <code>GLX_ARB_framebuffer_sRGB</code> and <code>GLX_EXT_framebuffer_sRGB</code> extensions to provide support for sRGB framebuffers. Where both of these extensions are unavailable, the <code>GLFW_SRGB_CAPABLE</code> hint will have no effect.</p>
112<h1><a class="anchor" id="compat_wgl"></a>
113WGL extensions</h1>
114<p >The WGL API is used to create OpenGL contexts on Microsoft Windows and other implementations of the Win32 API, such as Wine.</p>
115<p >GLFW uses either the <code>WGL_EXT_extension_string</code> or the <code>WGL_ARB_extension_string</code> extension to check for the presence of all other WGL extensions listed below. If both are available, the EXT one is preferred. If neither is available, no other extensions are used and many GLFW features related to context creation will have no effect or cause errors when used.</p>
116<p >GLFW uses the <code>WGL_EXT_swap_control</code> extension to provide vertical retrace synchronization (or <em>vsync</em>). Where this extension is unavailable, calling <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> will have no effect.</p>
117<p >GLFW uses the <code>WGL_ARB_pixel_format</code> and <code>WGL_ARB_multisample</code> extensions to create contexts with multisampling anti-aliasing. Where these extensions are unavailable, the <code>GLFW_SAMPLES</code> hint will have no effect.</p>
118<p >GLFW uses the <code>WGL_ARB_create_context</code> extension when available, even when creating OpenGL contexts of version 2.1 and below. Where this extension is unavailable, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will only be partially supported, the <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint will have no effect, and setting the <code>GLFW_OPENGL_PROFILE</code> or <code>GLFW_OPENGL_FORWARD_COMPAT</code> hints to <code>GLFW_TRUE</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
119<p >GLFW uses the <code>WGL_ARB_create_context_profile</code> extension to provide support for context profiles. Where this extension is unavailable, setting the <code>GLFW_OPENGL_PROFILE</code> hint to anything but <code>GLFW_OPENGL_ANY_PROFILE</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
120<p >GLFW uses the <code>WGL_ARB_context_flush_control</code> extension to provide control over whether a context is flushed when it is released (made non-current). Where this extension is unavailable, the <code>GLFW_CONTEXT_RELEASE_BEHAVIOR</code> hint will have no effect and the context will always be flushed when released.</p>
121<p >GLFW uses the <code>WGL_ARB_framebuffer_sRGB</code> and <code>WGL_EXT_framebuffer_sRGB</code> extensions to provide support for sRGB framebuffers. Where both of these extension are unavailable, the <code>GLFW_SRGB_CAPABLE</code> hint will have no effect.</p>
122<h1><a class="anchor" id="compat_osx"></a>
123OpenGL on macOS</h1>
124<p >Support for OpenGL 3.2 and above was introduced with OS X 10.7 and even then only forward-compatible, core profile contexts are supported. Support for OpenGL 4.1 was introduced with OS X 10.9, also limited to forward-compatible, core profile contexts. There is also still no mechanism for requesting debug contexts or no-error contexts. Versions of Mac OS X earlier than 10.7 support at most OpenGL version 2.1.</p>
125<p >Because of this, on OS X 10.7 and later, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail if given version 3.0 or 3.1. The <code>GLFW_OPENGL_FORWARD_COMPAT</code> hint must be set to <code>GLFW_TRUE</code> and the <code>GLFW_OPENGL_PROFILE</code> hint must be set to <code>GLFW_OPENGL_CORE_PROFILE</code> when creating OpenGL 3.2 and later contexts. The <code>GLFW_OPENGL_DEBUG_CONTEXT</code> and <code>GLFW_CONTEXT_NO_ERROR</code> hints are ignored.</p>
126<p >Also, on Mac OS X 10.6 and below, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will fail if given a version above 2.1, setting the <code>GLFW_OPENGL_PROFILE</code> or <code>GLFW_OPENGL_FORWARD_COMPAT</code> hints to a non-default value will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail and the <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint is ignored.</p>
127<h1><a class="anchor" id="compat_vulkan"></a>
128Vulkan loader and API</h1>
129<p >By default, GLFW uses the standard system-wide Vulkan loader to access the Vulkan API on all platforms except macOS. This is installed by both graphics drivers and Vulkan SDKs. If either the loader or at least one minimally functional ICD is missing, <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> will return <code>GLFW_FALSE</code> and all other Vulkan-related functions will fail with an <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error.</p>
130<h1><a class="anchor" id="compat_wsi"></a>
131Vulkan WSI extensions</h1>
132<p >The Vulkan WSI extensions are used to create Vulkan surfaces for GLFW windows on all supported platforms.</p>
133<p >GLFW uses the <code>VK_KHR_surface</code> and <code>VK_KHR_win32_surface</code> extensions to create surfaces on Microsoft Windows. If any of these extensions are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail.</p>
134<p >GLFW uses the <code>VK_KHR_surface</code> and either the <code>VK_MVK_macos_surface</code> or <code>VK_EXT_metal_surface</code> extensions to create surfaces on macOS. If any of these extensions are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail.</p>
135<p >GLFW uses the <code>VK_KHR_surface</code> and either the <code>VK_KHR_xlib_surface</code> or <code>VK_KHR_xcb_surface</code> extensions to create surfaces on X11. If <code>VK_KHR_surface</code> or both <code>VK_KHR_xlib_surface</code> and <code>VK_KHR_xcb_surface</code> are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail.</p>
136<p >GLFW uses the <code>VK_KHR_surface</code> and <code>VK_KHR_wayland_surface</code> extensions to create surfaces on Wayland. If any of these extensions are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail. </p>
137</div></div><!-- contents -->
138</div><!-- PageDoc -->
139<address class="footer">
140<p>
141Last update on Thu Oct 28 2021 for GLFW 3.3.5
142</p>
143</address>
144</body>
145</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_8dox.html
new file mode 100644
index 0000000..3ffd7d2
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: compile.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">compile.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_guide.html
new file mode 100644
index 0000000..cbd9d0e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/compile_guide.html
@@ -0,0 +1,216 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Compiling GLFW</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Compiling GLFW </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#compile_cmake">Using CMake</a><ul><li class="level2"><a href="#compile_deps">Installing dependencies</a><ul><li class="level3"><a href="#compile_deps_x11">Dependencies for X11 on Unix-like systems</a></li>
69<li class="level3"><a href="#compile_deps_wayland">Dependencies for Wayland on Unix-like systems</a></li>
70</ul>
71</li>
72<li class="level2"><a href="#compile_generate">Generating build files with CMake</a><ul><li class="level3"><a href="#compile_generate_gui">Generating files with the CMake GUI</a></li>
73<li class="level3"><a href="#compile_generate_cli">Generating files with the CMake command-line tool</a></li>
74</ul>
75</li>
76<li class="level2"><a href="#compile_compile">Compiling the library</a></li>
77</ul>
78</li>
79<li class="level1"><a href="#compile_options">CMake options</a><ul><li class="level2"><a href="#compile_options_shared">Shared CMake options</a></li>
80<li class="level2"><a href="#compile_options_win32">Windows specific CMake options</a></li>
81<li class="level2"><a href="#compile_options_wayland">Wayland specific CMake options</a></li>
82</ul>
83</li>
84<li class="level1"><a href="#compile_mingw_cross">Cross-compilation with CMake and MinGW</a></li>
85<li class="level1"><a href="#compile_manual">Compiling GLFW manually</a></li>
86</ul>
87</div>
88<div class="textblock"><p >This is about compiling the GLFW library itself. For information on how to build applications that use GLFW, see <a class="el" href="build_guide.html">Building applications</a>.</p>
89<h1><a class="anchor" id="compile_cmake"></a>
90Using CMake</h1>
91<dl class="section note"><dt>Note</dt><dd>GLFW behaves like most other libraries that use CMake so this guide mostly describes the basic configure/generate/compile sequence. If you are already familiar with this from other projects, you may want to focus on the <a class="el" href="compile_guide.html#compile_deps">Installing dependencies</a> and <a class="el" href="compile_guide.html#compile_options">CMake options</a> sections for GLFW-specific information.</dd></dl>
92<p>GLFW uses <a href="https://cmake.org/">CMake</a> to generate project files or makefiles for your chosen development environment. To compile GLFW, first generate these files with CMake and then use them to compile the GLFW library.</p>
93<p >If you are on Windows and macOS you can <a href="https://cmake.org/download/">download CMake</a> from their site.</p>
94<p >If you are on a Unix-like system such as Linux, FreeBSD or Cygwin or have a package system like Fink, MacPorts or Homebrew, you can install its CMake package.</p>
95<p >CMake is a complex tool and this guide will only show a few of the possible ways to set up and compile GLFW. The CMake project has their own much more detailed <a href="https://cmake.org/cmake/help/latest/guide/user-interaction/">CMake user guide</a> that includes everything in this guide not specific to GLFW. It may be a useful companion to this one.</p>
96<h2><a class="anchor" id="compile_deps"></a>
97Installing dependencies</h2>
98<p >The C/C++ development environments in Visual Studio, Xcode and MinGW come with all necessary dependencies for compiling GLFW, but on Unix-like systems like Linux and FreeBSD you will need a few extra packages.</p>
99<h3><a class="anchor" id="compile_deps_x11"></a>
100Dependencies for X11 on Unix-like systems</h3>
101<p >To compile GLFW for X11, you need to have the X11 development packages installed. They are not needed to build or run programs that use GLFW.</p>
102<p >On Debian and derivates like Ubuntu and Linux Mint the <code>xorg-dev</code> meta-package pulls in the development packages for all of X11.</p>
103<div class="fragment"><div class="line">sudo apt install xorg-dev</div>
104</div><!-- fragment --><p >On Fedora and derivatives like Red Hat the X11 extension packages <code>libXcursor-devel</code>, <code>libXi-devel</code>, <code>libXinerama-devel</code> and <code>libXrandr-devel</code> required by GLFW pull in all its other dependencies.</p>
105<div class="fragment"><div class="line">sudo dnf install libXcursor-devel libXi-devel libXinerama-devel libXrandr-devel</div>
106</div><!-- fragment --><p >On FreeBSD the X11 headers are installed along the end-user X11 packages, so if you have an X server running you should have the headers as well. If not, install the <code>xorgproto</code> package.</p>
107<div class="fragment"><div class="line">pkg install xorgproto</div>
108</div><!-- fragment --><p >On Cygwin the <code>xorgproto</code> package in the Devel section of the GUI installer will install the headers and other development related files for all of X11.</p>
109<p >Once you have the required depdendencies, move on to <a class="el" href="compile_guide.html#compile_generate">Generating build files with CMake</a>.</p>
110<h3><a class="anchor" id="compile_deps_wayland"></a>
111Dependencies for Wayland on Unix-like systems</h3>
112<p >To compile GLFW for Wayland, you need to have the Wayland and xkbcommon development packages installed. They are not needed to build or run programs that use GLFW.</p>
113<p >On Debian and derivates like Ubuntu and Linux Mint you will need the <code>libwayland-dev</code>, <code>libxkbcommon-dev</code>, <code>wayland-protocols</code> and <code>extra-cmake-modules</code> packages.</p>
114<div class="fragment"><div class="line">sudo apt install libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules</div>
115</div><!-- fragment --><p >On Fedora and derivatives like Red Hat you will need the <code>wayland-devel</code>, <code>libxkbcommon-devel</code>, <code>wayland-protocols-devel</code> and <code>extra-cmake-modules</code> packages.</p>
116<div class="fragment"><div class="line">sudo dnf install wayland-devel libxkbcommon-devel wayland-protocols-devel extra-cmake-modules</div>
117</div><!-- fragment --><p >On FreeBSD you will need the <code>wayland</code>, <code>libxkbcommon</code>, <code>wayland-protocols</code> and <code>kf5-extra-cmake-modules</code> packages.</p>
118<div class="fragment"><div class="line">pkg install wayland libxkbcommon wayland-protocols kf5-extra-cmake-modules</div>
119</div><!-- fragment --><p >Once you have the required depdendencies, move on to <a class="el" href="compile_guide.html#compile_generate">Generating build files with CMake</a>.</p>
120<h2><a class="anchor" id="compile_generate"></a>
121Generating build files with CMake</h2>
122<p >Once you have all necessary dependencies it is time to generate the project files or makefiles for your development environment. CMake needs two paths for this:</p>
123<ul>
124<li>the path to the root directory of the GLFW source tree (not its <code>src</code> subdirectory)</li>
125<li>the path to the directory where the generated build files and compiled binaries will be placed</li>
126</ul>
127<p >If these are the same, it is called an in-tree build, otherwise it is called an out-of-tree build.</p>
128<p >Out-of-tree builds are recommended as they avoid cluttering up the source tree. They also allow you to have several build directories for different configurations all using the same source tree.</p>
129<p >A common pattern when building a single configuration is to have a build directory named <code>build</code> in the root of the source tree.</p>
130<h3><a class="anchor" id="compile_generate_gui"></a>
131Generating files with the CMake GUI</h3>
132<p >Start the CMake GUI and set the paths to the source and build directories described above. Then press <em>Configure</em> and <em>Generate</em>.</p>
133<p >If you wish change any CMake variables in the list, press <em>Configure</em> and then <em>Generate</em> to have the new values take effect. The variable list will be populated after the first configure step.</p>
134<p >By default GLFW will use X11 on Linux and other Unix-like systems other than macOS. To use Wayland instead, set the <code>GLFW_USE_WAYLAND</code> option in the GLFW section of the variable list, then apply the new value as described above.</p>
135<p >Once you have generated the project files or makefiles for your chosen development environment, move on to <a class="el" href="compile_guide.html#compile_compile">Compiling the library</a>.</p>
136<h3><a class="anchor" id="compile_generate_cli"></a>
137Generating files with the CMake command-line tool</h3>
138<p >To make a build directory, pass the source and build directories to the <code>cmake</code> command. These can be relative or absolute paths. The build directory is created if it doesn't already exist.</p>
139<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build</div>
140</div><!-- fragment --><p >It is common to name the build directory <code>build</code> and place it in the root of the source tree when only planning to build a single configuration.</p>
141<div class="fragment"><div class="line">cd path/to/glfw</div>
142<div class="line">cmake -S . -B build</div>
143</div><!-- fragment --><p >Without other flags these will generate Visual Studio project files on Windows and makefiles on other platforms. You can choose other targets using the <code>-G</code> flag.</p>
144<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -G Xcode</div>
145</div><!-- fragment --><p >By default GLFW will use X11 on Linux and other Unix-like systems other than macOS. To use Wayland instead, set the <code>GLFW_USE_WAYLAND</code> CMake option.</p>
146<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D GLFW_USE_WAYLAND=1</div>
147</div><!-- fragment --><p >Once you have generated the project files or makefiles for your chosen development environment, move on to <a class="el" href="compile_guide.html#compile_compile">Compiling the library</a>.</p>
148<h2><a class="anchor" id="compile_compile"></a>
149Compiling the library</h2>
150<p >You should now have all required dependencies and the project files or makefiles necessary to compile GLFW. Go ahead and compile the actual GLFW library with these files as you would with any other project.</p>
151<p >With Visual Studio open <code>GLFW.sln</code> and use the Build menu. With Xcode open <code>GLFW.xcodeproj</code> and use the Project menu.</p>
152<p >With Linux, macOS and other forms of Unix, run <code>make</code>.</p>
153<div class="fragment"><div class="line">cd path/to/build</div>
154<div class="line">make</div>
155</div><!-- fragment --><p >With MinGW, it is <code>mingw32-make</code>.</p>
156<div class="fragment"><div class="line">cd path/to/build</div>
157<div class="line">mingw32-make</div>
158</div><!-- fragment --><p >Any CMake build directory can also be built with the <code>cmake</code> command and the <code>--build</code> flag.</p>
159<div class="fragment"><div class="line">cmake --build path/to/build</div>
160</div><!-- fragment --><p >This will run the platform specific build tool the directory was generated for.</p>
161<p >Once the GLFW library is compiled you are ready to build your application, linking it to the GLFW library. See <a class="el" href="build_guide.html">Building applications</a> for more information.</p>
162<h1><a class="anchor" id="compile_options"></a>
163CMake options</h1>
164<p >The CMake files for GLFW provide a number of options, although not all are available on all supported platforms. Some of these are de facto standards among projects using CMake and so have no <code>GLFW_</code> prefix.</p>
165<p >If you are using the GUI version of CMake, these are listed and can be changed from there. If you are using the command-line version of CMake you can use the <code>ccmake</code> ncurses GUI to set options. Some package systems like Ubuntu and other distributions based on Debian GNU/Linux have this tool in a separate <code>cmake-curses-gui</code> package.</p>
166<p >Finally, if you don't want to use any GUI, you can set options from the <code>cmake</code> command-line with the <code>-D</code> flag.</p>
167<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D BUILD_SHARED_LIBS=ON</div>
168</div><!-- fragment --><h2><a class="anchor" id="compile_options_shared"></a>
169Shared CMake options</h2>
170<p ><a class="anchor" id="BUILD_SHARED_LIBS"></a><b>BUILD_SHARED_LIBS</b> determines whether GLFW is built as a static library or as a DLL / shared library / dynamic library. This is disabled by default, producing a static GLFW library.</p>
171<p ><a class="anchor" id="GLFW_BUILD_EXAMPLES"></a><b>GLFW_BUILD_EXAMPLES</b> determines whether the GLFW examples are built along with the library.</p>
172<p ><a class="anchor" id="GLFW_BUILD_TESTS"></a><b>GLFW_BUILD_TESTS</b> determines whether the GLFW test programs are built along with the library.</p>
173<p ><a class="anchor" id="GLFW_BUILD_DOCS"></a><b>GLFW_BUILD_DOCS</b> determines whether the GLFW documentation is built along with the library. This is enabled by default if <a href="https://www.doxygen.nl/">Doxygen</a> is found by CMake during configuration.</p>
174<p ><a class="anchor" id="GLFW_VULKAN_STATIC"></a><b>GLFW_VULKAN_STATIC</b> determines whether to use the Vulkan loader linked directly with the application. This is disabled by default.</p>
175<h2><a class="anchor" id="compile_options_win32"></a>
176Windows specific CMake options</h2>
177<p ><a class="anchor" id="USE_MSVC_RUNTIME_LIBRARY_DLL"></a><b>USE_MSVC_RUNTIME_LIBRARY_DLL</b> determines whether to use the DLL version or the static library version of the Visual C++ runtime library. When enabled, the DLL version of the Visual C++ library is used. This is enabled by default.</p>
178<p >On CMake 3.15 and later you can set the standard CMake <a href="https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html">CMAKE_MSVC_RUNTIME_LIBRARY</a> variable instead of this GLFW-specific option.</p>
179<p ><a class="anchor" id="GLFW_USE_HYBRID_HPG"></a><b>GLFW_USE_HYBRID_HPG</b> determines whether to export the <code>NvOptimusEnablement</code> and <code>AmdPowerXpressRequestHighPerformance</code> symbols, which force the use of the high-performance GPU on Nvidia Optimus and AMD PowerXpress systems. These symbols need to be exported by the EXE to be detected by the driver, so the override will not work if GLFW is built as a DLL. This is disabled by default, letting the operating system and driver decide.</p>
180<h2><a class="anchor" id="compile_options_wayland"></a>
181Wayland specific CMake options</h2>
182<p ><a class="anchor" id="GLFW_USE_WAYLAND"></a><b>GLFW_USE_WAYLAND</b> determines whether to compile the library for Wayland. This option is only available on Linux and other Unix-like systems other than macOS. This is disabled by default.</p>
183<h1><a class="anchor" id="compile_mingw_cross"></a>
184Cross-compilation with CMake and MinGW</h1>
185<p >Both Cygwin and many Linux distributions have MinGW or MinGW-w64 packages. For example, Cygwin has the <code>mingw64-i686-gcc</code> and <code>mingw64-x86_64-gcc</code> packages for 32- and 64-bit version of MinGW-w64, while Debian GNU/Linux and derivatives like Ubuntu have the <code>mingw-w64</code> package for both.</p>
186<p >GLFW has CMake toolchain files in the <code>CMake</code> subdirectory that set up cross-compilation of Windows binaries. To use these files you set the <code>CMAKE_TOOLCHAIN_FILE</code> CMake variable with the <code>-D</code> flag add an option when configuring and generating the build files.</p>
187<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=path/to/file</div>
188</div><!-- fragment --><p >The exact toolchain file to use depends on the prefix used by the MinGW or MinGW-w64 binaries on your system. You can usually see this in the /usr directory. For example, both the Ubuntu and Cygwin MinGW-w64 packages have <code>/usr/x86_64-w64-mingw32</code> for the 64-bit compilers, so the correct invocation would be:</p>
189<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake</div>
190</div><!-- fragment --><p >The path to the toolchain file is relative to the path to the GLFW source tree passed to the <code>-S</code> flag, not to the current directory.</p>
191<p >For more details see the <a href="https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html">CMake toolchain guide</a>.</p>
192<h1><a class="anchor" id="compile_manual"></a>
193Compiling GLFW manually</h1>
194<p >If you wish to compile GLFW without its CMake build environment then you will have to do at least some of the platform detection yourself. GLFW needs a configuration macro to be defined in order to know what window system it is being compiled for and also has optional, platform-specific ones for various features.</p>
195<p >When building with CMake, the <code>glfw_config.h</code> configuration header is generated based on the current platform and CMake options. The GLFW CMake environment defines <b>GLFW_USE_CONFIG_H</b>, which causes this header to be included by <code>internal.h</code>. Without this macro, GLFW will expect the necessary configuration macros to be defined on the command-line.</p>
196<p >The window creation API is used to create windows, handle input, monitors, gamma ramps and clipboard. The options are:</p>
197<ul>
198<li><b>_GLFW_COCOA</b> to use the Cocoa frameworks</li>
199<li><b>_GLFW_WIN32</b> to use the Win32 API</li>
200<li><b>_GLFW_X11</b> to use the X Window System</li>
201<li><b>_GLFW_WAYLAND</b> to use the Wayland API (experimental and incomplete)</li>
202<li><b>_GLFW_OSMESA</b> to use the OSMesa API (headless and non-interactive)</li>
203</ul>
204<p >If you are building GLFW as a shared library / dynamic library / DLL then you must also define <b>_GLFW_BUILD_DLL</b>. Otherwise, you must not define it.</p>
205<p >If you are linking the Vulkan loader directly with your application then you must also define <b>_GLFW_VULKAN_STATIC</b>. Otherwise, GLFW will attempt to use the external version.</p>
206<p >If you are using a custom name for the Vulkan, EGL, GLX, OSMesa, OpenGL, GLESv1 or GLESv2 library, you can override the default names by defining those you need of <b>_GLFW_VULKAN_LIBRARY</b>, <b>_GLFW_EGL_LIBRARY</b>, <b>_GLFW_GLX_LIBRARY</b>, <b>_GLFW_OSMESA_LIBRARY</b>, <b>_GLFW_OPENGL_LIBRARY</b>, <b>_GLFW_GLESV1_LIBRARY</b> and <b>_GLFW_GLESV2_LIBRARY</b>. Otherwise, GLFW will use the built-in default names.</p>
207<dl class="section note"><dt>Note</dt><dd>None of the <a class="el" href="build_guide.html#build_macros">GLFW header option macros</a> may be defined during the compilation of GLFW. If you define any of these in your build files, make sure they are not applied to the GLFW sources. </dd></dl>
208</div></div><!-- contents -->
209</div><!-- PageDoc -->
210<address class="footer">
211<p>
212Last update on Thu Oct 28 2021 for GLFW 3.3.5
213</p>
214</address>
215</body>
216</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_8dox.html
new file mode 100644
index 0000000..79dc9ea
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: context.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">context.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_guide.html
new file mode 100644
index 0000000..30ff5d2
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/context_guide.html
@@ -0,0 +1,251 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Context guide</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Context guide </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#context_object">Context objects</a><ul><li class="level2"><a href="#context_hints">Context creation hints</a></li>
69<li class="level2"><a href="#context_sharing">Context object sharing</a></li>
70<li class="level2"><a href="#context_offscreen">Offscreen contexts</a></li>
71<li class="level2"><a href="#context_less">Windows without contexts</a></li>
72</ul>
73</li>
74<li class="level1"><a href="#context_current">Current context</a></li>
75<li class="level1"><a href="#context_swap">Buffer swapping</a></li>
76<li class="level1"><a href="#context_glext">OpenGL and OpenGL ES extensions</a><ul><li class="level2"><a href="#context_glext_auto">Loading extension with a loader library</a></li>
77<li class="level2"><a href="#context_glext_manual">Loading extensions manually</a><ul><li class="level3"><a href="#context_glext_header">The glext.h header</a></li>
78<li class="level3"><a href="#context_glext_string">Checking for extensions</a></li>
79<li class="level3"><a href="#context_glext_proc">Fetching function pointers</a></li>
80</ul>
81</li>
82</ul>
83</li>
84</ul>
85</div>
86<div class="textblock"><p >This guide introduces the OpenGL and OpenGL ES context related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__context.html">Context reference</a>. There are also guides for the other areas of the GLFW API.</p>
87<ul>
88<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
89<li><a class="el" href="window_guide.html">Window guide</a></li>
90<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
91<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
92<li><a class="el" href="input_guide.html">Input guide</a></li>
93</ul>
94<h1><a class="anchor" id="context_object"></a>
95Context objects</h1>
96<p >A window object encapsulates both a top-level window and an OpenGL or OpenGL ES context. It is created with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> and destroyed with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>. See <a class="el" href="window_guide.html#window_creation">Window creation</a> for more information.</p>
97<p >As the window and context are inseparably linked, the window object also serves as the context handle.</p>
98<p >To test the creation of various kinds of contexts and see their properties, run the <code>glfwinfo</code> test program.</p>
99<dl class="section note"><dt>Note</dt><dd>Vulkan does not have a context and the Vulkan instance is created via the Vulkan API itself. If you will be using Vulkan to render to a window, disable context creation by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_NO_API</code>. For more information, see the <a class="el" href="vulkan_guide.html">Vulkan guide</a>.</dd></dl>
100<h2><a class="anchor" id="context_hints"></a>
101Context creation hints</h2>
102<p >There are a number of hints, specified using <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>, related to what kind of context is created. See <a class="el" href="window_guide.html#window_hints_ctx">context related hints</a> in the window guide.</p>
103<h2><a class="anchor" id="context_sharing"></a>
104Context object sharing</h2>
105<p >When creating a window and its OpenGL or OpenGL ES context with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>, you can specify another window whose context the new one should share its objects (textures, vertex and element buffers, etc.) with.</p>
106<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* second_window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;Second Window&quot;</span>, NULL, first_window);</div>
107<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
108<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
109</div><!-- fragment --><p >Object sharing is implemented by the operating system and graphics driver. On platforms where it is possible to choose which types of objects are shared, GLFW requests that all types are shared.</p>
110<p >See the relevant chapter of the <a href="https://www.opengl.org/registry/">OpenGL</a> or <a href="https://www.khronos.org/opengles/">OpenGL ES</a> reference documents for more information. The name and number of this chapter unfortunately varies between versions and APIs, but has at times been named <em>Shared Objects and Multiple Contexts</em>.</p>
111<p >GLFW comes with a barebones object sharing example program called <code>sharing</code>.</p>
112<h2><a class="anchor" id="context_offscreen"></a>
113Offscreen contexts</h2>
114<p >GLFW doesn't support creating contexts without an associated window. However, contexts with hidden windows can be created with the <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">GLFW_VISIBLE</a> window hint.</p>
115<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
116<div class="line"> </div>
117<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* offscreen_context = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;&quot;</span>, NULL, NULL);</div>
118<div class="ttc" id="agroup__init_html_gac877fe3b627d21ef3a0a23e0a73ba8c5"><div class="ttname"><a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a></div><div class="ttdeci">#define GLFW_FALSE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> glfw3.h:322</div></div>
119<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
120<div class="ttc" id="agroup__window_html_gafb3cdc45297e06d8f1eb13adc69ca6c4"><div class="ttname"><a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a></div><div class="ttdeci">#define GLFW_VISIBLE</div><div class="ttdoc">Window visibility window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:815</div></div>
121</div><!-- fragment --><p >The window never needs to be shown and its context can be used as a plain offscreen context. Depending on the window manager, the size of a hidden window's framebuffer may not be usable or modifiable, so framebuffer objects are recommended for rendering with such contexts.</p>
122<p >You should still <a class="el" href="input_guide.html#events">process events</a> as long as you have at least one window, even if none of them are visible.</p>
123<p ><b>macOS:</b> The first time a window is created the menu bar is created. This is not desirable for example when writing a command-line only application. Menu bar creation can be disabled with the <a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a> init hint.</p>
124<h2><a class="anchor" id="context_less"></a>
125Windows without contexts</h2>
126<p >You can disable context creation by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_NO_API</code>. Windows without contexts must not be passed to <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> or <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>.</p>
127<h1><a class="anchor" id="context_current"></a>
128Current context</h1>
129<p >Before you can make OpenGL or OpenGL ES calls, you need to have a current context of the correct type. A context can only be current for a single thread at a time, and a thread can only have a single context current at a time.</p>
130<p >When moving a context between threads, you must make it non-current on the old thread before making it current on the new one.</p>
131<p >The context of a window is made current with <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>.</p>
132<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
133<div class="ttc" id="agroup__context_html_ga1c04dc242268f827290fe40aa1c91157"><div class="ttname"><a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></div><div class="ttdeci">void glfwMakeContextCurrent(GLFWwindow *window)</div><div class="ttdoc">Makes the context of the specified window current for the calling thread.</div></div>
134</div><!-- fragment --><p >The window of the current context is returned by <a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a>.</p>
135<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a>();</div>
136<div class="ttc" id="agroup__context_html_gad94e80185397a6cf5fe2ab30567af71c"><div class="ttname"><a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></div><div class="ttdeci">GLFWwindow * glfwGetCurrentContext(void)</div><div class="ttdoc">Returns the window whose context is current on the calling thread.</div></div>
137</div><!-- fragment --><p >The following GLFW functions require a context to be current. Calling any these functions without a current context will generate a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
138<ul>
139<li><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></li>
140<li><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></li>
141<li><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></li>
142</ul>
143<h1><a class="anchor" id="context_swap"></a>
144Buffer swapping</h1>
145<p >See <a class="el" href="window_guide.html#buffer_swap">Buffer swapping</a> in the window guide.</p>
146<h1><a class="anchor" id="context_glext"></a>
147OpenGL and OpenGL ES extensions</h1>
148<p >One of the benefits of OpenGL and OpenGL ES is their extensibility. Hardware vendors may include extensions in their implementations that extend the API before that functionality is included in a new version of the OpenGL or OpenGL ES specification, and some extensions are never included and remain as extensions until they become obsolete.</p>
149<p >An extension is defined by:</p>
150<ul>
151<li>An extension name (e.g. <code>GL_ARB_gl_spirv</code>)</li>
152<li>New OpenGL tokens (e.g. <code>GL_SPIR_V_BINARY_ARB</code>)</li>
153<li>New OpenGL functions (e.g. <code>glSpecializeShaderARB</code>)</li>
154</ul>
155<p >Note the <code>ARB</code> affix, which stands for Architecture Review Board and is used for official extensions. The extension above was created by the ARB, but there are many different affixes, like <code>NV</code> for Nvidia and <code>AMD</code> for, well, AMD. Any group may also use the generic <code>EXT</code> affix. Lists of extensions, together with their specifications, can be found at the <a href="https://www.opengl.org/registry/">OpenGL Registry</a> and <a href="https://www.khronos.org/registry/gles/">OpenGL ES Registry</a>.</p>
156<h2><a class="anchor" id="context_glext_auto"></a>
157Loading extension with a loader library</h2>
158<p >An extension loader library is the easiest and best way to access both OpenGL and OpenGL ES extensions and modern versions of the core OpenGL or OpenGL ES APIs. They will take care of all the details of declaring and loading everything you need. One such library is <a href="https://github.com/Dav1dde/glad">glad</a> and there are several others.</p>
159<p >The following example will use glad but all extension loader libraries work similarly.</p>
160<p >First you need to generate the source files using the glad Python script. This example generates a loader for any version of OpenGL, which is the default for both GLFW and glad, but loaders for OpenGL ES, as well as loaders for specific API versions and extension sets can be generated. The generated files are written to the <code>output</code> directory.</p>
161<div class="fragment"><div class="line">python main.py --generator c --no-loader --out-path output</div>
162</div><!-- fragment --><p >The <code>--no-loader</code> option is added because GLFW already provides a function for loading OpenGL and OpenGL ES function pointers, one that automatically uses the selected context creation API, and glad can call this instead of having to implement its own. There are several other command-line options as well. See the glad documentation for details.</p>
163<p >Add the generated <code>output/src/glad.c</code>, <code>output/include/glad/glad.h</code> and <code>output/include/KHR/khrplatform.h</code> files to your build. Then you need to include the glad header file, which will replace the OpenGL header of your development environment. By including the glad header before the GLFW header, it suppresses the development environment's OpenGL or OpenGL ES header.</p>
164<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
165<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
166<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
167</div><!-- fragment --><p >Finally you need to initialize glad once you have a suitable current context.</p>
168<div class="fragment"><div class="line">window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Window&quot;</span>, NULL, NULL);</div>
169<div class="line"><span class="keywordflow">if</span> (!window)</div>
170<div class="line">{</div>
171<div class="line"> ...</div>
172<div class="line">}</div>
173<div class="line"> </div>
174<div class="line"><a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
175<div class="line"> </div>
176<div class="line">gladLoadGLLoader((GLADloadproc) <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>);</div>
177<div class="ttc" id="agroup__context_html_ga35f1837e6f666781842483937612f163"><div class="ttname"><a href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></div><div class="ttdeci">GLFWglproc glfwGetProcAddress(const char *procname)</div><div class="ttdoc">Returns the address of the specified function for the current context.</div></div>
178</div><!-- fragment --><p >Once glad has been loaded, you have access to all OpenGL core and extension functions supported by both the context you created and the glad loader you generated and you are ready to start rendering.</p>
179<p >You can specify a minimum required OpenGL or OpenGL ES version with <a class="el" href="window_guide.html#window_hints_ctx">context hints</a>. If your needs are more complex, you can check the actual OpenGL or OpenGL ES version with <a class="el" href="window_guide.html#window_attribs_ctx">context attributes</a>, or you can check whether a specific version is supported by the current context with the <code>GLAD_GL_VERSION_x_x</code> booleans.</p>
180<div class="fragment"><div class="line"><span class="keywordflow">if</span> (GLAD_GL_VERSION_3_2)</div>
181<div class="line">{</div>
182<div class="line"> <span class="comment">// Call OpenGL 3.2+ specific code</span></div>
183<div class="line">}</div>
184</div><!-- fragment --><p >To check whether a specific extension is supported, use the <code>GLAD_GL_xxx</code> booleans.</p>
185<div class="fragment"><div class="line"><span class="keywordflow">if</span> (GLAD_GL_ARB_gl_spirv)</div>
186<div class="line">{</div>
187<div class="line"> <span class="comment">// Use GL_ARB_gl_spirv</span></div>
188<div class="line">}</div>
189</div><!-- fragment --><h2><a class="anchor" id="context_glext_manual"></a>
190Loading extensions manually</h2>
191<p ><b>Do not use this technique</b> unless it is absolutely necessary. An <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> will save you a ton of tedious, repetitive, error prone work.</p>
192<p >To use a certain extension, you must first check whether the context supports that extension and then, if it introduces new functions, retrieve the pointers to those functions. GLFW provides <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> and <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> for manual loading of extensions and new API functions.</p>
193<p >This section will demonstrate manual loading of OpenGL extensions. The loading of OpenGL ES extensions is identical except for the name of the extension header.</p>
194<h3><a class="anchor" id="context_glext_header"></a>
195The glext.h header</h3>
196<p >The <code>glext.h</code> extension header is a continually updated file that defines the interfaces for all OpenGL extensions. The latest version of this can always be found at the <a href="https://www.opengl.org/registry/">OpenGL Registry</a>. There are also extension headers for the various versions of OpenGL ES at the <a href="https://www.khronos.org/registry/gles/">OpenGL ES Registry</a>. It it strongly recommended that you use your own copy of the extension header, as the one included in your development environment may be several years out of date and may not include the extensions you wish to use.</p>
197<p >The header defines function pointer types for all functions of all extensions it supports. These have names like <code>PFNGLSPECIALIZESHADERARBPROC</code> (for <code>glSpecializeShaderARB</code>), i.e. the name is made uppercase and <code>PFN</code> (pointer to function) and <code>PROC</code> (procedure) are added to the ends.</p>
198<p >To include the extension header, define <a class="el" href="build_guide.html#GLFW_INCLUDE_GLEXT">GLFW_INCLUDE_GLEXT</a> before including the GLFW header.</p>
199<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_GLEXT</span></div>
200<div class="line"><span class="preprocessor">#include &lt;GLFW/glfw3.h&gt;</span></div>
201</div><!-- fragment --><h3><a class="anchor" id="context_glext_string"></a>
202Checking for extensions</h3>
203<p >A given machine may not actually support the extension (it may have older drivers or a graphics card that lacks the necessary hardware features), so it is necessary to check at run-time whether the context supports the extension. This is done with <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>.</p>
204<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>(<span class="stringliteral">&quot;GL_ARB_gl_spirv&quot;</span>))</div>
205<div class="line">{</div>
206<div class="line"> <span class="comment">// The extension is supported by the current context</span></div>
207<div class="line">}</div>
208<div class="ttc" id="agroup__context_html_ga87425065c011cef1ebd6aac75e059dfa"><div class="ttname"><a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></div><div class="ttdeci">int glfwExtensionSupported(const char *extension)</div><div class="ttdoc">Returns whether the specified extension is available.</div></div>
209</div><!-- fragment --><p >The argument is a null terminated ASCII string with the extension name. If the extension is supported, <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> returns <code>GLFW_TRUE</code>, otherwise it returns <code>GLFW_FALSE</code>.</p>
210<h3><a class="anchor" id="context_glext_proc"></a>
211Fetching function pointers</h3>
212<p >Many extensions, though not all, require the use of new OpenGL functions. These functions often do not have entry points in the client API libraries of your operating system, making it necessary to fetch them at run time. You can retrieve pointers to these functions with <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>.</p>
213<div class="fragment"><div class="line">PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB = <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>(<span class="stringliteral">&quot;glSpecializeShaderARB&quot;</span>);</div>
214</div><!-- fragment --><p >In general, you should avoid giving the function pointer variables the (exact) same name as the function, as this may confuse your linker. Instead, you can use a different prefix, like above, or some other naming scheme.</p>
215<p >Now that all the pieces have been introduced, here is what they might look like when used together.</p>
216<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_GLEXT</span></div>
217<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
218<div class="line"> </div>
219<div class="line"><span class="preprocessor">#define glSpecializeShaderARB pfnSpecializeShaderARB</span></div>
220<div class="line">PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB;</div>
221<div class="line"> </div>
222<div class="line"><span class="comment">// Flag indicating whether the extension is supported</span></div>
223<div class="line"><span class="keywordtype">int</span> has_ARB_gl_spirv = 0;</div>
224<div class="line"> </div>
225<div class="line"><span class="keywordtype">void</span> load_extensions(<span class="keywordtype">void</span>)</div>
226<div class="line">{</div>
227<div class="line"> <span class="keywordflow">if</span> (<a class="code hl_function" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>(<span class="stringliteral">&quot;GL_ARB_gl_spirv&quot;</span>))</div>
228<div class="line"> {</div>
229<div class="line"> pfnSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)</div>
230<div class="line"> <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>(<span class="stringliteral">&quot;glSpecializeShaderARB&quot;</span>);</div>
231<div class="line"> has_ARB_gl_spirv = 1;</div>
232<div class="line"> }</div>
233<div class="line">}</div>
234<div class="line"> </div>
235<div class="line"><span class="keywordtype">void</span> some_function(<span class="keywordtype">void</span>)</div>
236<div class="line">{</div>
237<div class="line"> <span class="keywordflow">if</span> (has_ARB_gl_spirv)</div>
238<div class="line"> {</div>
239<div class="line"> <span class="comment">// Now the extension function can be called as usual</span></div>
240<div class="line"> glSpecializeShaderARB(...);</div>
241<div class="line"> }</div>
242<div class="line">}</div>
243</div><!-- fragment --> </div></div><!-- contents -->
244</div><!-- PageDoc -->
245<address class="footer">
246<p>
247Last update on Thu Oct 28 2021 for GLFW 3.3.5
248</p>
249</address>
250</body>
251</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/deprecated.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/deprecated.html
new file mode 100644
index 0000000..b7ad89f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/deprecated.html
@@ -0,0 +1,81 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Deprecated List</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Deprecated List </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="textblock"><dl class="reflist">
68<dt>Global <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> )(GLFWwindow *window, unsigned int codepoint, int mods)</dt>
69<dd><a class="anchor" id="_deprecated000001"></a>Scheduled for removal in version 4.0. </dd>
70<dt>Global <a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> (GLFWwindow *window, GLFWcharmodsfun callback)</dt>
71<dd><a class="anchor" id="_deprecated000002"></a>Scheduled for removal in version 4.0.</dd>
72</dl>
73</div></div><!-- contents -->
74</div><!-- PageDoc -->
75<address class="footer">
76<p>
77Last update on Thu Oct 28 2021 for GLFW 3.3.5
78</p>
79</address>
80</body>
81</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_95e305b1bfdd4b95b22076c452f17802.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_95e305b1bfdd4b95b22076c452f17802.html
new file mode 100644
index 0000000..2d89b7e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_95e305b1bfdd4b95b22076c452f17802.html
@@ -0,0 +1,88 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: GLFW Directory Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li><li class="navelem"><a class="el" href="dir_ba478fc71671afc03f16a7df0eff1823.html">include</a></li><li class="navelem"><a class="el" href="dir_95e305b1bfdd4b95b22076c452f17802.html">GLFW</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="headertitle"><div class="title">GLFW Directory Reference</div></div>
69</div><!--header-->
70<div class="contents">
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
73Files</h2></td></tr>
74<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html">glfw3.h</a> <a href="glfw3_8h_source.html">[code]</a></td></tr>
75<tr class="memdesc:glfw3_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The header of the GLFW 3 API. <br /></td></tr>
76<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
77<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3native_8h.html">glfw3native.h</a> <a href="glfw3native_8h_source.html">[code]</a></td></tr>
78<tr class="memdesc:glfw3native_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The header of the native access functions. <br /></td></tr>
79<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
80</table>
81</div><!-- contents -->
82<address class="footer">
83<p>
84Last update on Thu Oct 28 2021 for GLFW 3.3.5
85</p>
86</address>
87</body>
88</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_a2f8ccc4e596c8744057ab6c4a040d5c.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_a2f8ccc4e596c8744057ab6c4a040d5c.html
new file mode 100644
index 0000000..bae11be
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_a2f8ccc4e596c8744057ab6c4a040d5c.html
@@ -0,0 +1,86 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: glfw-3.3.5 Directory Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="headertitle"><div class="title">glfw-3.3.5 Directory Reference</div></div>
69</div><!--header-->
70<div class="contents">
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
73Directories</h2></td></tr>
74<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_af88d45d38f632316cb7d639530d38c2.html">docs</a></td></tr>
75<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
76<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_ba478fc71671afc03f16a7df0eff1823.html">include</a></td></tr>
77<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
78</table>
79</div><!-- contents -->
80<address class="footer">
81<p>
82Last update on Thu Oct 28 2021 for GLFW 3.3.5
83</p>
84</address>
85</body>
86</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_af88d45d38f632316cb7d639530d38c2.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_af88d45d38f632316cb7d639530d38c2.html
new file mode 100644
index 0000000..d4988cb
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_af88d45d38f632316cb7d639530d38c2.html
@@ -0,0 +1,78 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: docs Directory Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li><li class="navelem"><a class="el" href="dir_af88d45d38f632316cb7d639530d38c2.html">docs</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="headertitle"><div class="title">docs Directory Reference</div></div>
69</div><!--header-->
70<div class="contents">
71</div><!-- contents -->
72<address class="footer">
73<p>
74Last update on Thu Oct 28 2021 for GLFW 3.3.5
75</p>
76</address>
77</body>
78</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_ba478fc71671afc03f16a7df0eff1823.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_ba478fc71671afc03f16a7df0eff1823.html
new file mode 100644
index 0000000..f5d04be
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dir_ba478fc71671afc03f16a7df0eff1823.html
@@ -0,0 +1,84 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: include Directory Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li><li class="navelem"><a class="el" href="dir_ba478fc71671afc03f16a7df0eff1823.html">include</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="headertitle"><div class="title">include Directory Reference</div></div>
69</div><!--header-->
70<div class="contents">
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
73Directories</h2></td></tr>
74<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_95e305b1bfdd4b95b22076c452f17802.html">GLFW</a></td></tr>
75<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
76</table>
77</div><!-- contents -->
78<address class="footer">
79<p>
80Last update on Thu Oct 28 2021 for GLFW 3.3.5
81</p>
82</address>
83</body>
84</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doc.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doc.png
new file mode 100644
index 0000000..17edabf
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doc.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.css b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.css
new file mode 100644
index 0000000..8e9cca3
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.css
@@ -0,0 +1,1827 @@
1/* The standard CSS for doxygen 1.9.2 */
2
3body, table, div, p, dl {
4 font: 400 14px/22px Roboto,sans-serif;
5}
6
7p.reference, p.definition {
8 font: 400 14px/22px Roboto,sans-serif;
9}
10
11/* @group Heading Levels */
12
13h1.groupheader {
14 font-size: 150%;
15}
16
17.title {
18 font: 400 14px/28px Roboto,sans-serif;
19 font-size: 150%;
20 font-weight: bold;
21 margin: 10px 2px;
22}
23
24h2.groupheader {
25 border-bottom: 1px solid #879ECB;
26 color: #354C7B;
27 font-size: 150%;
28 font-weight: normal;
29 margin-top: 1.75em;
30 padding-top: 8px;
31 padding-bottom: 4px;
32 width: 100%;
33}
34
35h3.groupheader {
36 font-size: 100%;
37}
38
39h1, h2, h3, h4, h5, h6 {
40 -webkit-transition: text-shadow 0.5s linear;
41 -moz-transition: text-shadow 0.5s linear;
42 -ms-transition: text-shadow 0.5s linear;
43 -o-transition: text-shadow 0.5s linear;
44 transition: text-shadow 0.5s linear;
45 margin-right: 15px;
46}
47
48h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
49 text-shadow: 0 0 15px cyan;
50}
51
52dt {
53 font-weight: bold;
54}
55
56ul.multicol {
57 -moz-column-gap: 1em;
58 -webkit-column-gap: 1em;
59 column-gap: 1em;
60 -moz-column-count: 3;
61 -webkit-column-count: 3;
62 column-count: 3;
63}
64
65p.startli, p.startdd {
66 margin-top: 2px;
67}
68
69th p.starttd, th p.intertd, th p.endtd {
70 font-size: 100%;
71 font-weight: 700;
72}
73
74p.starttd {
75 margin-top: 0px;
76}
77
78p.endli {
79 margin-bottom: 0px;
80}
81
82p.enddd {
83 margin-bottom: 4px;
84}
85
86p.endtd {
87 margin-bottom: 2px;
88}
89
90p.interli {
91}
92
93p.interdd {
94}
95
96p.intertd {
97}
98
99/* @end */
100
101caption {
102 font-weight: bold;
103}
104
105span.legend {
106 font-size: 70%;
107 text-align: center;
108}
109
110h3.version {
111 font-size: 90%;
112 text-align: center;
113}
114
115div.navtab {
116 border-right: 1px solid #A3B4D7;
117 padding-right: 15px;
118 text-align: right;
119 line-height: 110%;
120}
121
122div.navtab table {
123 border-spacing: 0;
124}
125
126td.navtab {
127 padding-right: 6px;
128 padding-left: 6px;
129}
130td.navtabHL {
131 background-image: url('tab_a.png');
132 background-repeat:repeat-x;
133 padding-right: 6px;
134 padding-left: 6px;
135}
136
137td.navtabHL a, td.navtabHL a:visited {
138 color: #fff;
139 text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
140}
141
142a.navtab {
143 font-weight: bold;
144}
145
146div.qindex{
147 text-align: center;
148 width: 100%;
149 line-height: 140%;
150 font-size: 130%;
151 color: #A0A0A0;
152}
153
154dt.alphachar{
155 font-size: 180%;
156 font-weight: bold;
157}
158
159.alphachar a{
160 color: black;
161}
162
163.alphachar a:hover, .alphachar a:visited{
164 text-decoration: none;
165}
166
167.classindex dl {
168 padding: 25px;
169 column-count:1
170}
171
172.classindex dd {
173 display:inline-block;
174 margin-left: 50px;
175 width: 90%;
176 line-height: 1.15em;
177}
178
179.classindex dl.odd {
180 background-color: #F8F9FC;
181}
182
183@media(min-width: 1120px) {
184 .classindex dl {
185 column-count:2
186 }
187}
188
189@media(min-width: 1320px) {
190 .classindex dl {
191 column-count:3
192 }
193}
194
195
196/* @group Link Styling */
197
198a {
199 color: #3D578C;
200 font-weight: normal;
201 text-decoration: none;
202}
203
204.contents a:visited {
205 color: #4665A2;
206}
207
208a:hover {
209 text-decoration: underline;
210}
211
212.contents a.qindexHL:visited {
213 color: #FFFFFF;
214}
215
216a.el {
217 font-weight: bold;
218}
219
220a.elRef {
221}
222
223a.code, a.code:visited, a.line, a.line:visited {
224 color: #4665A2;
225}
226
227a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
228 color: #4665A2;
229}
230
231a.code.hl_class { /* style for links to class names in code snippets */ }
232a.code.hl_struct { /* style for links to struct names in code snippets */ }
233a.code.hl_union { /* style for links to union names in code snippets */ }
234a.code.hl_interface { /* style for links to interface names in code snippets */ }
235a.code.hl_protocol { /* style for links to protocol names in code snippets */ }
236a.code.hl_category { /* style for links to category names in code snippets */ }
237a.code.hl_exception { /* style for links to exception names in code snippets */ }
238a.code.hl_service { /* style for links to service names in code snippets */ }
239a.code.hl_singleton { /* style for links to singleton names in code snippets */ }
240a.code.hl_concept { /* style for links to concept names in code snippets */ }
241a.code.hl_namespace { /* style for links to namespace names in code snippets */ }
242a.code.hl_package { /* style for links to package names in code snippets */ }
243a.code.hl_define { /* style for links to macro names in code snippets */ }
244a.code.hl_function { /* style for links to function names in code snippets */ }
245a.code.hl_variable { /* style for links to variable names in code snippets */ }
246a.code.hl_typedef { /* style for links to typedef names in code snippets */ }
247a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ }
248a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ }
249a.code.hl_signal { /* style for links to Qt signal names in code snippets */ }
250a.code.hl_slot { /* style for links to Qt slot names in code snippets */ }
251a.code.hl_friend { /* style for links to friend names in code snippets */ }
252a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ }
253a.code.hl_property { /* style for links to property names in code snippets */ }
254a.code.hl_event { /* style for links to event names in code snippets */ }
255a.code.hl_sequence { /* style for links to sequence names in code snippets */ }
256a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ }
257
258/* @end */
259
260dl.el {
261 margin-left: -1cm;
262}
263
264ul {
265 overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
266}
267
268#side-nav ul {
269 overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
270}
271
272#main-nav ul {
273 overflow: visible; /* reset ul rule for the navigation bar drop down lists */
274}
275
276.fragment {
277 text-align: left;
278 direction: ltr;
279 overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
280 overflow-y: hidden;
281}
282
283pre.fragment {
284 border: 1px solid #C4CFE5;
285 background-color: #FBFCFD;
286 padding: 4px 6px;
287 margin: 4px 8px 4px 2px;
288 overflow: auto;
289 word-wrap: break-word;
290 font-size: 9pt;
291 line-height: 125%;
292 font-family: monospace, fixed;
293 font-size: 105%;
294}
295
296div.fragment {
297 padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
298 margin: 4px 8px 4px 2px;
299 background-color: #FBFCFD;
300 border: 1px solid #C4CFE5;
301}
302
303div.line {
304 font-family: monospace, fixed;
305 font-size: 13px;
306 min-height: 13px;
307 line-height: 1.0;
308 text-wrap: unrestricted;
309 white-space: -moz-pre-wrap; /* Moz */
310 white-space: -pre-wrap; /* Opera 4-6 */
311 white-space: -o-pre-wrap; /* Opera 7 */
312 white-space: pre-wrap; /* CSS3 */
313 word-wrap: break-word; /* IE 5.5+ */
314 text-indent: -53px;
315 padding-left: 53px;
316 padding-bottom: 0px;
317 margin: 0px;
318 -webkit-transition-property: background-color, box-shadow;
319 -webkit-transition-duration: 0.5s;
320 -moz-transition-property: background-color, box-shadow;
321 -moz-transition-duration: 0.5s;
322 -ms-transition-property: background-color, box-shadow;
323 -ms-transition-duration: 0.5s;
324 -o-transition-property: background-color, box-shadow;
325 -o-transition-duration: 0.5s;
326 transition-property: background-color, box-shadow;
327 transition-duration: 0.5s;
328}
329
330div.line:after {
331 content:"\000A";
332 white-space: pre;
333}
334
335div.line.glow {
336 background-color: cyan;
337 box-shadow: 0 0 10px cyan;
338}
339
340
341span.lineno {
342 padding-right: 4px;
343 margin-right: 9px;
344 text-align: right;
345 border-right: 2px solid #0F0;
346 background-color: #E8E8E8;
347 white-space: pre;
348}
349span.lineno a {
350 background-color: #D8D8D8;
351}
352
353span.lineno a:hover {
354 background-color: #C8C8C8;
355}
356
357.lineno {
358 -webkit-touch-callout: none;
359 -webkit-user-select: none;
360 -khtml-user-select: none;
361 -moz-user-select: none;
362 -ms-user-select: none;
363 user-select: none;
364}
365
366div.ah, span.ah {
367 background-color: black;
368 font-weight: bold;
369 color: #FFFFFF;
370 margin-bottom: 3px;
371 margin-top: 3px;
372 padding: 0.2em;
373 border: solid thin #333;
374 border-radius: 0.5em;
375 -webkit-border-radius: .5em;
376 -moz-border-radius: .5em;
377 box-shadow: 2px 2px 3px #999;
378 -webkit-box-shadow: 2px 2px 3px #999;
379 -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
380 background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
381 background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
382}
383
384div.classindex ul {
385 list-style: none;
386 padding-left: 0;
387}
388
389div.classindex span.ai {
390 display: inline-block;
391}
392
393div.groupHeader {
394 margin-left: 16px;
395 margin-top: 12px;
396 font-weight: bold;
397}
398
399div.groupText {
400 margin-left: 16px;
401 font-style: italic;
402}
403
404body {
405 background-color: white;
406 color: black;
407 margin: 0;
408}
409
410div.contents {
411 margin-top: 10px;
412 margin-left: 12px;
413 margin-right: 8px;
414}
415
416td.indexkey {
417 background-color: #EBEFF6;
418 font-weight: bold;
419 border: 1px solid #C4CFE5;
420 margin: 2px 0px 2px 0;
421 padding: 2px 10px;
422 white-space: nowrap;
423 vertical-align: top;
424}
425
426td.indexvalue {
427 background-color: #EBEFF6;
428 border: 1px solid #C4CFE5;
429 padding: 2px 10px;
430 margin: 2px 0px;
431}
432
433tr.memlist {
434 background-color: #EEF1F7;
435}
436
437p.formulaDsp {
438 text-align: center;
439}
440
441img.formulaDsp {
442
443}
444
445img.formulaInl, img.inline {
446 vertical-align: middle;
447}
448
449div.center {
450 text-align: center;
451 margin-top: 0px;
452 margin-bottom: 0px;
453 padding: 0px;
454}
455
456div.center img {
457 border: 0px;
458}
459
460address.footer {
461 text-align: right;
462 padding-right: 12px;
463}
464
465img.footer {
466 border: 0px;
467 vertical-align: middle;
468}
469
470.compoundTemplParams {
471 color: #4665A2;
472 font-size: 80%;
473 line-height: 120%;
474}
475
476/* @group Code Colorization */
477
478span.keyword {
479 color: #008000
480}
481
482span.keywordtype {
483 color: #604020
484}
485
486span.keywordflow {
487 color: #e08000
488}
489
490span.comment {
491 color: #800000
492}
493
494span.preprocessor {
495 color: #806020
496}
497
498span.stringliteral {
499 color: #002080
500}
501
502span.charliteral {
503 color: #008080
504}
505
506span.vhdldigit {
507 color: #ff00ff
508}
509
510span.vhdlchar {
511 color: #000000
512}
513
514span.vhdlkeyword {
515 color: #700070
516}
517
518span.vhdllogic {
519 color: #ff0000
520}
521
522blockquote {
523 background-color: #F7F8FB;
524 border-left: 2px solid #9CAFD4;
525 margin: 0 24px 0 4px;
526 padding: 0 12px 0 16px;
527}
528
529blockquote.DocNodeRTL {
530 border-left: 0;
531 border-right: 2px solid #9CAFD4;
532 margin: 0 4px 0 24px;
533 padding: 0 16px 0 12px;
534}
535
536/* @end */
537
538/*
539.search {
540 color: #003399;
541 font-weight: bold;
542}
543
544form.search {
545 margin-bottom: 0px;
546 margin-top: 0px;
547}
548
549input.search {
550 font-size: 75%;
551 color: #000080;
552 font-weight: normal;
553 background-color: #e8eef2;
554}
555*/
556
557td.tiny {
558 font-size: 75%;
559}
560
561.dirtab {
562 padding: 4px;
563 border-collapse: collapse;
564 border: 1px solid #A3B4D7;
565}
566
567th.dirtab {
568 background: #EBEFF6;
569 font-weight: bold;
570}
571
572hr {
573 height: 0px;
574 border: none;
575 border-top: 1px solid #4A6AAA;
576}
577
578hr.footer {
579 height: 1px;
580}
581
582/* @group Member Descriptions */
583
584table.memberdecls {
585 border-spacing: 0px;
586 padding: 0px;
587}
588
589.memberdecls td, .fieldtable tr {
590 -webkit-transition-property: background-color, box-shadow;
591 -webkit-transition-duration: 0.5s;
592 -moz-transition-property: background-color, box-shadow;
593 -moz-transition-duration: 0.5s;
594 -ms-transition-property: background-color, box-shadow;
595 -ms-transition-duration: 0.5s;
596 -o-transition-property: background-color, box-shadow;
597 -o-transition-duration: 0.5s;
598 transition-property: background-color, box-shadow;
599 transition-duration: 0.5s;
600}
601
602.memberdecls td.glow, .fieldtable tr.glow {
603 background-color: cyan;
604 box-shadow: 0 0 15px cyan;
605}
606
607.mdescLeft, .mdescRight,
608.memItemLeft, .memItemRight,
609.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
610 background-color: #F9FAFC;
611 border: none;
612 margin: 4px;
613 padding: 1px 0 0 8px;
614}
615
616.mdescLeft, .mdescRight {
617 padding: 0px 8px 4px 8px;
618 color: #555;
619}
620
621.memSeparator {
622 border-bottom: 1px solid #DEE4F0;
623 line-height: 1px;
624 margin: 0px;
625 padding: 0px;
626}
627
628.memItemLeft, .memTemplItemLeft {
629 white-space: nowrap;
630}
631
632.memItemRight, .memTemplItemRight {
633 width: 100%;
634}
635
636.memTemplParams {
637 color: #4665A2;
638 white-space: nowrap;
639 font-size: 80%;
640}
641
642/* @end */
643
644/* @group Member Details */
645
646/* Styles for detailed member documentation */
647
648.memtitle {
649 padding: 8px;
650 border-top: 1px solid #A8B8D9;
651 border-left: 1px solid #A8B8D9;
652 border-right: 1px solid #A8B8D9;
653 border-top-right-radius: 4px;
654 border-top-left-radius: 4px;
655 margin-bottom: -1px;
656 background-image: url('nav_f.png');
657 background-repeat: repeat-x;
658 background-color: #E2E8F2;
659 line-height: 1.25;
660 font-weight: 300;
661 float:left;
662}
663
664.permalink
665{
666 font-size: 65%;
667 display: inline-block;
668 vertical-align: middle;
669}
670
671.memtemplate {
672 font-size: 80%;
673 color: #4665A2;
674 font-weight: normal;
675 margin-left: 9px;
676}
677
678.memnav {
679 background-color: #EBEFF6;
680 border: 1px solid #A3B4D7;
681 text-align: center;
682 margin: 2px;
683 margin-right: 15px;
684 padding: 2px;
685}
686
687.mempage {
688 width: 100%;
689}
690
691.memitem {
692 padding: 0;
693 margin-bottom: 10px;
694 margin-right: 5px;
695 -webkit-transition: box-shadow 0.5s linear;
696 -moz-transition: box-shadow 0.5s linear;
697 -ms-transition: box-shadow 0.5s linear;
698 -o-transition: box-shadow 0.5s linear;
699 transition: box-shadow 0.5s linear;
700 display: table !important;
701 width: 100%;
702}
703
704.memitem.glow {
705 box-shadow: 0 0 15px cyan;
706}
707
708.memname {
709 font-weight: 400;
710 margin-left: 6px;
711}
712
713.memname td {
714 vertical-align: bottom;
715}
716
717.memproto, dl.reflist dt {
718 border-top: 1px solid #A8B8D9;
719 border-left: 1px solid #A8B8D9;
720 border-right: 1px solid #A8B8D9;
721 padding: 6px 0px 6px 0px;
722 color: #253555;
723 font-weight: bold;
724 text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
725 background-color: #DFE5F1;
726 /* opera specific markup */
727 box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
728 border-top-right-radius: 4px;
729 /* firefox specific markup */
730 -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
731 -moz-border-radius-topright: 4px;
732 /* webkit specific markup */
733 -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
734 -webkit-border-top-right-radius: 4px;
735
736}
737
738.overload {
739 font-family: "courier new",courier,monospace;
740 font-size: 65%;
741}
742
743.memdoc, dl.reflist dd {
744 border-bottom: 1px solid #A8B8D9;
745 border-left: 1px solid #A8B8D9;
746 border-right: 1px solid #A8B8D9;
747 padding: 6px 10px 2px 10px;
748 background-color: #FBFCFD;
749 border-top-width: 0;
750 background-image:url('nav_g.png');
751 background-repeat:repeat-x;
752 background-color: #FFFFFF;
753 /* opera specific markup */
754 border-bottom-left-radius: 4px;
755 border-bottom-right-radius: 4px;
756 box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
757 /* firefox specific markup */
758 -moz-border-radius-bottomleft: 4px;
759 -moz-border-radius-bottomright: 4px;
760 -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
761 /* webkit specific markup */
762 -webkit-border-bottom-left-radius: 4px;
763 -webkit-border-bottom-right-radius: 4px;
764 -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
765}
766
767dl.reflist dt {
768 padding: 5px;
769}
770
771dl.reflist dd {
772 margin: 0px 0px 10px 0px;
773 padding: 5px;
774}
775
776.paramkey {
777 text-align: right;
778}
779
780.paramtype {
781 white-space: nowrap;
782}
783
784.paramname {
785 color: #602020;
786 white-space: nowrap;
787}
788.paramname em {
789 font-style: normal;
790}
791.paramname code {
792 line-height: 14px;
793}
794
795.params, .retval, .exception, .tparams {
796 margin-left: 0px;
797 padding-left: 0px;
798}
799
800.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
801 font-weight: bold;
802 vertical-align: top;
803}
804
805.params .paramtype, .tparams .paramtype {
806 font-style: italic;
807 vertical-align: top;
808}
809
810.params .paramdir, .tparams .paramdir {
811 font-family: "courier new",courier,monospace;
812 vertical-align: top;
813}
814
815table.mlabels {
816 border-spacing: 0px;
817}
818
819td.mlabels-left {
820 width: 100%;
821 padding: 0px;
822}
823
824td.mlabels-right {
825 vertical-align: bottom;
826 padding: 0px;
827 white-space: nowrap;
828}
829
830span.mlabels {
831 margin-left: 8px;
832}
833
834span.mlabel {
835 background-color: #728DC1;
836 border-top:1px solid #5373B4;
837 border-left:1px solid #5373B4;
838 border-right:1px solid #C4CFE5;
839 border-bottom:1px solid #C4CFE5;
840 text-shadow: none;
841 color: white;
842 margin-right: 4px;
843 padding: 2px 3px;
844 border-radius: 3px;
845 font-size: 7pt;
846 white-space: nowrap;
847 vertical-align: middle;
848}
849
850
851
852/* @end */
853
854/* these are for tree view inside a (index) page */
855
856div.directory {
857 margin: 10px 0px;
858 border-top: 1px solid #9CAFD4;
859 border-bottom: 1px solid #9CAFD4;
860 width: 100%;
861}
862
863.directory table {
864 border-collapse:collapse;
865}
866
867.directory td {
868 margin: 0px;
869 padding: 0px;
870 vertical-align: top;
871}
872
873.directory td.entry {
874 white-space: nowrap;
875 padding-right: 6px;
876 padding-top: 3px;
877}
878
879.directory td.entry a {
880 outline:none;
881}
882
883.directory td.entry a img {
884 border: none;
885}
886
887.directory td.desc {
888 width: 100%;
889 padding-left: 6px;
890 padding-right: 6px;
891 padding-top: 3px;
892 border-left: 1px solid rgba(0,0,0,0.05);
893}
894
895.directory tr.even {
896 padding-left: 6px;
897 background-color: #F7F8FB;
898}
899
900.directory img {
901 vertical-align: -30%;
902}
903
904.directory .levels {
905 white-space: nowrap;
906 width: 100%;
907 text-align: right;
908 font-size: 9pt;
909}
910
911.directory .levels span {
912 cursor: pointer;
913 padding-left: 2px;
914 padding-right: 2px;
915 color: #3D578C;
916}
917
918.arrow {
919 color: #9CAFD4;
920 -webkit-user-select: none;
921 -khtml-user-select: none;
922 -moz-user-select: none;
923 -ms-user-select: none;
924 user-select: none;
925 cursor: pointer;
926 font-size: 80%;
927 display: inline-block;
928 width: 16px;
929 height: 22px;
930}
931
932.icon {
933 font-family: Arial, Helvetica;
934 font-weight: bold;
935 font-size: 12px;
936 height: 14px;
937 width: 16px;
938 display: inline-block;
939 background-color: #728DC1;
940 color: white;
941 text-align: center;
942 border-radius: 4px;
943 margin-left: 2px;
944 margin-right: 2px;
945}
946
947.icona {
948 width: 24px;
949 height: 22px;
950 display: inline-block;
951}
952
953.iconfopen {
954 width: 24px;
955 height: 18px;
956 margin-bottom: 4px;
957 background-image:url('folderopen.png');
958 background-position: 0px -4px;
959 background-repeat: repeat-y;
960 vertical-align:top;
961 display: inline-block;
962}
963
964.iconfclosed {
965 width: 24px;
966 height: 18px;
967 margin-bottom: 4px;
968 background-image:url('folderclosed.png');
969 background-position: 0px -4px;
970 background-repeat: repeat-y;
971 vertical-align:top;
972 display: inline-block;
973}
974
975.icondoc {
976 width: 24px;
977 height: 18px;
978 margin-bottom: 4px;
979 background-image:url('doc.png');
980 background-position: 0px -4px;
981 background-repeat: repeat-y;
982 vertical-align:top;
983 display: inline-block;
984}
985
986table.directory {
987 font: 400 14px Roboto,sans-serif;
988}
989
990/* @end */
991
992div.dynheader {
993 margin-top: 8px;
994 -webkit-touch-callout: none;
995 -webkit-user-select: none;
996 -khtml-user-select: none;
997 -moz-user-select: none;
998 -ms-user-select: none;
999 user-select: none;
1000}
1001
1002address {
1003 font-style: normal;
1004 color: #2A3D61;
1005}
1006
1007table.doxtable caption {
1008 caption-side: top;
1009}
1010
1011table.doxtable {
1012 border-collapse:collapse;
1013 margin-top: 4px;
1014 margin-bottom: 4px;
1015}
1016
1017table.doxtable td, table.doxtable th {
1018 border: 1px solid #2D4068;
1019 padding: 3px 7px 2px;
1020}
1021
1022table.doxtable th {
1023 background-color: #374F7F;
1024 color: #FFFFFF;
1025 font-size: 110%;
1026 padding-bottom: 4px;
1027 padding-top: 5px;
1028}
1029
1030table.fieldtable {
1031 /*width: 100%;*/
1032 margin-bottom: 10px;
1033 border: 1px solid #A8B8D9;
1034 border-spacing: 0px;
1035 -moz-border-radius: 4px;
1036 -webkit-border-radius: 4px;
1037 border-radius: 4px;
1038 -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
1039 -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
1040 box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
1041}
1042
1043.fieldtable td, .fieldtable th {
1044 padding: 3px 7px 2px;
1045}
1046
1047.fieldtable td.fieldtype, .fieldtable td.fieldname {
1048 white-space: nowrap;
1049 border-right: 1px solid #A8B8D9;
1050 border-bottom: 1px solid #A8B8D9;
1051 vertical-align: top;
1052}
1053
1054.fieldtable td.fieldname {
1055 padding-top: 3px;
1056}
1057
1058.fieldtable td.fielddoc {
1059 border-bottom: 1px solid #A8B8D9;
1060 /*width: 100%;*/
1061}
1062
1063.fieldtable td.fielddoc p:first-child {
1064 margin-top: 0px;
1065}
1066
1067.fieldtable td.fielddoc p:last-child {
1068 margin-bottom: 2px;
1069}
1070
1071.fieldtable tr:last-child td {
1072 border-bottom: none;
1073}
1074
1075.fieldtable th {
1076 background-image:url('nav_f.png');
1077 background-repeat:repeat-x;
1078 background-color: #E2E8F2;
1079 font-size: 90%;
1080 color: #253555;
1081 padding-bottom: 4px;
1082 padding-top: 5px;
1083 text-align:left;
1084 font-weight: 400;
1085 -moz-border-radius-topleft: 4px;
1086 -moz-border-radius-topright: 4px;
1087 -webkit-border-top-left-radius: 4px;
1088 -webkit-border-top-right-radius: 4px;
1089 border-top-left-radius: 4px;
1090 border-top-right-radius: 4px;
1091 border-bottom: 1px solid #A8B8D9;
1092}
1093
1094
1095.tabsearch {
1096 top: 0px;
1097 left: 10px;
1098 height: 36px;
1099 background-image: url('tab_b.png');
1100 z-index: 101;
1101 overflow: hidden;
1102 font-size: 13px;
1103}
1104
1105.navpath ul
1106{
1107 font-size: 11px;
1108 background-image:url('tab_b.png');
1109 background-repeat:repeat-x;
1110 background-position: 0 -5px;
1111 height:30px;
1112 line-height:30px;
1113 color:#8AA0CC;
1114 border:solid 1px #C2CDE4;
1115 overflow:hidden;
1116 margin:0px;
1117 padding:0px;
1118}
1119
1120.navpath li
1121{
1122 list-style-type:none;
1123 float:left;
1124 padding-left:10px;
1125 padding-right:15px;
1126 background-image:url('bc_s.png');
1127 background-repeat:no-repeat;
1128 background-position:right;
1129 color:#364D7C;
1130}
1131
1132.navpath li.navelem a
1133{
1134 height:32px;
1135 display:block;
1136 text-decoration: none;
1137 outline: none;
1138 color: #283A5D;
1139 font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
1140 text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
1141 text-decoration: none;
1142}
1143
1144.navpath li.navelem a:hover
1145{
1146 color:#6884BD;
1147}
1148
1149.navpath li.footer
1150{
1151 list-style-type:none;
1152 float:right;
1153 padding-left:10px;
1154 padding-right:15px;
1155 background-image:none;
1156 background-repeat:no-repeat;
1157 background-position:right;
1158 color:#364D7C;
1159 font-size: 8pt;
1160}
1161
1162
1163div.summary
1164{
1165 float: right;
1166 font-size: 8pt;
1167 padding-right: 5px;
1168 width: 50%;
1169 text-align: right;
1170}
1171
1172div.summary a
1173{
1174 white-space: nowrap;
1175}
1176
1177table.classindex
1178{
1179 margin: 10px;
1180 white-space: nowrap;
1181 margin-left: 3%;
1182 margin-right: 3%;
1183 width: 94%;
1184 border: 0;
1185 border-spacing: 0;
1186 padding: 0;
1187}
1188
1189div.ingroups
1190{
1191 font-size: 8pt;
1192 width: 50%;
1193 text-align: left;
1194}
1195
1196div.ingroups a
1197{
1198 white-space: nowrap;
1199}
1200
1201div.header
1202{
1203 background-image:url('nav_h.png');
1204 background-repeat:repeat-x;
1205 background-color: #F9FAFC;
1206 margin: 0px;
1207 border-bottom: 1px solid #C4CFE5;
1208}
1209
1210div.headertitle
1211{
1212 padding: 5px 5px 5px 10px;
1213}
1214
1215.PageDocRTL-title div.headertitle {
1216 text-align: right;
1217 direction: rtl;
1218}
1219
1220dl {
1221 padding: 0 0 0 0;
1222}
1223
1224/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
1225dl.section {
1226 margin-left: 0px;
1227 padding-left: 0px;
1228}
1229
1230dl.section.DocNodeRTL {
1231 margin-right: 0px;
1232 padding-right: 0px;
1233}
1234
1235dl.note {
1236 margin-left: -7px;
1237 padding-left: 3px;
1238 border-left: 4px solid;
1239 border-color: #D0C000;
1240}
1241
1242dl.note.DocNodeRTL {
1243 margin-left: 0;
1244 padding-left: 0;
1245 border-left: 0;
1246 margin-right: -7px;
1247 padding-right: 3px;
1248 border-right: 4px solid;
1249 border-color: #D0C000;
1250}
1251
1252dl.warning, dl.attention {
1253 margin-left: -7px;
1254 padding-left: 3px;
1255 border-left: 4px solid;
1256 border-color: #FF0000;
1257}
1258
1259dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
1260 margin-left: 0;
1261 padding-left: 0;
1262 border-left: 0;
1263 margin-right: -7px;
1264 padding-right: 3px;
1265 border-right: 4px solid;
1266 border-color: #FF0000;
1267}
1268
1269dl.pre, dl.post, dl.invariant {
1270 margin-left: -7px;
1271 padding-left: 3px;
1272 border-left: 4px solid;
1273 border-color: #00D000;
1274}
1275
1276dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
1277 margin-left: 0;
1278 padding-left: 0;
1279 border-left: 0;
1280 margin-right: -7px;
1281 padding-right: 3px;
1282 border-right: 4px solid;
1283 border-color: #00D000;
1284}
1285
1286dl.deprecated {
1287 margin-left: -7px;
1288 padding-left: 3px;
1289 border-left: 4px solid;
1290 border-color: #505050;
1291}
1292
1293dl.deprecated.DocNodeRTL {
1294 margin-left: 0;
1295 padding-left: 0;
1296 border-left: 0;
1297 margin-right: -7px;
1298 padding-right: 3px;
1299 border-right: 4px solid;
1300 border-color: #505050;
1301}
1302
1303dl.todo {
1304 margin-left: -7px;
1305 padding-left: 3px;
1306 border-left: 4px solid;
1307 border-color: #00C0E0;
1308}
1309
1310dl.todo.DocNodeRTL {
1311 margin-left: 0;
1312 padding-left: 0;
1313 border-left: 0;
1314 margin-right: -7px;
1315 padding-right: 3px;
1316 border-right: 4px solid;
1317 border-color: #00C0E0;
1318}
1319
1320dl.test {
1321 margin-left: -7px;
1322 padding-left: 3px;
1323 border-left: 4px solid;
1324 border-color: #3030E0;
1325}
1326
1327dl.test.DocNodeRTL {
1328 margin-left: 0;
1329 padding-left: 0;
1330 border-left: 0;
1331 margin-right: -7px;
1332 padding-right: 3px;
1333 border-right: 4px solid;
1334 border-color: #3030E0;
1335}
1336
1337dl.bug {
1338 margin-left: -7px;
1339 padding-left: 3px;
1340 border-left: 4px solid;
1341 border-color: #C08050;
1342}
1343
1344dl.bug.DocNodeRTL {
1345 margin-left: 0;
1346 padding-left: 0;
1347 border-left: 0;
1348 margin-right: -7px;
1349 padding-right: 3px;
1350 border-right: 4px solid;
1351 border-color: #C08050;
1352}
1353
1354dl.section dd {
1355 margin-bottom: 6px;
1356}
1357
1358
1359#projectlogo
1360{
1361 text-align: center;
1362 vertical-align: bottom;
1363 border-collapse: separate;
1364}
1365
1366#projectlogo img
1367{
1368 border: 0px none;
1369}
1370
1371#projectalign
1372{
1373 vertical-align: middle;
1374}
1375
1376#projectname
1377{
1378 font: 200% Tahoma, Arial,sans-serif;
1379 margin: 0px;
1380 padding: 2px 0px;
1381}
1382
1383#projectbrief
1384{
1385 font: 90% Tahoma, Arial,sans-serif;
1386 margin: 0px;
1387 padding: 0px;
1388}
1389
1390#projectnumber
1391{
1392 font: 50% Tahoma, Arial,sans-serif;
1393 margin: 0px;
1394 padding: 0px;
1395}
1396
1397#titlearea
1398{
1399 padding: 0px;
1400 margin: 0px;
1401 width: 100%;
1402 border-bottom: 1px solid #5373B4;
1403}
1404
1405.image
1406{
1407 text-align: center;
1408}
1409
1410.dotgraph
1411{
1412 text-align: center;
1413}
1414
1415.mscgraph
1416{
1417 text-align: center;
1418}
1419
1420.plantumlgraph
1421{
1422 text-align: center;
1423}
1424
1425.diagraph
1426{
1427 text-align: center;
1428}
1429
1430.caption
1431{
1432 font-weight: bold;
1433}
1434
1435div.zoom
1436{
1437 border: 1px solid #90A5CE;
1438}
1439
1440dl.citelist {
1441 margin-bottom:50px;
1442}
1443
1444dl.citelist dt {
1445 color:#334975;
1446 float:left;
1447 font-weight:bold;
1448 margin-right:10px;
1449 padding:5px;
1450 text-align:right;
1451 width:52px;
1452}
1453
1454dl.citelist dd {
1455 margin:2px 0 2px 72px;
1456 padding:5px 0;
1457}
1458
1459div.toc {
1460 padding: 14px 25px;
1461 background-color: #F4F6FA;
1462 border: 1px solid #D8DFEE;
1463 border-radius: 7px 7px 7px 7px;
1464 float: right;
1465 height: auto;
1466 margin: 0 8px 10px 10px;
1467 width: 200px;
1468}
1469
1470.PageDocRTL-title div.toc {
1471 float: left !important;
1472 text-align: right;
1473}
1474
1475div.toc li {
1476 background: url("bdwn.png") no-repeat scroll 0 5px transparent;
1477 font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
1478 margin-top: 5px;
1479 padding-left: 10px;
1480 padding-top: 2px;
1481}
1482
1483.PageDocRTL-title div.toc li {
1484 background-position-x: right !important;
1485 padding-left: 0 !important;
1486 padding-right: 10px;
1487}
1488
1489div.toc h3 {
1490 font: bold 12px/1.2 Arial,FreeSans,sans-serif;
1491 color: #4665A2;
1492 border-bottom: 0 none;
1493 margin: 0;
1494}
1495
1496div.toc ul {
1497 list-style: none outside none;
1498 border: medium none;
1499 padding: 0px;
1500}
1501
1502div.toc li.level1 {
1503 margin-left: 0px;
1504}
1505
1506div.toc li.level2 {
1507 margin-left: 15px;
1508}
1509
1510div.toc li.level3 {
1511 margin-left: 30px;
1512}
1513
1514div.toc li.level4 {
1515 margin-left: 45px;
1516}
1517
1518span.emoji {
1519 /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
1520 * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
1521 */
1522}
1523
1524.PageDocRTL-title div.toc li.level1 {
1525 margin-left: 0 !important;
1526 margin-right: 0;
1527}
1528
1529.PageDocRTL-title div.toc li.level2 {
1530 margin-left: 0 !important;
1531 margin-right: 15px;
1532}
1533
1534.PageDocRTL-title div.toc li.level3 {
1535 margin-left: 0 !important;
1536 margin-right: 30px;
1537}
1538
1539.PageDocRTL-title div.toc li.level4 {
1540 margin-left: 0 !important;
1541 margin-right: 45px;
1542}
1543
1544.inherit_header {
1545 font-weight: bold;
1546 color: gray;
1547 cursor: pointer;
1548 -webkit-touch-callout: none;
1549 -webkit-user-select: none;
1550 -khtml-user-select: none;
1551 -moz-user-select: none;
1552 -ms-user-select: none;
1553 user-select: none;
1554}
1555
1556.inherit_header td {
1557 padding: 6px 0px 2px 5px;
1558}
1559
1560.inherit {
1561 display: none;
1562}
1563
1564tr.heading h2 {
1565 margin-top: 12px;
1566 margin-bottom: 4px;
1567}
1568
1569/* tooltip related style info */
1570
1571.ttc {
1572 position: absolute;
1573 display: none;
1574}
1575
1576#powerTip {
1577 cursor: default;
1578 white-space: nowrap;
1579 background-color: white;
1580 border: 1px solid gray;
1581 border-radius: 4px 4px 4px 4px;
1582 box-shadow: 1px 1px 7px gray;
1583 display: none;
1584 font-size: smaller;
1585 max-width: 80%;
1586 opacity: 0.9;
1587 padding: 1ex 1em 1em;
1588 position: absolute;
1589 z-index: 2147483647;
1590}
1591
1592#powerTip div.ttdoc {
1593 color: grey;
1594 font-style: italic;
1595}
1596
1597#powerTip div.ttname a {
1598 font-weight: bold;
1599}
1600
1601#powerTip div.ttname {
1602 font-weight: bold;
1603}
1604
1605#powerTip div.ttdeci {
1606 color: #006318;
1607}
1608
1609#powerTip div {
1610 margin: 0px;
1611 padding: 0px;
1612 font: 12px/16px Roboto,sans-serif;
1613}
1614
1615#powerTip:before, #powerTip:after {
1616 content: "";
1617 position: absolute;
1618 margin: 0px;
1619}
1620
1621#powerTip.n:after, #powerTip.n:before,
1622#powerTip.s:after, #powerTip.s:before,
1623#powerTip.w:after, #powerTip.w:before,
1624#powerTip.e:after, #powerTip.e:before,
1625#powerTip.ne:after, #powerTip.ne:before,
1626#powerTip.se:after, #powerTip.se:before,
1627#powerTip.nw:after, #powerTip.nw:before,
1628#powerTip.sw:after, #powerTip.sw:before {
1629 border: solid transparent;
1630 content: " ";
1631 height: 0;
1632 width: 0;
1633 position: absolute;
1634}
1635
1636#powerTip.n:after, #powerTip.s:after,
1637#powerTip.w:after, #powerTip.e:after,
1638#powerTip.nw:after, #powerTip.ne:after,
1639#powerTip.sw:after, #powerTip.se:after {
1640 border-color: rgba(255, 255, 255, 0);
1641}
1642
1643#powerTip.n:before, #powerTip.s:before,
1644#powerTip.w:before, #powerTip.e:before,
1645#powerTip.nw:before, #powerTip.ne:before,
1646#powerTip.sw:before, #powerTip.se:before {
1647 border-color: rgba(128, 128, 128, 0);
1648}
1649
1650#powerTip.n:after, #powerTip.n:before,
1651#powerTip.ne:after, #powerTip.ne:before,
1652#powerTip.nw:after, #powerTip.nw:before {
1653 top: 100%;
1654}
1655
1656#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
1657 border-top-color: #FFFFFF;
1658 border-width: 10px;
1659 margin: 0px -10px;
1660}
1661#powerTip.n:before {
1662 border-top-color: #808080;
1663 border-width: 11px;
1664 margin: 0px -11px;
1665}
1666#powerTip.n:after, #powerTip.n:before {
1667 left: 50%;
1668}
1669
1670#powerTip.nw:after, #powerTip.nw:before {
1671 right: 14px;
1672}
1673
1674#powerTip.ne:after, #powerTip.ne:before {
1675 left: 14px;
1676}
1677
1678#powerTip.s:after, #powerTip.s:before,
1679#powerTip.se:after, #powerTip.se:before,
1680#powerTip.sw:after, #powerTip.sw:before {
1681 bottom: 100%;
1682}
1683
1684#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
1685 border-bottom-color: #FFFFFF;
1686 border-width: 10px;
1687 margin: 0px -10px;
1688}
1689
1690#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
1691 border-bottom-color: #808080;
1692 border-width: 11px;
1693 margin: 0px -11px;
1694}
1695
1696#powerTip.s:after, #powerTip.s:before {
1697 left: 50%;
1698}
1699
1700#powerTip.sw:after, #powerTip.sw:before {
1701 right: 14px;
1702}
1703
1704#powerTip.se:after, #powerTip.se:before {
1705 left: 14px;
1706}
1707
1708#powerTip.e:after, #powerTip.e:before {
1709 left: 100%;
1710}
1711#powerTip.e:after {
1712 border-left-color: #FFFFFF;
1713 border-width: 10px;
1714 top: 50%;
1715 margin-top: -10px;
1716}
1717#powerTip.e:before {
1718 border-left-color: #808080;
1719 border-width: 11px;
1720 top: 50%;
1721 margin-top: -11px;
1722}
1723
1724#powerTip.w:after, #powerTip.w:before {
1725 right: 100%;
1726}
1727#powerTip.w:after {
1728 border-right-color: #FFFFFF;
1729 border-width: 10px;
1730 top: 50%;
1731 margin-top: -10px;
1732}
1733#powerTip.w:before {
1734 border-right-color: #808080;
1735 border-width: 11px;
1736 top: 50%;
1737 margin-top: -11px;
1738}
1739
1740@media print
1741{
1742 #top { display: none; }
1743 #side-nav { display: none; }
1744 #nav-path { display: none; }
1745 body { overflow:visible; }
1746 h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
1747 .summary { display: none; }
1748 .memitem { page-break-inside: avoid; }
1749 #doc-content
1750 {
1751 margin-left:0 !important;
1752 height:auto !important;
1753 width:auto !important;
1754 overflow:inherit;
1755 display:inline;
1756 }
1757}
1758
1759/* @group Markdown */
1760
1761table.markdownTable {
1762 border-collapse:collapse;
1763 margin-top: 4px;
1764 margin-bottom: 4px;
1765}
1766
1767table.markdownTable td, table.markdownTable th {
1768 border: 1px solid #2D4068;
1769 padding: 3px 7px 2px;
1770}
1771
1772table.markdownTable tr {
1773}
1774
1775th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
1776 background-color: #374F7F;
1777 color: #FFFFFF;
1778 font-size: 110%;
1779 padding-bottom: 4px;
1780 padding-top: 5px;
1781}
1782
1783th.markdownTableHeadLeft, td.markdownTableBodyLeft {
1784 text-align: left
1785}
1786
1787th.markdownTableHeadRight, td.markdownTableBodyRight {
1788 text-align: right
1789}
1790
1791th.markdownTableHeadCenter, td.markdownTableBodyCenter {
1792 text-align: center
1793}
1794
1795.DocNodeRTL {
1796 text-align: right;
1797 direction: rtl;
1798}
1799
1800.DocNodeLTR {
1801 text-align: left;
1802 direction: ltr;
1803}
1804
1805table.DocNodeRTL {
1806 width: auto;
1807 margin-right: 0;
1808 margin-left: auto;
1809}
1810
1811table.DocNodeLTR {
1812 width: auto;
1813 margin-right: auto;
1814 margin-left: 0;
1815}
1816
1817tt, code, kbd, samp
1818{
1819 display: inline-block;
1820 direction:ltr;
1821}
1822/* @end */
1823
1824u {
1825 text-decoration: underline;
1826}
1827
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.svg b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.svg
new file mode 100644
index 0000000..d42dad5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/doxygen.svg
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3 <defs>
4 <linearGradient id="a">
5 <stop stop-color="#5373B4" offset="0"/>
6 <stop stop-color="#7C95C6" offset="1"/>
7 </linearGradient>
8 <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
9 <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
10 <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
11 <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
12 <stop stop-color="#C0CCE3" offset="0"/>
13 <stop stop-color="#EEF1F7" offset="1"/>
14 </linearGradient>
15 <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
16 <feGaussianBlur stdDeviation="0.45293203"/>
17 </filter>
18 </defs>
19 <g>
20 <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
21 <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
22 <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
23 <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
24 <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
25 </g>
26</svg>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dynsections.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dynsections.js
new file mode 100644
index 0000000..3174bd7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/dynsections.js
@@ -0,0 +1,121 @@
1/*
2 @licstart The following is the entire license notice for the JavaScript code in this file.
3
4 The MIT License (MIT)
5
6 Copyright (C) 1997-2020 by Dimitri van Heesch
7
8 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9 and associated documentation files (the "Software"), to deal in the Software without restriction,
10 including without limitation the rights to use, copy, modify, merge, publish, distribute,
11 sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in all copies or
15 substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18 BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23 @licend The above is the entire license notice for the JavaScript code in this file
24 */
25function toggleVisibility(linkObj)
26{
27 var base = $(linkObj).attr('id');
28 var summary = $('#'+base+'-summary');
29 var content = $('#'+base+'-content');
30 var trigger = $('#'+base+'-trigger');
31 var src=$(trigger).attr('src');
32 if (content.is(':visible')===true) {
33 content.hide();
34 summary.show();
35 $(linkObj).addClass('closed').removeClass('opened');
36 $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
37 } else {
38 content.show();
39 summary.hide();
40 $(linkObj).removeClass('closed').addClass('opened');
41 $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
42 }
43 return false;
44}
45
46function updateStripes()
47{
48 $('table.directory tr').
49 removeClass('even').filter(':visible:even').addClass('even');
50}
51
52function toggleLevel(level)
53{
54 $('table.directory tr').each(function() {
55 var l = this.id.split('_').length-1;
56 var i = $('#img'+this.id.substring(3));
57 var a = $('#arr'+this.id.substring(3));
58 if (l<level+1) {
59 i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
60 a.html('&#9660;');
61 $(this).show();
62 } else if (l==level+1) {
63 i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
64 a.html('&#9658;');
65 $(this).show();
66 } else {
67 $(this).hide();
68 }
69 });
70 updateStripes();
71}
72
73function toggleFolder(id)
74{
75 // the clicked row
76 var currentRow = $('#row_'+id);
77
78 // all rows after the clicked row
79 var rows = currentRow.nextAll("tr");
80
81 var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
82
83 // only match elements AFTER this one (can't hide elements before)
84 var childRows = rows.filter(function() { return this.id.match(re); });
85
86 // first row is visible we are HIDING
87 if (childRows.filter(':first').is(':visible')===true) {
88 // replace down arrow by right arrow for current row
89 var currentRowSpans = currentRow.find("span");
90 currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
91 currentRowSpans.filter(".arrow").html('&#9658;');
92 rows.filter("[id^=row_"+id+"]").hide(); // hide all children
93 } else { // we are SHOWING
94 // replace right arrow by down arrow for current row
95 var currentRowSpans = currentRow.find("span");
96 currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
97 currentRowSpans.filter(".arrow").html('&#9660;');
98 // replace down arrows by right arrows for child rows
99 var childRowsSpans = childRows.find("span");
100 childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
101 childRowsSpans.filter(".arrow").html('&#9658;');
102 childRows.show(); //show all children
103 }
104 updateStripes();
105}
106
107
108function toggleInherit(id)
109{
110 var rows = $('tr.inherit.'+id);
111 var img = $('tr.inherit_header.'+id+' img');
112 var src = $(img).attr('src');
113 if (rows.filter(':first').is(':visible')===true) {
114 rows.css('display','none');
115 $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
116 } else {
117 rows.css('display','table-row'); // using show() causes jump in firefox
118 $(img).attr('src',src.substring(0,src.length-10)+'open.png');
119 }
120}
121/* @license-end */
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/extra.css b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/extra.css
new file mode 100644
index 0000000..05c1938
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/extra.css
@@ -0,0 +1 @@
.sm-dox,.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted,.sm-dox ul a:hover{background:none;text-shadow:none}.sm-dox a span.sub-arrow{border-color:#f2f2f2 transparent transparent transparent}.sm-dox a span.sub-arrow:active,.sm-dox a span.sub-arrow:focus,.sm-dox a span.sub-arrow:hover,.sm-dox a:hover span.sub-arrow{border-color:#f60 transparent transparent transparent}.sm-dox ul a span.sub-arrow:active,.sm-dox ul a span.sub-arrow:focus,.sm-dox ul a span.sub-arrow:hover,.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #f60}.sm-dox ul a:hover{background:#666;text-shadow:none}.sm-dox ul.sm-nowrap a{color:#4d4d4d;text-shadow:none}#main-nav,#main-menu,#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code,.markdownTable code{background:none}#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,table.markdownTable td,table.markdownTable th,hr,.memSeparator{border:none}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.reflist dt a.el,.levels span,.directory .levels span{text-shadow:none}.memdoc,dl.reflist dd{box-shadow:none}div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code,table.markdownTable code{padding:0}#nav-path,.directory .levels,span.lineno{display:none}html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),tr.markdownTableBody:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code,.markdownTableRowEven{background:#f2f2f2}body{color:#4d4d4d}h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em{color:#1a1a1a;border-bottom:none}h1{padding-top:.5em;font-size:180%}h2{padding-top:.5em;margin-bottom:0;font-size:140%}h3{padding-top:.5em;margin-bottom:0;font-size:110%}.glfwheader{font-size:16px;min-height:64px;max-width:920px;padding:0 32px;margin:0 auto;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#glfwhome{line-height:64px;padding-right:48px;color:#666;font-size:2.5em;background:url("https://www.glfw.org/css/arrow.png") no-repeat right}.glfwnavbar{list-style-type:none;margin:0 0 0 auto;float:right}#glfwhome,.glfwnavbar li{float:left}.glfwnavbar a,.glfwnavbar a:visited{line-height:64px;margin-left:2em;display:block;color:#666}.glfwnavbar{padding-left:0}#glfwhome,.glfwnavbar a,.glfwnavbar a:visited{transition:.35s ease}#titlearea,.footer{color:#666}address.footer{text-align:center;padding:2em;margin-top:3em}#top{background:#666}#main-nav{max-width:960px;margin:0 auto;font-size:13px}#main-menu{max-width:920px;margin:0 auto;font-size:13px}.memtitle{display:none}.memproto,.memname{font-weight:bold;text-shadow:none}#main-menu{min-height:36px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li{color:#f2f2f2}#main-menu li ul.sm-nowrap li a{color:#4d4d4d}#main-menu li ul.sm-nowrap li a:hover{color:#f60}#main-menu>li:last-child{margin:0 0 0 auto}.contents{min-height:590px}div.contents,div.header{max-width:920px;margin:0 auto;padding:0 32px;background:#fff none}table.doxtable th,table.markdownTable th,dl.reflist dt{background:linear-gradient(to bottom, #ffa733 0%, #ff6600 100%);box-shadow:inset 0 0 32px #f60;text-shadow:0 -1px 1px #b34700;text-align:left;color:#fff}dl.reflist dt a.el{color:#f60;padding:.2em;border-radius:4px;background-color:#ffe0cc}div.toc{float:none;width:auto}div.toc h3{font-size:1.17em}div.toc ul{padding-left:1.5em}div.toc li{font-size:1em;padding-left:0;list-style-type:disc}div.toc,.memproto,div.qindex,div.ah{background:linear-gradient(to bottom, #f2f2f2 0%, #e6e6e6 100%);box-shadow:inset 0 0 32px #e6e6e6;text-shadow:0 1px 1px #fff;color:#1a1a1a;border:2px solid #e6e6e6;border-radius:4px}.paramname{color:#803300}dl.reflist dt{border:2px solid #f60;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:none}dl.reflist dd{border:2px solid #f60;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none}table.doxtable,table.markdownTable{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,#main-menu a:hover,span.lineno a:hover{color:#f60;text-decoration:none}div.directory{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}hr,.memSeparator{height:2px;background:linear-gradient(to right, #f2f2f2 0%, #d9d9d9 50%, #f2f2f2 100%)}dl.note,dl.pre,dl.post,dl.invariant{background:linear-gradient(to bottom, #ddfad1 0%, #cbf7ba 100%);box-shadow:inset 0 0 32px #baf5a3;color:#1e5309;border:2px solid #afe699}dl.warning,dl.attention{background:linear-gradient(to bottom, #fae8d1 0%, #f7ddba 100%);box-shadow:inset 0 0 32px #f5d1a3;color:#533309;border:2px solid #e6c499}dl.deprecated,dl.bug{background:linear-gradient(to bottom, #fad1e3 0%, #f7bad6 100%);box-shadow:inset 0 0 32px #f5a3c8;color:#53092a;border:2px solid #e699bb}dl.todo,dl.test{background:linear-gradient(to bottom, #d1ecfa 0%, #bae3f7 100%);box-shadow:inset 0 0 32px #a3daf5;color:#093a53;border:2px solid #99cce6}dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test{border-radius:4px;padding:1em;text-shadow:0 1px 1px #fff;margin:1em 0}.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited{color:inherit}div.line{line-height:inherit}div.fragment,pre.fragment{background:#f2f2f2;border-radius:4px;border:none;padding:1em;overflow:auto;border-left:4px solid #ccc;margin:1em 0}.lineno a,.lineno a:visited,.line,pre.fragment{color:#4d4d4d}span.preprocessor,span.comment{color:#007899}a.code,a.code:visited{color:#e64500}span.keyword,span.keywordtype,span.keywordflow{color:#404040;font-weight:bold}span.stringliteral{color:#360099}code{padding:.1em;border-radius:4px}/*# sourceMappingURL=extra.css.map */
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/files.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/files.html
new file mode 100644
index 0000000..68f52a9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/files.html
@@ -0,0 +1,80 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Files</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="headertitle"><div class="title">Files</div></div>
65</div><!--header-->
66<div class="contents">
67<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
68<table class="directory">
69<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="glfw3_8h_source.html"><span class="icondoc"></span></a><a class="el" href="glfw3_8h.html" target="_self">glfw3.h</a></td><td class="desc">The header of the GLFW 3 API </td></tr>
70<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="glfw3native_8h_source.html"><span class="icondoc"></span></a><a class="el" href="glfw3native_8h.html" target="_self">glfw3native.h</a></td><td class="desc">The header of the native access functions </td></tr>
71</table>
72</div><!-- directory -->
73</div><!-- contents -->
74<address class="footer">
75<p>
76Last update on Thu Oct 28 2021 for GLFW 3.3.5
77</p>
78</address>
79</body>
80</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderclosed.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderclosed.png
new file mode 100644
index 0000000..bb8ab35
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderclosed.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderopen.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderopen.png
new file mode 100644
index 0000000..d6c7f67
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/folderopen.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h.html
new file mode 100644
index 0000000..9ad8b7c
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h.html
@@ -0,0 +1,1603 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: glfw3.h File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li><li class="navelem"><a class="el" href="dir_ba478fc71671afc03f16a7df0eff1823.html">include</a></li><li class="navelem"><a class="el" href="dir_95e305b1bfdd4b95b22076c452f17802.html">GLFW</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="summary">
69<a href="#define-members">Macros</a> &#124;
70<a href="#typedef-members">Typedefs</a> &#124;
71<a href="#func-members">Functions</a> </div>
72 <div class="headertitle"><div class="title">glfw3.h File Reference</div></div>
73</div><!--header-->
74<div class="contents">
75<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
76<div class="textblock"><p >This is the header file of the GLFW 3 API. It defines all its types and declares all its functions.</p>
77<p >For more information about how to use this file, see <a class="el" href="build_guide.html#build_include">Including the GLFW header file</a>. </p>
78</div>
79<p><a href="glfw3_8h_source.html">Go to the source code of this file.</a></p>
80<table class="memberdecls">
81<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
82Macros</h2></td></tr>
83<tr class="memitem:a8a8538c5500308b4211844f2fb26c7b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9">GLFW_APIENTRY_DEFINED</a></td></tr>
84<tr class="separator:a8a8538c5500308b4211844f2fb26c7b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
85<tr class="memitem:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>&#160;&#160;&#160;1</td></tr>
86<tr class="memdesc:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="mdescLeft">&#160;</td><td class="mdescRight">One. <a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">More...</a><br /></td></tr>
87<tr class="separator:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>&#160;&#160;&#160;0</td></tr>
89<tr class="memdesc:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zero. <a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">More...</a><br /></td></tr>
90<tr class="separator:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
91<tr class="memitem:gae2c0bcb7aec609e4736437554f6638fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd">GLFW_HAT_CENTERED</a>&#160;&#160;&#160;0</td></tr>
92<tr class="separator:gae2c0bcb7aec609e4736437554f6638fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
93<tr class="memitem:ga8c9720c76cd1b912738159ed74c85b36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>&#160;&#160;&#160;1</td></tr>
94<tr class="separator:ga8c9720c76cd1b912738159ed74c85b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
95<tr class="memitem:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>&#160;&#160;&#160;2</td></tr>
96<tr class="separator:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
97<tr class="memitem:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>&#160;&#160;&#160;4</td></tr>
98<tr class="separator:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memSeparator" colspan="2">&#160;</td></tr>
99<tr class="memitem:gac775f4b3154fdf5db93eb432ba546dff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a>&#160;&#160;&#160;8</td></tr>
100<tr class="separator:gac775f4b3154fdf5db93eb432ba546dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
101<tr class="memitem:ga94aea0ae241a8b902883536c592ee693"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693">GLFW_HAT_RIGHT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
102<tr class="separator:ga94aea0ae241a8b902883536c592ee693"><td class="memSeparator" colspan="2">&#160;</td></tr>
103<tr class="memitem:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5">GLFW_HAT_RIGHT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
104<tr class="separator:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
105<tr class="memitem:ga638f0e20dc5de90de21a33564e8ce129"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129">GLFW_HAT_LEFT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
106<tr class="separator:ga638f0e20dc5de90de21a33564e8ce129"><td class="memSeparator" colspan="2">&#160;</td></tr>
107<tr class="memitem:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19">GLFW_HAT_LEFT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
108<tr class="separator:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memSeparator" colspan="2">&#160;</td></tr>
109<tr class="memitem:ga99aacc875b6b27a072552631e13775c7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga99aacc875b6b27a072552631e13775c7">GLFW_KEY_UNKNOWN</a>&#160;&#160;&#160;-1</td></tr>
110<tr class="separator:ga99aacc875b6b27a072552631e13775c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
111<tr class="memitem:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014">GLFW_KEY_SPACE</a>&#160;&#160;&#160;32</td></tr>
112<tr class="separator:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memSeparator" colspan="2">&#160;</td></tr>
113<tr class="memitem:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24">GLFW_KEY_APOSTROPHE</a>&#160;&#160;&#160;39 /* ' */</td></tr>
114<tr class="separator:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
115<tr class="memitem:gab3d5d72e59d3055f494627b0a524926c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab3d5d72e59d3055f494627b0a524926c">GLFW_KEY_COMMA</a>&#160;&#160;&#160;44 /* , */</td></tr>
116<tr class="separator:gab3d5d72e59d3055f494627b0a524926c"><td class="memSeparator" colspan="2">&#160;</td></tr>
117<tr class="memitem:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4">GLFW_KEY_MINUS</a>&#160;&#160;&#160;45 /* - */</td></tr>
118<tr class="separator:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
119<tr class="memitem:ga37e296b650eab419fc474ff69033d927"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga37e296b650eab419fc474ff69033d927">GLFW_KEY_PERIOD</a>&#160;&#160;&#160;46 /* . */</td></tr>
120<tr class="separator:ga37e296b650eab419fc474ff69033d927"><td class="memSeparator" colspan="2">&#160;</td></tr>
121<tr class="memitem:gadf3d753b2d479148d711de34b83fd0db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadf3d753b2d479148d711de34b83fd0db">GLFW_KEY_SLASH</a>&#160;&#160;&#160;47 /* / */</td></tr>
122<tr class="separator:gadf3d753b2d479148d711de34b83fd0db"><td class="memSeparator" colspan="2">&#160;</td></tr>
123<tr class="memitem:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1">GLFW_KEY_0</a>&#160;&#160;&#160;48</td></tr>
124<tr class="separator:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
125<tr class="memitem:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f">GLFW_KEY_1</a>&#160;&#160;&#160;49</td></tr>
126<tr class="separator:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memSeparator" colspan="2">&#160;</td></tr>
127<tr class="memitem:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c">GLFW_KEY_2</a>&#160;&#160;&#160;50</td></tr>
128<tr class="separator:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memSeparator" colspan="2">&#160;</td></tr>
129<tr class="memitem:ga812f0273fe1a981e1fa002ae73e92271"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga812f0273fe1a981e1fa002ae73e92271">GLFW_KEY_3</a>&#160;&#160;&#160;51</td></tr>
130<tr class="separator:ga812f0273fe1a981e1fa002ae73e92271"><td class="memSeparator" colspan="2">&#160;</td></tr>
131<tr class="memitem:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356">GLFW_KEY_4</a>&#160;&#160;&#160;52</td></tr>
132<tr class="separator:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memSeparator" colspan="2">&#160;</td></tr>
133<tr class="memitem:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924">GLFW_KEY_5</a>&#160;&#160;&#160;53</td></tr>
134<tr class="separator:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memSeparator" colspan="2">&#160;</td></tr>
135<tr class="memitem:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d">GLFW_KEY_6</a>&#160;&#160;&#160;54</td></tr>
136<tr class="separator:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
137<tr class="memitem:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666">GLFW_KEY_7</a>&#160;&#160;&#160;55</td></tr>
138<tr class="separator:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memSeparator" colspan="2">&#160;</td></tr>
139<tr class="memitem:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f">GLFW_KEY_8</a>&#160;&#160;&#160;56</td></tr>
140<tr class="separator:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
141<tr class="memitem:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39">GLFW_KEY_9</a>&#160;&#160;&#160;57</td></tr>
142<tr class="separator:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
143<tr class="memitem:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d">GLFW_KEY_SEMICOLON</a>&#160;&#160;&#160;59 /* ; */</td></tr>
144<tr class="separator:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
145<tr class="memitem:gae1a2de47240d6664423c204bdd91bd17"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae1a2de47240d6664423c204bdd91bd17">GLFW_KEY_EQUAL</a>&#160;&#160;&#160;61 /* = */</td></tr>
146<tr class="separator:gae1a2de47240d6664423c204bdd91bd17"><td class="memSeparator" colspan="2">&#160;</td></tr>
147<tr class="memitem:ga03e842608e1ea323370889d33b8f70ff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff">GLFW_KEY_A</a>&#160;&#160;&#160;65</td></tr>
148<tr class="separator:ga03e842608e1ea323370889d33b8f70ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
149<tr class="memitem:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941">GLFW_KEY_B</a>&#160;&#160;&#160;66</td></tr>
150<tr class="separator:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memSeparator" colspan="2">&#160;</td></tr>
151<tr class="memitem:ga00ccf3475d9ee2e679480d540d554669"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga00ccf3475d9ee2e679480d540d554669">GLFW_KEY_C</a>&#160;&#160;&#160;67</td></tr>
152<tr class="separator:ga00ccf3475d9ee2e679480d540d554669"><td class="memSeparator" colspan="2">&#160;</td></tr>
153<tr class="memitem:ga011f7cdc9a654da984a2506479606933"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga011f7cdc9a654da984a2506479606933">GLFW_KEY_D</a>&#160;&#160;&#160;68</td></tr>
154<tr class="separator:ga011f7cdc9a654da984a2506479606933"><td class="memSeparator" colspan="2">&#160;</td></tr>
155<tr class="memitem:gabf48fcc3afbe69349df432b470c96ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a>&#160;&#160;&#160;69</td></tr>
156<tr class="separator:gabf48fcc3afbe69349df432b470c96ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
157<tr class="memitem:ga5df402e02aca08444240058fd9b42a55"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga5df402e02aca08444240058fd9b42a55">GLFW_KEY_F</a>&#160;&#160;&#160;70</td></tr>
158<tr class="separator:ga5df402e02aca08444240058fd9b42a55"><td class="memSeparator" colspan="2">&#160;</td></tr>
159<tr class="memitem:gae74ecddf7cc96104ab23989b1cdab536"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae74ecddf7cc96104ab23989b1cdab536">GLFW_KEY_G</a>&#160;&#160;&#160;71</td></tr>
160<tr class="separator:gae74ecddf7cc96104ab23989b1cdab536"><td class="memSeparator" colspan="2">&#160;</td></tr>
161<tr class="memitem:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076">GLFW_KEY_H</a>&#160;&#160;&#160;72</td></tr>
162<tr class="separator:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memSeparator" colspan="2">&#160;</td></tr>
163<tr class="memitem:ga274655c8bfe39742684ca393cf8ed093"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga274655c8bfe39742684ca393cf8ed093">GLFW_KEY_I</a>&#160;&#160;&#160;73</td></tr>
164<tr class="separator:ga274655c8bfe39742684ca393cf8ed093"><td class="memSeparator" colspan="2">&#160;</td></tr>
165<tr class="memitem:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f">GLFW_KEY_J</a>&#160;&#160;&#160;74</td></tr>
166<tr class="separator:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memSeparator" colspan="2">&#160;</td></tr>
167<tr class="memitem:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0">GLFW_KEY_K</a>&#160;&#160;&#160;75</td></tr>
168<tr class="separator:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
169<tr class="memitem:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2">GLFW_KEY_L</a>&#160;&#160;&#160;76</td></tr>
170<tr class="separator:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
171<tr class="memitem:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716">GLFW_KEY_M</a>&#160;&#160;&#160;77</td></tr>
172<tr class="separator:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memSeparator" colspan="2">&#160;</td></tr>
173<tr class="memitem:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda">GLFW_KEY_N</a>&#160;&#160;&#160;78</td></tr>
174<tr class="separator:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memSeparator" colspan="2">&#160;</td></tr>
175<tr class="memitem:gaecbbb79130df419d58dd7f09a169efe9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaecbbb79130df419d58dd7f09a169efe9">GLFW_KEY_O</a>&#160;&#160;&#160;79</td></tr>
176<tr class="separator:gaecbbb79130df419d58dd7f09a169efe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
177<tr class="memitem:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1">GLFW_KEY_P</a>&#160;&#160;&#160;80</td></tr>
178<tr class="separator:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
179<tr class="memitem:gafdd01e38b120d67cf51e348bb47f3964"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafdd01e38b120d67cf51e348bb47f3964">GLFW_KEY_Q</a>&#160;&#160;&#160;81</td></tr>
180<tr class="separator:gafdd01e38b120d67cf51e348bb47f3964"><td class="memSeparator" colspan="2">&#160;</td></tr>
181<tr class="memitem:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36">GLFW_KEY_R</a>&#160;&#160;&#160;82</td></tr>
182<tr class="separator:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
183<tr class="memitem:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9">GLFW_KEY_S</a>&#160;&#160;&#160;83</td></tr>
184<tr class="separator:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
185<tr class="memitem:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9">GLFW_KEY_T</a>&#160;&#160;&#160;84</td></tr>
186<tr class="separator:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
187<tr class="memitem:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d">GLFW_KEY_U</a>&#160;&#160;&#160;85</td></tr>
188<tr class="separator:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memSeparator" colspan="2">&#160;</td></tr>
189<tr class="memitem:ga22c7763899ecf7788862e5f90eacce6b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga22c7763899ecf7788862e5f90eacce6b">GLFW_KEY_V</a>&#160;&#160;&#160;86</td></tr>
190<tr class="separator:ga22c7763899ecf7788862e5f90eacce6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
191<tr class="memitem:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a>&#160;&#160;&#160;87</td></tr>
192<tr class="separator:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memSeparator" colspan="2">&#160;</td></tr>
193<tr class="memitem:gac1c42c0bf4192cea713c55598b06b744"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a>&#160;&#160;&#160;88</td></tr>
194<tr class="separator:gac1c42c0bf4192cea713c55598b06b744"><td class="memSeparator" colspan="2">&#160;</td></tr>
195<tr class="memitem:gafd9f115a549effdf8e372a787c360313"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafd9f115a549effdf8e372a787c360313">GLFW_KEY_Y</a>&#160;&#160;&#160;89</td></tr>
196<tr class="separator:gafd9f115a549effdf8e372a787c360313"><td class="memSeparator" colspan="2">&#160;</td></tr>
197<tr class="memitem:gac489e208c26afda8d4938ed88718760a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac489e208c26afda8d4938ed88718760a">GLFW_KEY_Z</a>&#160;&#160;&#160;90</td></tr>
198<tr class="separator:gac489e208c26afda8d4938ed88718760a"><td class="memSeparator" colspan="2">&#160;</td></tr>
199<tr class="memitem:gad1c8d9adac53925276ecb1d592511d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1c8d9adac53925276ecb1d592511d8a">GLFW_KEY_LEFT_BRACKET</a>&#160;&#160;&#160;91 /* [ */</td></tr>
200<tr class="separator:gad1c8d9adac53925276ecb1d592511d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
201<tr class="memitem:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1">GLFW_KEY_BACKSLASH</a>&#160;&#160;&#160;92 /* \ */</td></tr>
202<tr class="separator:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
203<tr class="memitem:ga86ef225fd6a66404caae71044cdd58d8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86ef225fd6a66404caae71044cdd58d8">GLFW_KEY_RIGHT_BRACKET</a>&#160;&#160;&#160;93 /* ] */</td></tr>
204<tr class="separator:ga86ef225fd6a66404caae71044cdd58d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
205<tr class="memitem:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668">GLFW_KEY_GRAVE_ACCENT</a>&#160;&#160;&#160;96 /* ` */</td></tr>
206<tr class="separator:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memSeparator" colspan="2">&#160;</td></tr>
207<tr class="memitem:gadc78dad3dab76bcd4b5c20114052577a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc78dad3dab76bcd4b5c20114052577a">GLFW_KEY_WORLD_1</a>&#160;&#160;&#160;161 /* non-US #1 */</td></tr>
208<tr class="separator:gadc78dad3dab76bcd4b5c20114052577a"><td class="memSeparator" colspan="2">&#160;</td></tr>
209<tr class="memitem:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e">GLFW_KEY_WORLD_2</a>&#160;&#160;&#160;162 /* non-US #2 */</td></tr>
210<tr class="separator:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
211<tr class="memitem:gaac6596c350b635c245113b81c2123b93"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a>&#160;&#160;&#160;256</td></tr>
212<tr class="separator:gaac6596c350b635c245113b81c2123b93"><td class="memSeparator" colspan="2">&#160;</td></tr>
213<tr class="memitem:ga9555a92ecbecdbc1f3435219c571d667"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9555a92ecbecdbc1f3435219c571d667">GLFW_KEY_ENTER</a>&#160;&#160;&#160;257</td></tr>
214<tr class="separator:ga9555a92ecbecdbc1f3435219c571d667"><td class="memSeparator" colspan="2">&#160;</td></tr>
215<tr class="memitem:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df">GLFW_KEY_TAB</a>&#160;&#160;&#160;258</td></tr>
216<tr class="separator:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635">GLFW_KEY_BACKSPACE</a>&#160;&#160;&#160;259</td></tr>
218<tr class="separator:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memSeparator" colspan="2">&#160;</td></tr>
219<tr class="memitem:ga373ac7365435d6b0eb1068f470e34f47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga373ac7365435d6b0eb1068f470e34f47">GLFW_KEY_INSERT</a>&#160;&#160;&#160;260</td></tr>
220<tr class="separator:ga373ac7365435d6b0eb1068f470e34f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
221<tr class="memitem:gadb111e4df74b8a715f2c05dad58d2682"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadb111e4df74b8a715f2c05dad58d2682">GLFW_KEY_DELETE</a>&#160;&#160;&#160;261</td></tr>
222<tr class="separator:gadb111e4df74b8a715f2c05dad58d2682"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="memitem:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac">GLFW_KEY_RIGHT</a>&#160;&#160;&#160;262</td></tr>
224<tr class="separator:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
225<tr class="memitem:gae12a010d33c309a67ab9460c51eb2462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae12a010d33c309a67ab9460c51eb2462">GLFW_KEY_LEFT</a>&#160;&#160;&#160;263</td></tr>
226<tr class="separator:gae12a010d33c309a67ab9460c51eb2462"><td class="memSeparator" colspan="2">&#160;</td></tr>
227<tr class="memitem:gae2e3958c71595607416aa7bf082be2f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae2e3958c71595607416aa7bf082be2f9">GLFW_KEY_DOWN</a>&#160;&#160;&#160;264</td></tr>
228<tr class="separator:gae2e3958c71595607416aa7bf082be2f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
229<tr class="memitem:ga2f3342b194020d3544c67e3506b6f144"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2f3342b194020d3544c67e3506b6f144">GLFW_KEY_UP</a>&#160;&#160;&#160;265</td></tr>
230<tr class="separator:ga2f3342b194020d3544c67e3506b6f144"><td class="memSeparator" colspan="2">&#160;</td></tr>
231<tr class="memitem:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586">GLFW_KEY_PAGE_UP</a>&#160;&#160;&#160;266</td></tr>
232<tr class="separator:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memSeparator" colspan="2">&#160;</td></tr>
233<tr class="memitem:gaee0a8fa442001cc2147812f84b59041c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaee0a8fa442001cc2147812f84b59041c">GLFW_KEY_PAGE_DOWN</a>&#160;&#160;&#160;267</td></tr>
234<tr class="separator:gaee0a8fa442001cc2147812f84b59041c"><td class="memSeparator" colspan="2">&#160;</td></tr>
235<tr class="memitem:ga41452c7287195d481e43207318c126a7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga41452c7287195d481e43207318c126a7">GLFW_KEY_HOME</a>&#160;&#160;&#160;268</td></tr>
236<tr class="separator:ga41452c7287195d481e43207318c126a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
237<tr class="memitem:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9">GLFW_KEY_END</a>&#160;&#160;&#160;269</td></tr>
238<tr class="separator:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
239<tr class="memitem:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672">GLFW_KEY_CAPS_LOCK</a>&#160;&#160;&#160;280</td></tr>
240<tr class="separator:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memSeparator" colspan="2">&#160;</td></tr>
241<tr class="memitem:gaf622b63b9537f7084c2ab649b8365630"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf622b63b9537f7084c2ab649b8365630">GLFW_KEY_SCROLL_LOCK</a>&#160;&#160;&#160;281</td></tr>
242<tr class="separator:gaf622b63b9537f7084c2ab649b8365630"><td class="memSeparator" colspan="2">&#160;</td></tr>
243<tr class="memitem:ga3946edc362aeff213b2be6304296cf43"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3946edc362aeff213b2be6304296cf43">GLFW_KEY_NUM_LOCK</a>&#160;&#160;&#160;282</td></tr>
244<tr class="separator:ga3946edc362aeff213b2be6304296cf43"><td class="memSeparator" colspan="2">&#160;</td></tr>
245<tr class="memitem:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642">GLFW_KEY_PRINT_SCREEN</a>&#160;&#160;&#160;283</td></tr>
246<tr class="separator:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memSeparator" colspan="2">&#160;</td></tr>
247<tr class="memitem:ga8116b9692d87382afb5849b6d8907f18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8116b9692d87382afb5849b6d8907f18">GLFW_KEY_PAUSE</a>&#160;&#160;&#160;284</td></tr>
248<tr class="separator:ga8116b9692d87382afb5849b6d8907f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
249<tr class="memitem:gafb8d66c573acf22e364049477dcbea30"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb8d66c573acf22e364049477dcbea30">GLFW_KEY_F1</a>&#160;&#160;&#160;290</td></tr>
250<tr class="separator:gafb8d66c573acf22e364049477dcbea30"><td class="memSeparator" colspan="2">&#160;</td></tr>
251<tr class="memitem:ga0900750aff94889b940f5e428c07daee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0900750aff94889b940f5e428c07daee">GLFW_KEY_F2</a>&#160;&#160;&#160;291</td></tr>
252<tr class="separator:ga0900750aff94889b940f5e428c07daee"><td class="memSeparator" colspan="2">&#160;</td></tr>
253<tr class="memitem:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015">GLFW_KEY_F3</a>&#160;&#160;&#160;292</td></tr>
254<tr class="separator:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memSeparator" colspan="2">&#160;</td></tr>
255<tr class="memitem:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6">GLFW_KEY_F4</a>&#160;&#160;&#160;293</td></tr>
256<tr class="separator:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
257<tr class="memitem:gaf258dda9947daa428377938ed577c8c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf258dda9947daa428377938ed577c8c2">GLFW_KEY_F5</a>&#160;&#160;&#160;294</td></tr>
258<tr class="separator:gaf258dda9947daa428377938ed577c8c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
259<tr class="memitem:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d">GLFW_KEY_F6</a>&#160;&#160;&#160;295</td></tr>
260<tr class="separator:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
261<tr class="memitem:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a">GLFW_KEY_F7</a>&#160;&#160;&#160;296</td></tr>
262<tr class="separator:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memSeparator" colspan="2">&#160;</td></tr>
263<tr class="memitem:gac9d39390336ae14e4a93e295de43c7e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac9d39390336ae14e4a93e295de43c7e8">GLFW_KEY_F8</a>&#160;&#160;&#160;297</td></tr>
264<tr class="separator:gac9d39390336ae14e4a93e295de43c7e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
265<tr class="memitem:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851">GLFW_KEY_F9</a>&#160;&#160;&#160;298</td></tr>
266<tr class="separator:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memSeparator" colspan="2">&#160;</td></tr>
267<tr class="memitem:ga718d11d2f7d57471a2f6a894235995b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga718d11d2f7d57471a2f6a894235995b1">GLFW_KEY_F10</a>&#160;&#160;&#160;299</td></tr>
268<tr class="separator:ga718d11d2f7d57471a2f6a894235995b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
269<tr class="memitem:ga0bc04b11627e7d69339151e7306b2832"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0bc04b11627e7d69339151e7306b2832">GLFW_KEY_F11</a>&#160;&#160;&#160;300</td></tr>
270<tr class="separator:ga0bc04b11627e7d69339151e7306b2832"><td class="memSeparator" colspan="2">&#160;</td></tr>
271<tr class="memitem:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2">GLFW_KEY_F12</a>&#160;&#160;&#160;301</td></tr>
272<tr class="separator:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
273<tr class="memitem:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b">GLFW_KEY_F13</a>&#160;&#160;&#160;302</td></tr>
274<tr class="separator:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
275<tr class="memitem:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f">GLFW_KEY_F14</a>&#160;&#160;&#160;303</td></tr>
276<tr class="separator:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
277<tr class="memitem:ga7f70970db6e8be1794da8516a6d14058"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f70970db6e8be1794da8516a6d14058">GLFW_KEY_F15</a>&#160;&#160;&#160;304</td></tr>
278<tr class="separator:ga7f70970db6e8be1794da8516a6d14058"><td class="memSeparator" colspan="2">&#160;</td></tr>
279<tr class="memitem:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27">GLFW_KEY_F16</a>&#160;&#160;&#160;305</td></tr>
280<tr class="separator:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
281<tr class="memitem:ga972ce5c365e2394b36104b0e3125c748"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga972ce5c365e2394b36104b0e3125c748">GLFW_KEY_F17</a>&#160;&#160;&#160;306</td></tr>
282<tr class="separator:ga972ce5c365e2394b36104b0e3125c748"><td class="memSeparator" colspan="2">&#160;</td></tr>
283<tr class="memitem:gaebf6391058d5566601e357edc5ea737c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebf6391058d5566601e357edc5ea737c">GLFW_KEY_F18</a>&#160;&#160;&#160;307</td></tr>
284<tr class="separator:gaebf6391058d5566601e357edc5ea737c"><td class="memSeparator" colspan="2">&#160;</td></tr>
285<tr class="memitem:gaec011d9ba044058cb54529da710e9791"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaec011d9ba044058cb54529da710e9791">GLFW_KEY_F19</a>&#160;&#160;&#160;308</td></tr>
286<tr class="separator:gaec011d9ba044058cb54529da710e9791"><td class="memSeparator" colspan="2">&#160;</td></tr>
287<tr class="memitem:ga82b9c721ada04cd5ca8de767da38022f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga82b9c721ada04cd5ca8de767da38022f">GLFW_KEY_F20</a>&#160;&#160;&#160;309</td></tr>
288<tr class="separator:ga82b9c721ada04cd5ca8de767da38022f"><td class="memSeparator" colspan="2">&#160;</td></tr>
289<tr class="memitem:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f">GLFW_KEY_F21</a>&#160;&#160;&#160;310</td></tr>
290<tr class="separator:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memSeparator" colspan="2">&#160;</td></tr>
291<tr class="memitem:ga90960bd2a155f2b09675324d3dff1565"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90960bd2a155f2b09675324d3dff1565">GLFW_KEY_F22</a>&#160;&#160;&#160;311</td></tr>
292<tr class="separator:ga90960bd2a155f2b09675324d3dff1565"><td class="memSeparator" colspan="2">&#160;</td></tr>
293<tr class="memitem:ga43c21099aac10952d1be909a8ddee4d5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga43c21099aac10952d1be909a8ddee4d5">GLFW_KEY_F23</a>&#160;&#160;&#160;312</td></tr>
294<tr class="separator:ga43c21099aac10952d1be909a8ddee4d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
295<tr class="memitem:ga8150374677b5bed3043408732152dea2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8150374677b5bed3043408732152dea2">GLFW_KEY_F24</a>&#160;&#160;&#160;313</td></tr>
296<tr class="separator:ga8150374677b5bed3043408732152dea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
297<tr class="memitem:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199">GLFW_KEY_F25</a>&#160;&#160;&#160;314</td></tr>
298<tr class="separator:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memSeparator" colspan="2">&#160;</td></tr>
299<tr class="memitem:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d">GLFW_KEY_KP_0</a>&#160;&#160;&#160;320</td></tr>
300<tr class="separator:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memSeparator" colspan="2">&#160;</td></tr>
301<tr class="memitem:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3">GLFW_KEY_KP_1</a>&#160;&#160;&#160;321</td></tr>
302<tr class="separator:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
303<tr class="memitem:gaf82d5a802ab8213c72653d7480c16f13"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf82d5a802ab8213c72653d7480c16f13">GLFW_KEY_KP_2</a>&#160;&#160;&#160;322</td></tr>
304<tr class="separator:gaf82d5a802ab8213c72653d7480c16f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
305<tr class="memitem:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2">GLFW_KEY_KP_3</a>&#160;&#160;&#160;323</td></tr>
306<tr class="separator:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
307<tr class="memitem:gada7ec86778b85e0b4de0beea72234aea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gada7ec86778b85e0b4de0beea72234aea">GLFW_KEY_KP_4</a>&#160;&#160;&#160;324</td></tr>
308<tr class="separator:gada7ec86778b85e0b4de0beea72234aea"><td class="memSeparator" colspan="2">&#160;</td></tr>
309<tr class="memitem:ga9a5be274434866c51738cafbb6d26b45"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9a5be274434866c51738cafbb6d26b45">GLFW_KEY_KP_5</a>&#160;&#160;&#160;325</td></tr>
310<tr class="separator:ga9a5be274434866c51738cafbb6d26b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
311<tr class="memitem:gafc141b0f8450519084c01092a3157faa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafc141b0f8450519084c01092a3157faa">GLFW_KEY_KP_6</a>&#160;&#160;&#160;326</td></tr>
312<tr class="separator:gafc141b0f8450519084c01092a3157faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
313<tr class="memitem:ga8882f411f05d04ec77a9563974bbfa53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8882f411f05d04ec77a9563974bbfa53">GLFW_KEY_KP_7</a>&#160;&#160;&#160;327</td></tr>
314<tr class="separator:ga8882f411f05d04ec77a9563974bbfa53"><td class="memSeparator" colspan="2">&#160;</td></tr>
315<tr class="memitem:gab2ea2e6a12f89d315045af520ac78cec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab2ea2e6a12f89d315045af520ac78cec">GLFW_KEY_KP_8</a>&#160;&#160;&#160;328</td></tr>
316<tr class="separator:gab2ea2e6a12f89d315045af520ac78cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
317<tr class="memitem:gafb21426b630ed4fcc084868699ba74c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb21426b630ed4fcc084868699ba74c1">GLFW_KEY_KP_9</a>&#160;&#160;&#160;329</td></tr>
318<tr class="separator:gafb21426b630ed4fcc084868699ba74c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
319<tr class="memitem:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b">GLFW_KEY_KP_DECIMAL</a>&#160;&#160;&#160;330</td></tr>
320<tr class="separator:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memSeparator" colspan="2">&#160;</td></tr>
321<tr class="memitem:gabca1733780a273d549129ad0f250d1e5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabca1733780a273d549129ad0f250d1e5">GLFW_KEY_KP_DIVIDE</a>&#160;&#160;&#160;331</td></tr>
322<tr class="separator:gabca1733780a273d549129ad0f250d1e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
323<tr class="memitem:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef">GLFW_KEY_KP_MULTIPLY</a>&#160;&#160;&#160;332</td></tr>
324<tr class="separator:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
325<tr class="memitem:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236">GLFW_KEY_KP_SUBTRACT</a>&#160;&#160;&#160;333</td></tr>
326<tr class="separator:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memSeparator" colspan="2">&#160;</td></tr>
327<tr class="memitem:gad09c7c98acc79e89aa6a0a91275becac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad09c7c98acc79e89aa6a0a91275becac">GLFW_KEY_KP_ADD</a>&#160;&#160;&#160;334</td></tr>
328<tr class="separator:gad09c7c98acc79e89aa6a0a91275becac"><td class="memSeparator" colspan="2">&#160;</td></tr>
329<tr class="memitem:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf">GLFW_KEY_KP_ENTER</a>&#160;&#160;&#160;335</td></tr>
330<tr class="separator:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
331<tr class="memitem:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97">GLFW_KEY_KP_EQUAL</a>&#160;&#160;&#160;336</td></tr>
332<tr class="separator:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memSeparator" colspan="2">&#160;</td></tr>
333<tr class="memitem:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6">GLFW_KEY_LEFT_SHIFT</a>&#160;&#160;&#160;340</td></tr>
334<tr class="separator:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
335<tr class="memitem:ga9f97b743e81460ac4b2deddecd10a464"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9f97b743e81460ac4b2deddecd10a464">GLFW_KEY_LEFT_CONTROL</a>&#160;&#160;&#160;341</td></tr>
336<tr class="separator:ga9f97b743e81460ac4b2deddecd10a464"><td class="memSeparator" colspan="2">&#160;</td></tr>
337<tr class="memitem:ga7f27dabf63a7789daa31e1c96790219b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f27dabf63a7789daa31e1c96790219b">GLFW_KEY_LEFT_ALT</a>&#160;&#160;&#160;342</td></tr>
338<tr class="separator:ga7f27dabf63a7789daa31e1c96790219b"><td class="memSeparator" colspan="2">&#160;</td></tr>
339<tr class="memitem:gafb1207c91997fc295afd1835fbc5641a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb1207c91997fc295afd1835fbc5641a">GLFW_KEY_LEFT_SUPER</a>&#160;&#160;&#160;343</td></tr>
340<tr class="separator:gafb1207c91997fc295afd1835fbc5641a"><td class="memSeparator" colspan="2">&#160;</td></tr>
341<tr class="memitem:gaffca36b99c9dce1a19cb9befbadce691"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaffca36b99c9dce1a19cb9befbadce691">GLFW_KEY_RIGHT_SHIFT</a>&#160;&#160;&#160;344</td></tr>
342<tr class="separator:gaffca36b99c9dce1a19cb9befbadce691"><td class="memSeparator" colspan="2">&#160;</td></tr>
343<tr class="memitem:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519">GLFW_KEY_RIGHT_CONTROL</a>&#160;&#160;&#160;345</td></tr>
344<tr class="separator:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memSeparator" colspan="2">&#160;</td></tr>
345<tr class="memitem:ga687b38009131cfdd07a8d05fff8fa446"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga687b38009131cfdd07a8d05fff8fa446">GLFW_KEY_RIGHT_ALT</a>&#160;&#160;&#160;346</td></tr>
346<tr class="separator:ga687b38009131cfdd07a8d05fff8fa446"><td class="memSeparator" colspan="2">&#160;</td></tr>
347<tr class="memitem:gad4547a3e8e247594acb60423fe6502db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4547a3e8e247594acb60423fe6502db">GLFW_KEY_RIGHT_SUPER</a>&#160;&#160;&#160;347</td></tr>
348<tr class="separator:gad4547a3e8e247594acb60423fe6502db"><td class="memSeparator" colspan="2">&#160;</td></tr>
349<tr class="memitem:ga9845be48a745fc232045c9ec174d8820"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a>&#160;&#160;&#160;348</td></tr>
350<tr class="separator:ga9845be48a745fc232045c9ec174d8820"><td class="memSeparator" colspan="2">&#160;</td></tr>
351<tr class="memitem:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789">GLFW_KEY_LAST</a>&#160;&#160;&#160;<a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a></td></tr>
352<tr class="separator:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memSeparator" colspan="2">&#160;</td></tr>
353<tr class="memitem:ga14994d3196c290aaa347248e51740274"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga14994d3196c290aaa347248e51740274">GLFW_MOD_SHIFT</a>&#160;&#160;&#160;0x0001</td></tr>
354<tr class="memdesc:ga14994d3196c290aaa347248e51740274"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Shift keys were held down. <a href="group__mods.html#ga14994d3196c290aaa347248e51740274">More...</a><br /></td></tr>
355<tr class="separator:ga14994d3196c290aaa347248e51740274"><td class="memSeparator" colspan="2">&#160;</td></tr>
356<tr class="memitem:ga6ed94871c3208eefd85713fa929d45aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">GLFW_MOD_CONTROL</a>&#160;&#160;&#160;0x0002</td></tr>
357<tr class="memdesc:ga6ed94871c3208eefd85713fa929d45aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Control keys were held down. <a href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">More...</a><br /></td></tr>
358<tr class="separator:ga6ed94871c3208eefd85713fa929d45aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
359<tr class="memitem:gad2acd5633463c29e07008687ea73c0f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">GLFW_MOD_ALT</a>&#160;&#160;&#160;0x0004</td></tr>
360<tr class="memdesc:gad2acd5633463c29e07008687ea73c0f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Alt keys were held down. <a href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">More...</a><br /></td></tr>
361<tr class="separator:gad2acd5633463c29e07008687ea73c0f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
362<tr class="memitem:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">GLFW_MOD_SUPER</a>&#160;&#160;&#160;0x0008</td></tr>
363<tr class="memdesc:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Super keys were held down. <a href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">More...</a><br /></td></tr>
364<tr class="separator:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
365<tr class="memitem:gaefeef8fcf825a6e43e241b337897200f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a>&#160;&#160;&#160;0x0010</td></tr>
366<tr class="memdesc:gaefeef8fcf825a6e43e241b337897200f"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Caps Lock key is enabled. <a href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">More...</a><br /></td></tr>
367<tr class="separator:gaefeef8fcf825a6e43e241b337897200f"><td class="memSeparator" colspan="2">&#160;</td></tr>
368<tr class="memitem:ga64e020b8a42af8376e944baf61feecbe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a>&#160;&#160;&#160;0x0020</td></tr>
369<tr class="memdesc:ga64e020b8a42af8376e944baf61feecbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Num Lock key is enabled. <a href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">More...</a><br /></td></tr>
370<tr class="separator:ga64e020b8a42af8376e944baf61feecbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
371<tr class="memitem:ga181a6e875251fd8671654eff00f9112e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a>&#160;&#160;&#160;0</td></tr>
372<tr class="separator:ga181a6e875251fd8671654eff00f9112e"><td class="memSeparator" colspan="2">&#160;</td></tr>
373<tr class="memitem:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a>&#160;&#160;&#160;1</td></tr>
374<tr class="separator:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memSeparator" colspan="2">&#160;</td></tr>
375<tr class="memitem:ga0130d505563d0236a6f85545f19e1721"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a>&#160;&#160;&#160;2</td></tr>
376<tr class="separator:ga0130d505563d0236a6f85545f19e1721"><td class="memSeparator" colspan="2">&#160;</td></tr>
377<tr class="memitem:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9">GLFW_MOUSE_BUTTON_4</a>&#160;&#160;&#160;3</td></tr>
378<tr class="separator:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
379<tr class="memitem:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c">GLFW_MOUSE_BUTTON_5</a>&#160;&#160;&#160;4</td></tr>
380<tr class="separator:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
381<tr class="memitem:gae8513e06aab8aa393b595f22c6d8257a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a">GLFW_MOUSE_BUTTON_6</a>&#160;&#160;&#160;5</td></tr>
382<tr class="separator:gae8513e06aab8aa393b595f22c6d8257a"><td class="memSeparator" colspan="2">&#160;</td></tr>
383<tr class="memitem:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7">GLFW_MOUSE_BUTTON_7</a>&#160;&#160;&#160;6</td></tr>
384<tr class="separator:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
385<tr class="memitem:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a>&#160;&#160;&#160;7</td></tr>
386<tr class="separator:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memSeparator" colspan="2">&#160;</td></tr>
387<tr class="memitem:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf">GLFW_MOUSE_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a></td></tr>
388<tr class="separator:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
389<tr class="memitem:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a></td></tr>
390<tr class="separator:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memSeparator" colspan="2">&#160;</td></tr>
391<tr class="memitem:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a></td></tr>
392<tr class="separator:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
393<tr class="memitem:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a">GLFW_MOUSE_BUTTON_MIDDLE</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a></td></tr>
394<tr class="separator:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
395<tr class="memitem:ga34a0443d059e9f22272cd4669073f73d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a>&#160;&#160;&#160;0</td></tr>
396<tr class="separator:ga34a0443d059e9f22272cd4669073f73d"><td class="memSeparator" colspan="2">&#160;</td></tr>
397<tr class="memitem:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a>&#160;&#160;&#160;1</td></tr>
398<tr class="separator:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memSeparator" colspan="2">&#160;</td></tr>
399<tr class="memitem:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>&#160;&#160;&#160;2</td></tr>
400<tr class="separator:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memSeparator" colspan="2">&#160;</td></tr>
401<tr class="memitem:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a>&#160;&#160;&#160;3</td></tr>
402<tr class="separator:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memSeparator" colspan="2">&#160;</td></tr>
403<tr class="memitem:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a>&#160;&#160;&#160;4</td></tr>
404<tr class="separator:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memSeparator" colspan="2">&#160;</td></tr>
405<tr class="memitem:ga74771620aa53bd68a487186dea66fd77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga74771620aa53bd68a487186dea66fd77">GLFW_JOYSTICK_6</a>&#160;&#160;&#160;5</td></tr>
406<tr class="separator:ga74771620aa53bd68a487186dea66fd77"><td class="memSeparator" colspan="2">&#160;</td></tr>
407<tr class="memitem:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>&#160;&#160;&#160;6</td></tr>
408<tr class="separator:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
409<tr class="memitem:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb">GLFW_JOYSTICK_8</a>&#160;&#160;&#160;7</td></tr>
410<tr class="separator:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
411<tr class="memitem:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf">GLFW_JOYSTICK_9</a>&#160;&#160;&#160;8</td></tr>
412<tr class="separator:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
413<tr class="memitem:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec">GLFW_JOYSTICK_10</a>&#160;&#160;&#160;9</td></tr>
414<tr class="separator:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
415<tr class="memitem:gae7d26e3df447c2c14a569fcc18516af4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4">GLFW_JOYSTICK_11</a>&#160;&#160;&#160;10</td></tr>
416<tr class="separator:gae7d26e3df447c2c14a569fcc18516af4"><td class="memSeparator" colspan="2">&#160;</td></tr>
417<tr class="memitem:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7">GLFW_JOYSTICK_12</a>&#160;&#160;&#160;11</td></tr>
418<tr class="separator:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
419<tr class="memitem:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508">GLFW_JOYSTICK_13</a>&#160;&#160;&#160;12</td></tr>
420<tr class="separator:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memSeparator" colspan="2">&#160;</td></tr>
421<tr class="memitem:ga89540873278ae5a42b3e70d64164dc74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74">GLFW_JOYSTICK_14</a>&#160;&#160;&#160;13</td></tr>
422<tr class="separator:ga89540873278ae5a42b3e70d64164dc74"><td class="memSeparator" colspan="2">&#160;</td></tr>
423<tr class="memitem:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9">GLFW_JOYSTICK_15</a>&#160;&#160;&#160;14</td></tr>
424<tr class="separator:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
425<tr class="memitem:ga453edeeabf350827646b6857df4f80ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a>&#160;&#160;&#160;15</td></tr>
426<tr class="separator:ga453edeeabf350827646b6857df4f80ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
427<tr class="memitem:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9">GLFW_JOYSTICK_LAST</a>&#160;&#160;&#160;<a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a></td></tr>
428<tr class="separator:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
429<tr class="memitem:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a>&#160;&#160;&#160;0</td></tr>
430<tr class="separator:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memSeparator" colspan="2">&#160;</td></tr>
431<tr class="memitem:ga2228a6512fd5950cdb51ba07846546fa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a>&#160;&#160;&#160;1</td></tr>
432<tr class="separator:ga2228a6512fd5950cdb51ba07846546fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
433<tr class="memitem:ga52cc94785cf3fe9a12e246539259887c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a>&#160;&#160;&#160;2</td></tr>
434<tr class="separator:ga52cc94785cf3fe9a12e246539259887c"><td class="memSeparator" colspan="2">&#160;</td></tr>
435<tr class="memitem:gafc931248bda494b530cbe057f386a5ed"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a>&#160;&#160;&#160;3</td></tr>
436<tr class="separator:gafc931248bda494b530cbe057f386a5ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
437<tr class="memitem:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3">GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</a>&#160;&#160;&#160;4</td></tr>
438<tr class="separator:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
439<tr class="memitem:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f">GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</a>&#160;&#160;&#160;5</td></tr>
440<tr class="separator:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
441<tr class="memitem:gabc7c0264ce778835b516a472b47f6caf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf">GLFW_GAMEPAD_BUTTON_BACK</a>&#160;&#160;&#160;6</td></tr>
442<tr class="separator:gabc7c0264ce778835b516a472b47f6caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
443<tr class="memitem:ga04606949dd9139434b8a1bedf4ac1021"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021">GLFW_GAMEPAD_BUTTON_START</a>&#160;&#160;&#160;7</td></tr>
444<tr class="separator:ga04606949dd9139434b8a1bedf4ac1021"><td class="memSeparator" colspan="2">&#160;</td></tr>
445<tr class="memitem:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc">GLFW_GAMEPAD_BUTTON_GUIDE</a>&#160;&#160;&#160;8</td></tr>
446<tr class="separator:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
447<tr class="memitem:ga3e089787327454f7bfca7364d6ca206a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a">GLFW_GAMEPAD_BUTTON_LEFT_THUMB</a>&#160;&#160;&#160;9</td></tr>
448<tr class="separator:ga3e089787327454f7bfca7364d6ca206a"><td class="memSeparator" colspan="2">&#160;</td></tr>
449<tr class="memitem:ga1c003f52b5aebb45272475b48953b21a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a">GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</a>&#160;&#160;&#160;10</td></tr>
450<tr class="separator:ga1c003f52b5aebb45272475b48953b21a"><td class="memSeparator" colspan="2">&#160;</td></tr>
451<tr class="memitem:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a">GLFW_GAMEPAD_BUTTON_DPAD_UP</a>&#160;&#160;&#160;11</td></tr>
452<tr class="separator:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memSeparator" colspan="2">&#160;</td></tr>
453<tr class="memitem:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6">GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</a>&#160;&#160;&#160;12</td></tr>
454<tr class="separator:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
455<tr class="memitem:ga8f2b731b97d80f90f11967a83207665c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c">GLFW_GAMEPAD_BUTTON_DPAD_DOWN</a>&#160;&#160;&#160;13</td></tr>
456<tr class="separator:ga8f2b731b97d80f90f11967a83207665c"><td class="memSeparator" colspan="2">&#160;</td></tr>
457<tr class="memitem:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a>&#160;&#160;&#160;14</td></tr>
458<tr class="separator:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memSeparator" colspan="2">&#160;</td></tr>
459<tr class="memitem:ga5cc98882f4f81dacf761639a567f61eb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb">GLFW_GAMEPAD_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></td></tr>
460<tr class="separator:ga5cc98882f4f81dacf761639a567f61eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
461<tr class="memitem:gaf08d0df26527c9305253422bd98ed63a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a">GLFW_GAMEPAD_BUTTON_CROSS</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></td></tr>
462<tr class="separator:gaf08d0df26527c9305253422bd98ed63a"><td class="memSeparator" colspan="2">&#160;</td></tr>
463<tr class="memitem:gaaef094b3dacbf15f272b274516839b82"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82">GLFW_GAMEPAD_BUTTON_CIRCLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></td></tr>
464<tr class="separator:gaaef094b3dacbf15f272b274516839b82"><td class="memSeparator" colspan="2">&#160;</td></tr>
465<tr class="memitem:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f">GLFW_GAMEPAD_BUTTON_SQUARE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></td></tr>
466<tr class="separator:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memSeparator" colspan="2">&#160;</td></tr>
467<tr class="memitem:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802">GLFW_GAMEPAD_BUTTON_TRIANGLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></td></tr>
468<tr class="separator:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memSeparator" colspan="2">&#160;</td></tr>
469<tr class="memitem:ga544e396d092036a7d80c1e5f233f7a38"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38">GLFW_GAMEPAD_AXIS_LEFT_X</a>&#160;&#160;&#160;0</td></tr>
470<tr class="separator:ga544e396d092036a7d80c1e5f233f7a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
471<tr class="memitem:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5">GLFW_GAMEPAD_AXIS_LEFT_Y</a>&#160;&#160;&#160;1</td></tr>
472<tr class="separator:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
473<tr class="memitem:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc">GLFW_GAMEPAD_AXIS_RIGHT_X</a>&#160;&#160;&#160;2</td></tr>
474<tr class="separator:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
475<tr class="memitem:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4">GLFW_GAMEPAD_AXIS_RIGHT_Y</a>&#160;&#160;&#160;3</td></tr>
476<tr class="separator:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
477<tr class="memitem:ga6d79561dd8907c37354426242901b86e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e">GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</a>&#160;&#160;&#160;4</td></tr>
478<tr class="separator:ga6d79561dd8907c37354426242901b86e"><td class="memSeparator" colspan="2">&#160;</td></tr>
479<tr class="memitem:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a>&#160;&#160;&#160;5</td></tr>
480<tr class="separator:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memSeparator" colspan="2">&#160;</td></tr>
481<tr class="memitem:ga0818fd9433e1359692b7443293e5ac86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86">GLFW_GAMEPAD_AXIS_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></td></tr>
482<tr class="separator:ga0818fd9433e1359692b7443293e5ac86"><td class="memSeparator" colspan="2">&#160;</td></tr>
483<tr class="memitem:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a>&#160;&#160;&#160;0</td></tr>
484<tr class="memdesc:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">No error has occurred. <a href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">More...</a><br /></td></tr>
485<tr class="separator:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
486<tr class="memitem:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>&#160;&#160;&#160;0x00010001</td></tr>
487<tr class="memdesc:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW has not been initialized. <a href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">More...</a><br /></td></tr>
488<tr class="separator:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
489<tr class="memitem:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a>&#160;&#160;&#160;0x00010002</td></tr>
490<tr class="memdesc:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">No context is current for this thread. <a href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">More...</a><br /></td></tr>
491<tr class="separator:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
492<tr class="memitem:ga76f6bb9c4eea73db675f096b404593ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>&#160;&#160;&#160;0x00010003</td></tr>
493<tr class="memdesc:ga76f6bb9c4eea73db675f096b404593ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid enum value. <a href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">More...</a><br /></td></tr>
494<tr class="separator:ga76f6bb9c4eea73db675f096b404593ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
495<tr class="memitem:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>&#160;&#160;&#160;0x00010004</td></tr>
496<tr class="memdesc:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid value. <a href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">More...</a><br /></td></tr>
497<tr class="separator:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memSeparator" colspan="2">&#160;</td></tr>
498<tr class="memitem:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">GLFW_OUT_OF_MEMORY</a>&#160;&#160;&#160;0x00010005</td></tr>
499<tr class="memdesc:ga9023953a2bcb98c2906afd071d21ee7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">A memory allocation failed. <a href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">More...</a><br /></td></tr>
500<tr class="separator:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
501<tr class="memitem:ga56882b290db23261cc6c053c40c2d08e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>&#160;&#160;&#160;0x00010006</td></tr>
502<tr class="memdesc:ga56882b290db23261cc6c053c40c2d08e"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW could not find support for the requested API on the system. <a href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">More...</a><br /></td></tr>
503<tr class="separator:ga56882b290db23261cc6c053c40c2d08e"><td class="memSeparator" colspan="2">&#160;</td></tr>
504<tr class="memitem:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a>&#160;&#160;&#160;0x00010007</td></tr>
505<tr class="memdesc:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested OpenGL or OpenGL ES version is not available. <a href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">More...</a><br /></td></tr>
506<tr class="separator:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memSeparator" colspan="2">&#160;</td></tr>
507<tr class="memitem:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>&#160;&#160;&#160;0x00010008</td></tr>
508<tr class="memdesc:gad44162d78100ea5e87cdd38426b8c7a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">A platform-specific error occurred that does not match any of the more specific categories. <a href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">More...</a><br /></td></tr>
509<tr class="separator:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
510<tr class="memitem:ga196e125ef261d94184e2b55c05762f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a>&#160;&#160;&#160;0x00010009</td></tr>
511<tr class="memdesc:ga196e125ef261d94184e2b55c05762f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested format is not supported or available. <a href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">More...</a><br /></td></tr>
512<tr class="separator:ga196e125ef261d94184e2b55c05762f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
513<tr class="memitem:gacff24d2757da752ae4c80bf452356487"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a>&#160;&#160;&#160;0x0001000A</td></tr>
514<tr class="memdesc:gacff24d2757da752ae4c80bf452356487"><td class="mdescLeft">&#160;</td><td class="mdescRight">The specified window does not have an OpenGL or OpenGL ES context. <a href="group__errors.html#gacff24d2757da752ae4c80bf452356487">More...</a><br /></td></tr>
515<tr class="separator:gacff24d2757da752ae4c80bf452356487"><td class="memSeparator" colspan="2">&#160;</td></tr>
516<tr class="memitem:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>&#160;&#160;&#160;0x00020001</td></tr>
517<tr class="memdesc:ga54ddb14825a1541a56e22afb5f832a9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus window hint and attribute. <a href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">More...</a><br /></td></tr>
518<tr class="separator:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
519<tr class="memitem:ga39d44b7c056e55e581355a92d240b58a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a>&#160;&#160;&#160;0x00020002</td></tr>
520<tr class="memdesc:ga39d44b7c056e55e581355a92d240b58a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window iconification window attribute. <a href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">More...</a><br /></td></tr>
521<tr class="separator:ga39d44b7c056e55e581355a92d240b58a"><td class="memSeparator" colspan="2">&#160;</td></tr>
522<tr class="memitem:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a>&#160;&#160;&#160;0x00020003</td></tr>
523<tr class="memdesc:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window resize-ability window hint and attribute. <a href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">More...</a><br /></td></tr>
524<tr class="separator:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
525<tr class="memitem:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>&#160;&#160;&#160;0x00020004</td></tr>
526<tr class="memdesc:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window visibility window hint and attribute. <a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">More...</a><br /></td></tr>
527<tr class="separator:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
528<tr class="memitem:ga21b854d36314c94d65aed84405b2f25e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">GLFW_DECORATED</a>&#160;&#160;&#160;0x00020005</td></tr>
529<tr class="memdesc:ga21b854d36314c94d65aed84405b2f25e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">More...</a><br /></td></tr>
530<tr class="separator:ga21b854d36314c94d65aed84405b2f25e"><td class="memSeparator" colspan="2">&#160;</td></tr>
531<tr class="memitem:ga9d9874fc928200136a6dcdad726aa252"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">GLFW_AUTO_ICONIFY</a>&#160;&#160;&#160;0x00020006</td></tr>
532<tr class="memdesc:ga9d9874fc928200136a6dcdad726aa252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window auto-iconification window hint and attribute. <a href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">More...</a><br /></td></tr>
533<tr class="separator:ga9d9874fc928200136a6dcdad726aa252"><td class="memSeparator" colspan="2">&#160;</td></tr>
534<tr class="memitem:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">GLFW_FLOATING</a>&#160;&#160;&#160;0x00020007</td></tr>
535<tr class="memdesc:ga7fb0be51407783b41adbf5bec0b09d80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">More...</a><br /></td></tr>
536<tr class="separator:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
537<tr class="memitem:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>&#160;&#160;&#160;0x00020008</td></tr>
538<tr class="memdesc:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window maximization window hint and attribute. <a href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">More...</a><br /></td></tr>
539<tr class="separator:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memSeparator" colspan="2">&#160;</td></tr>
540<tr class="memitem:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">GLFW_CENTER_CURSOR</a>&#160;&#160;&#160;0x00020009</td></tr>
541<tr class="memdesc:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cursor centering window hint. <a href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">More...</a><br /></td></tr>
542<tr class="separator:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memSeparator" colspan="2">&#160;</td></tr>
543<tr class="memitem:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>&#160;&#160;&#160;0x0002000A</td></tr>
544<tr class="memdesc:ga60a0578c3b9449027d683a9c6abb9f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window framebuffer transparency hint and attribute. <a href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">More...</a><br /></td></tr>
545<tr class="separator:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
546<tr class="memitem:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a>&#160;&#160;&#160;0x0002000B</td></tr>
547<tr class="memdesc:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mouse cursor hover window attribute. <a href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">More...</a><br /></td></tr>
548<tr class="separator:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
549<tr class="memitem:gafa94b1da34bfd6488c0d709761504dfc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">GLFW_FOCUS_ON_SHOW</a>&#160;&#160;&#160;0x0002000C</td></tr>
550<tr class="memdesc:gafa94b1da34bfd6488c0d709761504dfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus on calling show window hint and attribute. <a href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">More...</a><br /></td></tr>
551<tr class="separator:gafa94b1da34bfd6488c0d709761504dfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
552<tr class="memitem:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a>&#160;&#160;&#160;0x00021001</td></tr>
553<tr class="memdesc:gaf78ed8e417dbcc1e354906cc2708c982"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">More...</a><br /></td></tr>
554<tr class="separator:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memSeparator" colspan="2">&#160;</td></tr>
555<tr class="memitem:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a>&#160;&#160;&#160;0x00021002</td></tr>
556<tr class="memdesc:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">More...</a><br /></td></tr>
557<tr class="separator:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
558<tr class="memitem:gab292ea403db6d514537b515311bf9ae3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a>&#160;&#160;&#160;0x00021003</td></tr>
559<tr class="memdesc:gab292ea403db6d514537b515311bf9ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gab292ea403db6d514537b515311bf9ae3">More...</a><br /></td></tr>
560<tr class="separator:gab292ea403db6d514537b515311bf9ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
561<tr class="memitem:gafed79a3f468997877da86c449bd43e8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafed79a3f468997877da86c449bd43e8c">GLFW_ALPHA_BITS</a>&#160;&#160;&#160;0x00021004</td></tr>
562<tr class="memdesc:gafed79a3f468997877da86c449bd43e8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafed79a3f468997877da86c449bd43e8c">More...</a><br /></td></tr>
563<tr class="separator:gafed79a3f468997877da86c449bd43e8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
564<tr class="memitem:ga318a55eac1fee57dfe593b6d38149d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">GLFW_DEPTH_BITS</a>&#160;&#160;&#160;0x00021005</td></tr>
565<tr class="memdesc:ga318a55eac1fee57dfe593b6d38149d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">More...</a><br /></td></tr>
566<tr class="separator:ga318a55eac1fee57dfe593b6d38149d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
567<tr class="memitem:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">GLFW_STENCIL_BITS</a>&#160;&#160;&#160;0x00021006</td></tr>
568<tr class="memdesc:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">More...</a><br /></td></tr>
569<tr class="separator:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memSeparator" colspan="2">&#160;</td></tr>
570<tr class="memitem:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">GLFW_ACCUM_RED_BITS</a>&#160;&#160;&#160;0x00021007</td></tr>
571<tr class="memdesc:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">More...</a><br /></td></tr>
572<tr class="separator:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
573<tr class="memitem:ga65713cee1326f8e9d806fdf93187b471"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">GLFW_ACCUM_GREEN_BITS</a>&#160;&#160;&#160;0x00021008</td></tr>
574<tr class="memdesc:ga65713cee1326f8e9d806fdf93187b471"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">More...</a><br /></td></tr>
575<tr class="separator:ga65713cee1326f8e9d806fdf93187b471"><td class="memSeparator" colspan="2">&#160;</td></tr>
576<tr class="memitem:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">GLFW_ACCUM_BLUE_BITS</a>&#160;&#160;&#160;0x00021009</td></tr>
577<tr class="memdesc:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">More...</a><br /></td></tr>
578<tr class="separator:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
579<tr class="memitem:gae829b55591c18169a40ab4067a041b1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae829b55591c18169a40ab4067a041b1f">GLFW_ACCUM_ALPHA_BITS</a>&#160;&#160;&#160;0x0002100A</td></tr>
580<tr class="memdesc:gae829b55591c18169a40ab4067a041b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gae829b55591c18169a40ab4067a041b1f">More...</a><br /></td></tr>
581<tr class="separator:gae829b55591c18169a40ab4067a041b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
582<tr class="memitem:gab05108c5029443b371112b031d1fa174"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab05108c5029443b371112b031d1fa174">GLFW_AUX_BUFFERS</a>&#160;&#160;&#160;0x0002100B</td></tr>
583<tr class="memdesc:gab05108c5029443b371112b031d1fa174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer auxiliary buffer hint. <a href="group__window.html#gab05108c5029443b371112b031d1fa174">More...</a><br /></td></tr>
584<tr class="separator:gab05108c5029443b371112b031d1fa174"><td class="memSeparator" colspan="2">&#160;</td></tr>
585<tr class="memitem:ga83d991efca02537e2d69969135b77b03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga83d991efca02537e2d69969135b77b03">GLFW_STEREO</a>&#160;&#160;&#160;0x0002100C</td></tr>
586<tr class="memdesc:ga83d991efca02537e2d69969135b77b03"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL stereoscopic rendering hint. <a href="group__window.html#ga83d991efca02537e2d69969135b77b03">More...</a><br /></td></tr>
587<tr class="separator:ga83d991efca02537e2d69969135b77b03"><td class="memSeparator" colspan="2">&#160;</td></tr>
588<tr class="memitem:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">GLFW_SAMPLES</a>&#160;&#160;&#160;0x0002100D</td></tr>
589<tr class="memdesc:ga2cdf86fdcb7722fb8829c4e201607535"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer MSAA samples hint. <a href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">More...</a><br /></td></tr>
590<tr class="separator:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memSeparator" colspan="2">&#160;</td></tr>
591<tr class="memitem:ga444a8f00414a63220591f9fdb7b5642b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">GLFW_SRGB_CAPABLE</a>&#160;&#160;&#160;0x0002100E</td></tr>
592<tr class="memdesc:ga444a8f00414a63220591f9fdb7b5642b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer sRGB hint. <a href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">More...</a><br /></td></tr>
593<tr class="separator:ga444a8f00414a63220591f9fdb7b5642b"><td class="memSeparator" colspan="2">&#160;</td></tr>
594<tr class="memitem:ga0f20825e6e47ee8ba389024519682212"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a>&#160;&#160;&#160;0x0002100F</td></tr>
595<tr class="memdesc:ga0f20825e6e47ee8ba389024519682212"><td class="mdescLeft">&#160;</td><td class="mdescRight">Monitor refresh rate hint. <a href="group__window.html#ga0f20825e6e47ee8ba389024519682212">More...</a><br /></td></tr>
596<tr class="separator:ga0f20825e6e47ee8ba389024519682212"><td class="memSeparator" colspan="2">&#160;</td></tr>
597<tr class="memitem:ga714a5d569e8a274ea58fdfa020955339"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">GLFW_DOUBLEBUFFER</a>&#160;&#160;&#160;0x00021010</td></tr>
598<tr class="memdesc:ga714a5d569e8a274ea58fdfa020955339"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer double buffering hint. <a href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">More...</a><br /></td></tr>
599<tr class="separator:ga714a5d569e8a274ea58fdfa020955339"><td class="memSeparator" colspan="2">&#160;</td></tr>
600<tr class="memitem:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a>&#160;&#160;&#160;0x00022001</td></tr>
601<tr class="memdesc:ga649309cf72a3d3de5b1348ca7936c95b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API hint and attribute. <a href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">More...</a><br /></td></tr>
602<tr class="separator:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memSeparator" colspan="2">&#160;</td></tr>
603<tr class="memitem:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>&#160;&#160;&#160;0x00022002</td></tr>
604<tr class="memdesc:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API major version hint and attribute. <a href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">More...</a><br /></td></tr>
605<tr class="separator:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
606<tr class="memitem:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>&#160;&#160;&#160;0x00022003</td></tr>
607<tr class="memdesc:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API minor version hint and attribute. <a href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">More...</a><br /></td></tr>
608<tr class="separator:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
609<tr class="memitem:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">GLFW_CONTEXT_REVISION</a>&#160;&#160;&#160;0x00022004</td></tr>
610<tr class="memdesc:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API revision number hint and attribute. <a href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">More...</a><br /></td></tr>
611<tr class="separator:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memSeparator" colspan="2">&#160;</td></tr>
612<tr class="memitem:gade3593916b4c507900aa2d6844810e00"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gade3593916b4c507900aa2d6844810e00">GLFW_CONTEXT_ROBUSTNESS</a>&#160;&#160;&#160;0x00022005</td></tr>
613<tr class="memdesc:gade3593916b4c507900aa2d6844810e00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context robustness hint and attribute. <a href="group__window.html#gade3593916b4c507900aa2d6844810e00">More...</a><br /></td></tr>
614<tr class="separator:gade3593916b4c507900aa2d6844810e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
615<tr class="memitem:ga13d24b12465da8b28985f46c8557925b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga13d24b12465da8b28985f46c8557925b">GLFW_OPENGL_FORWARD_COMPAT</a>&#160;&#160;&#160;0x00022006</td></tr>
616<tr class="memdesc:ga13d24b12465da8b28985f46c8557925b"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL forward-compatibility hint and attribute. <a href="group__window.html#ga13d24b12465da8b28985f46c8557925b">More...</a><br /></td></tr>
617<tr class="separator:ga13d24b12465da8b28985f46c8557925b"><td class="memSeparator" colspan="2">&#160;</td></tr>
618<tr class="memitem:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">GLFW_OPENGL_DEBUG_CONTEXT</a>&#160;&#160;&#160;0x00022007</td></tr>
619<tr class="memdesc:ga87ec2df0b915201e950ca42d5d0831e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Debug mode context hint and attribute. <a href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">More...</a><br /></td></tr>
620<tr class="separator:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
621<tr class="memitem:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">GLFW_OPENGL_PROFILE</a>&#160;&#160;&#160;0x00022008</td></tr>
622<tr class="memdesc:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL profile hint and attribute. <a href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">More...</a><br /></td></tr>
623<tr class="separator:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
624<tr class="memitem:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a>&#160;&#160;&#160;0x00022009</td></tr>
625<tr class="memdesc:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context flush-on-release hint and attribute. <a href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">More...</a><br /></td></tr>
626<tr class="separator:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memSeparator" colspan="2">&#160;</td></tr>
627<tr class="memitem:ga5a52fdfd46d8249c211f923675728082"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a>&#160;&#160;&#160;0x0002200A</td></tr>
628<tr class="memdesc:ga5a52fdfd46d8249c211f923675728082"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context error suppression hint and attribute. <a href="group__window.html#ga5a52fdfd46d8249c211f923675728082">More...</a><br /></td></tr>
629<tr class="separator:ga5a52fdfd46d8249c211f923675728082"><td class="memSeparator" colspan="2">&#160;</td></tr>
630<tr class="memitem:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">GLFW_CONTEXT_CREATION_API</a>&#160;&#160;&#160;0x0002200B</td></tr>
631<tr class="memdesc:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context creation API hint and attribute. <a href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">More...</a><br /></td></tr>
632<tr class="separator:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memSeparator" colspan="2">&#160;</td></tr>
633<tr class="memitem:ga620bc4280c7eab81ac9f02204500ed47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">GLFW_SCALE_TO_MONITOR</a>&#160;&#160;&#160;0x0002200C</td></tr>
634<tr class="memdesc:ga620bc4280c7eab81ac9f02204500ed47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window content area scaling window <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">window hint</a>. <a href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">More...</a><br /></td></tr>
635<tr class="separator:ga620bc4280c7eab81ac9f02204500ed47"><td class="memSeparator" colspan="2">&#160;</td></tr>
636<tr class="memitem:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">GLFW_COCOA_RETINA_FRAMEBUFFER</a>&#160;&#160;&#160;0x00023001</td></tr>
637<tr class="memdesc:gab6ef2d02eb55800d249ccf1af253c35e"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">window hint</a>. <a href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">More...</a><br /></td></tr>
638<tr class="separator:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memSeparator" colspan="2">&#160;</td></tr>
639<tr class="memitem:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">GLFW_COCOA_FRAME_NAME</a>&#160;&#160;&#160;0x00023002</td></tr>
640<tr class="memdesc:ga70fa0fbc745de6aa824df79a580e84b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_FRAME_NAME_hint">window hint</a>. <a href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">More...</a><br /></td></tr>
641<tr class="separator:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
642<tr class="memitem:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">GLFW_COCOA_GRAPHICS_SWITCHING</a>&#160;&#160;&#160;0x00023003</td></tr>
643<tr class="memdesc:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_GRAPHICS_SWITCHING_hint">window hint</a>. <a href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">More...</a><br /></td></tr>
644<tr class="separator:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memSeparator" colspan="2">&#160;</td></tr>
645<tr class="memitem:gae5a9ea2fccccd92edbd343fc56461114"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">GLFW_X11_CLASS_NAME</a>&#160;&#160;&#160;0x00024001</td></tr>
646<tr class="memdesc:gae5a9ea2fccccd92edbd343fc56461114"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">More...</a><br /></td></tr>
647<tr class="separator:gae5a9ea2fccccd92edbd343fc56461114"><td class="memSeparator" colspan="2">&#160;</td></tr>
648<tr class="memitem:ga494c3c0d911e4b860b946530a3e389e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">GLFW_X11_INSTANCE_NAME</a>&#160;&#160;&#160;0x00024002</td></tr>
649<tr class="memdesc:ga494c3c0d911e4b860b946530a3e389e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">More...</a><br /></td></tr>
650<tr class="separator:ga494c3c0d911e4b860b946530a3e389e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
651<tr class="memitem:a8f6dcdc968d214ff14779564f1389264"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264">GLFW_NO_API</a>&#160;&#160;&#160;0</td></tr>
652<tr class="separator:a8f6dcdc968d214ff14779564f1389264"><td class="memSeparator" colspan="2">&#160;</td></tr>
653<tr class="memitem:a01b3f66db266341425e9abee6b257db2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a01b3f66db266341425e9abee6b257db2">GLFW_OPENGL_API</a>&#160;&#160;&#160;0x00030001</td></tr>
654<tr class="separator:a01b3f66db266341425e9abee6b257db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
655<tr class="memitem:a28d9b3bc6c2a522d815c8e146595051f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f">GLFW_OPENGL_ES_API</a>&#160;&#160;&#160;0x00030002</td></tr>
656<tr class="separator:a28d9b3bc6c2a522d815c8e146595051f"><td class="memSeparator" colspan="2">&#160;</td></tr>
657<tr class="memitem:a8b306cb27f5bb0d6d67c7356a0e0fc34"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34">GLFW_NO_ROBUSTNESS</a>&#160;&#160;&#160;0</td></tr>
658<tr class="separator:a8b306cb27f5bb0d6d67c7356a0e0fc34"><td class="memSeparator" colspan="2">&#160;</td></tr>
659<tr class="memitem:aee84a679230d205005e22487ff678a85"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aee84a679230d205005e22487ff678a85">GLFW_NO_RESET_NOTIFICATION</a>&#160;&#160;&#160;0x00031001</td></tr>
660<tr class="separator:aee84a679230d205005e22487ff678a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
661<tr class="memitem:aec1132f245143fc915b2f0995228564c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aec1132f245143fc915b2f0995228564c">GLFW_LOSE_CONTEXT_ON_RESET</a>&#160;&#160;&#160;0x00031002</td></tr>
662<tr class="separator:aec1132f245143fc915b2f0995228564c"><td class="memSeparator" colspan="2">&#160;</td></tr>
663<tr class="memitem:ad6f2335d6f21cc9bab96633b1c111d5f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f">GLFW_OPENGL_ANY_PROFILE</a>&#160;&#160;&#160;0</td></tr>
664<tr class="separator:ad6f2335d6f21cc9bab96633b1c111d5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
665<tr class="memitem:af094bb16da76f66ebceb19ee213b3de8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8">GLFW_OPENGL_CORE_PROFILE</a>&#160;&#160;&#160;0x00032001</td></tr>
666<tr class="separator:af094bb16da76f66ebceb19ee213b3de8"><td class="memSeparator" colspan="2">&#160;</td></tr>
667<tr class="memitem:ac06b663d79c8fcf04669cc8fcc0b7670"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670">GLFW_OPENGL_COMPAT_PROFILE</a>&#160;&#160;&#160;0x00032002</td></tr>
668<tr class="separator:ac06b663d79c8fcf04669cc8fcc0b7670"><td class="memSeparator" colspan="2">&#160;</td></tr>
669<tr class="memitem:aade31da5b884a84a7625c6b059b9132c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>&#160;&#160;&#160;0x00033001</td></tr>
670<tr class="separator:aade31da5b884a84a7625c6b059b9132c"><td class="memSeparator" colspan="2">&#160;</td></tr>
671<tr class="memitem:ae3bbe2315b7691ab088159eb6c9110fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc">GLFW_STICKY_KEYS</a>&#160;&#160;&#160;0x00033002</td></tr>
672<tr class="separator:ae3bbe2315b7691ab088159eb6c9110fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
673<tr class="memitem:a4d7ce8ce71030c3b04e2b78145bc59d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1">GLFW_STICKY_MOUSE_BUTTONS</a>&#160;&#160;&#160;0x00033003</td></tr>
674<tr class="separator:a4d7ce8ce71030c3b04e2b78145bc59d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
675<tr class="memitem:a07b84de0b52143e1958f88a7d9105947"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947">GLFW_LOCK_KEY_MODS</a>&#160;&#160;&#160;0x00033004</td></tr>
676<tr class="separator:a07b84de0b52143e1958f88a7d9105947"><td class="memSeparator" colspan="2">&#160;</td></tr>
677<tr class="memitem:aeeda1be76a44a1fc97c1282e06281fbb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb">GLFW_RAW_MOUSE_MOTION</a>&#160;&#160;&#160;0x00033005</td></tr>
678<tr class="separator:aeeda1be76a44a1fc97c1282e06281fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
679<tr class="memitem:ae04dd25c8577e19fa8c97368561f6c68"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68">GLFW_CURSOR_NORMAL</a>&#160;&#160;&#160;0x00034001</td></tr>
680<tr class="separator:ae04dd25c8577e19fa8c97368561f6c68"><td class="memSeparator" colspan="2">&#160;</td></tr>
681<tr class="memitem:ac4d5cb9d78de8573349c58763d53bf11"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11">GLFW_CURSOR_HIDDEN</a>&#160;&#160;&#160;0x00034002</td></tr>
682<tr class="separator:ac4d5cb9d78de8573349c58763d53bf11"><td class="memSeparator" colspan="2">&#160;</td></tr>
683<tr class="memitem:a2315b99a329ce53e6a13a9d46fd5ca88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88">GLFW_CURSOR_DISABLED</a>&#160;&#160;&#160;0x00034003</td></tr>
684<tr class="separator:a2315b99a329ce53e6a13a9d46fd5ca88"><td class="memSeparator" colspan="2">&#160;</td></tr>
685<tr class="memitem:a6b47d806f285efe9bfd7aeec667297ee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee">GLFW_ANY_RELEASE_BEHAVIOR</a>&#160;&#160;&#160;0</td></tr>
686<tr class="separator:a6b47d806f285efe9bfd7aeec667297ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
687<tr class="memitem:a999961d391db49cb4f949c1dece0e13b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b">GLFW_RELEASE_BEHAVIOR_FLUSH</a>&#160;&#160;&#160;0x00035001</td></tr>
688<tr class="separator:a999961d391db49cb4f949c1dece0e13b"><td class="memSeparator" colspan="2">&#160;</td></tr>
689<tr class="memitem:afca09088eccacdce4b59036cfae349c5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#afca09088eccacdce4b59036cfae349c5">GLFW_RELEASE_BEHAVIOR_NONE</a>&#160;&#160;&#160;0x00035002</td></tr>
690<tr class="separator:afca09088eccacdce4b59036cfae349c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
691<tr class="memitem:a0494c9bfd3f584ab41e6dbeeaa0e6a19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19">GLFW_NATIVE_CONTEXT_API</a>&#160;&#160;&#160;0x00036001</td></tr>
692<tr class="separator:a0494c9bfd3f584ab41e6dbeeaa0e6a19"><td class="memSeparator" colspan="2">&#160;</td></tr>
693<tr class="memitem:a03cf65c9ab01fc8b872ba58842c531c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9">GLFW_EGL_CONTEXT_API</a>&#160;&#160;&#160;0x00036002</td></tr>
694<tr class="separator:a03cf65c9ab01fc8b872ba58842c531c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
695<tr class="memitem:afd34a473af9fa81f317910ea371b19e3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3">GLFW_OSMESA_CONTEXT_API</a>&#160;&#160;&#160;0x00036003</td></tr>
696<tr class="separator:afd34a473af9fa81f317910ea371b19e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
697<tr class="memitem:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">GLFW_ARROW_CURSOR</a>&#160;&#160;&#160;0x00036001</td></tr>
698<tr class="memdesc:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The regular arrow cursor shape. <a href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">More...</a><br /></td></tr>
699<tr class="separator:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
700<tr class="memitem:ga36185f4375eaada1b04e431244774c86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">GLFW_IBEAM_CURSOR</a>&#160;&#160;&#160;0x00036002</td></tr>
701<tr class="memdesc:ga36185f4375eaada1b04e431244774c86"><td class="mdescLeft">&#160;</td><td class="mdescRight">The text input I-beam cursor shape. <a href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">More...</a><br /></td></tr>
702<tr class="separator:ga36185f4375eaada1b04e431244774c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
703<tr class="memitem:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">GLFW_CROSSHAIR_CURSOR</a>&#160;&#160;&#160;0x00036003</td></tr>
704<tr class="memdesc:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">The crosshair shape. <a href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">More...</a><br /></td></tr>
705<tr class="separator:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
706<tr class="memitem:ga1db35e20849e0837c82e3dc1fd797263"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">GLFW_HAND_CURSOR</a>&#160;&#160;&#160;0x00036004</td></tr>
707<tr class="memdesc:ga1db35e20849e0837c82e3dc1fd797263"><td class="mdescLeft">&#160;</td><td class="mdescRight">The hand shape. <a href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">More...</a><br /></td></tr>
708<tr class="separator:ga1db35e20849e0837c82e3dc1fd797263"><td class="memSeparator" colspan="2">&#160;</td></tr>
709<tr class="memitem:gabb3eb0109f11bb808fc34659177ca962"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036005</td></tr>
710<tr class="memdesc:gabb3eb0109f11bb808fc34659177ca962"><td class="mdescLeft">&#160;</td><td class="mdescRight">The horizontal resize arrow shape. <a href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">More...</a><br /></td></tr>
711<tr class="separator:gabb3eb0109f11bb808fc34659177ca962"><td class="memSeparator" colspan="2">&#160;</td></tr>
712<tr class="memitem:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">GLFW_VRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036006</td></tr>
713<tr class="memdesc:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The vertical resize arrow shape. <a href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">More...</a><br /></td></tr>
714<tr class="separator:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memSeparator" colspan="2">&#160;</td></tr>
715<tr class="memitem:abe11513fd1ffbee5bb9b173f06028b9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a>&#160;&#160;&#160;0x00040001</td></tr>
716<tr class="separator:abe11513fd1ffbee5bb9b173f06028b9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
717<tr class="memitem:aab64b25921ef21d89252d6f0a71bfc32"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a>&#160;&#160;&#160;0x00040002</td></tr>
718<tr class="separator:aab64b25921ef21d89252d6f0a71bfc32"><td class="memSeparator" colspan="2">&#160;</td></tr>
719<tr class="memitem:gab9c0534709fda03ec8959201da3a9a18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a>&#160;&#160;&#160;0x00050001</td></tr>
720<tr class="memdesc:gab9c0534709fda03ec8959201da3a9a18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick hat buttons init hint. <a href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">More...</a><br /></td></tr>
721<tr class="separator:gab9c0534709fda03ec8959201da3a9a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
722<tr class="memitem:gab937983147a3158d45f88fad7129d9f2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a>&#160;&#160;&#160;0x00051001</td></tr>
723<tr class="memdesc:gab937983147a3158d45f88fad7129d9f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#gab937983147a3158d45f88fad7129d9f2">More...</a><br /></td></tr>
724<tr class="separator:gab937983147a3158d45f88fad7129d9f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
725<tr class="memitem:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a>&#160;&#160;&#160;0x00051002</td></tr>
726<tr class="memdesc:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">More...</a><br /></td></tr>
727<tr class="separator:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
728<tr class="memitem:a7a2edf2c18446833d27d07f1b7f3d571"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a>&#160;&#160;&#160;-1</td></tr>
729<tr class="separator:a7a2edf2c18446833d27d07f1b7f3d571"><td class="memSeparator" colspan="2">&#160;</td></tr>
730<tr class="memitem:aa97755eb47e4bf2727ad45d610e18206"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206">GLAPIENTRY</a>&#160;&#160;&#160;APIENTRY</td></tr>
731<tr class="separator:aa97755eb47e4bf2727ad45d610e18206"><td class="memSeparator" colspan="2">&#160;</td></tr>
732<tr><td colspan="2"><div class="groupHeader">GLFW version macros</div></td></tr>
733<tr class="memitem:ga6337d9ea43b22fc529b2bba066b4a576"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a>&#160;&#160;&#160;3</td></tr>
734<tr class="memdesc:ga6337d9ea43b22fc529b2bba066b4a576"><td class="mdescLeft">&#160;</td><td class="mdescRight">The major version number of the GLFW header. <a href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">More...</a><br /></td></tr>
735<tr class="separator:ga6337d9ea43b22fc529b2bba066b4a576"><td class="memSeparator" colspan="2">&#160;</td></tr>
736<tr class="memitem:gaf80d40f0aea7088ff337606e9c48f7a3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a>&#160;&#160;&#160;3</td></tr>
737<tr class="memdesc:gaf80d40f0aea7088ff337606e9c48f7a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The minor version number of the GLFW header. <a href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">More...</a><br /></td></tr>
738<tr class="separator:gaf80d40f0aea7088ff337606e9c48f7a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
739<tr class="memitem:gab72ae2e2035d9ea461abc3495eac0502"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">GLFW_VERSION_REVISION</a>&#160;&#160;&#160;5</td></tr>
740<tr class="memdesc:gab72ae2e2035d9ea461abc3495eac0502"><td class="mdescLeft">&#160;</td><td class="mdescRight">The revision number of the GLFW header. <a href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">More...</a><br /></td></tr>
741<tr class="separator:gab72ae2e2035d9ea461abc3495eac0502"><td class="memSeparator" colspan="2">&#160;</td></tr>
742<tr><td colspan="2"><div class="groupHeader">Key and button actions</div></td></tr>
743<tr class="memitem:gada11d965c4da13090ad336e030e4d11f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gada11d965c4da13090ad336e030e4d11f">GLFW_RELEASE</a>&#160;&#160;&#160;0</td></tr>
744<tr class="memdesc:gada11d965c4da13090ad336e030e4d11f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The key or mouse button was released. <a href="group__input.html#gada11d965c4da13090ad336e030e4d11f">More...</a><br /></td></tr>
745<tr class="separator:gada11d965c4da13090ad336e030e4d11f"><td class="memSeparator" colspan="2">&#160;</td></tr>
746<tr class="memitem:ga2485743d0b59df3791c45951c4195265"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>&#160;&#160;&#160;1</td></tr>
747<tr class="memdesc:ga2485743d0b59df3791c45951c4195265"><td class="mdescLeft">&#160;</td><td class="mdescRight">The key or mouse button was pressed. <a href="group__input.html#ga2485743d0b59df3791c45951c4195265">More...</a><br /></td></tr>
748<tr class="separator:ga2485743d0b59df3791c45951c4195265"><td class="memSeparator" colspan="2">&#160;</td></tr>
749<tr class="memitem:gac96fd3b9fc66c6f0eebaf6532595338f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f">GLFW_REPEAT</a>&#160;&#160;&#160;2</td></tr>
750<tr class="memdesc:gac96fd3b9fc66c6f0eebaf6532595338f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The key was held down until it repeated. <a href="group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f">More...</a><br /></td></tr>
751<tr class="separator:gac96fd3b9fc66c6f0eebaf6532595338f"><td class="memSeparator" colspan="2">&#160;</td></tr>
752</table><table class="memberdecls">
753<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
754Typedefs</h2></td></tr>
755<tr class="memitem:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>) (void)</td></tr>
756<tr class="memdesc:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Client API function pointer type. <a href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">More...</a><br /></td></tr>
757<tr class="separator:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memSeparator" colspan="2">&#160;</td></tr>
758<tr class="memitem:ga70c01918dc9d233a4fbe0681a43018af"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>) (void)</td></tr>
759<tr class="memdesc:ga70c01918dc9d233a4fbe0681a43018af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vulkan API function pointer type. <a href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">More...</a><br /></td></tr>
760<tr class="separator:ga70c01918dc9d233a4fbe0681a43018af"><td class="memSeparator" colspan="2">&#160;</td></tr>
761<tr class="memitem:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></td></tr>
762<tr class="memdesc:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque monitor object. <a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">More...</a><br /></td></tr>
763<tr class="separator:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
764<tr class="memitem:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></td></tr>
765<tr class="memdesc:ga3c96d80d363e67d13a41b5d1821f3242"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque window object. <a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">More...</a><br /></td></tr>
766<tr class="separator:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memSeparator" colspan="2">&#160;</td></tr>
767<tr class="memitem:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></td></tr>
768<tr class="memdesc:ga89261ae18c75e863aaf2656ecdd238f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque cursor object. <a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">More...</a><br /></td></tr>
769<tr class="separator:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
770<tr class="memitem:ga8184701785c096b3862a75cda1bf44a3"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>) (int error_code, const char *description)</td></tr>
771<tr class="memdesc:ga8184701785c096b3862a75cda1bf44a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for error callbacks. <a href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">More...</a><br /></td></tr>
772<tr class="separator:ga8184701785c096b3862a75cda1bf44a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
773<tr class="memitem:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
774<tr class="memdesc:gabe287973a21a8f927cde4db06b8dcbe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window position callbacks. <a href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">More...</a><br /></td></tr>
775<tr class="separator:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
776<tr class="memitem:gaec0282944bb810f6f3163ec02da90350"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
777<tr class="memdesc:gaec0282944bb810f6f3163ec02da90350"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window size callbacks. <a href="group__window.html#gaec0282944bb810f6f3163ec02da90350">More...</a><br /></td></tr>
778<tr class="separator:gaec0282944bb810f6f3163ec02da90350"><td class="memSeparator" colspan="2">&#160;</td></tr>
779<tr class="memitem:gabf859b936d80961b7d39013a9694cc3e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
780<tr class="memdesc:gabf859b936d80961b7d39013a9694cc3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window close callbacks. <a href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">More...</a><br /></td></tr>
781<tr class="separator:gabf859b936d80961b7d39013a9694cc3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
782<tr class="memitem:ga431663a1427d2eb3a273bc398b6737b5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
783<tr class="memdesc:ga431663a1427d2eb3a273bc398b6737b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content refresh callbacks. <a href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">More...</a><br /></td></tr>
784<tr class="separator:ga431663a1427d2eb3a273bc398b6737b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
785<tr class="memitem:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int focused)</td></tr>
786<tr class="memdesc:gabc58c47e9d93f6eb1862d615c3680f46"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window focus callbacks. <a href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">More...</a><br /></td></tr>
787<tr class="separator:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
788<tr class="memitem:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int iconified)</td></tr>
789<tr class="memdesc:ga35c658cccba236f26e7adee0e25f6a4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window iconify callbacks. <a href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">More...</a><br /></td></tr>
790<tr class="separator:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
791<tr class="memitem:ga3017196fdaec33ac3e095765176c2a90"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int maximized)</td></tr>
792<tr class="memdesc:ga3017196fdaec33ac3e095765176c2a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window maximize callbacks. <a href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">More...</a><br /></td></tr>
793<tr class="separator:ga3017196fdaec33ac3e095765176c2a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
794<tr class="memitem:gae18026e294dde685ed2e5f759533144d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
795<tr class="memdesc:gae18026e294dde685ed2e5f759533144d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for framebuffer size callbacks. <a href="group__window.html#gae18026e294dde685ed2e5f759533144d">More...</a><br /></td></tr>
796<tr class="separator:gae18026e294dde685ed2e5f759533144d"><td class="memSeparator" colspan="2">&#160;</td></tr>
797<tr class="memitem:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float xscale, float yscale)</td></tr>
798<tr class="memdesc:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content scale callbacks. <a href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">More...</a><br /></td></tr>
799<tr class="separator:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
800<tr class="memitem:ga0184dcb59f6d85d735503dcaae809727"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button, int action, int mods)</td></tr>
801<tr class="memdesc:ga0184dcb59f6d85d735503dcaae809727"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for mouse button callbacks. <a href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">More...</a><br /></td></tr>
802<tr class="separator:ga0184dcb59f6d85d735503dcaae809727"><td class="memSeparator" colspan="2">&#160;</td></tr>
803<tr class="memitem:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
804<tr class="memdesc:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor position callbacks. <a href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">More...</a><br /></td></tr>
805<tr class="separator:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memSeparator" colspan="2">&#160;</td></tr>
806<tr class="memitem:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int entered)</td></tr>
807<tr class="memdesc:gaa93dc4818ac9ab32532909d53a337cbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor enter/leave callbacks. <a href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">More...</a><br /></td></tr>
808<tr class="separator:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
809<tr class="memitem:gaf656112c33de3efdb227fa58f0134cf5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xoffset, double yoffset)</td></tr>
810<tr class="memdesc:gaf656112c33de3efdb227fa58f0134cf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for scroll callbacks. <a href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">More...</a><br /></td></tr>
811<tr class="separator:gaf656112c33de3efdb227fa58f0134cf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
812<tr class="memitem:ga5bd751b27b90f865d2ea613533f0453c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key, int scancode, int action, int mods)</td></tr>
813<tr class="memdesc:ga5bd751b27b90f865d2ea613533f0453c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for keyboard key callbacks. <a href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">More...</a><br /></td></tr>
814<tr class="separator:ga5bd751b27b90f865d2ea613533f0453c"><td class="memSeparator" colspan="2">&#160;</td></tr>
815<tr class="memitem:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint)</td></tr>
816<tr class="memdesc:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character callbacks. <a href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">More...</a><br /></td></tr>
817<tr class="separator:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
818<tr class="memitem:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint, int mods)</td></tr>
819<tr class="memdesc:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character with modifiers callbacks. <a href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">More...</a><br /></td></tr>
820<tr class="separator:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
821<tr class="memitem:gaaba73c3274062c18723b7f05862d94b2"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int path_count, const char *paths[])</td></tr>
822<tr class="memdesc:gaaba73c3274062c18723b7f05862d94b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for path drop callbacks. <a href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">More...</a><br /></td></tr>
823<tr class="separator:gaaba73c3274062c18723b7f05862d94b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
824<tr class="memitem:gaabe16caca8dea952504dfdebdf4cd249"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>) (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int event)</td></tr>
825<tr class="memdesc:gaabe16caca8dea952504dfdebdf4cd249"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for monitor configuration callbacks. <a href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">More...</a><br /></td></tr>
826<tr class="separator:gaabe16caca8dea952504dfdebdf4cd249"><td class="memSeparator" colspan="2">&#160;</td></tr>
827<tr class="memitem:gaa21ad5986ae9a26077a40142efb56243"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>) (int jid, int event)</td></tr>
828<tr class="memdesc:gaa21ad5986ae9a26077a40142efb56243"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for joystick configuration callbacks. <a href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">More...</a><br /></td></tr>
829<tr class="separator:gaa21ad5986ae9a26077a40142efb56243"><td class="memSeparator" colspan="2">&#160;</td></tr>
830<tr class="memitem:ga902c2816ac9b34b757282daab59b2565"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a></td></tr>
831<tr class="memdesc:ga902c2816ac9b34b757282daab59b2565"><td class="mdescLeft">&#160;</td><td class="mdescRight">Video mode type. <a href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">More...</a><br /></td></tr>
832<tr class="separator:ga902c2816ac9b34b757282daab59b2565"><td class="memSeparator" colspan="2">&#160;</td></tr>
833<tr class="memitem:ga939cf093cb0af0498b7b54dc2e181404"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a></td></tr>
834<tr class="memdesc:ga939cf093cb0af0498b7b54dc2e181404"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamma ramp. <a href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">More...</a><br /></td></tr>
835<tr class="separator:ga939cf093cb0af0498b7b54dc2e181404"><td class="memSeparator" colspan="2">&#160;</td></tr>
836<tr class="memitem:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWimage.html">GLFWimage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a></td></tr>
837<tr class="memdesc:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Image data. <a href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">More...</a><br /></td></tr>
838<tr class="separator:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
839<tr class="memitem:ga61acfb1f28f751438dd221225c5e725d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a></td></tr>
840<tr class="memdesc:ga61acfb1f28f751438dd221225c5e725d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad input state. <a href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">More...</a><br /></td></tr>
841<tr class="separator:ga61acfb1f28f751438dd221225c5e725d"><td class="memSeparator" colspan="2">&#160;</td></tr>
842</table><table class="memberdecls">
843<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
844Functions</h2></td></tr>
845<tr class="memitem:ga317aac130a235ab08c6db0834907d85e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> (void)</td></tr>
846<tr class="memdesc:ga317aac130a235ab08c6db0834907d85e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the GLFW library. <a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">More...</a><br /></td></tr>
847<tr class="separator:ga317aac130a235ab08c6db0834907d85e"><td class="memSeparator" colspan="2">&#160;</td></tr>
848<tr class="memitem:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> (void)</td></tr>
849<tr class="memdesc:gaaae48c0a18607ea4a4ba951d939f0901"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminates the GLFW library. <a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">More...</a><br /></td></tr>
850<tr class="separator:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memSeparator" colspan="2">&#160;</td></tr>
851<tr class="memitem:ga110fd1d3f0412822b4f1908c026f724a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a> (int hint, int value)</td></tr>
852<tr class="memdesc:ga110fd1d3f0412822b4f1908c026f724a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified init hint to the desired value. <a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">More...</a><br /></td></tr>
853<tr class="separator:ga110fd1d3f0412822b4f1908c026f724a"><td class="memSeparator" colspan="2">&#160;</td></tr>
854<tr class="memitem:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> (int *major, int *minor, int *rev)</td></tr>
855<tr class="memdesc:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the version of the GLFW library. <a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">More...</a><br /></td></tr>
856<tr class="separator:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memSeparator" colspan="2">&#160;</td></tr>
857<tr class="memitem:ga026abd003c8e6501981ab1662062f1c0"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a> (void)</td></tr>
858<tr class="memdesc:ga026abd003c8e6501981ab1662062f1c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a string describing the compile-time configuration. <a href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">More...</a><br /></td></tr>
859<tr class="separator:ga026abd003c8e6501981ab1662062f1c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
860<tr class="memitem:ga944986b4ec0b928d488141f92982aa18"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> (const char **description)</td></tr>
861<tr class="memdesc:ga944986b4ec0b928d488141f92982aa18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns and clears the last error for the calling thread. <a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">More...</a><br /></td></tr>
862<tr class="separator:ga944986b4ec0b928d488141f92982aa18"><td class="memSeparator" colspan="2">&#160;</td></tr>
863<tr class="memitem:gaff45816610d53f0b83656092a4034f40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a> (<a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> callback)</td></tr>
864<tr class="memdesc:gaff45816610d53f0b83656092a4034f40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the error callback. <a href="group__init.html#gaff45816610d53f0b83656092a4034f40">More...</a><br /></td></tr>
865<tr class="separator:gaff45816610d53f0b83656092a4034f40"><td class="memSeparator" colspan="2">&#160;</td></tr>
866<tr class="memitem:ga70b1156d5d24e9928f145d6c864369d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a> (int *count)</td></tr>
867<tr class="memdesc:ga70b1156d5d24e9928f145d6c864369d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the currently connected monitors. <a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">More...</a><br /></td></tr>
868<tr class="separator:ga70b1156d5d24e9928f145d6c864369d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
869<tr class="memitem:gac3adb24947eb709e1874028272e5dfc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a> (void)</td></tr>
870<tr class="memdesc:gac3adb24947eb709e1874028272e5dfc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the primary monitor. <a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">More...</a><br /></td></tr>
871<tr class="separator:gac3adb24947eb709e1874028272e5dfc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
872<tr class="memitem:ga102f54e7acc9149edbcf0997152df8c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos)</td></tr>
873<tr class="memdesc:ga102f54e7acc9149edbcf0997152df8c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the position of the monitor's viewport on the virtual screen. <a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">More...</a><br /></td></tr>
874<tr class="separator:ga102f54e7acc9149edbcf0997152df8c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
875<tr class="memitem:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos, int *width, int *height)</td></tr>
876<tr class="memdesc:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the work area of the monitor. <a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">More...</a><br /></td></tr>
877<tr class="separator:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
878<tr class="memitem:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *widthMM, int *heightMM)</td></tr>
879<tr class="memdesc:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the physical size of the monitor. <a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">More...</a><br /></td></tr>
880<tr class="separator:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
881<tr class="memitem:gad3152e84465fa620b601265ebfcdb21b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float *xscale, float *yscale)</td></tr>
882<tr class="memdesc:gad3152e84465fa620b601265ebfcdb21b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified monitor. <a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">More...</a><br /></td></tr>
883<tr class="separator:gad3152e84465fa620b601265ebfcdb21b"><td class="memSeparator" colspan="2">&#160;</td></tr>
884<tr class="memitem:ga7af83e13489d90379588fb331b9e4b68"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
885<tr class="memdesc:ga7af83e13489d90379588fb331b9e4b68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified monitor. <a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">More...</a><br /></td></tr>
886<tr class="separator:ga7af83e13489d90379588fb331b9e4b68"><td class="memSeparator" colspan="2">&#160;</td></tr>
887<tr class="memitem:ga702750e24313a686d3637297b6e85fda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, void *pointer)</td></tr>
888<tr class="memdesc:ga702750e24313a686d3637297b6e85fda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified monitor. <a href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">More...</a><br /></td></tr>
889<tr class="separator:ga702750e24313a686d3637297b6e85fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
890<tr class="memitem:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
891<tr class="memdesc:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified monitor. <a href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">More...</a><br /></td></tr>
892<tr class="separator:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
893<tr class="memitem:gab39df645587c8518192aa746c2fb06c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a> (<a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> callback)</td></tr>
894<tr class="memdesc:gab39df645587c8518192aa746c2fb06c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the monitor configuration callback. <a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">More...</a><br /></td></tr>
895<tr class="separator:gab39df645587c8518192aa746c2fb06c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
896<tr class="memitem:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *count)</td></tr>
897<tr class="memdesc:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the available video modes for the specified monitor. <a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">More...</a><br /></td></tr>
898<tr class="separator:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
899<tr class="memitem:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
900<tr class="memdesc:gaba376fa7e76634b4788bddc505d6c9d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current mode of the specified monitor. <a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">More...</a><br /></td></tr>
901<tr class="separator:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
902<tr class="memitem:ga6ac582625c990220785ddd34efa3169a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float gamma)</td></tr>
903<tr class="memdesc:ga6ac582625c990220785ddd34efa3169a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a gamma ramp and sets it for the specified monitor. <a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">More...</a><br /></td></tr>
904<tr class="separator:ga6ac582625c990220785ddd34efa3169a"><td class="memSeparator" colspan="2">&#160;</td></tr>
905<tr class="memitem:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
906<tr class="memdesc:ga76ba90debcf0062b5c4b73052b24f96f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">More...</a><br /></td></tr>
907<tr class="separator:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memSeparator" colspan="2">&#160;</td></tr>
908<tr class="memitem:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *ramp)</td></tr>
909<tr class="memdesc:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">More...</a><br /></td></tr>
910<tr class="separator:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
911<tr class="memitem:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a> (void)</td></tr>
912<tr class="memdesc:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets all window hints to their default values. <a href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">More...</a><br /></td></tr>
913<tr class="separator:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
914<tr class="memitem:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> (int hint, int value)</td></tr>
915<tr class="memdesc:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">More...</a><br /></td></tr>
916<tr class="separator:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memSeparator" colspan="2">&#160;</td></tr>
917<tr class="memitem:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a> (int hint, const char *value)</td></tr>
918<tr class="memdesc:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">More...</a><br /></td></tr>
919<tr class="separator:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
920<tr class="memitem:ga3555a418df92ad53f917597fe2f64aeb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> (int width, int height, const char *title, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *share)</td></tr>
921<tr class="memdesc:ga3555a418df92ad53f917597fe2f64aeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a window and its associated context. <a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">More...</a><br /></td></tr>
922<tr class="separator:ga3555a418df92ad53f917597fe2f64aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
923<tr class="memitem:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
924<tr class="memdesc:gacdf43e51376051d2c091662e9fe3d7b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the specified window and its context. <a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">More...</a><br /></td></tr>
925<tr class="separator:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
926<tr class="memitem:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
927<tr class="memdesc:ga24e02fbfefbb81fc45320989f8140ab5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks the close flag of the specified window. <a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">More...</a><br /></td></tr>
928<tr class="separator:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
929<tr class="memitem:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int value)</td></tr>
930<tr class="memdesc:ga49c449dde2a6f87d996f4daaa09d6708"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close flag of the specified window. <a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">More...</a><br /></td></tr>
931<tr class="separator:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memSeparator" colspan="2">&#160;</td></tr>
932<tr class="memitem:ga5d877f09e968cef7a360b513306f17ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *title)</td></tr>
933<tr class="memdesc:ga5d877f09e968cef7a360b513306f17ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the title of the specified window. <a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">More...</a><br /></td></tr>
934<tr class="separator:ga5d877f09e968cef7a360b513306f17ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
935<tr class="memitem:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int count, const <a class="el" href="structGLFWimage.html">GLFWimage</a> *images)</td></tr>
936<tr class="memdesc:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the icon for the specified window. <a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">More...</a><br /></td></tr>
937<tr class="separator:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
938<tr class="memitem:ga73cb526c000876fd8ddf571570fdb634"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *xpos, int *ypos)</td></tr>
939<tr class="memdesc:ga73cb526c000876fd8ddf571570fdb634"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the content area of the specified window. <a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">More...</a><br /></td></tr>
940<tr class="separator:ga73cb526c000876fd8ddf571570fdb634"><td class="memSeparator" colspan="2">&#160;</td></tr>
941<tr class="memitem:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
942<tr class="memdesc:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the content area of the specified window. <a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">More...</a><br /></td></tr>
943<tr class="separator:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
944<tr class="memitem:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
945<tr class="memdesc:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the content area of the specified window. <a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">More...</a><br /></td></tr>
946<tr class="separator:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
947<tr class="memitem:gac314fa6cec7d2d307be9963e2709cc90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int minwidth, int minheight, int maxwidth, int maxheight)</td></tr>
948<tr class="memdesc:gac314fa6cec7d2d307be9963e2709cc90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size limits of the specified window. <a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">More...</a><br /></td></tr>
949<tr class="separator:gac314fa6cec7d2d307be9963e2709cc90"><td class="memSeparator" colspan="2">&#160;</td></tr>
950<tr class="memitem:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int numer, int denom)</td></tr>
951<tr class="memdesc:ga72ac8cb1ee2e312a878b55153d81b937"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the aspect ratio of the specified window. <a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">More...</a><br /></td></tr>
952<tr class="separator:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memSeparator" colspan="2">&#160;</td></tr>
953<tr class="memitem:ga371911f12c74c504dd8d47d832d095cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
954<tr class="memdesc:ga371911f12c74c504dd8d47d832d095cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size of the content area of the specified window. <a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">More...</a><br /></td></tr>
955<tr class="separator:ga371911f12c74c504dd8d47d832d095cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
956<tr class="memitem:ga0e2637a4161afb283f5300c7f94785c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
957<tr class="memdesc:ga0e2637a4161afb283f5300c7f94785c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the framebuffer of the specified window. <a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">More...</a><br /></td></tr>
958<tr class="separator:ga0e2637a4161afb283f5300c7f94785c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
959<tr class="memitem:ga1a9fd382058c53101b21cf211898f1f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *left, int *top, int *right, int *bottom)</td></tr>
960<tr class="memdesc:ga1a9fd382058c53101b21cf211898f1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the frame of the window. <a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">More...</a><br /></td></tr>
961<tr class="separator:ga1a9fd382058c53101b21cf211898f1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
962<tr class="memitem:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float *xscale, float *yscale)</td></tr>
963<tr class="memdesc:gaf5d31de9c19c4f994facea64d2b3106c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified window. <a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">More...</a><br /></td></tr>
964<tr class="separator:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memSeparator" colspan="2">&#160;</td></tr>
965<tr class="memitem:gad09f0bd7a6307c4533b7061828480a84"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
966<tr class="memdesc:gad09f0bd7a6307c4533b7061828480a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the opacity of the whole window. <a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">More...</a><br /></td></tr>
967<tr class="separator:gad09f0bd7a6307c4533b7061828480a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
968<tr class="memitem:gac31caeb3d1088831b13d2c8a156802e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float opacity)</td></tr>
969<tr class="memdesc:gac31caeb3d1088831b13d2c8a156802e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the opacity of the whole window. <a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">More...</a><br /></td></tr>
970<tr class="separator:gac31caeb3d1088831b13d2c8a156802e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
971<tr class="memitem:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
972<tr class="memdesc:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iconifies the specified window. <a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">More...</a><br /></td></tr>
973<tr class="separator:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
974<tr class="memitem:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
975<tr class="memdesc:ga52527a5904b47d802b6b4bb519cdebc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores the specified window. <a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">More...</a><br /></td></tr>
976<tr class="separator:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
977<tr class="memitem:ga3f541387449d911274324ae7f17ec56b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
978<tr class="memdesc:ga3f541387449d911274324ae7f17ec56b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximizes the specified window. <a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">More...</a><br /></td></tr>
979<tr class="separator:ga3f541387449d911274324ae7f17ec56b"><td class="memSeparator" colspan="2">&#160;</td></tr>
980<tr class="memitem:ga61be47917b72536a148300f46494fc66"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
981<tr class="memdesc:ga61be47917b72536a148300f46494fc66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the specified window visible. <a href="group__window.html#ga61be47917b72536a148300f46494fc66">More...</a><br /></td></tr>
982<tr class="separator:ga61be47917b72536a148300f46494fc66"><td class="memSeparator" colspan="2">&#160;</td></tr>
983<tr class="memitem:ga49401f82a1ba5f15db5590728314d47c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
984<tr class="memdesc:ga49401f82a1ba5f15db5590728314d47c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hides the specified window. <a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">More...</a><br /></td></tr>
985<tr class="separator:ga49401f82a1ba5f15db5590728314d47c"><td class="memSeparator" colspan="2">&#160;</td></tr>
986<tr class="memitem:ga873780357abd3f3a081d71a40aae45a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
987<tr class="memdesc:ga873780357abd3f3a081d71a40aae45a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Brings the specified window to front and sets input focus. <a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">More...</a><br /></td></tr>
988<tr class="separator:ga873780357abd3f3a081d71a40aae45a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
989<tr class="memitem:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
990<tr class="memdesc:ga2f8d59323fc4692c1d54ba08c863a703"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests user attention to the specified window. <a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">More...</a><br /></td></tr>
991<tr class="separator:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memSeparator" colspan="2">&#160;</td></tr>
992<tr class="memitem:ga4d766499ac02c60f02221a9dfab87299"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
993<tr class="memdesc:ga4d766499ac02c60f02221a9dfab87299"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the monitor that the window uses for full screen mode. <a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">More...</a><br /></td></tr>
994<tr class="separator:ga4d766499ac02c60f02221a9dfab87299"><td class="memSeparator" colspan="2">&#160;</td></tr>
995<tr class="memitem:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int xpos, int ypos, int width, int height, int refreshRate)</td></tr>
996<tr class="memdesc:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mode, monitor, video mode and placement of a window. <a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">More...</a><br /></td></tr>
997<tr class="separator:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
998<tr class="memitem:gacccb29947ea4b16860ebef42c2cb9337"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib)</td></tr>
999<tr class="memdesc:gacccb29947ea4b16860ebef42c2cb9337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an attribute of the specified window. <a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">More...</a><br /></td></tr>
1000<tr class="separator:gacccb29947ea4b16860ebef42c2cb9337"><td class="memSeparator" colspan="2">&#160;</td></tr>
1001<tr class="memitem:gace2afda29b4116ec012e410a6819033e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib, int value)</td></tr>
1002<tr class="memdesc:gace2afda29b4116ec012e410a6819033e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an attribute of the specified window. <a href="group__window.html#gace2afda29b4116ec012e410a6819033e">More...</a><br /></td></tr>
1003<tr class="separator:gace2afda29b4116ec012e410a6819033e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1004<tr class="memitem:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, void *pointer)</td></tr>
1005<tr class="memdesc:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified window. <a href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">More...</a><br /></td></tr>
1006<tr class="separator:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memSeparator" colspan="2">&#160;</td></tr>
1007<tr class="memitem:gae77a4add0d2023ca21ff1443ced01653"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
1008<tr class="memdesc:gae77a4add0d2023ca21ff1443ced01653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified window. <a href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">More...</a><br /></td></tr>
1009<tr class="separator:gae77a4add0d2023ca21ff1443ced01653"><td class="memSeparator" colspan="2">&#160;</td></tr>
1010<tr class="memitem:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> callback)</td></tr>
1011<tr class="memdesc:ga08bdfbba88934f9c4f92fd757979ac74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position callback for the specified window. <a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">More...</a><br /></td></tr>
1012<tr class="separator:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memSeparator" colspan="2">&#160;</td></tr>
1013<tr class="memitem:gad91b8b047a0c4c6033c38853864c34f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> callback)</td></tr>
1014<tr class="memdesc:gad91b8b047a0c4c6033c38853864c34f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size callback for the specified window. <a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">More...</a><br /></td></tr>
1015<tr class="separator:gad91b8b047a0c4c6033c38853864c34f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1016<tr class="memitem:gada646d775a7776a95ac000cfc1885331"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> callback)</td></tr>
1017<tr class="memdesc:gada646d775a7776a95ac000cfc1885331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close callback for the specified window. <a href="group__window.html#gada646d775a7776a95ac000cfc1885331">More...</a><br /></td></tr>
1018<tr class="separator:gada646d775a7776a95ac000cfc1885331"><td class="memSeparator" colspan="2">&#160;</td></tr>
1019<tr class="memitem:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> callback)</td></tr>
1020<tr class="memdesc:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the refresh callback for the specified window. <a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">More...</a><br /></td></tr>
1021<tr class="separator:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1022<tr class="memitem:gac2d83c4a10f071baf841f6730528e66c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> callback)</td></tr>
1023<tr class="memdesc:gac2d83c4a10f071baf841f6730528e66c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the focus callback for the specified window. <a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">More...</a><br /></td></tr>
1024<tr class="separator:gac2d83c4a10f071baf841f6730528e66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1025<tr class="memitem:gac793e9efd255567b5fb8b445052cfd3e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> callback)</td></tr>
1026<tr class="memdesc:gac793e9efd255567b5fb8b445052cfd3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the iconify callback for the specified window. <a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">More...</a><br /></td></tr>
1027<tr class="separator:gac793e9efd255567b5fb8b445052cfd3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1028<tr class="memitem:gacbe64c339fbd94885e62145563b6dc93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> callback)</td></tr>
1029<tr class="memdesc:gacbe64c339fbd94885e62145563b6dc93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximize callback for the specified window. <a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">More...</a><br /></td></tr>
1030<tr class="separator:gacbe64c339fbd94885e62145563b6dc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
1031<tr class="memitem:gab3fb7c3366577daef18c0023e2a8591f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> callback)</td></tr>
1032<tr class="memdesc:gab3fb7c3366577daef18c0023e2a8591f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the framebuffer resize callback for the specified window. <a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">More...</a><br /></td></tr>
1033<tr class="separator:gab3fb7c3366577daef18c0023e2a8591f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1034<tr class="memitem:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> callback)</td></tr>
1035<tr class="memdesc:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the window content scale callback for the specified window. <a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">More...</a><br /></td></tr>
1036<tr class="separator:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1037<tr class="memitem:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> (void)</td></tr>
1038<tr class="memdesc:ga37bd57223967b4211d60ca1a0bf3c832"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processes all pending events. <a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">More...</a><br /></td></tr>
1039<tr class="separator:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memSeparator" colspan="2">&#160;</td></tr>
1040<tr class="memitem:ga554e37d781f0a997656c26b2c56c835e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> (void)</td></tr>
1041<tr class="memdesc:ga554e37d781f0a997656c26b2c56c835e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits until events are queued and processes them. <a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">More...</a><br /></td></tr>
1042<tr class="separator:ga554e37d781f0a997656c26b2c56c835e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1043<tr class="memitem:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> (double timeout)</td></tr>
1044<tr class="memdesc:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits with timeout until events are queued and processes them. <a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">More...</a><br /></td></tr>
1045<tr class="separator:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
1046<tr class="memitem:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> (void)</td></tr>
1047<tr class="memdesc:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Posts an empty event to the event queue. <a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">More...</a><br /></td></tr>
1048<tr class="separator:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1049<tr class="memitem:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode)</td></tr>
1050<tr class="memdesc:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of an input option for the specified window. <a href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">More...</a><br /></td></tr>
1051<tr class="separator:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
1052<tr class="memitem:gaa92336e173da9c8834558b54ee80563b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode, int value)</td></tr>
1053<tr class="memdesc:gaa92336e173da9c8834558b54ee80563b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an input option for the specified window. <a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">More...</a><br /></td></tr>
1054<tr class="separator:gaa92336e173da9c8834558b54ee80563b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1055<tr class="memitem:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> (void)</td></tr>
1056<tr class="memdesc:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether raw mouse motion is supported. <a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">More...</a><br /></td></tr>
1057<tr class="separator:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
1058<tr class="memitem:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a> (int key, int scancode)</td></tr>
1059<tr class="memdesc:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layout-specific name of the specified printable key. <a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">More...</a><br /></td></tr>
1060<tr class="separator:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1061<tr class="memitem:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a> (int key)</td></tr>
1062<tr class="memdesc:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the platform-specific scancode of the specified key. <a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">More...</a><br /></td></tr>
1063<tr class="separator:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1064<tr class="memitem:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key)</td></tr>
1065<tr class="memdesc:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a keyboard key for the specified window. <a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">More...</a><br /></td></tr>
1066<tr class="separator:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
1067<tr class="memitem:gac1473feacb5996c01a7a5a33b5066704"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button)</td></tr>
1068<tr class="memdesc:gac1473feacb5996c01a7a5a33b5066704"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a mouse button for the specified window. <a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">More...</a><br /></td></tr>
1069<tr class="separator:gac1473feacb5996c01a7a5a33b5066704"><td class="memSeparator" colspan="2">&#160;</td></tr>
1070<tr class="memitem:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double *xpos, double *ypos)</td></tr>
1071<tr class="memdesc:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the cursor relative to the content area of the window. <a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">More...</a><br /></td></tr>
1072<tr class="separator:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
1073<tr class="memitem:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
1074<tr class="memdesc:ga04b03af936d906ca123c8f4ee08b39e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the cursor, relative to the content area of the window. <a href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">More...</a><br /></td></tr>
1075<tr class="separator:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1076<tr class="memitem:ga556f604f73af156c0db0e97c081373c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> (const <a class="el" href="structGLFWimage.html">GLFWimage</a> *image, int xhot, int yhot)</td></tr>
1077<tr class="memdesc:ga556f604f73af156c0db0e97c081373c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a custom cursor. <a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">More...</a><br /></td></tr>
1078<tr class="separator:ga556f604f73af156c0db0e97c081373c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
1079<tr class="memitem:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a> (int shape)</td></tr>
1080<tr class="memdesc:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a cursor with a standard shape. <a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">More...</a><br /></td></tr>
1081<tr class="separator:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1082<tr class="memitem:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a> (<a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
1083<tr class="memdesc:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a cursor. <a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">More...</a><br /></td></tr>
1084<tr class="separator:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1085<tr class="memitem:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
1086<tr class="memdesc:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor for the window. <a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">More...</a><br /></td></tr>
1087<tr class="separator:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1088<tr class="memitem:ga1caf18159767e761185e49a3be019f8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> callback)</td></tr>
1089<tr class="memdesc:ga1caf18159767e761185e49a3be019f8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the key callback. <a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">More...</a><br /></td></tr>
1090<tr class="separator:ga1caf18159767e761185e49a3be019f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
1091<tr class="memitem:gab25c4a220fd8f5717718dbc487828996"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> callback)</td></tr>
1092<tr class="memdesc:gab25c4a220fd8f5717718dbc487828996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character callback. <a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">More...</a><br /></td></tr>
1093<tr class="separator:gab25c4a220fd8f5717718dbc487828996"><td class="memSeparator" colspan="2">&#160;</td></tr>
1094<tr class="memitem:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> callback)</td></tr>
1095<tr class="memdesc:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character with modifiers callback. <a href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">More...</a><br /></td></tr>
1096<tr class="separator:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1097<tr class="memitem:ga6ab84420974d812bee700e45284a723c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> callback)</td></tr>
1098<tr class="memdesc:ga6ab84420974d812bee700e45284a723c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mouse button callback. <a href="group__input.html#ga6ab84420974d812bee700e45284a723c">More...</a><br /></td></tr>
1099<tr class="separator:ga6ab84420974d812bee700e45284a723c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1100<tr class="memitem:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> callback)</td></tr>
1101<tr class="memdesc:gac1f879ab7435d54d4d79bb469fe225d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor position callback. <a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">More...</a><br /></td></tr>
1102<tr class="separator:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1103<tr class="memitem:gad27f8ad0142c038a281466c0966817d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> callback)</td></tr>
1104<tr class="memdesc:gad27f8ad0142c038a281466c0966817d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor enter/leave callback. <a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">More...</a><br /></td></tr>
1105<tr class="separator:gad27f8ad0142c038a281466c0966817d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1106<tr class="memitem:ga571e45a030ae4061f746ed56cb76aede"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> callback)</td></tr>
1107<tr class="memdesc:ga571e45a030ae4061f746ed56cb76aede"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the scroll callback. <a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">More...</a><br /></td></tr>
1108<tr class="separator:ga571e45a030ae4061f746ed56cb76aede"><td class="memSeparator" colspan="2">&#160;</td></tr>
1109<tr class="memitem:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> callback)</td></tr>
1110<tr class="memdesc:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the path drop callback. <a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">More...</a><br /></td></tr>
1111<tr class="separator:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1112<tr class="memitem:gaed0966cee139d815317f9ffcba64c9f1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> (int jid)</td></tr>
1113<tr class="memdesc:gaed0966cee139d815317f9ffcba64c9f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick is present. <a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">More...</a><br /></td></tr>
1114<tr class="separator:gaed0966cee139d815317f9ffcba64c9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
1115<tr class="memitem:gaeb1c0191d3140a233a682987c61eb408"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> (int jid, int *count)</td></tr>
1116<tr class="memdesc:gaeb1c0191d3140a233a682987c61eb408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the values of all axes of the specified joystick. <a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">More...</a><br /></td></tr>
1117<tr class="separator:gaeb1c0191d3140a233a682987c61eb408"><td class="memSeparator" colspan="2">&#160;</td></tr>
1118<tr class="memitem:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> (int jid, int *count)</td></tr>
1119<tr class="memdesc:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all buttons of the specified joystick. <a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">More...</a><br /></td></tr>
1120<tr class="separator:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memSeparator" colspan="2">&#160;</td></tr>
1121<tr class="memitem:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a> (int jid, int *count)</td></tr>
1122<tr class="memdesc:ga06e660841b3e79c54da4f54a932c5a2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all hats of the specified joystick. <a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">More...</a><br /></td></tr>
1123<tr class="separator:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1124<tr class="memitem:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a> (int jid)</td></tr>
1125<tr class="memdesc:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified joystick. <a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">More...</a><br /></td></tr>
1126<tr class="separator:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memSeparator" colspan="2">&#160;</td></tr>
1127<tr class="memitem:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a> (int jid)</td></tr>
1128<tr class="memdesc:ga6659411aec3c7fcef27780e2cb2d9600"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the SDL compatible GUID of the specified joystick. <a href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">More...</a><br /></td></tr>
1129<tr class="separator:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memSeparator" colspan="2">&#160;</td></tr>
1130<tr class="memitem:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> (int jid, void *pointer)</td></tr>
1131<tr class="memdesc:ga6b2f72d64d636b48a727b437cbb7489e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified joystick. <a href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">More...</a><br /></td></tr>
1132<tr class="separator:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1133<tr class="memitem:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a> (int jid)</td></tr>
1134<tr class="memdesc:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified joystick. <a href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">More...</a><br /></td></tr>
1135<tr class="separator:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
1136<tr class="memitem:gad0f676860f329d80f7e47e9f06a96f00"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> (int jid)</td></tr>
1137<tr class="memdesc:gad0f676860f329d80f7e47e9f06a96f00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick has a gamepad mapping. <a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">More...</a><br /></td></tr>
1138<tr class="separator:gad0f676860f329d80f7e47e9f06a96f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
1139<tr class="memitem:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a> (<a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> callback)</td></tr>
1140<tr class="memdesc:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the joystick configuration callback. <a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">More...</a><br /></td></tr>
1141<tr class="separator:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1142<tr class="memitem:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> (const char *string)</td></tr>
1143<tr class="memdesc:gaed5104612f2fa8e66aa6e846652ad00f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds the specified SDL_GameControllerDB gamepad mappings. <a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">More...</a><br /></td></tr>
1144<tr class="separator:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1145<tr class="memitem:ga8aea73a1a25cc6c0486a617019f56728"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a> (int jid)</td></tr>
1146<tr class="memdesc:ga8aea73a1a25cc6c0486a617019f56728"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the human-readable gamepad name for the specified joystick. <a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">More...</a><br /></td></tr>
1147<tr class="separator:ga8aea73a1a25cc6c0486a617019f56728"><td class="memSeparator" colspan="2">&#160;</td></tr>
1148<tr class="memitem:gadccddea8bce6113fa459de379ddaf051"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a> (int jid, <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> *state)</td></tr>
1149<tr class="memdesc:gadccddea8bce6113fa459de379ddaf051"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the state of the specified joystick remapped as a gamepad. <a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">More...</a><br /></td></tr>
1150<tr class="separator:gadccddea8bce6113fa459de379ddaf051"><td class="memSeparator" colspan="2">&#160;</td></tr>
1151<tr class="memitem:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *string)</td></tr>
1152<tr class="memdesc:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the clipboard to the specified string. <a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">More...</a><br /></td></tr>
1153<tr class="separator:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
1154<tr class="memitem:ga71a5b20808ea92193d65c21b82580355"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
1155<tr class="memdesc:ga71a5b20808ea92193d65c21b82580355"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the clipboard as a string. <a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">More...</a><br /></td></tr>
1156<tr class="separator:ga71a5b20808ea92193d65c21b82580355"><td class="memSeparator" colspan="2">&#160;</td></tr>
1157<tr class="memitem:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a> (void)</td></tr>
1158<tr class="memdesc:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the GLFW time. <a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">More...</a><br /></td></tr>
1159<tr class="separator:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1160<tr class="memitem:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> (double time)</td></tr>
1161<tr class="memdesc:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the GLFW time. <a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">More...</a><br /></td></tr>
1162<tr class="separator:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1163<tr class="memitem:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a> (void)</td></tr>
1164<tr class="memdesc:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of the raw timer. <a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">More...</a><br /></td></tr>
1165<tr class="separator:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
1166<tr class="memitem:ga3289ee876572f6e91f06df3a24824443"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> (void)</td></tr>
1167<tr class="memdesc:ga3289ee876572f6e91f06df3a24824443"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the frequency, in Hz, of the raw timer. <a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">More...</a><br /></td></tr>
1168<tr class="separator:ga3289ee876572f6e91f06df3a24824443"><td class="memSeparator" colspan="2">&#160;</td></tr>
1169<tr class="memitem:ga1c04dc242268f827290fe40aa1c91157"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
1170<tr class="memdesc:ga1c04dc242268f827290fe40aa1c91157"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the context of the specified window current for the calling thread. <a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">More...</a><br /></td></tr>
1171<tr class="separator:ga1c04dc242268f827290fe40aa1c91157"><td class="memSeparator" colspan="2">&#160;</td></tr>
1172<tr class="memitem:gad94e80185397a6cf5fe2ab30567af71c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a> (void)</td></tr>
1173<tr class="memdesc:gad94e80185397a6cf5fe2ab30567af71c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the window whose context is current on the calling thread. <a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">More...</a><br /></td></tr>
1174<tr class="separator:gad94e80185397a6cf5fe2ab30567af71c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1175<tr class="memitem:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
1176<tr class="memdesc:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the front and back buffers of the specified window. <a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">More...</a><br /></td></tr>
1177<tr class="separator:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memSeparator" colspan="2">&#160;</td></tr>
1178<tr class="memitem:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> (int interval)</td></tr>
1179<tr class="memdesc:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the swap interval for the current context. <a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">More...</a><br /></td></tr>
1180<tr class="separator:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
1181<tr class="memitem:ga87425065c011cef1ebd6aac75e059dfa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> (const char *extension)</td></tr>
1182<tr class="memdesc:ga87425065c011cef1ebd6aac75e059dfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified extension is available. <a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">More...</a><br /></td></tr>
1183<tr class="separator:ga87425065c011cef1ebd6aac75e059dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
1184<tr class="memitem:ga35f1837e6f666781842483937612f163"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> (const char *procname)</td></tr>
1185<tr class="memdesc:ga35f1837e6f666781842483937612f163"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified function for the current context. <a href="group__context.html#ga35f1837e6f666781842483937612f163">More...</a><br /></td></tr>
1186<tr class="separator:ga35f1837e6f666781842483937612f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
1187<tr class="memitem:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> (void)</td></tr>
1188<tr class="memdesc:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the Vulkan loader and an ICD have been found. <a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">More...</a><br /></td></tr>
1189<tr class="separator:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1190<tr class="memitem:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memItemLeft" align="right" valign="top">const char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> (uint32_t *count)</td></tr>
1191<tr class="memdesc:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the Vulkan instance extensions required by GLFW. <a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">More...</a><br /></td></tr>
1192<tr class="separator:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1193<tr class="memitem:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a> (VkInstance instance, const char *procname)</td></tr>
1194<tr class="memdesc:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified Vulkan instance function. <a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">More...</a><br /></td></tr>
1195<tr class="separator:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1196<tr class="memitem:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</td></tr>
1197<tr class="memdesc:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified queue family can present images. <a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">More...</a><br /></td></tr>
1198<tr class="separator:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
1199<tr class="memitem:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a> (VkInstance instance, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</td></tr>
1200<tr class="memdesc:ga1a24536bec3f80b08ead18e28e6ae965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a Vulkan surface for the specified window. <a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">More...</a><br /></td></tr>
1201<tr class="separator:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memSeparator" colspan="2">&#160;</td></tr>
1202</table>
1203<h2 class="groupheader">Macro Definition Documentation</h2>
1204<a id="a8a8538c5500308b4211844f2fb26c7b9" name="a8a8538c5500308b4211844f2fb26c7b9"></a>
1205<h2 class="memtitle"><span class="permalink"><a href="#a8a8538c5500308b4211844f2fb26c7b9">&#9670;&nbsp;</a></span>GLFW_APIENTRY_DEFINED</h2>
1206
1207<div class="memitem">
1208<div class="memproto">
1209 <table class="memname">
1210 <tr>
1211 <td class="memname">#define GLFW_APIENTRY_DEFINED</td>
1212 </tr>
1213 </table>
1214</div><div class="memdoc">
1215
1216</div>
1217</div>
1218<a id="a8f6dcdc968d214ff14779564f1389264" name="a8f6dcdc968d214ff14779564f1389264"></a>
1219<h2 class="memtitle"><span class="permalink"><a href="#a8f6dcdc968d214ff14779564f1389264">&#9670;&nbsp;</a></span>GLFW_NO_API</h2>
1220
1221<div class="memitem">
1222<div class="memproto">
1223 <table class="memname">
1224 <tr>
1225 <td class="memname">#define GLFW_NO_API&#160;&#160;&#160;0</td>
1226 </tr>
1227 </table>
1228</div><div class="memdoc">
1229
1230</div>
1231</div>
1232<a id="a01b3f66db266341425e9abee6b257db2" name="a01b3f66db266341425e9abee6b257db2"></a>
1233<h2 class="memtitle"><span class="permalink"><a href="#a01b3f66db266341425e9abee6b257db2">&#9670;&nbsp;</a></span>GLFW_OPENGL_API</h2>
1234
1235<div class="memitem">
1236<div class="memproto">
1237 <table class="memname">
1238 <tr>
1239 <td class="memname">#define GLFW_OPENGL_API&#160;&#160;&#160;0x00030001</td>
1240 </tr>
1241 </table>
1242</div><div class="memdoc">
1243
1244</div>
1245</div>
1246<a id="a28d9b3bc6c2a522d815c8e146595051f" name="a28d9b3bc6c2a522d815c8e146595051f"></a>
1247<h2 class="memtitle"><span class="permalink"><a href="#a28d9b3bc6c2a522d815c8e146595051f">&#9670;&nbsp;</a></span>GLFW_OPENGL_ES_API</h2>
1248
1249<div class="memitem">
1250<div class="memproto">
1251 <table class="memname">
1252 <tr>
1253 <td class="memname">#define GLFW_OPENGL_ES_API&#160;&#160;&#160;0x00030002</td>
1254 </tr>
1255 </table>
1256</div><div class="memdoc">
1257
1258</div>
1259</div>
1260<a id="a8b306cb27f5bb0d6d67c7356a0e0fc34" name="a8b306cb27f5bb0d6d67c7356a0e0fc34"></a>
1261<h2 class="memtitle"><span class="permalink"><a href="#a8b306cb27f5bb0d6d67c7356a0e0fc34">&#9670;&nbsp;</a></span>GLFW_NO_ROBUSTNESS</h2>
1262
1263<div class="memitem">
1264<div class="memproto">
1265 <table class="memname">
1266 <tr>
1267 <td class="memname">#define GLFW_NO_ROBUSTNESS&#160;&#160;&#160;0</td>
1268 </tr>
1269 </table>
1270</div><div class="memdoc">
1271
1272</div>
1273</div>
1274<a id="aee84a679230d205005e22487ff678a85" name="aee84a679230d205005e22487ff678a85"></a>
1275<h2 class="memtitle"><span class="permalink"><a href="#aee84a679230d205005e22487ff678a85">&#9670;&nbsp;</a></span>GLFW_NO_RESET_NOTIFICATION</h2>
1276
1277<div class="memitem">
1278<div class="memproto">
1279 <table class="memname">
1280 <tr>
1281 <td class="memname">#define GLFW_NO_RESET_NOTIFICATION&#160;&#160;&#160;0x00031001</td>
1282 </tr>
1283 </table>
1284</div><div class="memdoc">
1285
1286</div>
1287</div>
1288<a id="aec1132f245143fc915b2f0995228564c" name="aec1132f245143fc915b2f0995228564c"></a>
1289<h2 class="memtitle"><span class="permalink"><a href="#aec1132f245143fc915b2f0995228564c">&#9670;&nbsp;</a></span>GLFW_LOSE_CONTEXT_ON_RESET</h2>
1290
1291<div class="memitem">
1292<div class="memproto">
1293 <table class="memname">
1294 <tr>
1295 <td class="memname">#define GLFW_LOSE_CONTEXT_ON_RESET&#160;&#160;&#160;0x00031002</td>
1296 </tr>
1297 </table>
1298</div><div class="memdoc">
1299
1300</div>
1301</div>
1302<a id="ad6f2335d6f21cc9bab96633b1c111d5f" name="ad6f2335d6f21cc9bab96633b1c111d5f"></a>
1303<h2 class="memtitle"><span class="permalink"><a href="#ad6f2335d6f21cc9bab96633b1c111d5f">&#9670;&nbsp;</a></span>GLFW_OPENGL_ANY_PROFILE</h2>
1304
1305<div class="memitem">
1306<div class="memproto">
1307 <table class="memname">
1308 <tr>
1309 <td class="memname">#define GLFW_OPENGL_ANY_PROFILE&#160;&#160;&#160;0</td>
1310 </tr>
1311 </table>
1312</div><div class="memdoc">
1313
1314</div>
1315</div>
1316<a id="af094bb16da76f66ebceb19ee213b3de8" name="af094bb16da76f66ebceb19ee213b3de8"></a>
1317<h2 class="memtitle"><span class="permalink"><a href="#af094bb16da76f66ebceb19ee213b3de8">&#9670;&nbsp;</a></span>GLFW_OPENGL_CORE_PROFILE</h2>
1318
1319<div class="memitem">
1320<div class="memproto">
1321 <table class="memname">
1322 <tr>
1323 <td class="memname">#define GLFW_OPENGL_CORE_PROFILE&#160;&#160;&#160;0x00032001</td>
1324 </tr>
1325 </table>
1326</div><div class="memdoc">
1327
1328</div>
1329</div>
1330<a id="ac06b663d79c8fcf04669cc8fcc0b7670" name="ac06b663d79c8fcf04669cc8fcc0b7670"></a>
1331<h2 class="memtitle"><span class="permalink"><a href="#ac06b663d79c8fcf04669cc8fcc0b7670">&#9670;&nbsp;</a></span>GLFW_OPENGL_COMPAT_PROFILE</h2>
1332
1333<div class="memitem">
1334<div class="memproto">
1335 <table class="memname">
1336 <tr>
1337 <td class="memname">#define GLFW_OPENGL_COMPAT_PROFILE&#160;&#160;&#160;0x00032002</td>
1338 </tr>
1339 </table>
1340</div><div class="memdoc">
1341
1342</div>
1343</div>
1344<a id="aade31da5b884a84a7625c6b059b9132c" name="aade31da5b884a84a7625c6b059b9132c"></a>
1345<h2 class="memtitle"><span class="permalink"><a href="#aade31da5b884a84a7625c6b059b9132c">&#9670;&nbsp;</a></span>GLFW_CURSOR</h2>
1346
1347<div class="memitem">
1348<div class="memproto">
1349 <table class="memname">
1350 <tr>
1351 <td class="memname">#define GLFW_CURSOR&#160;&#160;&#160;0x00033001</td>
1352 </tr>
1353 </table>
1354</div><div class="memdoc">
1355
1356</div>
1357</div>
1358<a id="ae3bbe2315b7691ab088159eb6c9110fc" name="ae3bbe2315b7691ab088159eb6c9110fc"></a>
1359<h2 class="memtitle"><span class="permalink"><a href="#ae3bbe2315b7691ab088159eb6c9110fc">&#9670;&nbsp;</a></span>GLFW_STICKY_KEYS</h2>
1360
1361<div class="memitem">
1362<div class="memproto">
1363 <table class="memname">
1364 <tr>
1365 <td class="memname">#define GLFW_STICKY_KEYS&#160;&#160;&#160;0x00033002</td>
1366 </tr>
1367 </table>
1368</div><div class="memdoc">
1369
1370</div>
1371</div>
1372<a id="a4d7ce8ce71030c3b04e2b78145bc59d1" name="a4d7ce8ce71030c3b04e2b78145bc59d1"></a>
1373<h2 class="memtitle"><span class="permalink"><a href="#a4d7ce8ce71030c3b04e2b78145bc59d1">&#9670;&nbsp;</a></span>GLFW_STICKY_MOUSE_BUTTONS</h2>
1374
1375<div class="memitem">
1376<div class="memproto">
1377 <table class="memname">
1378 <tr>
1379 <td class="memname">#define GLFW_STICKY_MOUSE_BUTTONS&#160;&#160;&#160;0x00033003</td>
1380 </tr>
1381 </table>
1382</div><div class="memdoc">
1383
1384</div>
1385</div>
1386<a id="a07b84de0b52143e1958f88a7d9105947" name="a07b84de0b52143e1958f88a7d9105947"></a>
1387<h2 class="memtitle"><span class="permalink"><a href="#a07b84de0b52143e1958f88a7d9105947">&#9670;&nbsp;</a></span>GLFW_LOCK_KEY_MODS</h2>
1388
1389<div class="memitem">
1390<div class="memproto">
1391 <table class="memname">
1392 <tr>
1393 <td class="memname">#define GLFW_LOCK_KEY_MODS&#160;&#160;&#160;0x00033004</td>
1394 </tr>
1395 </table>
1396</div><div class="memdoc">
1397
1398</div>
1399</div>
1400<a id="aeeda1be76a44a1fc97c1282e06281fbb" name="aeeda1be76a44a1fc97c1282e06281fbb"></a>
1401<h2 class="memtitle"><span class="permalink"><a href="#aeeda1be76a44a1fc97c1282e06281fbb">&#9670;&nbsp;</a></span>GLFW_RAW_MOUSE_MOTION</h2>
1402
1403<div class="memitem">
1404<div class="memproto">
1405 <table class="memname">
1406 <tr>
1407 <td class="memname">#define GLFW_RAW_MOUSE_MOTION&#160;&#160;&#160;0x00033005</td>
1408 </tr>
1409 </table>
1410</div><div class="memdoc">
1411
1412</div>
1413</div>
1414<a id="ae04dd25c8577e19fa8c97368561f6c68" name="ae04dd25c8577e19fa8c97368561f6c68"></a>
1415<h2 class="memtitle"><span class="permalink"><a href="#ae04dd25c8577e19fa8c97368561f6c68">&#9670;&nbsp;</a></span>GLFW_CURSOR_NORMAL</h2>
1416
1417<div class="memitem">
1418<div class="memproto">
1419 <table class="memname">
1420 <tr>
1421 <td class="memname">#define GLFW_CURSOR_NORMAL&#160;&#160;&#160;0x00034001</td>
1422 </tr>
1423 </table>
1424</div><div class="memdoc">
1425
1426</div>
1427</div>
1428<a id="ac4d5cb9d78de8573349c58763d53bf11" name="ac4d5cb9d78de8573349c58763d53bf11"></a>
1429<h2 class="memtitle"><span class="permalink"><a href="#ac4d5cb9d78de8573349c58763d53bf11">&#9670;&nbsp;</a></span>GLFW_CURSOR_HIDDEN</h2>
1430
1431<div class="memitem">
1432<div class="memproto">
1433 <table class="memname">
1434 <tr>
1435 <td class="memname">#define GLFW_CURSOR_HIDDEN&#160;&#160;&#160;0x00034002</td>
1436 </tr>
1437 </table>
1438</div><div class="memdoc">
1439
1440</div>
1441</div>
1442<a id="a2315b99a329ce53e6a13a9d46fd5ca88" name="a2315b99a329ce53e6a13a9d46fd5ca88"></a>
1443<h2 class="memtitle"><span class="permalink"><a href="#a2315b99a329ce53e6a13a9d46fd5ca88">&#9670;&nbsp;</a></span>GLFW_CURSOR_DISABLED</h2>
1444
1445<div class="memitem">
1446<div class="memproto">
1447 <table class="memname">
1448 <tr>
1449 <td class="memname">#define GLFW_CURSOR_DISABLED&#160;&#160;&#160;0x00034003</td>
1450 </tr>
1451 </table>
1452</div><div class="memdoc">
1453
1454</div>
1455</div>
1456<a id="a6b47d806f285efe9bfd7aeec667297ee" name="a6b47d806f285efe9bfd7aeec667297ee"></a>
1457<h2 class="memtitle"><span class="permalink"><a href="#a6b47d806f285efe9bfd7aeec667297ee">&#9670;&nbsp;</a></span>GLFW_ANY_RELEASE_BEHAVIOR</h2>
1458
1459<div class="memitem">
1460<div class="memproto">
1461 <table class="memname">
1462 <tr>
1463 <td class="memname">#define GLFW_ANY_RELEASE_BEHAVIOR&#160;&#160;&#160;0</td>
1464 </tr>
1465 </table>
1466</div><div class="memdoc">
1467
1468</div>
1469</div>
1470<a id="a999961d391db49cb4f949c1dece0e13b" name="a999961d391db49cb4f949c1dece0e13b"></a>
1471<h2 class="memtitle"><span class="permalink"><a href="#a999961d391db49cb4f949c1dece0e13b">&#9670;&nbsp;</a></span>GLFW_RELEASE_BEHAVIOR_FLUSH</h2>
1472
1473<div class="memitem">
1474<div class="memproto">
1475 <table class="memname">
1476 <tr>
1477 <td class="memname">#define GLFW_RELEASE_BEHAVIOR_FLUSH&#160;&#160;&#160;0x00035001</td>
1478 </tr>
1479 </table>
1480</div><div class="memdoc">
1481
1482</div>
1483</div>
1484<a id="afca09088eccacdce4b59036cfae349c5" name="afca09088eccacdce4b59036cfae349c5"></a>
1485<h2 class="memtitle"><span class="permalink"><a href="#afca09088eccacdce4b59036cfae349c5">&#9670;&nbsp;</a></span>GLFW_RELEASE_BEHAVIOR_NONE</h2>
1486
1487<div class="memitem">
1488<div class="memproto">
1489 <table class="memname">
1490 <tr>
1491 <td class="memname">#define GLFW_RELEASE_BEHAVIOR_NONE&#160;&#160;&#160;0x00035002</td>
1492 </tr>
1493 </table>
1494</div><div class="memdoc">
1495
1496</div>
1497</div>
1498<a id="a0494c9bfd3f584ab41e6dbeeaa0e6a19" name="a0494c9bfd3f584ab41e6dbeeaa0e6a19"></a>
1499<h2 class="memtitle"><span class="permalink"><a href="#a0494c9bfd3f584ab41e6dbeeaa0e6a19">&#9670;&nbsp;</a></span>GLFW_NATIVE_CONTEXT_API</h2>
1500
1501<div class="memitem">
1502<div class="memproto">
1503 <table class="memname">
1504 <tr>
1505 <td class="memname">#define GLFW_NATIVE_CONTEXT_API&#160;&#160;&#160;0x00036001</td>
1506 </tr>
1507 </table>
1508</div><div class="memdoc">
1509
1510</div>
1511</div>
1512<a id="a03cf65c9ab01fc8b872ba58842c531c9" name="a03cf65c9ab01fc8b872ba58842c531c9"></a>
1513<h2 class="memtitle"><span class="permalink"><a href="#a03cf65c9ab01fc8b872ba58842c531c9">&#9670;&nbsp;</a></span>GLFW_EGL_CONTEXT_API</h2>
1514
1515<div class="memitem">
1516<div class="memproto">
1517 <table class="memname">
1518 <tr>
1519 <td class="memname">#define GLFW_EGL_CONTEXT_API&#160;&#160;&#160;0x00036002</td>
1520 </tr>
1521 </table>
1522</div><div class="memdoc">
1523
1524</div>
1525</div>
1526<a id="afd34a473af9fa81f317910ea371b19e3" name="afd34a473af9fa81f317910ea371b19e3"></a>
1527<h2 class="memtitle"><span class="permalink"><a href="#afd34a473af9fa81f317910ea371b19e3">&#9670;&nbsp;</a></span>GLFW_OSMESA_CONTEXT_API</h2>
1528
1529<div class="memitem">
1530<div class="memproto">
1531 <table class="memname">
1532 <tr>
1533 <td class="memname">#define GLFW_OSMESA_CONTEXT_API&#160;&#160;&#160;0x00036003</td>
1534 </tr>
1535 </table>
1536</div><div class="memdoc">
1537
1538</div>
1539</div>
1540<a id="abe11513fd1ffbee5bb9b173f06028b9e" name="abe11513fd1ffbee5bb9b173f06028b9e"></a>
1541<h2 class="memtitle"><span class="permalink"><a href="#abe11513fd1ffbee5bb9b173f06028b9e">&#9670;&nbsp;</a></span>GLFW_CONNECTED</h2>
1542
1543<div class="memitem">
1544<div class="memproto">
1545 <table class="memname">
1546 <tr>
1547 <td class="memname">#define GLFW_CONNECTED&#160;&#160;&#160;0x00040001</td>
1548 </tr>
1549 </table>
1550</div><div class="memdoc">
1551
1552</div>
1553</div>
1554<a id="aab64b25921ef21d89252d6f0a71bfc32" name="aab64b25921ef21d89252d6f0a71bfc32"></a>
1555<h2 class="memtitle"><span class="permalink"><a href="#aab64b25921ef21d89252d6f0a71bfc32">&#9670;&nbsp;</a></span>GLFW_DISCONNECTED</h2>
1556
1557<div class="memitem">
1558<div class="memproto">
1559 <table class="memname">
1560 <tr>
1561 <td class="memname">#define GLFW_DISCONNECTED&#160;&#160;&#160;0x00040002</td>
1562 </tr>
1563 </table>
1564</div><div class="memdoc">
1565
1566</div>
1567</div>
1568<a id="a7a2edf2c18446833d27d07f1b7f3d571" name="a7a2edf2c18446833d27d07f1b7f3d571"></a>
1569<h2 class="memtitle"><span class="permalink"><a href="#a7a2edf2c18446833d27d07f1b7f3d571">&#9670;&nbsp;</a></span>GLFW_DONT_CARE</h2>
1570
1571<div class="memitem">
1572<div class="memproto">
1573 <table class="memname">
1574 <tr>
1575 <td class="memname">#define GLFW_DONT_CARE&#160;&#160;&#160;-1</td>
1576 </tr>
1577 </table>
1578</div><div class="memdoc">
1579
1580</div>
1581</div>
1582<a id="aa97755eb47e4bf2727ad45d610e18206" name="aa97755eb47e4bf2727ad45d610e18206"></a>
1583<h2 class="memtitle"><span class="permalink"><a href="#aa97755eb47e4bf2727ad45d610e18206">&#9670;&nbsp;</a></span>GLAPIENTRY</h2>
1584
1585<div class="memitem">
1586<div class="memproto">
1587 <table class="memname">
1588 <tr>
1589 <td class="memname">#define GLAPIENTRY&#160;&#160;&#160;APIENTRY</td>
1590 </tr>
1591 </table>
1592</div><div class="memdoc">
1593
1594</div>
1595</div>
1596</div><!-- contents -->
1597<address class="footer">
1598<p>
1599Last update on Thu Oct 28 2021 for GLFW 3.3.5
1600</p>
1601</address>
1602</body>
1603</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h_source.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h_source.html
new file mode 100644
index 0000000..d4a2feb
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3_8h_source.html
@@ -0,0 +1,1155 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: glfw3.h Source File</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li><li class="navelem"><a class="el" href="dir_ba478fc71671afc03f16a7df0eff1823.html">include</a></li><li class="navelem"><a class="el" href="dir_95e305b1bfdd4b95b22076c452f17802.html">GLFW</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="headertitle"><div class="title">glfw3.h</div></div>
69</div><!--header-->
70<div class="contents">
71<a href="glfw3_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*************************************************************************</span></div>
72<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * GLFW 3.3 - www.glfw.org</span></div>
73<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * A library for OpenGL, window and input</span></div>
74<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *------------------------------------------------------------------------</span></div>
75<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * Copyright (c) 2002-2006 Marcus Geelnard</span></div>
76<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * Copyright (c) 2006-2019 Camilla Löwy &lt;elmindreda@glfw.org&gt;</span></div>
77<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> *</span></div>
78<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * This software is provided &#39;as-is&#39;, without any express or implied</span></div>
79<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * warranty. In no event will the authors be held liable for any damages</span></div>
80<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * arising from the use of this software.</span></div>
81<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div>
82<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * Permission is granted to anyone to use this software for any purpose,</span></div>
83<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * including commercial applications, and to alter it and redistribute it</span></div>
84<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * freely, subject to the following restrictions:</span></div>
85<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
86<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * 1. The origin of this software must not be misrepresented; you must not</span></div>
87<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * claim that you wrote the original software. If you use this software</span></div>
88<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * in a product, an acknowledgment in the product documentation would</span></div>
89<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * be appreciated but is not required.</span></div>
90<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> *</span></div>
91<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * 2. Altered source versions must be plainly marked as such, and must not</span></div>
92<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * be misrepresented as being the original software.</span></div>
93<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> *</span></div>
94<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * 3. This notice may not be removed or altered from any source</span></div>
95<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * distribution.</span></div>
96<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> *</span></div>
97<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> *************************************************************************/</span></div>
98<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
99<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#ifndef _glfw3_h_</span></div>
100<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#define _glfw3_h_</span></div>
101<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
102<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#ifdef __cplusplus</span></div>
103<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
104<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#endif</span></div>
105<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
106<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
107<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/*************************************************************************</span></div>
108<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> * Doxygen documentation</span></div>
109<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> *************************************************************************/</span></div>
110<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
111<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment">/*************************************************************************</span></div>
112<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> * Compiler- and platform-specific preprocessor work</span></div>
113<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> *************************************************************************/</span></div>
114<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
115<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment">/* If we are we on Windows, we want a single define for it.</span></div>
116<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> */</span></div>
117<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor">#if !defined(_WIN32) &amp;&amp; (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))</span></div>
118<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor"> #define _WIN32</span></div>
119<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="preprocessor">#endif </span><span class="comment">/* _WIN32 */</span><span class="preprocessor"></span></div>
120<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
121<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">/* Include because most Windows GLU headers need wchar_t and</span></div>
122<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h.</span></div>
123<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * Include it unconditionally to avoid surprising side-effects.</span></div>
124<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> */</span></div>
125<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor">#include &lt;stddef.h&gt;</span></div>
126<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
127<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment">/* Include because it is needed by Vulkan and related functions.</span></div>
128<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"> * Include it unconditionally to avoid surprising side-effects.</span></div>
129<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"> */</span></div>
130<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
131<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
132<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="preprocessor">#if defined(GLFW_INCLUDE_VULKAN)</span></div>
133<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="preprocessor"> #include &lt;vulkan/vulkan.h&gt;</span></div>
134<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor">#endif </span><span class="comment">/* Vulkan header */</span><span class="preprocessor"></span></div>
135<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
136<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment">/* The Vulkan header may have indirectly included windows.h (because of</span></div>
137<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"> * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it.</span></div>
138<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment"> */</span></div>
139<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
140<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment">/* It is customary to use APIENTRY for OpenGL function pointer declarations on</span></div>
141<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment"> * all platforms. Additionally, the Windows OpenGL header needs APIENTRY.</span></div>
142<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"> */</span></div>
143<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor">#if !defined(APIENTRY)</span></div>
144<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor"> #if defined(_WIN32)</span></div>
145<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="preprocessor"> #define APIENTRY __stdcall</span></div>
146<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="preprocessor"> #else</span></div>
147<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="preprocessor"> #define APIENTRY</span></div>
148<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor"> #endif</span></div>
149<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9"> 127</a></span><span class="preprocessor"> #define GLFW_APIENTRY_DEFINED</span></div>
150<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="preprocessor">#endif </span><span class="comment">/* APIENTRY */</span><span class="preprocessor"></span></div>
151<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
152<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">/* Some Windows OpenGL headers need this.</span></div>
153<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> */</span></div>
154<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="preprocessor">#if !defined(WINGDIAPI) &amp;&amp; defined(_WIN32)</span></div>
155<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="preprocessor"> #define WINGDIAPI __declspec(dllimport)</span></div>
156<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="preprocessor"> #define GLFW_WINGDIAPI_DEFINED</span></div>
157<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="preprocessor">#endif </span><span class="comment">/* WINGDIAPI */</span><span class="preprocessor"></span></div>
158<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
159<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment">/* Some Windows GLU headers need this.</span></div>
160<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment"> */</span></div>
161<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="preprocessor">#if !defined(CALLBACK) &amp;&amp; defined(_WIN32)</span></div>
162<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="preprocessor"> #define CALLBACK __stdcall</span></div>
163<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="preprocessor"> #define GLFW_CALLBACK_DEFINED</span></div>
164<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="preprocessor">#endif </span><span class="comment">/* CALLBACK */</span><span class="preprocessor"></span></div>
165<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
166<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">/* Include the chosen OpenGL or OpenGL ES headers.</span></div>
167<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> */</span></div>
168<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="preprocessor">#if defined(GLFW_INCLUDE_ES1)</span></div>
169<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
170<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="preprocessor"> #include &lt;GLES/gl.h&gt;</span></div>
171<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
172<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor"> #include &lt;GLES/glext.h&gt;</span></div>
173<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="preprocessor"> #endif</span></div>
174<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
175<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES2)</span></div>
176<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
177<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="preprocessor"> #include &lt;GLES2/gl2.h&gt;</span></div>
178<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
179<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
180<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="preprocessor"> #endif</span></div>
181<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
182<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES3)</span></div>
183<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
184<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor"> #include &lt;GLES3/gl3.h&gt;</span></div>
185<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
186<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
187<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor"> #endif</span></div>
188<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
189<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES31)</span></div>
190<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
191<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor"> #include &lt;GLES3/gl31.h&gt;</span></div>
192<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
193<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
194<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="preprocessor"> #endif</span></div>
195<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> </div>
196<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES32)</span></div>
197<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
198<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="preprocessor"> #include &lt;GLES3/gl32.h&gt;</span></div>
199<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
200<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
201<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="preprocessor"> #endif</span></div>
202<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
203<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_GLCOREARB)</span></div>
204<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
205<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="preprocessor"> #if defined(__APPLE__)</span></div>
206<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
207<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor"> #include &lt;OpenGL/gl3.h&gt;</span></div>
208<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
209<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="preprocessor"> #include &lt;OpenGL/gl3ext.h&gt;</span></div>
210<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="preprocessor"> #endif </span><span class="comment">/*GLFW_INCLUDE_GLEXT*/</span><span class="preprocessor"></span></div>
211<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
212<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="preprocessor"> #else </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
213<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
214<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="preprocessor"> #include &lt;GL/glcorearb.h&gt;</span></div>
215<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
216<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="preprocessor"> #include &lt;GL/glext.h&gt;</span></div>
217<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="preprocessor"> #endif</span></div>
218<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
219<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="preprocessor"> #endif </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
220<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
221<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_GLU)</span></div>
222<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
223<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="preprocessor"> #if defined(__APPLE__)</span></div>
224<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
225<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLU)</span></div>
226<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="preprocessor"> #include &lt;OpenGL/glu.h&gt;</span></div>
227<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="preprocessor"> #endif</span></div>
228<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
229<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="preprocessor"> #else </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
230<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
231<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLU)</span></div>
232<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="preprocessor"> #include &lt;GL/glu.h&gt;</span></div>
233<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="preprocessor"> #endif</span></div>
234<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
235<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="preprocessor"> #endif </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
236<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
237<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor">#elif !defined(GLFW_INCLUDE_NONE) &amp;&amp; \</span></div>
238<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="preprocessor"> !defined(__gl_h_) &amp;&amp; \</span></div>
239<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="preprocessor"> !defined(__gles1_gl_h_) &amp;&amp; \</span></div>
240<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="preprocessor"> !defined(__gles2_gl2_h_) &amp;&amp; \</span></div>
241<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor"> !defined(__gles2_gl3_h_) &amp;&amp; \</span></div>
242<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="preprocessor"> !defined(__gles2_gl31_h_) &amp;&amp; \</span></div>
243<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="preprocessor"> !defined(__gles2_gl32_h_) &amp;&amp; \</span></div>
244<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="preprocessor"> !defined(__gl_glcorearb_h_) &amp;&amp; \</span></div>
245<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="preprocessor"> !defined(__gl2_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
246<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="preprocessor"> !defined(__gl3_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
247<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor"> !defined(__gl31_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
248<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="preprocessor"> !defined(__gl32_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
249<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="preprocessor"> !defined(__glcorearb_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
250<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="preprocessor"> !defined(__GL_H__) </span><span class="comment">/*non-standard*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
251<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="preprocessor"> !defined(__gltypes_h_) </span><span class="comment">/*non-standard*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
252<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor"> !defined(__glee_h_) </span><span class="comment">/*non-standard*/</span><span class="preprocessor"></span></div>
253<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
254<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="preprocessor"> #if defined(__APPLE__)</span></div>
255<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
256<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="preprocessor"> #if !defined(GLFW_INCLUDE_GLEXT)</span></div>
257<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="preprocessor"> #define GL_GLEXT_LEGACY</span></div>
258<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="preprocessor"> #endif</span></div>
259<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="preprocessor"> #include &lt;OpenGL/gl.h&gt;</span></div>
260<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
261<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="preprocessor"> #else </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
262<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
263<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="preprocessor"> #include &lt;GL/gl.h&gt;</span></div>
264<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
265<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="preprocessor"> #include &lt;GL/glext.h&gt;</span></div>
266<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="preprocessor"> #endif</span></div>
267<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
268<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="preprocessor"> #endif </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
269<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
270<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="preprocessor">#endif </span><span class="comment">/* OpenGL and OpenGL ES headers */</span><span class="preprocessor"></span></div>
271<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> </div>
272<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="preprocessor">#if defined(GLFW_DLL) &amp;&amp; defined(_GLFW_BUILD_DLL)</span></div>
273<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="comment">/* GLFW_DLL must be defined by applications that are linking against the DLL</span></div>
274<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="comment"> * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW</span></div>
275<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"> * configuration header when compiling the DLL version of the library.</span></div>
276<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment"> */</span></div>
277<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="preprocessor"> #error &quot;You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined&quot;</span></div>
278<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="preprocessor">#endif</span></div>
279<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
280<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="comment">/* GLFWAPI is used to declare public API functions for export</span></div>
281<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="comment"> * from the DLL / shared library / dynamic library.</span></div>
282<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment"> */</span></div>
283<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="preprocessor">#if defined(_WIN32) &amp;&amp; defined(_GLFW_BUILD_DLL)</span></div>
284<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="comment">/* We are building GLFW as a Win32 DLL */</span></div>
285<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span><span class="preprocessor"> #define GLFWAPI __declspec(dllexport)</span></div>
286<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="preprocessor">#elif defined(_WIN32) &amp;&amp; defined(GLFW_DLL)</span></div>
287<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="comment">/* We are calling GLFW as a Win32 DLL */</span></div>
288<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="preprocessor"> #define GLFWAPI __declspec(dllimport)</span></div>
289<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="preprocessor">#elif defined(__GNUC__) &amp;&amp; defined(_GLFW_BUILD_DLL)</span></div>
290<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment">/* We are building GLFW as a shared / dynamic library */</span></div>
291<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="preprocessor"> #define GLFWAPI __attribute__((visibility(&quot;default&quot;</span>)))</div>
292<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="preprocessor">#else</span></div>
293<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="comment">/* We are building or calling GLFW as a static library */</span></div>
294<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span><span class="preprocessor"> #define GLFWAPI</span></div>
295<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span><span class="preprocessor">#endif</span></div>
296<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
297<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
298<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="comment">/*************************************************************************</span></div>
299<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="comment"> * GLFW API tokens</span></div>
300<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span><span class="comment"> *************************************************************************/</span></div>
301<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> </div>
302<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"><a class="line" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576"> 288</a></span><span class="preprocessor">#define GLFW_VERSION_MAJOR 3</span></div>
303<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"><a class="line" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3"> 295</a></span><span class="preprocessor">#define GLFW_VERSION_MINOR 3</span></div>
304<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502"> 302</a></span><span class="preprocessor">#define GLFW_VERSION_REVISION 5</span></div>
305<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"><a class="line" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba"> 313</a></span><span class="preprocessor">#define GLFW_TRUE 1</span></div>
306<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5"> 322</a></span><span class="preprocessor">#define GLFW_FALSE 0</span></div>
307<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> </div>
308<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"><a class="line" href="group__input.html#gada11d965c4da13090ad336e030e4d11f"> 332</a></span><span class="preprocessor">#define GLFW_RELEASE 0</span></div>
309<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"><a class="line" href="group__input.html#ga2485743d0b59df3791c45951c4195265"> 339</a></span><span class="preprocessor">#define GLFW_PRESS 1</span></div>
310<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"><a class="line" href="group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f"> 346</a></span><span class="preprocessor">#define GLFW_REPEAT 2</span></div>
311<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd"> 356</a></span><span class="preprocessor">#define GLFW_HAT_CENTERED 0</span></div>
312<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36"> 357</a></span><span class="preprocessor">#define GLFW_HAT_UP 1</span></div>
313<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5"> 358</a></span><span class="preprocessor">#define GLFW_HAT_RIGHT 2</span></div>
314<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff"> 359</a></span><span class="preprocessor">#define GLFW_HAT_DOWN 4</span></div>
315<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff"> 360</a></span><span class="preprocessor">#define GLFW_HAT_LEFT 8</span></div>
316<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693"> 361</a></span><span class="preprocessor">#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP)</span></div>
317<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5"> 362</a></span><span class="preprocessor">#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)</span></div>
318<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129"> 363</a></span><span class="preprocessor">#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP)</span></div>
319<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19"> 364</a></span><span class="preprocessor">#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN)</span></div>
320<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="comment">/* The unknown key */</span></div>
321<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"><a class="line" href="group__keys.html#ga99aacc875b6b27a072552631e13775c7"> 392</a></span><span class="preprocessor">#define GLFW_KEY_UNKNOWN -1</span></div>
322<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> </div>
323<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span><span class="comment">/* Printable keys */</span></div>
324<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"><a class="line" href="group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014"> 395</a></span><span class="preprocessor">#define GLFW_KEY_SPACE 32</span></div>
325<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24"> 396</a></span><span class="preprocessor">#define GLFW_KEY_APOSTROPHE 39 </span><span class="comment">/* &#39; */</span><span class="preprocessor"></span></div>
326<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"><a class="line" href="group__keys.html#gab3d5d72e59d3055f494627b0a524926c"> 397</a></span><span class="preprocessor">#define GLFW_KEY_COMMA 44 </span><span class="comment">/* , */</span><span class="preprocessor"></span></div>
327<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"><a class="line" href="group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4"> 398</a></span><span class="preprocessor">#define GLFW_KEY_MINUS 45 </span><span class="comment">/* - */</span><span class="preprocessor"></span></div>
328<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"><a class="line" href="group__keys.html#ga37e296b650eab419fc474ff69033d927"> 399</a></span><span class="preprocessor">#define GLFW_KEY_PERIOD 46 </span><span class="comment">/* . */</span><span class="preprocessor"></span></div>
329<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="group__keys.html#gadf3d753b2d479148d711de34b83fd0db"> 400</a></span><span class="preprocessor">#define GLFW_KEY_SLASH 47 </span><span class="comment">/* / */</span><span class="preprocessor"></span></div>
330<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1"> 401</a></span><span class="preprocessor">#define GLFW_KEY_0 48</span></div>
331<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"><a class="line" href="group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f"> 402</a></span><span class="preprocessor">#define GLFW_KEY_1 49</span></div>
332<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"><a class="line" href="group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c"> 403</a></span><span class="preprocessor">#define GLFW_KEY_2 50</span></div>
333<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"><a class="line" href="group__keys.html#ga812f0273fe1a981e1fa002ae73e92271"> 404</a></span><span class="preprocessor">#define GLFW_KEY_3 51</span></div>
334<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"><a class="line" href="group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356"> 405</a></span><span class="preprocessor">#define GLFW_KEY_4 52</span></div>
335<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924"> 406</a></span><span class="preprocessor">#define GLFW_KEY_5 53</span></div>
336<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"><a class="line" href="group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d"> 407</a></span><span class="preprocessor">#define GLFW_KEY_6 54</span></div>
337<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"><a class="line" href="group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666"> 408</a></span><span class="preprocessor">#define GLFW_KEY_7 55</span></div>
338<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"><a class="line" href="group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f"> 409</a></span><span class="preprocessor">#define GLFW_KEY_8 56</span></div>
339<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"><a class="line" href="group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39"> 410</a></span><span class="preprocessor">#define GLFW_KEY_9 57</span></div>
340<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d"> 411</a></span><span class="preprocessor">#define GLFW_KEY_SEMICOLON 59 </span><span class="comment">/* ; */</span><span class="preprocessor"></span></div>
341<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="group__keys.html#gae1a2de47240d6664423c204bdd91bd17"> 412</a></span><span class="preprocessor">#define GLFW_KEY_EQUAL 61 </span><span class="comment">/* = */</span><span class="preprocessor"></span></div>
342<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"><a class="line" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff"> 413</a></span><span class="preprocessor">#define GLFW_KEY_A 65</span></div>
343<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941"> 414</a></span><span class="preprocessor">#define GLFW_KEY_B 66</span></div>
344<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"><a class="line" href="group__keys.html#ga00ccf3475d9ee2e679480d540d554669"> 415</a></span><span class="preprocessor">#define GLFW_KEY_C 67</span></div>
345<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"><a class="line" href="group__keys.html#ga011f7cdc9a654da984a2506479606933"> 416</a></span><span class="preprocessor">#define GLFW_KEY_D 68</span></div>
346<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2"> 417</a></span><span class="preprocessor">#define GLFW_KEY_E 69</span></div>
347<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"><a class="line" href="group__keys.html#ga5df402e02aca08444240058fd9b42a55"> 418</a></span><span class="preprocessor">#define GLFW_KEY_F 70</span></div>
348<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"><a class="line" href="group__keys.html#gae74ecddf7cc96104ab23989b1cdab536"> 419</a></span><span class="preprocessor">#define GLFW_KEY_G 71</span></div>
349<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"><a class="line" href="group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076"> 420</a></span><span class="preprocessor">#define GLFW_KEY_H 72</span></div>
350<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="group__keys.html#ga274655c8bfe39742684ca393cf8ed093"> 421</a></span><span class="preprocessor">#define GLFW_KEY_I 73</span></div>
351<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f"> 422</a></span><span class="preprocessor">#define GLFW_KEY_J 74</span></div>
352<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0"> 423</a></span><span class="preprocessor">#define GLFW_KEY_K 75</span></div>
353<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2"> 424</a></span><span class="preprocessor">#define GLFW_KEY_L 76</span></div>
354<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"><a class="line" href="group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716"> 425</a></span><span class="preprocessor">#define GLFW_KEY_M 77</span></div>
355<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"><a class="line" href="group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda"> 426</a></span><span class="preprocessor">#define GLFW_KEY_N 78</span></div>
356<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="group__keys.html#gaecbbb79130df419d58dd7f09a169efe9"> 427</a></span><span class="preprocessor">#define GLFW_KEY_O 79</span></div>
357<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"><a class="line" href="group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1"> 428</a></span><span class="preprocessor">#define GLFW_KEY_P 80</span></div>
358<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"><a class="line" href="group__keys.html#gafdd01e38b120d67cf51e348bb47f3964"> 429</a></span><span class="preprocessor">#define GLFW_KEY_Q 81</span></div>
359<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"><a class="line" href="group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36"> 430</a></span><span class="preprocessor">#define GLFW_KEY_R 82</span></div>
360<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"><a class="line" href="group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9"> 431</a></span><span class="preprocessor">#define GLFW_KEY_S 83</span></div>
361<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"><a class="line" href="group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9"> 432</a></span><span class="preprocessor">#define GLFW_KEY_T 84</span></div>
362<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"><a class="line" href="group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d"> 433</a></span><span class="preprocessor">#define GLFW_KEY_U 85</span></div>
363<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"><a class="line" href="group__keys.html#ga22c7763899ecf7788862e5f90eacce6b"> 434</a></span><span class="preprocessor">#define GLFW_KEY_V 86</span></div>
364<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"><a class="line" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545"> 435</a></span><span class="preprocessor">#define GLFW_KEY_W 87</span></div>
365<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"><a class="line" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744"> 436</a></span><span class="preprocessor">#define GLFW_KEY_X 88</span></div>
366<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"><a class="line" href="group__keys.html#gafd9f115a549effdf8e372a787c360313"> 437</a></span><span class="preprocessor">#define GLFW_KEY_Y 89</span></div>
367<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"><a class="line" href="group__keys.html#gac489e208c26afda8d4938ed88718760a"> 438</a></span><span class="preprocessor">#define GLFW_KEY_Z 90</span></div>
368<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="group__keys.html#gad1c8d9adac53925276ecb1d592511d8a"> 439</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_BRACKET 91 </span><span class="comment">/* [ */</span><span class="preprocessor"></span></div>
369<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"><a class="line" href="group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1"> 440</a></span><span class="preprocessor">#define GLFW_KEY_BACKSLASH 92 </span><span class="comment">/* \ */</span><span class="preprocessor"></span></div>
370<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"><a class="line" href="group__keys.html#ga86ef225fd6a66404caae71044cdd58d8"> 441</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_BRACKET 93 </span><span class="comment">/* ] */</span><span class="preprocessor"></span></div>
371<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"><a class="line" href="group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668"> 442</a></span><span class="preprocessor">#define GLFW_KEY_GRAVE_ACCENT 96 </span><span class="comment">/* ` */</span><span class="preprocessor"></span></div>
372<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"><a class="line" href="group__keys.html#gadc78dad3dab76bcd4b5c20114052577a"> 443</a></span><span class="preprocessor">#define GLFW_KEY_WORLD_1 161 </span><span class="comment">/* non-US #1 */</span><span class="preprocessor"></span></div>
373<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"><a class="line" href="group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e"> 444</a></span><span class="preprocessor">#define GLFW_KEY_WORLD_2 162 </span><span class="comment">/* non-US #2 */</span><span class="preprocessor"></span></div>
374<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> </div>
375<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span><span class="comment">/* Function keys */</span></div>
376<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"><a class="line" href="group__keys.html#gaac6596c350b635c245113b81c2123b93"> 447</a></span><span class="preprocessor">#define GLFW_KEY_ESCAPE 256</span></div>
377<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"><a class="line" href="group__keys.html#ga9555a92ecbecdbc1f3435219c571d667"> 448</a></span><span class="preprocessor">#define GLFW_KEY_ENTER 257</span></div>
378<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df"> 449</a></span><span class="preprocessor">#define GLFW_KEY_TAB 258</span></div>
379<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"><a class="line" href="group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635"> 450</a></span><span class="preprocessor">#define GLFW_KEY_BACKSPACE 259</span></div>
380<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="group__keys.html#ga373ac7365435d6b0eb1068f470e34f47"> 451</a></span><span class="preprocessor">#define GLFW_KEY_INSERT 260</span></div>
381<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"><a class="line" href="group__keys.html#gadb111e4df74b8a715f2c05dad58d2682"> 452</a></span><span class="preprocessor">#define GLFW_KEY_DELETE 261</span></div>
382<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"><a class="line" href="group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac"> 453</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT 262</span></div>
383<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"><a class="line" href="group__keys.html#gae12a010d33c309a67ab9460c51eb2462"> 454</a></span><span class="preprocessor">#define GLFW_KEY_LEFT 263</span></div>
384<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"><a class="line" href="group__keys.html#gae2e3958c71595607416aa7bf082be2f9"> 455</a></span><span class="preprocessor">#define GLFW_KEY_DOWN 264</span></div>
385<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"><a class="line" href="group__keys.html#ga2f3342b194020d3544c67e3506b6f144"> 456</a></span><span class="preprocessor">#define GLFW_KEY_UP 265</span></div>
386<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586"> 457</a></span><span class="preprocessor">#define GLFW_KEY_PAGE_UP 266</span></div>
387<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"><a class="line" href="group__keys.html#gaee0a8fa442001cc2147812f84b59041c"> 458</a></span><span class="preprocessor">#define GLFW_KEY_PAGE_DOWN 267</span></div>
388<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"><a class="line" href="group__keys.html#ga41452c7287195d481e43207318c126a7"> 459</a></span><span class="preprocessor">#define GLFW_KEY_HOME 268</span></div>
389<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"><a class="line" href="group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9"> 460</a></span><span class="preprocessor">#define GLFW_KEY_END 269</span></div>
390<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"><a class="line" href="group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672"> 461</a></span><span class="preprocessor">#define GLFW_KEY_CAPS_LOCK 280</span></div>
391<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"><a class="line" href="group__keys.html#gaf622b63b9537f7084c2ab649b8365630"> 462</a></span><span class="preprocessor">#define GLFW_KEY_SCROLL_LOCK 281</span></div>
392<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"><a class="line" href="group__keys.html#ga3946edc362aeff213b2be6304296cf43"> 463</a></span><span class="preprocessor">#define GLFW_KEY_NUM_LOCK 282</span></div>
393<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"><a class="line" href="group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642"> 464</a></span><span class="preprocessor">#define GLFW_KEY_PRINT_SCREEN 283</span></div>
394<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"><a class="line" href="group__keys.html#ga8116b9692d87382afb5849b6d8907f18"> 465</a></span><span class="preprocessor">#define GLFW_KEY_PAUSE 284</span></div>
395<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"><a class="line" href="group__keys.html#gafb8d66c573acf22e364049477dcbea30"> 466</a></span><span class="preprocessor">#define GLFW_KEY_F1 290</span></div>
396<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"><a class="line" href="group__keys.html#ga0900750aff94889b940f5e428c07daee"> 467</a></span><span class="preprocessor">#define GLFW_KEY_F2 291</span></div>
397<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015"> 468</a></span><span class="preprocessor">#define GLFW_KEY_F3 292</span></div>
398<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"><a class="line" href="group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6"> 469</a></span><span class="preprocessor">#define GLFW_KEY_F4 293</span></div>
399<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"><a class="line" href="group__keys.html#gaf258dda9947daa428377938ed577c8c2"> 470</a></span><span class="preprocessor">#define GLFW_KEY_F5 294</span></div>
400<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"><a class="line" href="group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"> 471</a></span><span class="preprocessor">#define GLFW_KEY_F6 295</span></div>
401<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"><a class="line" href="group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a"> 472</a></span><span class="preprocessor">#define GLFW_KEY_F7 296</span></div>
402<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"><a class="line" href="group__keys.html#gac9d39390336ae14e4a93e295de43c7e8"> 473</a></span><span class="preprocessor">#define GLFW_KEY_F8 297</span></div>
403<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"><a class="line" href="group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851"> 474</a></span><span class="preprocessor">#define GLFW_KEY_F9 298</span></div>
404<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"><a class="line" href="group__keys.html#ga718d11d2f7d57471a2f6a894235995b1"> 475</a></span><span class="preprocessor">#define GLFW_KEY_F10 299</span></div>
405<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"><a class="line" href="group__keys.html#ga0bc04b11627e7d69339151e7306b2832"> 476</a></span><span class="preprocessor">#define GLFW_KEY_F11 300</span></div>
406<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"><a class="line" href="group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2"> 477</a></span><span class="preprocessor">#define GLFW_KEY_F12 301</span></div>
407<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"><a class="line" href="group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b"> 478</a></span><span class="preprocessor">#define GLFW_KEY_F13 302</span></div>
408<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"><a class="line" href="group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f"> 479</a></span><span class="preprocessor">#define GLFW_KEY_F14 303</span></div>
409<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"><a class="line" href="group__keys.html#ga7f70970db6e8be1794da8516a6d14058"> 480</a></span><span class="preprocessor">#define GLFW_KEY_F15 304</span></div>
410<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"><a class="line" href="group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27"> 481</a></span><span class="preprocessor">#define GLFW_KEY_F16 305</span></div>
411<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"><a class="line" href="group__keys.html#ga972ce5c365e2394b36104b0e3125c748"> 482</a></span><span class="preprocessor">#define GLFW_KEY_F17 306</span></div>
412<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"><a class="line" href="group__keys.html#gaebf6391058d5566601e357edc5ea737c"> 483</a></span><span class="preprocessor">#define GLFW_KEY_F18 307</span></div>
413<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"><a class="line" href="group__keys.html#gaec011d9ba044058cb54529da710e9791"> 484</a></span><span class="preprocessor">#define GLFW_KEY_F19 308</span></div>
414<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"><a class="line" href="group__keys.html#ga82b9c721ada04cd5ca8de767da38022f"> 485</a></span><span class="preprocessor">#define GLFW_KEY_F20 309</span></div>
415<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"><a class="line" href="group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f"> 486</a></span><span class="preprocessor">#define GLFW_KEY_F21 310</span></div>
416<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"><a class="line" href="group__keys.html#ga90960bd2a155f2b09675324d3dff1565"> 487</a></span><span class="preprocessor">#define GLFW_KEY_F22 311</span></div>
417<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"><a class="line" href="group__keys.html#ga43c21099aac10952d1be909a8ddee4d5"> 488</a></span><span class="preprocessor">#define GLFW_KEY_F23 312</span></div>
418<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"><a class="line" href="group__keys.html#ga8150374677b5bed3043408732152dea2"> 489</a></span><span class="preprocessor">#define GLFW_KEY_F24 313</span></div>
419<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"><a class="line" href="group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199"> 490</a></span><span class="preprocessor">#define GLFW_KEY_F25 314</span></div>
420<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"><a class="line" href="group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d"> 491</a></span><span class="preprocessor">#define GLFW_KEY_KP_0 320</span></div>
421<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"><a class="line" href="group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3"> 492</a></span><span class="preprocessor">#define GLFW_KEY_KP_1 321</span></div>
422<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"><a class="line" href="group__keys.html#gaf82d5a802ab8213c72653d7480c16f13"> 493</a></span><span class="preprocessor">#define GLFW_KEY_KP_2 322</span></div>
423<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"><a class="line" href="group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2"> 494</a></span><span class="preprocessor">#define GLFW_KEY_KP_3 323</span></div>
424<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"><a class="line" href="group__keys.html#gada7ec86778b85e0b4de0beea72234aea"> 495</a></span><span class="preprocessor">#define GLFW_KEY_KP_4 324</span></div>
425<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"><a class="line" href="group__keys.html#ga9a5be274434866c51738cafbb6d26b45"> 496</a></span><span class="preprocessor">#define GLFW_KEY_KP_5 325</span></div>
426<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"><a class="line" href="group__keys.html#gafc141b0f8450519084c01092a3157faa"> 497</a></span><span class="preprocessor">#define GLFW_KEY_KP_6 326</span></div>
427<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"><a class="line" href="group__keys.html#ga8882f411f05d04ec77a9563974bbfa53"> 498</a></span><span class="preprocessor">#define GLFW_KEY_KP_7 327</span></div>
428<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"><a class="line" href="group__keys.html#gab2ea2e6a12f89d315045af520ac78cec"> 499</a></span><span class="preprocessor">#define GLFW_KEY_KP_8 328</span></div>
429<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"><a class="line" href="group__keys.html#gafb21426b630ed4fcc084868699ba74c1"> 500</a></span><span class="preprocessor">#define GLFW_KEY_KP_9 329</span></div>
430<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"><a class="line" href="group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b"> 501</a></span><span class="preprocessor">#define GLFW_KEY_KP_DECIMAL 330</span></div>
431<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"><a class="line" href="group__keys.html#gabca1733780a273d549129ad0f250d1e5"> 502</a></span><span class="preprocessor">#define GLFW_KEY_KP_DIVIDE 331</span></div>
432<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"><a class="line" href="group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef"> 503</a></span><span class="preprocessor">#define GLFW_KEY_KP_MULTIPLY 332</span></div>
433<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"><a class="line" href="group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236"> 504</a></span><span class="preprocessor">#define GLFW_KEY_KP_SUBTRACT 333</span></div>
434<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"><a class="line" href="group__keys.html#gad09c7c98acc79e89aa6a0a91275becac"> 505</a></span><span class="preprocessor">#define GLFW_KEY_KP_ADD 334</span></div>
435<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"><a class="line" href="group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf"> 506</a></span><span class="preprocessor">#define GLFW_KEY_KP_ENTER 335</span></div>
436<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"><a class="line" href="group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97"> 507</a></span><span class="preprocessor">#define GLFW_KEY_KP_EQUAL 336</span></div>
437<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"><a class="line" href="group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6"> 508</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_SHIFT 340</span></div>
438<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"><a class="line" href="group__keys.html#ga9f97b743e81460ac4b2deddecd10a464"> 509</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_CONTROL 341</span></div>
439<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"><a class="line" href="group__keys.html#ga7f27dabf63a7789daa31e1c96790219b"> 510</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_ALT 342</span></div>
440<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"><a class="line" href="group__keys.html#gafb1207c91997fc295afd1835fbc5641a"> 511</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_SUPER 343</span></div>
441<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"><a class="line" href="group__keys.html#gaffca36b99c9dce1a19cb9befbadce691"> 512</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_SHIFT 344</span></div>
442<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"><a class="line" href="group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519"> 513</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_CONTROL 345</span></div>
443<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"><a class="line" href="group__keys.html#ga687b38009131cfdd07a8d05fff8fa446"> 514</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_ALT 346</span></div>
444<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"><a class="line" href="group__keys.html#gad4547a3e8e247594acb60423fe6502db"> 515</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_SUPER 347</span></div>
445<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"><a class="line" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820"> 516</a></span><span class="preprocessor">#define GLFW_KEY_MENU 348</span></div>
446<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> </div>
447<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"><a class="line" href="group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789"> 518</a></span><span class="preprocessor">#define GLFW_KEY_LAST GLFW_KEY_MENU</span></div>
448<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> </div>
449<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"><a class="line" href="group__mods.html#ga14994d3196c290aaa347248e51740274"> 534</a></span><span class="preprocessor">#define GLFW_MOD_SHIFT 0x0001</span></div>
450<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"><a class="line" href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa"> 539</a></span><span class="preprocessor">#define GLFW_MOD_CONTROL 0x0002</span></div>
451<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"><a class="line" href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4"> 544</a></span><span class="preprocessor">#define GLFW_MOD_ALT 0x0004</span></div>
452<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"><a class="line" href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1"> 549</a></span><span class="preprocessor">#define GLFW_MOD_SUPER 0x0008</span></div>
453<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"><a class="line" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f"> 555</a></span><span class="preprocessor">#define GLFW_MOD_CAPS_LOCK 0x0010</span></div>
454<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"><a class="line" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe"> 561</a></span><span class="preprocessor">#define GLFW_MOD_NUM_LOCK 0x0020</span></div>
455<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> </div>
456<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"><a class="line" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e"> 572</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_1 0</span></div>
457<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"><a class="line" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c"> 573</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_2 1</span></div>
458<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"><a class="line" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721"> 574</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_3 2</span></div>
459<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"><a class="line" href="group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9"> 575</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_4 3</span></div>
460<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"><a class="line" href="group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c"> 576</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_5 4</span></div>
461<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"><a class="line" href="group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a"> 577</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_6 5</span></div>
462<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"><a class="line" href="group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7"> 578</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_7 6</span></div>
463<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"><a class="line" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c"> 579</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_8 7</span></div>
464<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"><a class="line" href="group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf"> 580</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8</span></div>
465<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"><a class="line" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56"> 581</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1</span></div>
466<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"><a class="line" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74"> 582</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2</span></div>
467<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"><a class="line" href="group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a"> 583</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3</span></div>
468<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d"> 593</a></span><span class="preprocessor">#define GLFW_JOYSTICK_1 0</span></div>
469<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c"> 594</a></span><span class="preprocessor">#define GLFW_JOYSTICK_2 1</span></div>
470<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"><a class="line" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654"> 595</a></span><span class="preprocessor">#define GLFW_JOYSTICK_3 2</span></div>
471<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59"> 596</a></span><span class="preprocessor">#define GLFW_JOYSTICK_4 3</span></div>
472<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"><a class="line" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695"> 597</a></span><span class="preprocessor">#define GLFW_JOYSTICK_5 4</span></div>
473<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga74771620aa53bd68a487186dea66fd77"> 598</a></span><span class="preprocessor">#define GLFW_JOYSTICK_6 5</span></div>
474<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87"> 599</a></span><span class="preprocessor">#define GLFW_JOYSTICK_7 6</span></div>
475<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb"> 600</a></span><span class="preprocessor">#define GLFW_JOYSTICK_8 7</span></div>
476<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf"> 601</a></span><span class="preprocessor">#define GLFW_JOYSTICK_9 8</span></div>
477<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"><a class="line" href="group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec"> 602</a></span><span class="preprocessor">#define GLFW_JOYSTICK_10 9</span></div>
478<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"><a class="line" href="group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4"> 603</a></span><span class="preprocessor">#define GLFW_JOYSTICK_11 10</span></div>
479<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"><a class="line" href="group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"> 604</a></span><span class="preprocessor">#define GLFW_JOYSTICK_12 11</span></div>
480<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508"> 605</a></span><span class="preprocessor">#define GLFW_JOYSTICK_13 12</span></div>
481<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74"> 606</a></span><span class="preprocessor">#define GLFW_JOYSTICK_14 13</span></div>
482<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9"> 607</a></span><span class="preprocessor">#define GLFW_JOYSTICK_15 14</span></div>
483<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce"> 608</a></span><span class="preprocessor">#define GLFW_JOYSTICK_16 15</span></div>
484<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9"> 609</a></span><span class="preprocessor">#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16</span></div>
485<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810"> 619</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_A 0</span></div>
486<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa"> 620</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_B 1</span></div>
487<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c"> 621</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_X 2</span></div>
488<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed"> 622</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_Y 3</span></div>
489<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3"> 623</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4</span></div>
490<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f"> 624</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5</span></div>
491<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf"> 625</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_BACK 6</span></div>
492<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021"> 626</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_START 7</span></div>
493<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc"> 627</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_GUIDE 8</span></div>
494<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a"> 628</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9</span></div>
495<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a"> 629</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10</span></div>
496<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a"> 630</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11</span></div>
497<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6"> 631</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12</span></div>
498<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c"> 632</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13</span></div>
499<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301"> 633</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14</span></div>
500<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb"> 634</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT</span></div>
501<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> </div>
502<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a"> 636</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A</span></div>
503<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82"> 637</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B</span></div>
504<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f"> 638</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X</span></div>
505<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802"> 639</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y</span></div>
506<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38"> 649</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LEFT_X 0</span></div>
507<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5"> 650</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LEFT_Y 1</span></div>
508<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc"> 651</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_RIGHT_X 2</span></div>
509<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4"> 652</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3</span></div>
510<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e"> 653</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4</span></div>
511<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab"> 654</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5</span></div>
512<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86"> 655</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</span></div>
513<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"><a class="line" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4"> 671</a></span><span class="preprocessor">#define GLFW_NO_ERROR 0</span></div>
514<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"><a class="line" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a"> 680</a></span><span class="preprocessor">#define GLFW_NOT_INITIALIZED 0x00010001</span></div>
515<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"><a class="line" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0"> 690</a></span><span class="preprocessor">#define GLFW_NO_CURRENT_CONTEXT 0x00010002</span></div>
516<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"><a class="line" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce"> 698</a></span><span class="preprocessor">#define GLFW_INVALID_ENUM 0x00010003</span></div>
517<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"><a class="line" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687"> 709</a></span><span class="preprocessor">#define GLFW_INVALID_VALUE 0x00010004</span></div>
518<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"><a class="line" href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f"> 717</a></span><span class="preprocessor">#define GLFW_OUT_OF_MEMORY 0x00010005</span></div>
519<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"><a class="line" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e"> 733</a></span><span class="preprocessor">#define GLFW_API_UNAVAILABLE 0x00010006</span></div>
520<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"><a class="line" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462"> 750</a></span><span class="preprocessor">#define GLFW_VERSION_UNAVAILABLE 0x00010007</span></div>
521<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"><a class="line" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1"> 761</a></span><span class="preprocessor">#define GLFW_PLATFORM_ERROR 0x00010008</span></div>
522<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"><a class="line" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14"> 780</a></span><span class="preprocessor">#define GLFW_FORMAT_UNAVAILABLE 0x00010009</span></div>
523<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"><a class="line" href="group__errors.html#gacff24d2757da752ae4c80bf452356487"> 788</a></span><span class="preprocessor">#define GLFW_NO_WINDOW_CONTEXT 0x0001000A</span></div>
524<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"><a class="line" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e"> 798</a></span><span class="preprocessor">#define GLFW_FOCUSED 0x00020001</span></div>
525<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"><a class="line" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a"> 803</a></span><span class="preprocessor">#define GLFW_ICONIFIED 0x00020002</span></div>
526<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"><a class="line" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d"> 809</a></span><span class="preprocessor">#define GLFW_RESIZABLE 0x00020003</span></div>
527<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"><a class="line" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4"> 815</a></span><span class="preprocessor">#define GLFW_VISIBLE 0x00020004</span></div>
528<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"><a class="line" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e"> 821</a></span><span class="preprocessor">#define GLFW_DECORATED 0x00020005</span></div>
529<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"><a class="line" href="group__window.html#ga9d9874fc928200136a6dcdad726aa252"> 827</a></span><span class="preprocessor">#define GLFW_AUTO_ICONIFY 0x00020006</span></div>
530<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"><a class="line" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80"> 833</a></span><span class="preprocessor">#define GLFW_FLOATING 0x00020007</span></div>
531<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"><a class="line" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03"> 839</a></span><span class="preprocessor">#define GLFW_MAXIMIZED 0x00020008</span></div>
532<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"><a class="line" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77"> 844</a></span><span class="preprocessor">#define GLFW_CENTER_CURSOR 0x00020009</span></div>
533<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"><a class="line" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14"> 851</a></span><span class="preprocessor">#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A</span></div>
534<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"><a class="line" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a"> 856</a></span><span class="preprocessor">#define GLFW_HOVERED 0x0002000B</span></div>
535<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"><a class="line" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc"> 862</a></span><span class="preprocessor">#define GLFW_FOCUS_ON_SHOW 0x0002000C</span></div>
536<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> </div>
537<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"><a class="line" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982"> 868</a></span><span class="preprocessor">#define GLFW_RED_BITS 0x00021001</span></div>
538<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"><a class="line" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d"> 873</a></span><span class="preprocessor">#define GLFW_GREEN_BITS 0x00021002</span></div>
539<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"><a class="line" href="group__window.html#gab292ea403db6d514537b515311bf9ae3"> 878</a></span><span class="preprocessor">#define GLFW_BLUE_BITS 0x00021003</span></div>
540<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"><a class="line" href="group__window.html#gafed79a3f468997877da86c449bd43e8c"> 883</a></span><span class="preprocessor">#define GLFW_ALPHA_BITS 0x00021004</span></div>
541<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"><a class="line" href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07"> 888</a></span><span class="preprocessor">#define GLFW_DEPTH_BITS 0x00021005</span></div>
542<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"><a class="line" href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d"> 893</a></span><span class="preprocessor">#define GLFW_STENCIL_BITS 0x00021006</span></div>
543<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"><a class="line" href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6"> 898</a></span><span class="preprocessor">#define GLFW_ACCUM_RED_BITS 0x00021007</span></div>
544<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"><a class="line" href="group__window.html#ga65713cee1326f8e9d806fdf93187b471"> 903</a></span><span class="preprocessor">#define GLFW_ACCUM_GREEN_BITS 0x00021008</span></div>
545<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"><a class="line" href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce"> 908</a></span><span class="preprocessor">#define GLFW_ACCUM_BLUE_BITS 0x00021009</span></div>
546<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"><a class="line" href="group__window.html#gae829b55591c18169a40ab4067a041b1f"> 913</a></span><span class="preprocessor">#define GLFW_ACCUM_ALPHA_BITS 0x0002100A</span></div>
547<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"><a class="line" href="group__window.html#gab05108c5029443b371112b031d1fa174"> 918</a></span><span class="preprocessor">#define GLFW_AUX_BUFFERS 0x0002100B</span></div>
548<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"><a class="line" href="group__window.html#ga83d991efca02537e2d69969135b77b03"> 923</a></span><span class="preprocessor">#define GLFW_STEREO 0x0002100C</span></div>
549<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"><a class="line" href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535"> 928</a></span><span class="preprocessor">#define GLFW_SAMPLES 0x0002100D</span></div>
550<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"><a class="line" href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b"> 933</a></span><span class="preprocessor">#define GLFW_SRGB_CAPABLE 0x0002100E</span></div>
551<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"><a class="line" href="group__window.html#ga0f20825e6e47ee8ba389024519682212"> 938</a></span><span class="preprocessor">#define GLFW_REFRESH_RATE 0x0002100F</span></div>
552<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"><a class="line" href="group__window.html#ga714a5d569e8a274ea58fdfa020955339"> 943</a></span><span class="preprocessor">#define GLFW_DOUBLEBUFFER 0x00021010</span></div>
553<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span> </div>
554<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"><a class="line" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b"> 950</a></span><span class="preprocessor">#define GLFW_CLIENT_API 0x00022001</span></div>
555<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"><a class="line" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0"> 956</a></span><span class="preprocessor">#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002</span></div>
556<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"><a class="line" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07"> 962</a></span><span class="preprocessor">#define GLFW_CONTEXT_VERSION_MINOR 0x00022003</span></div>
557<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"><a class="line" href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08"> 968</a></span><span class="preprocessor">#define GLFW_CONTEXT_REVISION 0x00022004</span></div>
558<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"><a class="line" href="group__window.html#gade3593916b4c507900aa2d6844810e00"> 974</a></span><span class="preprocessor">#define GLFW_CONTEXT_ROBUSTNESS 0x00022005</span></div>
559<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"><a class="line" href="group__window.html#ga13d24b12465da8b28985f46c8557925b"> 980</a></span><span class="preprocessor">#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006</span></div>
560<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"><a class="line" href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1"> 986</a></span><span class="preprocessor">#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007</span></div>
561<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"><a class="line" href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12"> 992</a></span><span class="preprocessor">#define GLFW_OPENGL_PROFILE 0x00022008</span></div>
562<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"><a class="line" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6"> 998</a></span><span class="preprocessor">#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009</span></div>
563<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"><a class="line" href="group__window.html#ga5a52fdfd46d8249c211f923675728082"> 1004</a></span><span class="preprocessor">#define GLFW_CONTEXT_NO_ERROR 0x0002200A</span></div>
564<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"><a class="line" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486"> 1010</a></span><span class="preprocessor">#define GLFW_CONTEXT_CREATION_API 0x0002200B</span></div>
565<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"><a class="line" href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47"> 1014</a></span><span class="preprocessor">#define GLFW_SCALE_TO_MONITOR 0x0002200C</span></div>
566<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"><a class="line" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e"> 1018</a></span><span class="preprocessor">#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001</span></div>
567<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"><a class="line" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5"> 1022</a></span><span class="preprocessor">#define GLFW_COCOA_FRAME_NAME 0x00023002</span></div>
568<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"><a class="line" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc"> 1026</a></span><span class="preprocessor">#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003</span></div>
569<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"><a class="line" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114"> 1030</a></span><span class="preprocessor">#define GLFW_X11_CLASS_NAME 0x00024001</span></div>
570<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"><a class="line" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8"> 1034</a></span><span class="preprocessor">#define GLFW_X11_INSTANCE_NAME 0x00024002</span></div>
571<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264"> 1037</a></span><span class="preprocessor">#define GLFW_NO_API 0</span></div>
572<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a01b3f66db266341425e9abee6b257db2"> 1038</a></span><span class="preprocessor">#define GLFW_OPENGL_API 0x00030001</span></div>
573<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f"> 1039</a></span><span class="preprocessor">#define GLFW_OPENGL_ES_API 0x00030002</span></div>
574<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> </div>
575<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34"> 1041</a></span><span class="preprocessor">#define GLFW_NO_ROBUSTNESS 0</span></div>
576<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aee84a679230d205005e22487ff678a85"> 1042</a></span><span class="preprocessor">#define GLFW_NO_RESET_NOTIFICATION 0x00031001</span></div>
577<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aec1132f245143fc915b2f0995228564c"> 1043</a></span><span class="preprocessor">#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002</span></div>
578<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> </div>
579<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f"> 1045</a></span><span class="preprocessor">#define GLFW_OPENGL_ANY_PROFILE 0</span></div>
580<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"><a class="line" href="glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8"> 1046</a></span><span class="preprocessor">#define GLFW_OPENGL_CORE_PROFILE 0x00032001</span></div>
581<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670"> 1047</a></span><span class="preprocessor">#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002</span></div>
582<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> </div>
583<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c"> 1049</a></span><span class="preprocessor">#define GLFW_CURSOR 0x00033001</span></div>
584<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc"> 1050</a></span><span class="preprocessor">#define GLFW_STICKY_KEYS 0x00033002</span></div>
585<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1"> 1051</a></span><span class="preprocessor">#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003</span></div>
586<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947"> 1052</a></span><span class="preprocessor">#define GLFW_LOCK_KEY_MODS 0x00033004</span></div>
587<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb"> 1053</a></span><span class="preprocessor">#define GLFW_RAW_MOUSE_MOTION 0x00033005</span></div>
588<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> </div>
589<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68"> 1055</a></span><span class="preprocessor">#define GLFW_CURSOR_NORMAL 0x00034001</span></div>
590<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11"> 1056</a></span><span class="preprocessor">#define GLFW_CURSOR_HIDDEN 0x00034002</span></div>
591<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88"> 1057</a></span><span class="preprocessor">#define GLFW_CURSOR_DISABLED 0x00034003</span></div>
592<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> </div>
593<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee"> 1059</a></span><span class="preprocessor">#define GLFW_ANY_RELEASE_BEHAVIOR 0</span></div>
594<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b"> 1060</a></span><span class="preprocessor">#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001</span></div>
595<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"><a class="line" href="glfw3_8h.html#afca09088eccacdce4b59036cfae349c5"> 1061</a></span><span class="preprocessor">#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002</span></div>
596<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> </div>
597<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19"> 1063</a></span><span class="preprocessor">#define GLFW_NATIVE_CONTEXT_API 0x00036001</span></div>
598<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9"> 1064</a></span><span class="preprocessor">#define GLFW_EGL_CONTEXT_API 0x00036002</span></div>
599<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"><a class="line" href="glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3"> 1065</a></span><span class="preprocessor">#define GLFW_OSMESA_CONTEXT_API 0x00036003</span></div>
600<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> </div>
601<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"><a class="line" href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a"> 1079</a></span><span class="preprocessor">#define GLFW_ARROW_CURSOR 0x00036001</span></div>
602<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"><a class="line" href="group__shapes.html#ga36185f4375eaada1b04e431244774c86"> 1084</a></span><span class="preprocessor">#define GLFW_IBEAM_CURSOR 0x00036002</span></div>
603<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"><a class="line" href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22"> 1089</a></span><span class="preprocessor">#define GLFW_CROSSHAIR_CURSOR 0x00036003</span></div>
604<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"><a class="line" href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263"> 1094</a></span><span class="preprocessor">#define GLFW_HAND_CURSOR 0x00036004</span></div>
605<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"><a class="line" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962"> 1099</a></span><span class="preprocessor">#define GLFW_HRESIZE_CURSOR 0x00036005</span></div>
606<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"><a class="line" href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5"> 1104</a></span><span class="preprocessor">#define GLFW_VRESIZE_CURSOR 0x00036006</span></div>
607<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"><a class="line" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e"> 1107</a></span><span class="preprocessor">#define GLFW_CONNECTED 0x00040001</span></div>
608<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32"> 1108</a></span><span class="preprocessor">#define GLFW_DISCONNECTED 0x00040002</span></div>
609<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> </div>
610<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"><a class="line" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18"> 1116</a></span><span class="preprocessor">#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001</span></div>
611<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"><a class="line" href="group__init.html#gab937983147a3158d45f88fad7129d9f2"> 1121</a></span><span class="preprocessor">#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001</span></div>
612<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"><a class="line" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf"> 1126</a></span><span class="preprocessor">#define GLFW_COCOA_MENUBAR 0x00051002</span></div>
613<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571"> 1129</a></span><span class="preprocessor">#define GLFW_DONT_CARE -1</span></div>
614<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> </div>
615<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> </div>
616<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span><span class="comment">/*************************************************************************</span></div>
617<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span><span class="comment"> * GLFW API types</span></div>
618<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span><span class="comment"> *************************************************************************/</span></div>
619<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> </div>
620<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"><a class="line" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c"> 1148</a></span><span class="keyword">typedef</span> void (*<a class="code hl_typedef" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>)(void);</div>
621<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> </div>
622<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af"> 1162</a></span><span class="keyword">typedef</span> void (*<a class="code hl_typedef" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>)(void);</div>
623<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> </div>
624<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"><a class="line" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3"> 1174</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>;</div>
625<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> </div>
626<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"><a class="line" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242"> 1186</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>;</div>
627<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> </div>
628<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"><a class="line" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4"> 1198</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>;</div>
629<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span> </div>
630<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"><a class="line" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3"> 1222</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>)(<span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description);</div>
631<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span> </div>
632<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"><a class="line" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9"> 1245</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos);</div>
633<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> </div>
634<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"><a class="line" href="group__window.html#gaec0282944bb810f6f3163ec02da90350"> 1267</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
635<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> </div>
636<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"><a class="line" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e"> 1287</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
637<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span> </div>
638<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"><a class="line" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5"> 1307</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
639<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> </div>
640<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"><a class="line" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46"> 1328</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused);</div>
641<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span> </div>
642<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"><a class="line" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f"> 1349</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified);</div>
643<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span> </div>
644<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"><a class="line" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90"> 1370</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized);</div>
645<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> </div>
646<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"><a class="line" href="group__window.html#gae18026e294dde685ed2e5f759533144d"> 1391</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
647<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span> </div>
648<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"><a class="line" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e"> 1412</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale);</div>
649<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span> </div>
650<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"><a class="line" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727"> 1438</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods);</div>
651<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span> </div>
652<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"><a class="line" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68"> 1461</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
653<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span> </div>
654<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"><a class="line" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe"> 1482</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered);</div>
655<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span> </div>
656<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"><a class="line" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5"> 1503</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset);</div>
657<div class="line"><a id="l01504" name="l01504"></a><span class="lineno"> 1504</span> </div>
658<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"><a class="line" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c"> 1529</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods);</div>
659<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span> </div>
660<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"><a class="line" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e"> 1550</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint);</div>
661<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"> 1551</span> </div>
662<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"><a class="line" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f"> 1577</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint, <span class="keywordtype">int</span> mods);</div>
663<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"> 1578</span> </div>
664<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"><a class="line" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2"> 1601</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> path_count, <span class="keyword">const</span> <span class="keywordtype">char</span>* paths[]);</div>
665<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"> 1602</span> </div>
666<div class="line"><a id="l01622" name="l01622"></a><span class="lineno"><a class="line" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249"> 1622</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>)(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event);</div>
667<div class="line"><a id="l01623" name="l01623"></a><span class="lineno"> 1623</span> </div>
668<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"><a class="line" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243"> 1643</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>)(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event);</div>
669<div class="line"><a id="l01644" name="l01644"></a><span class="lineno"> 1644</span> </div>
670<div class="line"><a id="l01658" name="l01658"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html"> 1658</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a></div>
671<div class="line"><a id="l01659" name="l01659"></a><span class="lineno"> 1659</span>{</div>
672<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d"> 1662</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>;</div>
673<div class="line"><a id="l01665" name="l01665"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c"> 1665</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>;</div>
674<div class="line"><a id="l01668" name="l01668"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b"> 1668</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">redBits</a>;</div>
675<div class="line"><a id="l01671" name="l01671"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa"> 1671</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">greenBits</a>;</div>
676<div class="line"><a id="l01674" name="l01674"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047"> 1674</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">blueBits</a>;</div>
677<div class="line"><a id="l01677" name="l01677"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649"> 1677</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>;</div>
678<div class="line"><a id="l01678" name="l01678"></a><span class="lineno"><a class="line" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565"> 1678</a></span>} <a class="code hl_typedef" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a>;</div>
679<div class="line"><a id="l01679" name="l01679"></a><span class="lineno"> 1679</span> </div>
680<div class="line"><a id="l01692" name="l01692"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html"> 1692</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a></div>
681<div class="line"><a id="l01693" name="l01693"></a><span class="lineno"> 1693</span>{</div>
682<div class="line"><a id="l01696" name="l01696"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138"> 1696</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* <a class="code hl_variable" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">red</a>;</div>
683<div class="line"><a id="l01699" name="l01699"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a"> 1699</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* <a class="code hl_variable" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">green</a>;</div>
684<div class="line"><a id="l01702" name="l01702"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b"> 1702</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* <a class="code hl_variable" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">blue</a>;</div>
685<div class="line"><a id="l01705" name="l01705"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5"> 1705</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a>;</div>
686<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"><a class="line" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404"> 1706</a></span>} <a class="code hl_typedef" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a>;</div>
687<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"> 1707</span> </div>
688<div class="line"><a id="l01721" name="l01721"></a><span class="lineno"><a class="line" href="structGLFWimage.html"> 1721</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a></div>
689<div class="line"><a id="l01722" name="l01722"></a><span class="lineno"> 1722</span>{</div>
690<div class="line"><a id="l01725" name="l01725"></a><span class="lineno"><a class="line" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835"> 1725</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">width</a>;</div>
691<div class="line"><a id="l01728" name="l01728"></a><span class="lineno"><a class="line" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec"> 1728</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">height</a>;</div>
692<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"><a class="line" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb"> 1731</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* <a class="code hl_variable" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">pixels</a>;</div>
693<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"><a class="line" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca"> 1732</a></span>} <a class="code hl_typedef" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a>;</div>
694<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span> </div>
695<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"><a class="line" href="structGLFWgamepadstate.html"> 1745</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWgamepadstate.html">GLFWgamepadstate</a></div>
696<div class="line"><a id="l01746" name="l01746"></a><span class="lineno"> 1746</span>{</div>
697<div class="line"><a id="l01750" name="l01750"></a><span class="lineno"><a class="line" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a"> 1750</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">buttons</a>[15];</div>
698<div class="line"><a id="l01754" name="l01754"></a><span class="lineno"><a class="line" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189"> 1754</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">axes</a>[6];</div>
699<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"><a class="line" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d"> 1755</a></span>} <a class="code hl_typedef" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a>;</div>
700<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span> </div>
701<div class="line"><a id="l01757" name="l01757"></a><span class="lineno"> 1757</span> </div>
702<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"> 1758</span><span class="comment">/*************************************************************************</span></div>
703<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span><span class="comment"> * GLFW API functions</span></div>
704<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span><span class="comment"> *************************************************************************/</span></div>
705<div class="line"><a id="l01761" name="l01761"></a><span class="lineno"> 1761</span> </div>
706<div class="line"><a id="l01798" name="l01798"></a><span class="lineno"><a class="line" href="group__init.html#ga317aac130a235ab08c6db0834907d85e"> 1798</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>(<span class="keywordtype">void</span>);</div>
707<div class="line"><a id="l01799" name="l01799"></a><span class="lineno"> 1799</span> </div>
708<div class="line"><a id="l01832" name="l01832"></a><span class="lineno"><a class="line" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901"> 1832</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>(<span class="keywordtype">void</span>);</div>
709<div class="line"><a id="l01833" name="l01833"></a><span class="lineno"> 1833</span> </div>
710<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"><a class="line" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a"> 1864</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>(<span class="keywordtype">int</span> hint, <span class="keywordtype">int</span> value);</div>
711<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"> 1865</span> </div>
712<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"><a class="line" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197"> 1891</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a>(<span class="keywordtype">int</span>* major, <span class="keywordtype">int</span>* minor, <span class="keywordtype">int</span>* rev);</div>
713<div class="line"><a id="l01892" name="l01892"></a><span class="lineno"> 1892</span> </div>
714<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"><a class="line" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0"> 1922</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a>(<span class="keywordtype">void</span>);</div>
715<div class="line"><a id="l01923" name="l01923"></a><span class="lineno"> 1923</span> </div>
716<div class="line"><a id="l01953" name="l01953"></a><span class="lineno"><a class="line" href="group__init.html#ga944986b4ec0b928d488141f92982aa18"> 1953</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>** description);</div>
717<div class="line"><a id="l01954" name="l01954"></a><span class="lineno"> 1954</span> </div>
718<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"><a class="line" href="group__init.html#gaff45816610d53f0b83656092a4034f40"> 1999</a></span>GLFWAPI <a class="code hl_typedef" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> <a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(<a class="code hl_typedef" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> callback);</div>
719<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"> 2000</span> </div>
720<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"><a class="line" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2"> 2028</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>** <a class="code hl_function" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>(<span class="keywordtype">int</span>* count);</div>
721<div class="line"><a id="l02029" name="l02029"></a><span class="lineno"> 2029</span> </div>
722<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"><a class="line" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5"> 2052</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>(<span class="keywordtype">void</span>);</div>
723<div class="line"><a id="l02053" name="l02053"></a><span class="lineno"> 2053</span> </div>
724<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"><a class="line" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9"> 2077</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* xpos, <span class="keywordtype">int</span>* ypos);</div>
725<div class="line"><a id="l02078" name="l02078"></a><span class="lineno"> 2078</span> </div>
726<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"><a class="line" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"> 2108</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* xpos, <span class="keywordtype">int</span>* ypos, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height);</div>
727<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span> </div>
728<div class="line"><a id="l02142" name="l02142"></a><span class="lineno"><a class="line" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea"> 2142</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* widthMM, <span class="keywordtype">int</span>* heightMM);</div>
729<div class="line"><a id="l02143" name="l02143"></a><span class="lineno"> 2143</span> </div>
730<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"><a class="line" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b"> 2174</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">float</span>* xscale, <span class="keywordtype">float</span>* yscale);</div>
731<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"> 2175</span> </div>
732<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"><a class="line" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68"> 2200</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
733<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"> 2201</span> </div>
734<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"><a class="line" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda"> 2226</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">void</span>* pointer);</div>
735<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"> 2227</span> </div>
736<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"><a class="line" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5"> 2250</a></span>GLFWAPI <span class="keywordtype">void</span>* <a class="code hl_function" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
737<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span> </div>
738<div class="line"><a id="l02280" name="l02280"></a><span class="lineno"><a class="line" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3"> 2280</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> <a class="code hl_function" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a>(<a class="code hl_typedef" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> callback);</div>
739<div class="line"><a id="l02281" name="l02281"></a><span class="lineno"> 2281</span> </div>
740<div class="line"><a id="l02314" name="l02314"></a><span class="lineno"><a class="line" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b"> 2314</a></span>GLFWAPI <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* <a class="code hl_function" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* count);</div>
741<div class="line"><a id="l02315" name="l02315"></a><span class="lineno"> 2315</span> </div>
742<div class="line"><a id="l02342" name="l02342"></a><span class="lineno"><a class="line" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5"> 2342</a></span>GLFWAPI <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
743<div class="line"><a id="l02343" name="l02343"></a><span class="lineno"> 2343</span> </div>
744<div class="line"><a id="l02375" name="l02375"></a><span class="lineno"><a class="line" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a"> 2375</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">float</span> gamma);</div>
745<div class="line"><a id="l02376" name="l02376"></a><span class="lineno"> 2376</span> </div>
746<div class="line"><a id="l02405" name="l02405"></a><span class="lineno"><a class="line" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f"> 2405</a></span>GLFWAPI <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a>* <a class="code hl_function" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
747<div class="line"><a id="l02406" name="l02406"></a><span class="lineno"> 2406</span> </div>
748<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"><a class="line" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd"> 2446</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a>* ramp);</div>
749<div class="line"><a id="l02447" name="l02447"></a><span class="lineno"> 2447</span> </div>
750<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"><a class="line" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a"> 2465</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>(<span class="keywordtype">void</span>);</div>
751<div class="line"><a id="l02466" name="l02466"></a><span class="lineno"> 2466</span> </div>
752<div class="line"><a id="l02500" name="l02500"></a><span class="lineno"><a class="line" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033"> 2500</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<span class="keywordtype">int</span> hint, <span class="keywordtype">int</span> value);</div>
753<div class="line"><a id="l02501" name="l02501"></a><span class="lineno"> 2501</span> </div>
754<div class="line"><a id="l02538" name="l02538"></a><span class="lineno"><a class="line" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f"> 2538</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>(<span class="keywordtype">int</span> hint, <span class="keyword">const</span> <span class="keywordtype">char</span>* value);</div>
755<div class="line"><a id="l02539" name="l02539"></a><span class="lineno"> 2539</span> </div>
756<div class="line"><a id="l02692" name="l02692"></a><span class="lineno"><a class="line" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb"> 2692</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keyword">const</span> <span class="keywordtype">char</span>* title, <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* share);</div>
757<div class="line"><a id="l02693" name="l02693"></a><span class="lineno"> 2693</span> </div>
758<div class="line"><a id="l02721" name="l02721"></a><span class="lineno"><a class="line" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2"> 2721</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
759<div class="line"><a id="l02722" name="l02722"></a><span class="lineno"> 2722</span> </div>
760<div class="line"><a id="l02741" name="l02741"></a><span class="lineno"><a class="line" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5"> 2741</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
761<div class="line"><a id="l02742" name="l02742"></a><span class="lineno"> 2742</span> </div>
762<div class="line"><a id="l02763" name="l02763"></a><span class="lineno"><a class="line" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708"> 2763</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> value);</div>
763<div class="line"><a id="l02764" name="l02764"></a><span class="lineno"> 2764</span> </div>
764<div class="line"><a id="l02788" name="l02788"></a><span class="lineno"><a class="line" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff"> 2788</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keyword">const</span> <span class="keywordtype">char</span>* title);</div>
765<div class="line"><a id="l02789" name="l02789"></a><span class="lineno"> 2789</span> </div>
766<div class="line"><a id="l02835" name="l02835"></a><span class="lineno"><a class="line" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5"> 2835</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> count, <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a>* images);</div>
767<div class="line"><a id="l02836" name="l02836"></a><span class="lineno"> 2836</span> </div>
768<div class="line"><a id="l02867" name="l02867"></a><span class="lineno"><a class="line" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634"> 2867</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* xpos, <span class="keywordtype">int</span>* ypos);</div>
769<div class="line"><a id="l02868" name="l02868"></a><span class="lineno"> 2868</span> </div>
770<div class="line"><a id="l02902" name="l02902"></a><span class="lineno"><a class="line" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8"> 2902</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos);</div>
771<div class="line"><a id="l02903" name="l02903"></a><span class="lineno"> 2903</span> </div>
772<div class="line"><a id="l02932" name="l02932"></a><span class="lineno"><a class="line" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6"> 2932</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height);</div>
773<div class="line"><a id="l02933" name="l02933"></a><span class="lineno"> 2933</span> </div>
774<div class="line"><a id="l02975" name="l02975"></a><span class="lineno"><a class="line" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90"> 2975</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> minwidth, <span class="keywordtype">int</span> minheight, <span class="keywordtype">int</span> maxwidth, <span class="keywordtype">int</span> maxheight);</div>
775<div class="line"><a id="l02976" name="l02976"></a><span class="lineno"> 2976</span> </div>
776<div class="line"><a id="l03018" name="l03018"></a><span class="lineno"><a class="line" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937"> 3018</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> numer, <span class="keywordtype">int</span> denom);</div>
777<div class="line"><a id="l03019" name="l03019"></a><span class="lineno"> 3019</span> </div>
778<div class="line"><a id="l03059" name="l03059"></a><span class="lineno"><a class="line" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb"> 3059</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
779<div class="line"><a id="l03060" name="l03060"></a><span class="lineno"> 3060</span> </div>
780<div class="line"><a id="l03088" name="l03088"></a><span class="lineno"><a class="line" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9"> 3088</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height);</div>
781<div class="line"><a id="l03089" name="l03089"></a><span class="lineno"> 3089</span> </div>
782<div class="line"><a id="l03125" name="l03125"></a><span class="lineno"><a class="line" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1"> 3125</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* left, <span class="keywordtype">int</span>* top, <span class="keywordtype">int</span>* right, <span class="keywordtype">int</span>* bottom);</div>
783<div class="line"><a id="l03126" name="l03126"></a><span class="lineno"> 3126</span> </div>
784<div class="line"><a id="l03158" name="l03158"></a><span class="lineno"><a class="line" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c"> 3158</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span>* xscale, <span class="keywordtype">float</span>* yscale);</div>
785<div class="line"><a id="l03159" name="l03159"></a><span class="lineno"> 3159</span> </div>
786<div class="line"><a id="l03185" name="l03185"></a><span class="lineno"><a class="line" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84"> 3185</a></span>GLFWAPI <span class="keywordtype">float</span> <a class="code hl_function" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
787<div class="line"><a id="l03186" name="l03186"></a><span class="lineno"> 3186</span> </div>
788<div class="line"><a id="l03214" name="l03214"></a><span class="lineno"><a class="line" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9"> 3214</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> opacity);</div>
789<div class="line"><a id="l03215" name="l03215"></a><span class="lineno"> 3215</span> </div>
790<div class="line"><a id="l03245" name="l03245"></a><span class="lineno"><a class="line" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4"> 3245</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
791<div class="line"><a id="l03246" name="l03246"></a><span class="lineno"> 3246</span> </div>
792<div class="line"><a id="l03272" name="l03272"></a><span class="lineno"><a class="line" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7"> 3272</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
793<div class="line"><a id="l03273" name="l03273"></a><span class="lineno"> 3273</span> </div>
794<div class="line"><a id="l03297" name="l03297"></a><span class="lineno"><a class="line" href="group__window.html#ga3f541387449d911274324ae7f17ec56b"> 3297</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
795<div class="line"><a id="l03298" name="l03298"></a><span class="lineno"> 3298</span> </div>
796<div class="line"><a id="l03324" name="l03324"></a><span class="lineno"><a class="line" href="group__window.html#ga61be47917b72536a148300f46494fc66"> 3324</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
797<div class="line"><a id="l03325" name="l03325"></a><span class="lineno"> 3325</span> </div>
798<div class="line"><a id="l03346" name="l03346"></a><span class="lineno"><a class="line" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c"> 3346</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
799<div class="line"><a id="l03347" name="l03347"></a><span class="lineno"> 3347</span> </div>
800<div class="line"><a id="l03385" name="l03385"></a><span class="lineno"><a class="line" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1"> 3385</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
801<div class="line"><a id="l03386" name="l03386"></a><span class="lineno"> 3386</span> </div>
802<div class="line"><a id="l03412" name="l03412"></a><span class="lineno"><a class="line" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703"> 3412</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
803<div class="line"><a id="l03413" name="l03413"></a><span class="lineno"> 3413</span> </div>
804<div class="line"><a id="l03434" name="l03434"></a><span class="lineno"><a class="line" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299"> 3434</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* <a class="code hl_function" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
805<div class="line"><a id="l03435" name="l03435"></a><span class="lineno"> 3435</span> </div>
806<div class="line"><a id="l03493" name="l03493"></a><span class="lineno"><a class="line" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7"> 3493</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keywordtype">int</span> refreshRate);</div>
807<div class="line"><a id="l03494" name="l03494"></a><span class="lineno"> 3494</span> </div>
808<div class="line"><a id="l03527" name="l03527"></a><span class="lineno"><a class="line" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337"> 3527</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> attrib);</div>
809<div class="line"><a id="l03528" name="l03528"></a><span class="lineno"> 3528</span> </div>
810<div class="line"><a id="l03564" name="l03564"></a><span class="lineno"><a class="line" href="group__window.html#gace2afda29b4116ec012e410a6819033e"> 3564</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> attrib, <span class="keywordtype">int</span> value);</div>
811<div class="line"><a id="l03565" name="l03565"></a><span class="lineno"> 3565</span> </div>
812<div class="line"><a id="l03587" name="l03587"></a><span class="lineno"><a class="line" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651"> 3587</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">void</span>* pointer);</div>
813<div class="line"><a id="l03588" name="l03588"></a><span class="lineno"> 3588</span> </div>
814<div class="line"><a id="l03608" name="l03608"></a><span class="lineno"><a class="line" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653"> 3608</a></span>GLFWAPI <span class="keywordtype">void</span>* <a class="code hl_function" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
815<div class="line"><a id="l03609" name="l03609"></a><span class="lineno"> 3609</span> </div>
816<div class="line"><a id="l03643" name="l03643"></a><span class="lineno"><a class="line" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74"> 3643</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> <a class="code hl_function" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> callback);</div>
817<div class="line"><a id="l03644" name="l03644"></a><span class="lineno"> 3644</span> </div>
818<div class="line"><a id="l03675" name="l03675"></a><span class="lineno"><a class="line" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8"> 3675</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> <a class="code hl_function" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> callback);</div>
819<div class="line"><a id="l03676" name="l03676"></a><span class="lineno"> 3676</span> </div>
820<div class="line"><a id="l03715" name="l03715"></a><span class="lineno"><a class="line" href="group__window.html#gada646d775a7776a95ac000cfc1885331"> 3715</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> <a class="code hl_function" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> callback);</div>
821<div class="line"><a id="l03716" name="l03716"></a><span class="lineno"> 3716</span> </div>
822<div class="line"><a id="l03751" name="l03751"></a><span class="lineno"><a class="line" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e"> 3751</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> <a class="code hl_function" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> callback);</div>
823<div class="line"><a id="l03752" name="l03752"></a><span class="lineno"> 3752</span> </div>
824<div class="line"><a id="l03786" name="l03786"></a><span class="lineno"><a class="line" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c"> 3786</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> <a class="code hl_function" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> callback);</div>
825<div class="line"><a id="l03787" name="l03787"></a><span class="lineno"> 3787</span> </div>
826<div class="line"><a id="l03819" name="l03819"></a><span class="lineno"><a class="line" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e"> 3819</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> <a class="code hl_function" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> callback);</div>
827<div class="line"><a id="l03820" name="l03820"></a><span class="lineno"> 3820</span> </div>
828<div class="line"><a id="l03849" name="l03849"></a><span class="lineno"><a class="line" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93"> 3849</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> <a class="code hl_function" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> callback);</div>
829<div class="line"><a id="l03850" name="l03850"></a><span class="lineno"> 3850</span> </div>
830<div class="line"><a id="l03879" name="l03879"></a><span class="lineno"><a class="line" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f"> 3879</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> <a class="code hl_function" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> callback);</div>
831<div class="line"><a id="l03880" name="l03880"></a><span class="lineno"> 3880</span> </div>
832<div class="line"><a id="l03910" name="l03910"></a><span class="lineno"><a class="line" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6"> 3910</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> <a class="code hl_function" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> callback);</div>
833<div class="line"><a id="l03911" name="l03911"></a><span class="lineno"> 3911</span> </div>
834<div class="line"><a id="l03948" name="l03948"></a><span class="lineno"><a class="line" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832"> 3948</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>(<span class="keywordtype">void</span>);</div>
835<div class="line"><a id="l03949" name="l03949"></a><span class="lineno"> 3949</span> </div>
836<div class="line"><a id="l03993" name="l03993"></a><span class="lineno"><a class="line" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e"> 3993</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a>(<span class="keywordtype">void</span>);</div>
837<div class="line"><a id="l03994" name="l03994"></a><span class="lineno"> 3994</span> </div>
838<div class="line"><a id="l04042" name="l04042"></a><span class="lineno"><a class="line" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf"> 4042</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a>(<span class="keywordtype">double</span> timeout);</div>
839<div class="line"><a id="l04043" name="l04043"></a><span class="lineno"> 4043</span> </div>
840<div class="line"><a id="l04062" name="l04062"></a><span class="lineno"><a class="line" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9"> 4062</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a>(<span class="keywordtype">void</span>);</div>
841<div class="line"><a id="l04063" name="l04063"></a><span class="lineno"> 4063</span> </div>
842<div class="line"><a id="l04087" name="l04087"></a><span class="lineno"><a class="line" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4"> 4087</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> mode);</div>
843<div class="line"><a id="l04088" name="l04088"></a><span class="lineno"> 4088</span> </div>
844<div class="line"><a id="l04149" name="l04149"></a><span class="lineno"><a class="line" href="group__input.html#gaa92336e173da9c8834558b54ee80563b"> 4149</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> value);</div>
845<div class="line"><a id="l04150" name="l04150"></a><span class="lineno"> 4150</span> </div>
846<div class="line"><a id="l04178" name="l04178"></a><span class="lineno"><a class="line" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2"> 4178</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a>(<span class="keywordtype">void</span>);</div>
847<div class="line"><a id="l04179" name="l04179"></a><span class="lineno"> 4179</span> </div>
848<div class="line"><a id="l04246" name="l04246"></a><span class="lineno"><a class="line" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f"> 4246</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode);</div>
849<div class="line"><a id="l04247" name="l04247"></a><span class="lineno"> 4247</span> </div>
850<div class="line"><a id="l04270" name="l04270"></a><span class="lineno"><a class="line" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a"> 4270</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>(<span class="keywordtype">int</span> key);</div>
851<div class="line"><a id="l04271" name="l04271"></a><span class="lineno"> 4271</span> </div>
852<div class="line"><a id="l04310" name="l04310"></a><span class="lineno"><a class="line" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2"> 4310</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key);</div>
853<div class="line"><a id="l04311" name="l04311"></a><span class="lineno"> 4311</span> </div>
854<div class="line"><a id="l04339" name="l04339"></a><span class="lineno"><a class="line" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704"> 4339</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button);</div>
855<div class="line"><a id="l04340" name="l04340"></a><span class="lineno"> 4340</span> </div>
856<div class="line"><a id="l04377" name="l04377"></a><span class="lineno"><a class="line" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc"> 4377</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span>* xpos, <span class="keywordtype">double</span>* ypos);</div>
857<div class="line"><a id="l04378" name="l04378"></a><span class="lineno"> 4378</span> </div>
858<div class="line"><a id="l04417" name="l04417"></a><span class="lineno"><a class="line" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7"> 4417</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
859<div class="line"><a id="l04418" name="l04418"></a><span class="lineno"> 4418</span> </div>
860<div class="line"><a id="l04455" name="l04455"></a><span class="lineno"><a class="line" href="group__input.html#ga556f604f73af156c0db0e97c081373c3"> 4455</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* <a class="code hl_function" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a>* image, <span class="keywordtype">int</span> xhot, <span class="keywordtype">int</span> yhot);</div>
861<div class="line"><a id="l04456" name="l04456"></a><span class="lineno"> 4456</span> </div>
862<div class="line"><a id="l04478" name="l04478"></a><span class="lineno"><a class="line" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e"> 4478</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* <a class="code hl_function" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>(<span class="keywordtype">int</span> shape);</div>
863<div class="line"><a id="l04479" name="l04479"></a><span class="lineno"> 4479</span> </div>
864<div class="line"><a id="l04505" name="l04505"></a><span class="lineno"><a class="line" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a"> 4505</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>(<a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor);</div>
865<div class="line"><a id="l04506" name="l04506"></a><span class="lineno"> 4506</span> </div>
866<div class="line"><a id="l04532" name="l04532"></a><span class="lineno"><a class="line" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e"> 4532</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor);</div>
867<div class="line"><a id="l04533" name="l04533"></a><span class="lineno"> 4533</span> </div>
868<div class="line"><a id="l04582" name="l04582"></a><span class="lineno"><a class="line" href="group__input.html#ga1caf18159767e761185e49a3be019f8d"> 4582</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> <a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> callback);</div>
869<div class="line"><a id="l04583" name="l04583"></a><span class="lineno"> 4583</span> </div>
870<div class="line"><a id="l04625" name="l04625"></a><span class="lineno"><a class="line" href="group__input.html#gab25c4a220fd8f5717718dbc487828996"> 4625</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> <a class="code hl_function" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> callback);</div>
871<div class="line"><a id="l04626" name="l04626"></a><span class="lineno"> 4626</span> </div>
872<div class="line"><a id="l04667" name="l04667"></a><span class="lineno"><a class="line" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c"> 4667</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> <a class="code hl_function" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> callback);</div>
873<div class="line"><a id="l04668" name="l04668"></a><span class="lineno"> 4668</span> </div>
874<div class="line"><a id="l04704" name="l04704"></a><span class="lineno"><a class="line" href="group__input.html#ga6ab84420974d812bee700e45284a723c"> 4704</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> <a class="code hl_function" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> callback);</div>
875<div class="line"><a id="l04705" name="l04705"></a><span class="lineno"> 4705</span> </div>
876<div class="line"><a id="l04736" name="l04736"></a><span class="lineno"><a class="line" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7"> 4736</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> <a class="code hl_function" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> callback);</div>
877<div class="line"><a id="l04737" name="l04737"></a><span class="lineno"> 4737</span> </div>
878<div class="line"><a id="l04767" name="l04767"></a><span class="lineno"><a class="line" href="group__input.html#gad27f8ad0142c038a281466c0966817d8"> 4767</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> <a class="code hl_function" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> callback);</div>
879<div class="line"><a id="l04768" name="l04768"></a><span class="lineno"> 4768</span> </div>
880<div class="line"><a id="l04801" name="l04801"></a><span class="lineno"><a class="line" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede"> 4801</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> <a class="code hl_function" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> callback);</div>
881<div class="line"><a id="l04802" name="l04802"></a><span class="lineno"> 4802</span> </div>
882<div class="line"><a id="l04838" name="l04838"></a><span class="lineno"><a class="line" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b"> 4838</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> <a class="code hl_function" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> callback);</div>
883<div class="line"><a id="l04839" name="l04839"></a><span class="lineno"> 4839</span> </div>
884<div class="line"><a id="l04862" name="l04862"></a><span class="lineno"><a class="line" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1"> 4862</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>(<span class="keywordtype">int</span> jid);</div>
885<div class="line"><a id="l04863" name="l04863"></a><span class="lineno"> 4863</span> </div>
886<div class="line"><a id="l04895" name="l04895"></a><span class="lineno"><a class="line" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408"> 4895</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">float</span>* <a class="code hl_function" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span>* count);</div>
887<div class="line"><a id="l04896" name="l04896"></a><span class="lineno"> 4896</span> </div>
888<div class="line"><a id="l04936" name="l04936"></a><span class="lineno"><a class="line" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938"> 4936</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span>* count);</div>
889<div class="line"><a id="l04937" name="l04937"></a><span class="lineno"> 4937</span> </div>
890<div class="line"><a id="l04993" name="l04993"></a><span class="lineno"><a class="line" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c"> 4993</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span>* count);</div>
891<div class="line"><a id="l04994" name="l04994"></a><span class="lineno"> 4994</span> </div>
892<div class="line"><a id="l05024" name="l05024"></a><span class="lineno"><a class="line" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978"> 5024</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>(<span class="keywordtype">int</span> jid);</div>
893<div class="line"><a id="l05025" name="l05025"></a><span class="lineno"> 5025</span> </div>
894<div class="line"><a id="l05065" name="l05065"></a><span class="lineno"><a class="line" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600"> 5065</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a>(<span class="keywordtype">int</span> jid);</div>
895<div class="line"><a id="l05066" name="l05066"></a><span class="lineno"> 5066</span> </div>
896<div class="line"><a id="l05091" name="l05091"></a><span class="lineno"><a class="line" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e"> 5091</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">void</span>* pointer);</div>
897<div class="line"><a id="l05092" name="l05092"></a><span class="lineno"> 5092</span> </div>
898<div class="line"><a id="l05115" name="l05115"></a><span class="lineno"><a class="line" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3"> 5115</a></span>GLFWAPI <span class="keywordtype">void</span>* <a class="code hl_function" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a>(<span class="keywordtype">int</span> jid);</div>
899<div class="line"><a id="l05116" name="l05116"></a><span class="lineno"> 5116</span> </div>
900<div class="line"><a id="l05143" name="l05143"></a><span class="lineno"><a class="line" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00"> 5143</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a>(<span class="keywordtype">int</span> jid);</div>
901<div class="line"><a id="l05144" name="l05144"></a><span class="lineno"> 5144</span> </div>
902<div class="line"><a id="l05179" name="l05179"></a><span class="lineno"><a class="line" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"> 5179</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> <a class="code hl_function" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a>(<a class="code hl_typedef" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> callback);</div>
903<div class="line"><a id="l05180" name="l05180"></a><span class="lineno"> 5180</span> </div>
904<div class="line"><a id="l05213" name="l05213"></a><span class="lineno"><a class="line" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f"> 5213</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">string</span>);</div>
905<div class="line"><a id="l05214" name="l05214"></a><span class="lineno"> 5214</span> </div>
906<div class="line"><a id="l05243" name="l05243"></a><span class="lineno"><a class="line" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728"> 5243</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a>(<span class="keywordtype">int</span> jid);</div>
907<div class="line"><a id="l05244" name="l05244"></a><span class="lineno"> 5244</span> </div>
908<div class="line"><a id="l05281" name="l05281"></a><span class="lineno"><a class="line" href="group__input.html#gadccddea8bce6113fa459de379ddaf051"> 5281</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a>(<span class="keywordtype">int</span> jid, <a class="code hl_struct" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>* state);</div>
909<div class="line"><a id="l05282" name="l05282"></a><span class="lineno"> 5282</span> </div>
910<div class="line"><a id="l05306" name="l05306"></a><span class="lineno"><a class="line" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd"> 5306</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">string</span>);</div>
911<div class="line"><a id="l05307" name="l05307"></a><span class="lineno"> 5307</span> </div>
912<div class="line"><a id="l05336" name="l05336"></a><span class="lineno"><a class="line" href="group__input.html#ga71a5b20808ea92193d65c21b82580355"> 5336</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
913<div class="line"><a id="l05337" name="l05337"></a><span class="lineno"> 5337</span> </div>
914<div class="line"><a id="l05366" name="l05366"></a><span class="lineno"><a class="line" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a"> 5366</a></span>GLFWAPI <span class="keywordtype">double</span> <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>(<span class="keywordtype">void</span>);</div>
915<div class="line"><a id="l05367" name="l05367"></a><span class="lineno"> 5367</span> </div>
916<div class="line"><a id="l05396" name="l05396"></a><span class="lineno"><a class="line" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0"> 5396</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>(<span class="keywordtype">double</span> time);</div>
917<div class="line"><a id="l05397" name="l05397"></a><span class="lineno"> 5397</span> </div>
918<div class="line"><a id="l05418" name="l05418"></a><span class="lineno"><a class="line" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa"> 5418</a></span>GLFWAPI uint64_t <a class="code hl_function" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>(<span class="keywordtype">void</span>);</div>
919<div class="line"><a id="l05419" name="l05419"></a><span class="lineno"> 5419</span> </div>
920<div class="line"><a id="l05438" name="l05438"></a><span class="lineno"><a class="line" href="group__input.html#ga3289ee876572f6e91f06df3a24824443"> 5438</a></span>GLFWAPI uint64_t <a class="code hl_function" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>(<span class="keywordtype">void</span>);</div>
921<div class="line"><a id="l05439" name="l05439"></a><span class="lineno"> 5439</span> </div>
922<div class="line"><a id="l05476" name="l05476"></a><span class="lineno"><a class="line" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157"> 5476</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
923<div class="line"><a id="l05477" name="l05477"></a><span class="lineno"> 5477</span> </div>
924<div class="line"><a id="l05497" name="l05497"></a><span class="lineno"><a class="line" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c"> 5497</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* <a class="code hl_function" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a>(<span class="keywordtype">void</span>);</div>
925<div class="line"><a id="l05498" name="l05498"></a><span class="lineno"> 5498</span> </div>
926<div class="line"><a id="l05531" name="l05531"></a><span class="lineno"><a class="line" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14"> 5531</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
927<div class="line"><a id="l05532" name="l05532"></a><span class="lineno"> 5532</span> </div>
928<div class="line"><a id="l05577" name="l05577"></a><span class="lineno"><a class="line" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed"> 5577</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(<span class="keywordtype">int</span> interval);</div>
929<div class="line"><a id="l05578" name="l05578"></a><span class="lineno"> 5578</span> </div>
930<div class="line"><a id="l05615" name="l05615"></a><span class="lineno"><a class="line" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa"> 5615</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* extension);</div>
931<div class="line"><a id="l05616" name="l05616"></a><span class="lineno"> 5616</span> </div>
932<div class="line"><a id="l05657" name="l05657"></a><span class="lineno"><a class="line" href="group__context.html#ga35f1837e6f666781842483937612f163"> 5657</a></span>GLFWAPI <a class="code hl_typedef" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a> <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* procname);</div>
933<div class="line"><a id="l05658" name="l05658"></a><span class="lineno"> 5658</span> </div>
934<div class="line"><a id="l05683" name="l05683"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b"> 5683</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>(<span class="keywordtype">void</span>);</div>
935<div class="line"><a id="l05684" name="l05684"></a><span class="lineno"> 5684</span> </div>
936<div class="line"><a id="l05730" name="l05730"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6"> 5730</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>** <a class="code hl_function" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>(uint32_t* count);</div>
937<div class="line"><a id="l05731" name="l05731"></a><span class="lineno"> 5731</span> </div>
938<div class="line"><a id="l05732" name="l05732"></a><span class="lineno"> 5732</span><span class="preprocessor">#if defined(VK_VERSION_1_0)</span></div>
939<div class="line"><a id="l05733" name="l05733"></a><span class="lineno"> 5733</span> </div>
940<div class="line"><a id="l05773" name="l05773"></a><span class="lineno"><a class="line" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9"> 5773</a></span>GLFWAPI <a class="code hl_typedef" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(VkInstance instance, <span class="keyword">const</span> <span class="keywordtype">char</span>* procname);</div>
941<div class="line"><a id="l05774" name="l05774"></a><span class="lineno"> 5774</span> </div>
942<div class="line"><a id="l05810" name="l05810"></a><span class="lineno"><a class="line" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92"> 5810</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a>(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);</div>
943<div class="line"><a id="l05811" name="l05811"></a><span class="lineno"> 5811</span> </div>
944<div class="line"><a id="l05871" name="l05871"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965"> 5871</a></span>GLFWAPI VkResult <a class="code hl_function" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>(VkInstance instance, <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keyword">const</span> VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);</div>
945<div class="line"><a id="l05872" name="l05872"></a><span class="lineno"> 5872</span> </div>
946<div class="line"><a id="l05873" name="l05873"></a><span class="lineno"> 5873</span><span class="preprocessor">#endif </span><span class="comment">/*VK_VERSION_1_0*/</span><span class="preprocessor"></span></div>
947<div class="line"><a id="l05874" name="l05874"></a><span class="lineno"> 5874</span> </div>
948<div class="line"><a id="l05875" name="l05875"></a><span class="lineno"> 5875</span> </div>
949<div class="line"><a id="l05876" name="l05876"></a><span class="lineno"> 5876</span><span class="comment">/*************************************************************************</span></div>
950<div class="line"><a id="l05877" name="l05877"></a><span class="lineno"> 5877</span><span class="comment"> * Global definition cleanup</span></div>
951<div class="line"><a id="l05878" name="l05878"></a><span class="lineno"> 5878</span><span class="comment"> *************************************************************************/</span></div>
952<div class="line"><a id="l05879" name="l05879"></a><span class="lineno"> 5879</span> </div>
953<div class="line"><a id="l05880" name="l05880"></a><span class="lineno"> 5880</span><span class="comment">/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */</span></div>
954<div class="line"><a id="l05881" name="l05881"></a><span class="lineno"> 5881</span> </div>
955<div class="line"><a id="l05882" name="l05882"></a><span class="lineno"> 5882</span><span class="preprocessor">#ifdef GLFW_WINGDIAPI_DEFINED</span></div>
956<div class="line"><a id="l05883" name="l05883"></a><span class="lineno"> 5883</span><span class="preprocessor"> #undef WINGDIAPI</span></div>
957<div class="line"><a id="l05884" name="l05884"></a><span class="lineno"> 5884</span><span class="preprocessor"> #undef GLFW_WINGDIAPI_DEFINED</span></div>
958<div class="line"><a id="l05885" name="l05885"></a><span class="lineno"> 5885</span><span class="preprocessor">#endif</span></div>
959<div class="line"><a id="l05886" name="l05886"></a><span class="lineno"> 5886</span> </div>
960<div class="line"><a id="l05887" name="l05887"></a><span class="lineno"> 5887</span><span class="preprocessor">#ifdef GLFW_CALLBACK_DEFINED</span></div>
961<div class="line"><a id="l05888" name="l05888"></a><span class="lineno"> 5888</span><span class="preprocessor"> #undef CALLBACK</span></div>
962<div class="line"><a id="l05889" name="l05889"></a><span class="lineno"> 5889</span><span class="preprocessor"> #undef GLFW_CALLBACK_DEFINED</span></div>
963<div class="line"><a id="l05890" name="l05890"></a><span class="lineno"> 5890</span><span class="preprocessor">#endif</span></div>
964<div class="line"><a id="l05891" name="l05891"></a><span class="lineno"> 5891</span> </div>
965<div class="line"><a id="l05892" name="l05892"></a><span class="lineno"> 5892</span><span class="comment">/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally</span></div>
966<div class="line"><a id="l05893" name="l05893"></a><span class="lineno"> 5893</span><span class="comment"> * defined by some gl.h variants (OpenBSD) so define it after if needed.</span></div>
967<div class="line"><a id="l05894" name="l05894"></a><span class="lineno"> 5894</span><span class="comment"> */</span></div>
968<div class="line"><a id="l05895" name="l05895"></a><span class="lineno"> 5895</span><span class="preprocessor">#ifndef GLAPIENTRY</span></div>
969<div class="line"><a id="l05896" name="l05896"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206"> 5896</a></span><span class="preprocessor"> #define GLAPIENTRY APIENTRY</span></div>
970<div class="line"><a id="l05897" name="l05897"></a><span class="lineno"> 5897</span><span class="preprocessor">#endif</span></div>
971<div class="line"><a id="l05898" name="l05898"></a><span class="lineno"> 5898</span> </div>
972<div class="line"><a id="l05899" name="l05899"></a><span class="lineno"> 5899</span><span class="comment">/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */</span></div>
973<div class="line"><a id="l05900" name="l05900"></a><span class="lineno"> 5900</span> </div>
974<div class="line"><a id="l05901" name="l05901"></a><span class="lineno"> 5901</span> </div>
975<div class="line"><a id="l05902" name="l05902"></a><span class="lineno"> 5902</span><span class="preprocessor">#ifdef __cplusplus</span></div>
976<div class="line"><a id="l05903" name="l05903"></a><span class="lineno"> 5903</span>}</div>
977<div class="line"><a id="l05904" name="l05904"></a><span class="lineno"> 5904</span><span class="preprocessor">#endif</span></div>
978<div class="line"><a id="l05905" name="l05905"></a><span class="lineno"> 5905</span> </div>
979<div class="line"><a id="l05906" name="l05906"></a><span class="lineno"> 5906</span><span class="preprocessor">#endif </span><span class="comment">/* _glfw3_h_ */</span><span class="preprocessor"></span></div>
980<div class="line"><a id="l05907" name="l05907"></a><span class="lineno"> 5907</span> </div>
981<div class="ttc" id="agroup__context_html_ga1c04dc242268f827290fe40aa1c91157"><div class="ttname"><a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></div><div class="ttdeci">void glfwMakeContextCurrent(GLFWwindow *window)</div><div class="ttdoc">Makes the context of the specified window current for the calling thread.</div></div>
982<div class="ttc" id="agroup__context_html_ga35f1837e6f666781842483937612f163"><div class="ttname"><a href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></div><div class="ttdeci">GLFWglproc glfwGetProcAddress(const char *procname)</div><div class="ttdoc">Returns the address of the specified function for the current context.</div></div>
983<div class="ttc" id="agroup__context_html_ga3d47c2d2fbe0be9c505d0e04e91a133c"><div class="ttname"><a href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a></div><div class="ttdeci">void(* GLFWglproc)(void)</div><div class="ttdoc">Client API function pointer type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1148</div></div>
984<div class="ttc" id="agroup__context_html_ga6d4e0cdf151b5e579bd67f13202994ed"><div class="ttname"><a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></div><div class="ttdeci">void glfwSwapInterval(int interval)</div><div class="ttdoc">Sets the swap interval for the current context.</div></div>
985<div class="ttc" id="agroup__context_html_ga87425065c011cef1ebd6aac75e059dfa"><div class="ttname"><a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></div><div class="ttdeci">int glfwExtensionSupported(const char *extension)</div><div class="ttdoc">Returns whether the specified extension is available.</div></div>
986<div class="ttc" id="agroup__context_html_gad94e80185397a6cf5fe2ab30567af71c"><div class="ttname"><a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></div><div class="ttdeci">GLFWwindow * glfwGetCurrentContext(void)</div><div class="ttdoc">Returns the window whose context is current on the calling thread.</div></div>
987<div class="ttc" id="agroup__init_html_ga026abd003c8e6501981ab1662062f1c0"><div class="ttname"><a href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></div><div class="ttdeci">const char * glfwGetVersionString(void)</div><div class="ttdoc">Returns a string describing the compile-time configuration.</div></div>
988<div class="ttc" id="agroup__init_html_ga110fd1d3f0412822b4f1908c026f724a"><div class="ttname"><a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></div><div class="ttdeci">void glfwInitHint(int hint, int value)</div><div class="ttdoc">Sets the specified init hint to the desired value.</div></div>
989<div class="ttc" id="agroup__init_html_ga317aac130a235ab08c6db0834907d85e"><div class="ttname"><a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></div><div class="ttdeci">int glfwInit(void)</div><div class="ttdoc">Initializes the GLFW library.</div></div>
990<div class="ttc" id="agroup__init_html_ga8184701785c096b3862a75cda1bf44a3"><div class="ttname"><a href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a></div><div class="ttdeci">void(* GLFWerrorfun)(int error_code, const char *description)</div><div class="ttdoc">The function pointer type for error callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1222</div></div>
991<div class="ttc" id="agroup__init_html_ga944986b4ec0b928d488141f92982aa18"><div class="ttname"><a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></div><div class="ttdeci">int glfwGetError(const char **description)</div><div class="ttdoc">Returns and clears the last error for the calling thread.</div></div>
992<div class="ttc" id="agroup__init_html_ga9f8ffaacf3c269cc48eafbf8b9b71197"><div class="ttname"><a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></div><div class="ttdeci">void glfwGetVersion(int *major, int *minor, int *rev)</div><div class="ttdoc">Retrieves the version of the GLFW library.</div></div>
993<div class="ttc" id="agroup__init_html_gaaae48c0a18607ea4a4ba951d939f0901"><div class="ttname"><a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></div><div class="ttdeci">void glfwTerminate(void)</div><div class="ttdoc">Terminates the GLFW library.</div></div>
994<div class="ttc" id="agroup__init_html_gaff45816610d53f0b83656092a4034f40"><div class="ttname"><a href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></div><div class="ttdeci">GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)</div><div class="ttdoc">Sets the error callback.</div></div>
995<div class="ttc" id="agroup__input_html_ga0184dcb59f6d85d735503dcaae809727"><div class="ttname"><a href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a></div><div class="ttdeci">void(* GLFWmousebuttonfun)(GLFWwindow *window, int button, int action, int mods)</div><div class="ttdoc">The function pointer type for mouse button callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1438</div></div>
996<div class="ttc" id="agroup__input_html_ga01d37b6c40133676b9cea60ca1d7c0cc"><div class="ttname"><a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a></div><div class="ttdeci">void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)</div><div class="ttdoc">Retrieves the position of the cursor relative to the content area of the window.</div></div>
997<div class="ttc" id="agroup__input_html_ga04b03af936d906ca123c8f4ee08b39e7"><div class="ttname"><a href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a></div><div class="ttdeci">void glfwSetCursorPos(GLFWwindow *window, double xpos, double ypos)</div><div class="ttdoc">Sets the position of the cursor, relative to the content area of the window.</div></div>
998<div class="ttc" id="agroup__input_html_ga06e660841b3e79c54da4f54a932c5a2c"><div class="ttname"><a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickHats(int jid, int *count)</div><div class="ttdoc">Returns the state of all hats of the specified joystick.</div></div>
999<div class="ttc" id="agroup__input_html_ga09b2bd37d328e0b9456c7ec575cc26aa"><div class="ttname"><a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></div><div class="ttdeci">uint64_t glfwGetTimerValue(void)</div><div class="ttdoc">Returns the current value of the raw timer.</div></div>
1000<div class="ttc" id="agroup__input_html_ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><div class="ttname"><a href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a></div><div class="ttdeci">GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow *window, GLFWcharmodsfun callback)</div><div class="ttdoc">Sets the Unicode character with modifiers callback.</div></div>
1001<div class="ttc" id="agroup__input_html_ga18cefd7265d1fa04f3fd38a6746db5f3"><div class="ttname"><a href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a></div><div class="ttdeci">void * glfwGetJoystickUserPointer(int jid)</div><div class="ttdoc">Returns the user pointer of the specified joystick.</div></div>
1002<div class="ttc" id="agroup__input_html_ga1ab90a55cf3f58639b893c0f4118cb6e"><div class="ttname"><a href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a></div><div class="ttdeci">void(* GLFWcharfun)(GLFWwindow *window, unsigned int codepoint)</div><div class="ttdoc">The function pointer type for Unicode character callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1550</div></div>
1003<div class="ttc" id="agroup__input_html_ga1caf18159767e761185e49a3be019f8d"><div class="ttname"><a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></div><div class="ttdeci">GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)</div><div class="ttdoc">Sets the key callback.</div></div>
1004<div class="ttc" id="agroup__input_html_ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><div class="ttname"><a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a></div><div class="ttdeci">GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback)</div><div class="ttdoc">Sets the joystick configuration callback.</div></div>
1005<div class="ttc" id="agroup__input_html_ga3289ee876572f6e91f06df3a24824443"><div class="ttname"><a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></div><div class="ttdeci">uint64_t glfwGetTimerFrequency(void)</div><div class="ttdoc">Returns the frequency, in Hz, of the raw timer.</div></div>
1006<div class="ttc" id="agroup__input_html_ga556f604f73af156c0db0e97c081373c3"><div class="ttname"><a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)</div><div class="ttdoc">Creates a custom cursor.</div></div>
1007<div class="ttc" id="agroup__input_html_ga571e45a030ae4061f746ed56cb76aede"><div class="ttname"><a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a></div><div class="ttdeci">GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun callback)</div><div class="ttdoc">Sets the scroll callback.</div></div>
1008<div class="ttc" id="agroup__input_html_ga5bd751b27b90f865d2ea613533f0453c"><div class="ttname"><a href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a></div><div class="ttdeci">void(* GLFWkeyfun)(GLFWwindow *window, int key, int scancode, int action, int mods)</div><div class="ttdoc">The function pointer type for keyboard key callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1529</div></div>
1009<div class="ttc" id="agroup__input_html_ga5ffe34739d3dc97efe432ed2d81d9938"><div class="ttname"><a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickButtons(int jid, int *count)</div><div class="ttdoc">Returns the state of all buttons of the specified joystick.</div></div>
1010<div class="ttc" id="agroup__input_html_ga61acfb1f28f751438dd221225c5e725d"><div class="ttname"><a href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a></div><div class="ttdeci">struct GLFWgamepadstate GLFWgamepadstate</div><div class="ttdoc">Gamepad input state.</div></div>
1011<div class="ttc" id="agroup__input_html_ga6659411aec3c7fcef27780e2cb2d9600"><div class="ttname"><a href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a></div><div class="ttdeci">const char * glfwGetJoystickGUID(int jid)</div><div class="ttdoc">Returns the SDL compatible GUID of the specified joystick.</div></div>
1012<div class="ttc" id="agroup__input_html_ga67ddd1b7dcbbaff03e4a76c0ea67103a"><div class="ttname"><a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a></div><div class="ttdeci">int glfwGetKeyScancode(int key)</div><div class="ttdoc">Returns the platform-specific scancode of the specified key.</div></div>
1013<div class="ttc" id="agroup__input_html_ga6ab84420974d812bee700e45284a723c"><div class="ttname"><a href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a></div><div class="ttdeci">GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun callback)</div><div class="ttdoc">Sets the mouse button callback.</div></div>
1014<div class="ttc" id="agroup__input_html_ga6b2f72d64d636b48a727b437cbb7489e"><div class="ttname"><a href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a></div><div class="ttdeci">void glfwSetJoystickUserPointer(int jid, void *pointer)</div><div class="ttdoc">Sets the user pointer of the specified joystick.</div></div>
1015<div class="ttc" id="agroup__input_html_ga71a5b20808ea92193d65c21b82580355"><div class="ttname"><a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a></div><div class="ttdeci">const char * glfwGetClipboardString(GLFWwindow *window)</div><div class="ttdoc">Returns the contents of the clipboard as a string.</div></div>
1016<div class="ttc" id="agroup__input_html_ga81b952cd1764274d0db7fb3c5a79ba6a"><div class="ttname"><a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a></div><div class="ttdeci">void glfwDestroyCursor(GLFWcursor *cursor)</div><div class="ttdoc">Destroys a cursor.</div></div>
1017<div class="ttc" id="agroup__input_html_ga89261ae18c75e863aaf2656ecdd238f4"><div class="ttname"><a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></div><div class="ttdeci">struct GLFWcursor GLFWcursor</div><div class="ttdoc">Opaque cursor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1198</div></div>
1018<div class="ttc" id="agroup__input_html_ga8aea73a1a25cc6c0486a617019f56728"><div class="ttname"><a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></div><div class="ttdeci">const char * glfwGetGamepadName(int jid)</div><div class="ttdoc">Returns the human-readable gamepad name for the specified joystick.</div></div>
1019<div class="ttc" id="agroup__input_html_gaa21ad5986ae9a26077a40142efb56243"><div class="ttname"><a href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a></div><div class="ttdeci">void(* GLFWjoystickfun)(int jid, int event)</div><div class="ttdoc">The function pointer type for joystick configuration callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1643</div></div>
1020<div class="ttc" id="agroup__input_html_gaa6cf4e7a77158a3b8fd00328b1720a4a"><div class="ttname"><a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></div><div class="ttdeci">double glfwGetTime(void)</div><div class="ttdoc">Returns the GLFW time.</div></div>
1021<div class="ttc" id="agroup__input_html_gaa92336e173da9c8834558b54ee80563b"><div class="ttname"><a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></div><div class="ttdeci">void glfwSetInputMode(GLFWwindow *window, int mode, int value)</div><div class="ttdoc">Sets an input option for the specified window.</div></div>
1022<div class="ttc" id="agroup__input_html_gaa93dc4818ac9ab32532909d53a337cbe"><div class="ttname"><a href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a></div><div class="ttdeci">void(* GLFWcursorenterfun)(GLFWwindow *window, int entered)</div><div class="ttdoc">The function pointer type for cursor enter/leave callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1482</div></div>
1023<div class="ttc" id="agroup__input_html_gaaba73c3274062c18723b7f05862d94b2"><div class="ttname"><a href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a></div><div class="ttdeci">void(* GLFWdropfun)(GLFWwindow *window, int path_count, const char *paths[])</div><div class="ttdoc">The function pointer type for path drop callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1601</div></div>
1024<div class="ttc" id="agroup__input_html_gab25c4a220fd8f5717718dbc487828996"><div class="ttname"><a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a></div><div class="ttdeci">GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun callback)</div><div class="ttdoc">Sets the Unicode character callback.</div></div>
1025<div class="ttc" id="agroup__input_html_gab773f0ee0a07cff77a210cea40bc1f6b"><div class="ttname"><a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a></div><div class="ttdeci">GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun callback)</div><div class="ttdoc">Sets the path drop callback.</div></div>
1026<div class="ttc" id="agroup__input_html_gaba1f022c5eb07dfac421df34cdcd31dd"><div class="ttname"><a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a></div><div class="ttdeci">void glfwSetClipboardString(GLFWwindow *window, const char *string)</div><div class="ttdoc">Sets the clipboard to the specified string.</div></div>
1027<div class="ttc" id="agroup__input_html_gac1473feacb5996c01a7a5a33b5066704"><div class="ttname"><a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a></div><div class="ttdeci">int glfwGetMouseButton(GLFWwindow *window, int button)</div><div class="ttdoc">Returns the last reported state of a mouse button for the specified window.</div></div>
1028<div class="ttc" id="agroup__input_html_gac1f879ab7435d54d4d79bb469fe225d7"><div class="ttname"><a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a></div><div class="ttdeci">GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun callback)</div><div class="ttdoc">Sets the cursor position callback.</div></div>
1029<div class="ttc" id="agroup__input_html_gac3cf64f90b6219c05ac7b7822d5a4b8f"><div class="ttname"><a href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a></div><div class="ttdeci">void(* GLFWcharmodsfun)(GLFWwindow *window, unsigned int codepoint, int mods)</div><div class="ttdoc">The function pointer type for Unicode character with modifiers callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1577</div></div>
1030<div class="ttc" id="agroup__input_html_gac6a8e769e18e0bcfa9097793fc2c3978"><div class="ttname"><a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a></div><div class="ttdeci">const char * glfwGetJoystickName(int jid)</div><div class="ttdoc">Returns the name of the specified joystick.</div></div>
1031<div class="ttc" id="agroup__input_html_gad0f676860f329d80f7e47e9f06a96f00"><div class="ttname"><a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></div><div class="ttdeci">int glfwJoystickIsGamepad(int jid)</div><div class="ttdoc">Returns whether the specified joystick has a gamepad mapping.</div></div>
1032<div class="ttc" id="agroup__input_html_gad27f8ad0142c038a281466c0966817d8"><div class="ttname"><a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a></div><div class="ttdeci">GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun callback)</div><div class="ttdoc">Sets the cursor enter/leave callback.</div></div>
1033<div class="ttc" id="agroup__input_html_gad3b4f38c8d5dae036bc8fa959e18343e"><div class="ttname"><a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a></div><div class="ttdeci">void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)</div><div class="ttdoc">Sets the cursor for the window.</div></div>
1034<div class="ttc" id="agroup__input_html_gad6fae41b3ac2e4209aaa87b596c57f68"><div class="ttname"><a href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a></div><div class="ttdeci">void(* GLFWcursorposfun)(GLFWwindow *window, double xpos, double ypos)</div><div class="ttdoc">The function pointer type for cursor position callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1461</div></div>
1035<div class="ttc" id="agroup__input_html_gadccddea8bce6113fa459de379ddaf051"><div class="ttname"><a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></div><div class="ttdeci">int glfwGetGamepadState(int jid, GLFWgamepadstate *state)</div><div class="ttdoc">Retrieves the state of the specified joystick remapped as a gamepad.</div></div>
1036<div class="ttc" id="agroup__input_html_gadd341da06bc8d418b4dc3a3518af9ad2"><div class="ttname"><a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a></div><div class="ttdeci">int glfwGetKey(GLFWwindow *window, int key)</div><div class="ttdoc">Returns the last reported state of a keyboard key for the specified window.</div></div>
1037<div class="ttc" id="agroup__input_html_gae4ee0dbd0d256183e1ea4026d897e1c2"><div class="ttname"><a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a></div><div class="ttdeci">int glfwRawMouseMotionSupported(void)</div><div class="ttdoc">Returns whether raw mouse motion is supported.</div></div>
1038<div class="ttc" id="agroup__input_html_gaeaed62e69c3bd62b7ff8f7b19913ce4f"><div class="ttname"><a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a></div><div class="ttdeci">const char * glfwGetKeyName(int key, int scancode)</div><div class="ttdoc">Returns the layout-specific name of the specified printable key.</div></div>
1039<div class="ttc" id="agroup__input_html_gaeb1c0191d3140a233a682987c61eb408"><div class="ttname"><a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a></div><div class="ttdeci">const float * glfwGetJoystickAxes(int jid, int *count)</div><div class="ttdoc">Returns the values of all axes of the specified joystick.</div></div>
1040<div class="ttc" id="agroup__input_html_gaed0966cee139d815317f9ffcba64c9f1"><div class="ttname"><a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a></div><div class="ttdeci">int glfwJoystickPresent(int jid)</div><div class="ttdoc">Returns whether the specified joystick is present.</div></div>
1041<div class="ttc" id="agroup__input_html_gaed5104612f2fa8e66aa6e846652ad00f"><div class="ttname"><a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a></div><div class="ttdeci">int glfwUpdateGamepadMappings(const char *string)</div><div class="ttdoc">Adds the specified SDL_GameControllerDB gamepad mappings.</div></div>
1042<div class="ttc" id="agroup__input_html_gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><div class="ttname"><a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateStandardCursor(int shape)</div><div class="ttdoc">Creates a cursor with a standard shape.</div></div>
1043<div class="ttc" id="agroup__input_html_gaf59589ef6e8b8c8b5ad184b25afd4dc0"><div class="ttname"><a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a></div><div class="ttdeci">void glfwSetTime(double time)</div><div class="ttdoc">Sets the GLFW time.</div></div>
1044<div class="ttc" id="agroup__input_html_gaf5b859dbe19bdf434e42695ea45cc5f4"><div class="ttname"><a href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a></div><div class="ttdeci">int glfwGetInputMode(GLFWwindow *window, int mode)</div><div class="ttdoc">Returns the value of an input option for the specified window.</div></div>
1045<div class="ttc" id="agroup__input_html_gaf656112c33de3efdb227fa58f0134cf5"><div class="ttname"><a href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a></div><div class="ttdeci">void(* GLFWscrollfun)(GLFWwindow *window, double xoffset, double yoffset)</div><div class="ttdoc">The function pointer type for scroll callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1503</div></div>
1046<div class="ttc" id="agroup__monitor_html_ga102f54e7acc9149edbcf0997152df8c9"><div class="ttname"><a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a></div><div class="ttdeci">void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)</div><div class="ttdoc">Returns the position of the monitor's viewport on the virtual screen.</div></div>
1047<div class="ttc" id="agroup__monitor_html_ga1adbfbfb8cd58b23cfee82e574fbbdc5"><div class="ttname"><a href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a></div><div class="ttdeci">void * glfwGetMonitorUserPointer(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the user pointer of the specified monitor.</div></div>
1048<div class="ttc" id="agroup__monitor_html_ga583f0ffd0d29613d8cd172b996bbf0dd"><div class="ttname"><a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></div><div class="ttdeci">void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)</div><div class="ttdoc">Sets the current gamma ramp for the specified monitor.</div></div>
1049<div class="ttc" id="agroup__monitor_html_ga6ac582625c990220785ddd34efa3169a"><div class="ttname"><a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a></div><div class="ttdeci">void glfwSetGamma(GLFWmonitor *monitor, float gamma)</div><div class="ttdoc">Generates a gamma ramp and sets it for the specified monitor.</div></div>
1050<div class="ttc" id="agroup__monitor_html_ga702750e24313a686d3637297b6e85fda"><div class="ttname"><a href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a></div><div class="ttdeci">void glfwSetMonitorUserPointer(GLFWmonitor *monitor, void *pointer)</div><div class="ttdoc">Sets the user pointer of the specified monitor.</div></div>
1051<div class="ttc" id="agroup__monitor_html_ga70b1156d5d24e9928f145d6c864369d2"><div class="ttname"><a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a></div><div class="ttdeci">GLFWmonitor ** glfwGetMonitors(int *count)</div><div class="ttdoc">Returns the currently connected monitors.</div></div>
1052<div class="ttc" id="agroup__monitor_html_ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><div class="ttname"><a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a></div><div class="ttdeci">void glfwGetMonitorWorkarea(GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)</div><div class="ttdoc">Retrieves the work area of the monitor.</div></div>
1053<div class="ttc" id="agroup__monitor_html_ga76ba90debcf0062b5c4b73052b24f96f"><div class="ttname"><a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a></div><div class="ttdeci">const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current gamma ramp for the specified monitor.</div></div>
1054<div class="ttc" id="agroup__monitor_html_ga7af83e13489d90379588fb331b9e4b68"><div class="ttname"><a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a></div><div class="ttdeci">const char * glfwGetMonitorName(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the name of the specified monitor.</div></div>
1055<div class="ttc" id="agroup__monitor_html_ga7d8bffc6c55539286a6bd20d32a8d7ea"><div class="ttname"><a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a></div><div class="ttdeci">void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)</div><div class="ttdoc">Returns the physical size of the monitor.</div></div>
1056<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1174</div></div>
1057<div class="ttc" id="agroup__monitor_html_ga902c2816ac9b34b757282daab59b2565"><div class="ttname"><a href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a></div><div class="ttdeci">struct GLFWvidmode GLFWvidmode</div><div class="ttdoc">Video mode type.</div></div>
1058<div class="ttc" id="agroup__monitor_html_ga939cf093cb0af0498b7b54dc2e181404"><div class="ttname"><a href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a></div><div class="ttdeci">struct GLFWgammaramp GLFWgammaramp</div><div class="ttdoc">Gamma ramp.</div></div>
1059<div class="ttc" id="agroup__monitor_html_gaabe16caca8dea952504dfdebdf4cd249"><div class="ttname"><a href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a></div><div class="ttdeci">void(* GLFWmonitorfun)(GLFWmonitor *monitor, int event)</div><div class="ttdoc">The function pointer type for monitor configuration callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1622</div></div>
1060<div class="ttc" id="agroup__monitor_html_gab39df645587c8518192aa746c2fb06c3"><div class="ttname"><a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a></div><div class="ttdeci">GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback)</div><div class="ttdoc">Sets the monitor configuration callback.</div></div>
1061<div class="ttc" id="agroup__monitor_html_gaba376fa7e76634b4788bddc505d6c9d5"><div class="ttname"><a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current mode of the specified monitor.</div></div>
1062<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
1063<div class="ttc" id="agroup__monitor_html_gad2e24d2843cb7d6c26202cddd530fc1b"><div class="ttname"><a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)</div><div class="ttdoc">Returns the available video modes for the specified monitor.</div></div>
1064<div class="ttc" id="agroup__monitor_html_gad3152e84465fa620b601265ebfcdb21b"><div class="ttname"><a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></div><div class="ttdeci">void glfwGetMonitorContentScale(GLFWmonitor *monitor, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified monitor.</div></div>
1065<div class="ttc" id="agroup__vulkan_html_ga1a24536bec3f80b08ead18e28e6ae965"><div class="ttname"><a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></div><div class="ttdeci">VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</div><div class="ttdoc">Creates a Vulkan surface for the specified window.</div></div>
1066<div class="ttc" id="agroup__vulkan_html_ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><div class="ttname"><a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a></div><div class="ttdeci">int glfwVulkanSupported(void)</div><div class="ttdoc">Returns whether the Vulkan loader and an ICD have been found.</div></div>
1067<div class="ttc" id="agroup__vulkan_html_ga70c01918dc9d233a4fbe0681a43018af"><div class="ttname"><a href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a></div><div class="ttdeci">void(* GLFWvkproc)(void)</div><div class="ttdoc">Vulkan API function pointer type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1162</div></div>
1068<div class="ttc" id="agroup__vulkan_html_ga99ad342d82f4a3421e2864978cb6d1d6"><div class="ttname"><a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></div><div class="ttdeci">const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)</div><div class="ttdoc">Returns the Vulkan instance extensions required by GLFW.</div></div>
1069<div class="ttc" id="agroup__vulkan_html_gadf228fac94c5fd8f12423ec9af9ff1e9"><div class="ttname"><a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></div><div class="ttdeci">GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)</div><div class="ttdoc">Returns the address of the specified Vulkan instance function.</div></div>
1070<div class="ttc" id="agroup__vulkan_html_gaff3823355cdd7e2f3f9f4d9ea9518d92"><div class="ttname"><a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a></div><div class="ttdeci">int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</div><div class="ttdoc">Returns whether the specified queue family can present images.</div></div>
1071<div class="ttc" id="agroup__window_html_ga08bdfbba88934f9c4f92fd757979ac74"><div class="ttname"><a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a></div><div class="ttdeci">GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun callback)</div><div class="ttdoc">Sets the position callback for the specified window.</div></div>
1072<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
1073<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
1074<div class="ttc" id="agroup__window_html_ga1a9fd382058c53101b21cf211898f1f1"><div class="ttname"><a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a></div><div class="ttdeci">void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)</div><div class="ttdoc">Retrieves the size of the frame of the window.</div></div>
1075<div class="ttc" id="agroup__window_html_ga1abb6d690e8c88e0c8cd1751356dbca8"><div class="ttname"><a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a></div><div class="ttdeci">void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)</div><div class="ttdoc">Sets the position of the content area of the specified window.</div></div>
1076<div class="ttc" id="agroup__window_html_ga1bb559c0ebaad63c5c05ad2a066779c4"><div class="ttname"><a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a></div><div class="ttdeci">void glfwIconifyWindow(GLFWwindow *window)</div><div class="ttdoc">Iconifies the specified window.</div></div>
1077<div class="ttc" id="agroup__window_html_ga1c5c7eb889c33c7f4d10dd35b327654e"><div class="ttname"><a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a></div><div class="ttdeci">GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun callback)</div><div class="ttdoc">Sets the refresh callback for the specified window.</div></div>
1078<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
1079<div class="ttc" id="agroup__window_html_ga2f8d59323fc4692c1d54ba08c863a703"><div class="ttname"><a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a></div><div class="ttdeci">void glfwRequestWindowAttention(GLFWwindow *window)</div><div class="ttdoc">Requests user attention to the specified window.</div></div>
1080<div class="ttc" id="agroup__window_html_ga3017196fdaec33ac3e095765176c2a90"><div class="ttname"><a href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a></div><div class="ttdeci">void(* GLFWwindowmaximizefun)(GLFWwindow *window, int maximized)</div><div class="ttdoc">The function pointer type for window maximize callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1370</div></div>
1081<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
1082<div class="ttc" id="agroup__window_html_ga35c658cccba236f26e7adee0e25f6a4f"><div class="ttname"><a href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a></div><div class="ttdeci">void(* GLFWwindowiconifyfun)(GLFWwindow *window, int iconified)</div><div class="ttdoc">The function pointer type for window iconify callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1349</div></div>
1083<div class="ttc" id="agroup__window_html_ga371911f12c74c504dd8d47d832d095cb"><div class="ttname"><a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></div><div class="ttdeci">void glfwSetWindowSize(GLFWwindow *window, int width, int height)</div><div class="ttdoc">Sets the size of the content area of the specified window.</div></div>
1084<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
1085<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
1086<div class="ttc" id="agroup__window_html_ga3d2fc6026e690ab31a13f78bc9fd3651"><div class="ttname"><a href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a></div><div class="ttdeci">void glfwSetWindowUserPointer(GLFWwindow *window, void *pointer)</div><div class="ttdoc">Sets the user pointer of the specified window.</div></div>
1087<div class="ttc" id="agroup__window_html_ga3f541387449d911274324ae7f17ec56b"><div class="ttname"><a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></div><div class="ttdeci">void glfwMaximizeWindow(GLFWwindow *window)</div><div class="ttdoc">Maximizes the specified window.</div></div>
1088<div class="ttc" id="agroup__window_html_ga431663a1427d2eb3a273bc398b6737b5"><div class="ttname"><a href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a></div><div class="ttdeci">void(* GLFWwindowrefreshfun)(GLFWwindow *window)</div><div class="ttdoc">The function pointer type for window content refresh callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1307</div></div>
1089<div class="ttc" id="agroup__window_html_ga49401f82a1ba5f15db5590728314d47c"><div class="ttname"><a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a></div><div class="ttdeci">void glfwHideWindow(GLFWwindow *window)</div><div class="ttdoc">Hides the specified window.</div></div>
1090<div class="ttc" id="agroup__window_html_ga49c449dde2a6f87d996f4daaa09d6708"><div class="ttname"><a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></div><div class="ttdeci">void glfwSetWindowShouldClose(GLFWwindow *window, int value)</div><div class="ttdoc">Sets the close flag of the specified window.</div></div>
1091<div class="ttc" id="agroup__window_html_ga4d766499ac02c60f02221a9dfab87299"><div class="ttname"><a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)</div><div class="ttdoc">Returns the monitor that the window uses for full screen mode.</div></div>
1092<div class="ttc" id="agroup__window_html_ga52527a5904b47d802b6b4bb519cdebc7"><div class="ttname"><a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a></div><div class="ttdeci">void glfwRestoreWindow(GLFWwindow *window)</div><div class="ttdoc">Restores the specified window.</div></div>
1093<div class="ttc" id="agroup__window_html_ga554e37d781f0a997656c26b2c56c835e"><div class="ttname"><a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></div><div class="ttdeci">void glfwWaitEvents(void)</div><div class="ttdoc">Waits until events are queued and processes them.</div></div>
1094<div class="ttc" id="agroup__window_html_ga5d877f09e968cef7a360b513306f17ff"><div class="ttname"><a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a></div><div class="ttdeci">void glfwSetWindowTitle(GLFWwindow *window, const char *title)</div><div class="ttdoc">Sets the title of the specified window.</div></div>
1095<div class="ttc" id="agroup__window_html_ga605a178db92f1a7f1a925563ef3ea2cf"><div class="ttname"><a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></div><div class="ttdeci">void glfwWaitEventsTimeout(double timeout)</div><div class="ttdoc">Waits with timeout until events are queued and processes them.</div></div>
1096<div class="ttc" id="agroup__window_html_ga61be47917b72536a148300f46494fc66"><div class="ttname"><a href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a></div><div class="ttdeci">void glfwShowWindow(GLFWwindow *window)</div><div class="ttdoc">Makes the specified window visible.</div></div>
1097<div class="ttc" id="agroup__window_html_ga72ac8cb1ee2e312a878b55153d81b937"><div class="ttname"><a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a></div><div class="ttdeci">void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)</div><div class="ttdoc">Sets the aspect ratio of the specified window.</div></div>
1098<div class="ttc" id="agroup__window_html_ga73cb526c000876fd8ddf571570fdb634"><div class="ttname"><a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a></div><div class="ttdeci">void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)</div><div class="ttdoc">Retrieves the position of the content area of the specified window.</div></div>
1099<div class="ttc" id="agroup__window_html_ga77f288a2d04bb3c77c7d9615d08cf70e"><div class="ttname"><a href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a></div><div class="ttdeci">void(* GLFWwindowcontentscalefun)(GLFWwindow *window, float xscale, float yscale)</div><div class="ttdoc">The function pointer type for window content scale callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1412</div></div>
1100<div class="ttc" id="agroup__window_html_ga7cc0a09de172fa7250872046f8c4d2ca"><div class="ttname"><a href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a></div><div class="ttdeci">struct GLFWimage GLFWimage</div><div class="ttdoc">Image data.</div></div>
1101<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
1102<div class="ttc" id="agroup__window_html_ga81c76c418af80a1cce7055bccb0ae0a7"><div class="ttname"><a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></div><div class="ttdeci">void glfwSetWindowMonitor(GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)</div><div class="ttdoc">Sets the mode, monitor, video mode and placement of a window.</div></div>
1103<div class="ttc" id="agroup__window_html_ga873780357abd3f3a081d71a40aae45a1"><div class="ttname"><a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a></div><div class="ttdeci">void glfwFocusWindow(GLFWwindow *window)</div><div class="ttdoc">Brings the specified window to front and sets input focus.</div></div>
1104<div class="ttc" id="agroup__window_html_ga8cb2782861c9d997bcf2dea97f363e5f"><div class="ttname"><a href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a></div><div class="ttdeci">void glfwWindowHintString(int hint, const char *value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
1105<div class="ttc" id="agroup__window_html_gaa77c4898dfb83344a6b4f76aa16b9a4a"><div class="ttname"><a href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a></div><div class="ttdeci">void glfwDefaultWindowHints(void)</div><div class="ttdoc">Resets all window hints to their default values.</div></div>
1106<div class="ttc" id="agroup__window_html_gab3fb7c3366577daef18c0023e2a8591f"><div class="ttname"><a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></div><div class="ttdeci">GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun callback)</div><div class="ttdoc">Sets the framebuffer resize callback for the specified window.</div></div>
1107<div class="ttc" id="agroup__window_html_gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><div class="ttname"><a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a></div><div class="ttdeci">void glfwPostEmptyEvent(void)</div><div class="ttdoc">Posts an empty event to the event queue.</div></div>
1108<div class="ttc" id="agroup__window_html_gabc58c47e9d93f6eb1862d615c3680f46"><div class="ttname"><a href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a></div><div class="ttdeci">void(* GLFWwindowfocusfun)(GLFWwindow *window, int focused)</div><div class="ttdoc">The function pointer type for window focus callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1328</div></div>
1109<div class="ttc" id="agroup__window_html_gabe287973a21a8f927cde4db06b8dcbe9"><div class="ttname"><a href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a></div><div class="ttdeci">void(* GLFWwindowposfun)(GLFWwindow *window, int xpos, int ypos)</div><div class="ttdoc">The function pointer type for window position callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1245</div></div>
1110<div class="ttc" id="agroup__window_html_gabf859b936d80961b7d39013a9694cc3e"><div class="ttname"><a href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a></div><div class="ttdeci">void(* GLFWwindowclosefun)(GLFWwindow *window)</div><div class="ttdoc">The function pointer type for window close callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1287</div></div>
1111<div class="ttc" id="agroup__window_html_gac2d83c4a10f071baf841f6730528e66c"><div class="ttname"><a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a></div><div class="ttdeci">GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun callback)</div><div class="ttdoc">Sets the focus callback for the specified window.</div></div>
1112<div class="ttc" id="agroup__window_html_gac314fa6cec7d2d307be9963e2709cc90"><div class="ttname"><a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a></div><div class="ttdeci">void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)</div><div class="ttdoc">Sets the size limits of the specified window.</div></div>
1113<div class="ttc" id="agroup__window_html_gac31caeb3d1088831b13d2c8a156802e9"><div class="ttname"><a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></div><div class="ttdeci">void glfwSetWindowOpacity(GLFWwindow *window, float opacity)</div><div class="ttdoc">Sets the opacity of the whole window.</div></div>
1114<div class="ttc" id="agroup__window_html_gac793e9efd255567b5fb8b445052cfd3e"><div class="ttname"><a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a></div><div class="ttdeci">GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun callback)</div><div class="ttdoc">Sets the iconify callback for the specified window.</div></div>
1115<div class="ttc" id="agroup__window_html_gacbe64c339fbd94885e62145563b6dc93"><div class="ttname"><a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a></div><div class="ttdeci">GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow *window, GLFWwindowmaximizefun callback)</div><div class="ttdoc">Sets the maximize callback for the specified window.</div></div>
1116<div class="ttc" id="agroup__window_html_gacccb29947ea4b16860ebef42c2cb9337"><div class="ttname"><a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></div><div class="ttdeci">int glfwGetWindowAttrib(GLFWwindow *window, int attrib)</div><div class="ttdoc">Returns an attribute of the specified window.</div></div>
1117<div class="ttc" id="agroup__window_html_gacdf43e51376051d2c091662e9fe3d7b2"><div class="ttname"><a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></div><div class="ttdeci">void glfwDestroyWindow(GLFWwindow *window)</div><div class="ttdoc">Destroys the specified window and its context.</div></div>
1118<div class="ttc" id="agroup__window_html_gace2afda29b4116ec012e410a6819033e"><div class="ttname"><a href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></div><div class="ttdeci">void glfwSetWindowAttrib(GLFWwindow *window, int attrib, int value)</div><div class="ttdoc">Sets an attribute of the specified window.</div></div>
1119<div class="ttc" id="agroup__window_html_gad09f0bd7a6307c4533b7061828480a84"><div class="ttname"><a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></div><div class="ttdeci">float glfwGetWindowOpacity(GLFWwindow *window)</div><div class="ttdoc">Returns the opacity of the whole window.</div></div>
1120<div class="ttc" id="agroup__window_html_gad91b8b047a0c4c6033c38853864c34f8"><div class="ttname"><a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a></div><div class="ttdeci">GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun callback)</div><div class="ttdoc">Sets the size callback for the specified window.</div></div>
1121<div class="ttc" id="agroup__window_html_gada646d775a7776a95ac000cfc1885331"><div class="ttname"><a href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a></div><div class="ttdeci">GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun callback)</div><div class="ttdoc">Sets the close callback for the specified window.</div></div>
1122<div class="ttc" id="agroup__window_html_gadd7ccd39fe7a7d1f0904666ae5932dc5"><div class="ttname"><a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a></div><div class="ttdeci">void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)</div><div class="ttdoc">Sets the icon for the specified window.</div></div>
1123<div class="ttc" id="agroup__window_html_gae18026e294dde685ed2e5f759533144d"><div class="ttname"><a href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a></div><div class="ttdeci">void(* GLFWframebuffersizefun)(GLFWwindow *window, int width, int height)</div><div class="ttdoc">The function pointer type for framebuffer size callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1391</div></div>
1124<div class="ttc" id="agroup__window_html_gae77a4add0d2023ca21ff1443ced01653"><div class="ttname"><a href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a></div><div class="ttdeci">void * glfwGetWindowUserPointer(GLFWwindow *window)</div><div class="ttdoc">Returns the user pointer of the specified window.</div></div>
1125<div class="ttc" id="agroup__window_html_gaec0282944bb810f6f3163ec02da90350"><div class="ttname"><a href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a></div><div class="ttdeci">void(* GLFWwindowsizefun)(GLFWwindow *window, int width, int height)</div><div class="ttdoc">The function pointer type for window size callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1267</div></div>
1126<div class="ttc" id="agroup__window_html_gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><div class="ttname"><a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a></div><div class="ttdeci">void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the content area of the specified window.</div></div>
1127<div class="ttc" id="agroup__window_html_gaf2832ebb5aa6c252a2d261de002c92d6"><div class="ttname"><a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></div><div class="ttdeci">GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow *window, GLFWwindowcontentscalefun callback)</div><div class="ttdoc">Sets the window content scale callback for the specified window.</div></div>
1128<div class="ttc" id="agroup__window_html_gaf5d31de9c19c4f994facea64d2b3106c"><div class="ttname"><a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></div><div class="ttdeci">void glfwGetWindowContentScale(GLFWwindow *window, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified window.</div></div>
1129<div class="ttc" id="astructGLFWgamepadstate_html"><div class="ttname"><a href="structGLFWgamepadstate.html">GLFWgamepadstate</a></div><div class="ttdoc">Gamepad input state.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1746</div></div>
1130<div class="ttc" id="astructGLFWgamepadstate_html_a27e9896b51c65df15fba2c7139bfdb9a"><div class="ttname"><a href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">GLFWgamepadstate::buttons</a></div><div class="ttdeci">unsigned char buttons[15]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1750</div></div>
1131<div class="ttc" id="astructGLFWgamepadstate_html_a8b2c8939b1d31458de5359998375c189"><div class="ttname"><a href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">GLFWgamepadstate::axes</a></div><div class="ttdeci">float axes[6]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1754</div></div>
1132<div class="ttc" id="astructGLFWgammaramp_html"><div class="ttname"><a href="structGLFWgammaramp.html">GLFWgammaramp</a></div><div class="ttdoc">Gamma ramp.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1693</div></div>
1133<div class="ttc" id="astructGLFWgammaramp_html_a2cce5d968734b685623eef913e635138"><div class="ttname"><a href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">GLFWgammaramp::red</a></div><div class="ttdeci">unsigned short * red</div><div class="ttdef"><b>Definition:</b> glfw3.h:1696</div></div>
1134<div class="ttc" id="astructGLFWgammaramp_html_acf0c836d0efe29c392fe8d1a1042744b"><div class="ttname"><a href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">GLFWgammaramp::blue</a></div><div class="ttdeci">unsigned short * blue</div><div class="ttdef"><b>Definition:</b> glfw3.h:1702</div></div>
1135<div class="ttc" id="astructGLFWgammaramp_html_ad620e1cffbff9a32c51bca46301b59a5"><div class="ttname"><a href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">GLFWgammaramp::size</a></div><div class="ttdeci">unsigned int size</div><div class="ttdef"><b>Definition:</b> glfw3.h:1705</div></div>
1136<div class="ttc" id="astructGLFWgammaramp_html_affccc6f5df47820b6562d709da3a5a3a"><div class="ttname"><a href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">GLFWgammaramp::green</a></div><div class="ttdeci">unsigned short * green</div><div class="ttdef"><b>Definition:</b> glfw3.h:1699</div></div>
1137<div class="ttc" id="astructGLFWimage_html"><div class="ttname"><a href="structGLFWimage.html">GLFWimage</a></div><div class="ttdoc">Image data.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1722</div></div>
1138<div class="ttc" id="astructGLFWimage_html_a0b7d95368f0c80d5e5c9875057c7dbec"><div class="ttname"><a href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">GLFWimage::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1728</div></div>
1139<div class="ttc" id="astructGLFWimage_html_a0c532a5c2bb715555279b7817daba0fb"><div class="ttname"><a href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">GLFWimage::pixels</a></div><div class="ttdeci">unsigned char * pixels</div><div class="ttdef"><b>Definition:</b> glfw3.h:1731</div></div>
1140<div class="ttc" id="astructGLFWimage_html_af6a71cc999fe6d3aea31dd7e9687d835"><div class="ttname"><a href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">GLFWimage::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1725</div></div>
1141<div class="ttc" id="astructGLFWvidmode_html"><div class="ttname"><a href="structGLFWvidmode.html">GLFWvidmode</a></div><div class="ttdoc">Video mode type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1659</div></div>
1142<div class="ttc" id="astructGLFWvidmode_html_a292fdd281f3485fb3ff102a5bda43faa"><div class="ttname"><a href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">GLFWvidmode::greenBits</a></div><div class="ttdeci">int greenBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1671</div></div>
1143<div class="ttc" id="astructGLFWvidmode_html_a6066c4ecd251098700062d3b735dba1b"><div class="ttname"><a href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">GLFWvidmode::redBits</a></div><div class="ttdeci">int redBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1668</div></div>
1144<div class="ttc" id="astructGLFWvidmode_html_a698dcb200562051a7249cb6ae154c71d"><div class="ttname"><a href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">GLFWvidmode::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1662</div></div>
1145<div class="ttc" id="astructGLFWvidmode_html_a791bdd6c7697b09f7e9c97054bf05649"><div class="ttname"><a href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">GLFWvidmode::refreshRate</a></div><div class="ttdeci">int refreshRate</div><div class="ttdef"><b>Definition:</b> glfw3.h:1677</div></div>
1146<div class="ttc" id="astructGLFWvidmode_html_ac65942a5f6981695517437a9d571d03c"><div class="ttname"><a href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">GLFWvidmode::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1665</div></div>
1147<div class="ttc" id="astructGLFWvidmode_html_af310977f58d2e3b188175b6e3d314047"><div class="ttname"><a href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">GLFWvidmode::blueBits</a></div><div class="ttdeci">int blueBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1674</div></div>
1148</div><!-- fragment --></div><!-- contents -->
1149<address class="footer">
1150<p>
1151Last update on Thu Oct 28 2021 for GLFW 3.3.5
1152</p>
1153</address>
1154</body>
1155</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h.html
new file mode 100644
index 0000000..fe2d5d8
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h.html
@@ -0,0 +1,160 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: glfw3native.h File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li><li class="navelem"><a class="el" href="dir_ba478fc71671afc03f16a7df0eff1823.html">include</a></li><li class="navelem"><a class="el" href="dir_95e305b1bfdd4b95b22076c452f17802.html">GLFW</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="summary">
69<a href="#func-members">Functions</a> </div>
70 <div class="headertitle"><div class="title">glfw3native.h File Reference</div></div>
71</div><!--header-->
72<div class="contents">
73<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
74<div class="textblock"><p >This is the header file of the native access functions. See <a class="el" href="group__native.html">Native access</a> for more information. </p>
75</div>
76<p><a href="glfw3native_8h_source.html">Go to the source code of this file.</a></p>
77<table class="memberdecls">
78<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
79Functions</h2></td></tr>
80<tr class="memitem:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
81<tr class="memdesc:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the adapter device name of the specified monitor. <a href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">More...</a><br /></td></tr>
82<tr class="separator:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memSeparator" colspan="2">&#160;</td></tr>
83<tr class="memitem:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
84<tr class="memdesc:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the display device name of the specified monitor. <a href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">More...</a><br /></td></tr>
85<tr class="separator:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memItemLeft" align="right" valign="top">HWND&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
87<tr class="memdesc:gafe5079aa79038b0079fc09d5f0a8e667"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HWND</code> of the specified window. <a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">More...</a><br /></td></tr>
88<tr class="separator:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memSeparator" colspan="2">&#160;</td></tr>
89<tr class="memitem:gadc4010d91d9cc1134d040eeb1202a143"><td class="memItemLeft" align="right" valign="top">HGLRC&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
90<tr class="memdesc:gadc4010d91d9cc1134d040eeb1202a143"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HGLRC</code> of the specified window. <a href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">More...</a><br /></td></tr>
91<tr class="separator:gadc4010d91d9cc1134d040eeb1202a143"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memItemLeft" align="right" valign="top">CGDirectDisplayID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
93<tr class="memdesc:gaf22f429aec4b1aab316142d66d9be3e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>CGDirectDisplayID</code> of the specified monitor. <a href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">More...</a><br /></td></tr>
94<tr class="separator:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
95<tr class="memitem:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
96<tr class="memdesc:gac3ed9d495d0c2bb9652de5a50c648715"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSWindow</code> of the specified window. <a href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">More...</a><br /></td></tr>
97<tr class="separator:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memSeparator" colspan="2">&#160;</td></tr>
98<tr class="memitem:ga559e002e3cd63c979881770cd4dc63bc"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
99<tr class="memdesc:ga559e002e3cd63c979881770cd4dc63bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSOpenGLContext</code> of the specified window. <a href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">More...</a><br /></td></tr>
100<tr class="separator:ga559e002e3cd63c979881770cd4dc63bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
101<tr class="memitem:ga6e7822385cc8a1cc3b18f60352830189"><td class="memItemLeft" align="right" valign="top">Display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a> (void)</td></tr>
102<tr class="memdesc:ga6e7822385cc8a1cc3b18f60352830189"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Display</code> used by GLFW. <a href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">More...</a><br /></td></tr>
103<tr class="separator:ga6e7822385cc8a1cc3b18f60352830189"><td class="memSeparator" colspan="2">&#160;</td></tr>
104<tr class="memitem:ga088fbfa80f50569402b41be71ad66e40"><td class="memItemLeft" align="right" valign="top">RRCrtc&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
105<tr class="memdesc:ga088fbfa80f50569402b41be71ad66e40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RRCrtc</code> of the specified monitor. <a href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">More...</a><br /></td></tr>
106<tr class="separator:ga088fbfa80f50569402b41be71ad66e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
107<tr class="memitem:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memItemLeft" align="right" valign="top">RROutput&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
108<tr class="memdesc:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RROutput</code> of the specified monitor. <a href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">More...</a><br /></td></tr>
109<tr class="separator:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memSeparator" colspan="2">&#160;</td></tr>
110<tr class="memitem:ga90ca676322740842db446999a1b1f21d"><td class="memItemLeft" align="right" valign="top">Window&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
111<tr class="memdesc:ga90ca676322740842db446999a1b1f21d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Window</code> of the specified window. <a href="group__native.html#ga90ca676322740842db446999a1b1f21d">More...</a><br /></td></tr>
112<tr class="separator:ga90ca676322740842db446999a1b1f21d"><td class="memSeparator" colspan="2">&#160;</td></tr>
113<tr class="memitem:ga55f879ab02d93367f966186b6f0133f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a> (const char *string)</td></tr>
114<tr class="memdesc:ga55f879ab02d93367f966186b6f0133f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current primary selection to the specified string. <a href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">More...</a><br /></td></tr>
115<tr class="separator:ga55f879ab02d93367f966186b6f0133f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:gae084ef64dc0db140b455b1427256d3f7"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a> (void)</td></tr>
117<tr class="memdesc:gae084ef64dc0db140b455b1427256d3f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the current primary selection as a string. <a href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">More...</a><br /></td></tr>
118<tr class="separator:gae084ef64dc0db140b455b1427256d3f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
119<tr class="memitem:ga62d884114b0abfcdc2930e89f20867e2"><td class="memItemLeft" align="right" valign="top">GLXContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
120<tr class="memdesc:ga62d884114b0abfcdc2930e89f20867e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXContext</code> of the specified window. <a href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">More...</a><br /></td></tr>
121<tr class="separator:ga62d884114b0abfcdc2930e89f20867e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memItemLeft" align="right" valign="top">GLXWindow&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
123<tr class="memdesc:ga1ed27b8766e859a21381e8f8ce18d049"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXWindow</code> of the specified window. <a href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">More...</a><br /></td></tr>
124<tr class="separator:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memSeparator" colspan="2">&#160;</td></tr>
125<tr class="memitem:gacbe11f93ce20621de82989bbba94e62a"><td class="memItemLeft" align="right" valign="top">struct wl_display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a> (void)</td></tr>
126<tr class="memdesc:gacbe11f93ce20621de82989bbba94e62a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_display*</code> used by GLFW. <a href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">More...</a><br /></td></tr>
127<tr class="separator:gacbe11f93ce20621de82989bbba94e62a"><td class="memSeparator" colspan="2">&#160;</td></tr>
128<tr class="memitem:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memItemLeft" align="right" valign="top">struct wl_output *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
129<tr class="memdesc:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_output*</code> of the specified monitor. <a href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">More...</a><br /></td></tr>
130<tr class="separator:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memSeparator" colspan="2">&#160;</td></tr>
131<tr class="memitem:ga5c597f2841229d9626f0811cca41ceb3"><td class="memItemLeft" align="right" valign="top">struct wl_surface *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
132<tr class="memdesc:ga5c597f2841229d9626f0811cca41ceb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the main <code>struct wl_surface*</code> of the specified window. <a href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">More...</a><br /></td></tr>
133<tr class="separator:ga5c597f2841229d9626f0811cca41ceb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
134<tr class="memitem:ga1cd8d973f47aacb5532d368147cc3138"><td class="memItemLeft" align="right" valign="top">EGLDisplay&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a> (void)</td></tr>
135<tr class="memdesc:ga1cd8d973f47aacb5532d368147cc3138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLDisplay</code> used by GLFW. <a href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">More...</a><br /></td></tr>
136<tr class="separator:ga1cd8d973f47aacb5532d368147cc3138"><td class="memSeparator" colspan="2">&#160;</td></tr>
137<tr class="memitem:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memItemLeft" align="right" valign="top">EGLContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
138<tr class="memdesc:ga671c5072becd085f4ab5771a9c8efcf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLContext</code> of the specified window. <a href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">More...</a><br /></td></tr>
139<tr class="separator:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
140<tr class="memitem:ga2199b36117a6a695fec8441d8052eee6"><td class="memItemLeft" align="right" valign="top">EGLSurface&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
141<tr class="memdesc:ga2199b36117a6a695fec8441d8052eee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLSurface</code> of the specified window. <a href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">More...</a><br /></td></tr>
142<tr class="separator:ga2199b36117a6a695fec8441d8052eee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
143<tr class="memitem:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *format, void **buffer)</td></tr>
144<tr class="memdesc:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the color buffer associated with the specified window. <a href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">More...</a><br /></td></tr>
145<tr class="separator:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memSeparator" colspan="2">&#160;</td></tr>
146<tr class="memitem:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *bytesPerValue, void **buffer)</td></tr>
147<tr class="memdesc:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the depth buffer associated with the specified window. <a href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">More...</a><br /></td></tr>
148<tr class="separator:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memSeparator" colspan="2">&#160;</td></tr>
149<tr class="memitem:ga9e47700080094eb569cb053afaa88773"><td class="memItemLeft" align="right" valign="top">OSMesaContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
150<tr class="memdesc:ga9e47700080094eb569cb053afaa88773"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>OSMesaContext</code> of the specified window. <a href="group__native.html#ga9e47700080094eb569cb053afaa88773">More...</a><br /></td></tr>
151<tr class="separator:ga9e47700080094eb569cb053afaa88773"><td class="memSeparator" colspan="2">&#160;</td></tr>
152</table>
153</div><!-- contents -->
154<address class="footer">
155<p>
156Last update on Thu Oct 28 2021 for GLFW 3.3.5
157</p>
158</address>
159</body>
160</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h_source.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h_source.html
new file mode 100644
index 0000000..fca6ead
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/glfw3native_8h_source.html
@@ -0,0 +1,264 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: glfw3native.h Source File</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62<div id="nav-path" class="navpath">
63 <ul>
64<li class="navelem"><a class="el" href="dir_a2f8ccc4e596c8744057ab6c4a040d5c.html">glfw-3.3.5</a></li><li class="navelem"><a class="el" href="dir_ba478fc71671afc03f16a7df0eff1823.html">include</a></li><li class="navelem"><a class="el" href="dir_95e305b1bfdd4b95b22076c452f17802.html">GLFW</a></li> </ul>
65</div>
66</div><!-- top -->
67<div class="header">
68 <div class="headertitle"><div class="title">glfw3native.h</div></div>
69</div><!--header-->
70<div class="contents">
71<a href="glfw3native_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*************************************************************************</span></div>
72<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * GLFW 3.3 - www.glfw.org</span></div>
73<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * A library for OpenGL, window and input</span></div>
74<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *------------------------------------------------------------------------</span></div>
75<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * Copyright (c) 2002-2006 Marcus Geelnard</span></div>
76<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * Copyright (c) 2006-2018 Camilla Löwy &lt;elmindreda@glfw.org&gt;</span></div>
77<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> *</span></div>
78<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * This software is provided &#39;as-is&#39;, without any express or implied</span></div>
79<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * warranty. In no event will the authors be held liable for any damages</span></div>
80<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * arising from the use of this software.</span></div>
81<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div>
82<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * Permission is granted to anyone to use this software for any purpose,</span></div>
83<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * including commercial applications, and to alter it and redistribute it</span></div>
84<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * freely, subject to the following restrictions:</span></div>
85<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
86<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * 1. The origin of this software must not be misrepresented; you must not</span></div>
87<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * claim that you wrote the original software. If you use this software</span></div>
88<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * in a product, an acknowledgment in the product documentation would</span></div>
89<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * be appreciated but is not required.</span></div>
90<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> *</span></div>
91<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * 2. Altered source versions must be plainly marked as such, and must not</span></div>
92<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * be misrepresented as being the original software.</span></div>
93<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> *</span></div>
94<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * 3. This notice may not be removed or altered from any source</span></div>
95<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * distribution.</span></div>
96<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> *</span></div>
97<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> *************************************************************************/</span></div>
98<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
99<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#ifndef _glfw3_native_h_</span></div>
100<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#define _glfw3_native_h_</span></div>
101<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
102<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#ifdef __cplusplus</span></div>
103<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
104<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#endif</span></div>
105<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
106<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
107<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/*************************************************************************</span></div>
108<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> * Doxygen documentation</span></div>
109<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> *************************************************************************/</span></div>
110<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
111<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment">/*************************************************************************</span></div>
112<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> * System headers and types</span></div>
113<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment"> *************************************************************************/</span></div>
114<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
115<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)</span></div>
116<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// This is a workaround for the fact that glfw3.h needs to export APIENTRY (for</span></div>
117<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// example to allow applications to correctly declare a GL_KHR_debug callback)</span></div>
118<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// but windows.h assumes no one will define APIENTRY before it does</span></div>
119<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor"> #if defined(GLFW_APIENTRY_DEFINED)</span></div>
120<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor"> #undef APIENTRY</span></div>
121<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor"> #undef GLFW_APIENTRY_DEFINED</span></div>
122<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor"> #endif</span></div>
123<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor"> #include &lt;windows.h&gt;</span></div>
124<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)</span></div>
125<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor"> #if defined(__OBJC__)</span></div>
126<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor"> #import &lt;Cocoa/Cocoa.h&gt;</span></div>
127<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor"> #else</span></div>
128<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="preprocessor"> #include &lt;ApplicationServices/ApplicationServices.h&gt;</span></div>
129<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span>* id;</div>
130<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="preprocessor"> #endif</span></div>
131<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor">#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)</span></div>
132<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="preprocessor"> #include &lt;X11/Xlib.h&gt;</span></div>
133<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="preprocessor"> #include &lt;X11/extensions/Xrandr.h&gt;</span></div>
134<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor">#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)</span></div>
135<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="preprocessor"> #include &lt;wayland-client.h&gt;</span></div>
136<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="preprocessor">#endif</span></div>
137<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
138<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WGL)</span></div>
139<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="comment">/* WGL is declared by windows.h */</span></div>
140<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="preprocessor">#endif</span></div>
141<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_NSGL)</span></div>
142<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="comment">/* NSGL is declared by Cocoa.h */</span></div>
143<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor">#endif</span></div>
144<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_GLX)</span></div>
145<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="preprocessor"> #include &lt;GL/glx.h&gt;</span></div>
146<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor">#endif</span></div>
147<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_EGL)</span></div>
148<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor"> #include &lt;EGL/egl.h&gt;</span></div>
149<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="preprocessor">#endif</span></div>
150<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_OSMESA)</span></div>
151<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="preprocessor"> #include &lt;GL/osmesa.h&gt;</span></div>
152<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor">#endif</span></div>
153<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
154<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
155<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="comment">/*************************************************************************</span></div>
156<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="comment"> * Functions</span></div>
157<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> *************************************************************************/</span></div>
158<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
159<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WIN32)</span></div>
160<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"><a class="line" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41"> 144</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
161<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
162<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"><a class="line" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766"> 161</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
163<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
164<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667"> 185</a></span>GLFWAPI HWND <a class="code hl_function" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
165<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="preprocessor">#endif</span></div>
166<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
167<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WGL)</span></div>
168<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143"> 212</a></span>GLFWAPI HGLRC <a class="code hl_function" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
169<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="preprocessor">#endif</span></div>
170<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
171<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_COCOA)</span></div>
172<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6"> 230</a></span>GLFWAPI CGDirectDisplayID <a class="code hl_function" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
173<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
174<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"><a class="line" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715"> 246</a></span>GLFWAPI <span class="keywordtype">id</span> <a class="code hl_function" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
175<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="preprocessor">#endif</span></div>
176<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> </div>
177<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_NSGL)</span></div>
178<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc"> 265</a></span>GLFWAPI <span class="keywordtype">id</span> <a class="code hl_function" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
179<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="preprocessor">#endif</span></div>
180<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
181<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_X11)</span></div>
182<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"><a class="line" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189"> 283</a></span>GLFWAPI Display* <a class="code hl_function" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a>(<span class="keywordtype">void</span>);</div>
183<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
184<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"><a class="line" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40"> 299</a></span>GLFWAPI RRCrtc <a class="code hl_function" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
185<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> </div>
186<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"><a class="line" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c"> 315</a></span>GLFWAPI RROutput <a class="code hl_function" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
187<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> </div>
188<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"><a class="line" href="group__native.html#ga90ca676322740842db446999a1b1f21d"> 331</a></span>GLFWAPI Window <a class="code hl_function" href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
189<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> </div>
190<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7"> 353</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">string</span>);</div>
191<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
192<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"><a class="line" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7"> 381</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a>(<span class="keywordtype">void</span>);</div>
193<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="preprocessor">#endif</span></div>
194<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
195<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_GLX)</span></div>
196<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2"> 400</a></span>GLFWAPI GLXContext <a class="code hl_function" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
197<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> </div>
198<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049"> 417</a></span>GLFWAPI GLXWindow <a class="code hl_function" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
199<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span><span class="preprocessor">#endif</span></div>
200<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> </div>
201<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)</span></div>
202<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"><a class="line" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a"> 435</a></span>GLFWAPI <span class="keyword">struct </span>wl_display* <a class="code hl_function" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a>(<span class="keywordtype">void</span>);</div>
203<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> </div>
204<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16"> 451</a></span>GLFWAPI <span class="keyword">struct </span>wl_output* <a class="code hl_function" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
205<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> </div>
206<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"><a class="line" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3"> 467</a></span>GLFWAPI <span class="keyword">struct </span>wl_surface* <a class="code hl_function" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
207<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="preprocessor">#endif</span></div>
208<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> </div>
209<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_EGL)</span></div>
210<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"><a class="line" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138"> 485</a></span>GLFWAPI EGLDisplay <a class="code hl_function" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a>(<span class="keywordtype">void</span>);</div>
211<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
212<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"><a class="line" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1"> 502</a></span>GLFWAPI EGLContext <a class="code hl_function" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
213<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> </div>
214<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"><a class="line" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6"> 519</a></span>GLFWAPI EGLSurface <a class="code hl_function" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
215<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span><span class="preprocessor">#endif</span></div>
216<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> </div>
217<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_OSMESA)</span></div>
218<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"><a class="line" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132"> 545</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height, <span class="keywordtype">int</span>* format, <span class="keywordtype">void</span>** buffer);</div>
219<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> </div>
220<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"><a class="line" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53"> 569</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height, <span class="keywordtype">int</span>* bytesPerValue, <span class="keywordtype">void</span>** buffer);</div>
221<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> </div>
222<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"><a class="line" href="group__native.html#ga9e47700080094eb569cb053afaa88773"> 586</a></span>GLFWAPI OSMesaContext <a class="code hl_function" href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
223<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span><span class="preprocessor">#endif</span></div>
224<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> </div>
225<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span><span class="preprocessor">#ifdef __cplusplus</span></div>
226<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span>}</div>
227<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span><span class="preprocessor">#endif</span></div>
228<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> </div>
229<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span><span class="preprocessor">#endif </span><span class="comment">/* _glfw3_native_h_ */</span><span class="preprocessor"></span></div>
230<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> </div>
231<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1174</div></div>
232<div class="ttc" id="agroup__native_html_ga088fbfa80f50569402b41be71ad66e40"><div class="ttname"><a href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a></div><div class="ttdeci">RRCrtc glfwGetX11Adapter(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the RRCrtc of the specified monitor.</div></div>
233<div class="ttc" id="agroup__native_html_ga1cd8d973f47aacb5532d368147cc3138"><div class="ttname"><a href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a></div><div class="ttdeci">EGLDisplay glfwGetEGLDisplay(void)</div><div class="ttdoc">Returns the EGLDisplay used by GLFW.</div></div>
234<div class="ttc" id="agroup__native_html_ga1ed27b8766e859a21381e8f8ce18d049"><div class="ttname"><a href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a></div><div class="ttdeci">GLXWindow glfwGetGLXWindow(GLFWwindow *window)</div><div class="ttdoc">Returns the GLXWindow of the specified window.</div></div>
235<div class="ttc" id="agroup__native_html_ga2199b36117a6a695fec8441d8052eee6"><div class="ttname"><a href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a></div><div class="ttdeci">EGLSurface glfwGetEGLSurface(GLFWwindow *window)</div><div class="ttdoc">Returns the EGLSurface of the specified window.</div></div>
236<div class="ttc" id="agroup__native_html_ga3b36e3e3dcf308b776427b6bd73cc132"><div class="ttname"><a href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a></div><div class="ttdeci">int glfwGetOSMesaColorBuffer(GLFWwindow *window, int *width, int *height, int *format, void **buffer)</div><div class="ttdoc">Retrieves the color buffer associated with the specified window.</div></div>
237<div class="ttc" id="agroup__native_html_ga4f16066bd4c59e2f99418adfcb43dd16"><div class="ttname"><a href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a></div><div class="ttdeci">struct wl_output * glfwGetWaylandMonitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the struct wl_output* of the specified monitor.</div></div>
238<div class="ttc" id="agroup__native_html_ga559e002e3cd63c979881770cd4dc63bc"><div class="ttname"><a href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a></div><div class="ttdeci">id glfwGetNSGLContext(GLFWwindow *window)</div><div class="ttdoc">Returns the NSOpenGLContext of the specified window.</div></div>
239<div class="ttc" id="agroup__native_html_ga55f879ab02d93367f966186b6f0133f7"><div class="ttname"><a href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a></div><div class="ttdeci">void glfwSetX11SelectionString(const char *string)</div><div class="ttdoc">Sets the current primary selection to the specified string.</div></div>
240<div class="ttc" id="agroup__native_html_ga5c597f2841229d9626f0811cca41ceb3"><div class="ttname"><a href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a></div><div class="ttdeci">struct wl_surface * glfwGetWaylandWindow(GLFWwindow *window)</div><div class="ttdoc">Returns the main struct wl_surface* of the specified window.</div></div>
241<div class="ttc" id="agroup__native_html_ga62d884114b0abfcdc2930e89f20867e2"><div class="ttname"><a href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a></div><div class="ttdeci">GLXContext glfwGetGLXContext(GLFWwindow *window)</div><div class="ttdoc">Returns the GLXContext of the specified window.</div></div>
242<div class="ttc" id="agroup__native_html_ga671c5072becd085f4ab5771a9c8efcf1"><div class="ttname"><a href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a></div><div class="ttdeci">EGLContext glfwGetEGLContext(GLFWwindow *window)</div><div class="ttdoc">Returns the EGLContext of the specified window.</div></div>
243<div class="ttc" id="agroup__native_html_ga6b64039ffc88a7a2f57f0956c0c75d53"><div class="ttname"><a href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a></div><div class="ttdeci">int glfwGetOSMesaDepthBuffer(GLFWwindow *window, int *width, int *height, int *bytesPerValue, void **buffer)</div><div class="ttdoc">Retrieves the depth buffer associated with the specified window.</div></div>
244<div class="ttc" id="agroup__native_html_ga6e7822385cc8a1cc3b18f60352830189"><div class="ttname"><a href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a></div><div class="ttdeci">Display * glfwGetX11Display(void)</div><div class="ttdoc">Returns the Display used by GLFW.</div></div>
245<div class="ttc" id="agroup__native_html_ga90ca676322740842db446999a1b1f21d"><div class="ttname"><a href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a></div><div class="ttdeci">Window glfwGetX11Window(GLFWwindow *window)</div><div class="ttdoc">Returns the Window of the specified window.</div></div>
246<div class="ttc" id="agroup__native_html_ga9e47700080094eb569cb053afaa88773"><div class="ttname"><a href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a></div><div class="ttdeci">OSMesaContext glfwGetOSMesaContext(GLFWwindow *window)</div><div class="ttdoc">Returns the OSMesaContext of the specified window.</div></div>
247<div class="ttc" id="agroup__native_html_gab2f8cc043905e9fa9b12bfdbbcfe874c"><div class="ttname"><a href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a></div><div class="ttdeci">RROutput glfwGetX11Monitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the RROutput of the specified monitor.</div></div>
248<div class="ttc" id="agroup__native_html_gac3ed9d495d0c2bb9652de5a50c648715"><div class="ttname"><a href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a></div><div class="ttdeci">id glfwGetCocoaWindow(GLFWwindow *window)</div><div class="ttdoc">Returns the NSWindow of the specified window.</div></div>
249<div class="ttc" id="agroup__native_html_gac845f7dbe4c1d7fdd682a3c6fdae6766"><div class="ttname"><a href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a></div><div class="ttdeci">const char * glfwGetWin32Monitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the display device name of the specified monitor.</div></div>
250<div class="ttc" id="agroup__native_html_gacbe11f93ce20621de82989bbba94e62a"><div class="ttname"><a href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a></div><div class="ttdeci">struct wl_display * glfwGetWaylandDisplay(void)</div><div class="ttdoc">Returns the struct wl_display* used by GLFW.</div></div>
251<div class="ttc" id="agroup__native_html_gad4d3e9242536c0ba6be88a98f4c73a41"><div class="ttname"><a href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a></div><div class="ttdeci">const char * glfwGetWin32Adapter(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the adapter device name of the specified monitor.</div></div>
252<div class="ttc" id="agroup__native_html_gadc4010d91d9cc1134d040eeb1202a143"><div class="ttname"><a href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a></div><div class="ttdeci">HGLRC glfwGetWGLContext(GLFWwindow *window)</div><div class="ttdoc">Returns the HGLRC of the specified window.</div></div>
253<div class="ttc" id="agroup__native_html_gae084ef64dc0db140b455b1427256d3f7"><div class="ttname"><a href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a></div><div class="ttdeci">const char * glfwGetX11SelectionString(void)</div><div class="ttdoc">Returns the contents of the current primary selection as a string.</div></div>
254<div class="ttc" id="agroup__native_html_gaf22f429aec4b1aab316142d66d9be3e6"><div class="ttname"><a href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a></div><div class="ttdeci">CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the CGDirectDisplayID of the specified monitor.</div></div>
255<div class="ttc" id="agroup__native_html_gafe5079aa79038b0079fc09d5f0a8e667"><div class="ttname"><a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a></div><div class="ttdeci">HWND glfwGetWin32Window(GLFWwindow *window)</div><div class="ttdoc">Returns the HWND of the specified window.</div></div>
256<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
257</div><!-- fragment --></div><!-- contents -->
258<address class="footer">
259<p>
260Last update on Thu Oct 28 2021 for GLFW 3.3.5
261</p>
262</address>
263</body>
264</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__buttons.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__buttons.html
new file mode 100644
index 0000000..3a0805e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__buttons.html
@@ -0,0 +1,275 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Mouse buttons</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Mouse buttons<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#input_mouse_button">mouse button input</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:ga181a6e875251fd8671654eff00f9112e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a>&#160;&#160;&#160;0</td></tr>
75<tr class="separator:ga181a6e875251fd8671654eff00f9112e"><td class="memSeparator" colspan="2">&#160;</td></tr>
76<tr class="memitem:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a>&#160;&#160;&#160;1</td></tr>
77<tr class="separator:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memSeparator" colspan="2">&#160;</td></tr>
78<tr class="memitem:ga0130d505563d0236a6f85545f19e1721"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a>&#160;&#160;&#160;2</td></tr>
79<tr class="separator:ga0130d505563d0236a6f85545f19e1721"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9">GLFW_MOUSE_BUTTON_4</a>&#160;&#160;&#160;3</td></tr>
81<tr class="separator:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
82<tr class="memitem:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c">GLFW_MOUSE_BUTTON_5</a>&#160;&#160;&#160;4</td></tr>
83<tr class="separator:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:gae8513e06aab8aa393b595f22c6d8257a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a">GLFW_MOUSE_BUTTON_6</a>&#160;&#160;&#160;5</td></tr>
85<tr class="separator:gae8513e06aab8aa393b595f22c6d8257a"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7">GLFW_MOUSE_BUTTON_7</a>&#160;&#160;&#160;6</td></tr>
87<tr class="separator:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a>&#160;&#160;&#160;7</td></tr>
89<tr class="separator:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf">GLFW_MOUSE_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a></td></tr>
91<tr class="separator:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a></td></tr>
93<tr class="separator:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memSeparator" colspan="2">&#160;</td></tr>
94<tr class="memitem:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a></td></tr>
95<tr class="separator:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
96<tr class="memitem:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a">GLFW_MOUSE_BUTTON_MIDDLE</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a></td></tr>
97<tr class="separator:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
98</table>
99<h2 class="groupheader">Macro Definition Documentation</h2>
100<a id="ga181a6e875251fd8671654eff00f9112e" name="ga181a6e875251fd8671654eff00f9112e"></a>
101<h2 class="memtitle"><span class="permalink"><a href="#ga181a6e875251fd8671654eff00f9112e">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_1</h2>
102
103<div class="memitem">
104<div class="memproto">
105 <table class="memname">
106 <tr>
107 <td class="memname">#define GLFW_MOUSE_BUTTON_1&#160;&#160;&#160;0</td>
108 </tr>
109 </table>
110</div><div class="memdoc">
111
112</div>
113</div>
114<a id="ga604b39b92c88ce9bd332e97fc3f4156c" name="ga604b39b92c88ce9bd332e97fc3f4156c"></a>
115<h2 class="memtitle"><span class="permalink"><a href="#ga604b39b92c88ce9bd332e97fc3f4156c">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_2</h2>
116
117<div class="memitem">
118<div class="memproto">
119 <table class="memname">
120 <tr>
121 <td class="memname">#define GLFW_MOUSE_BUTTON_2&#160;&#160;&#160;1</td>
122 </tr>
123 </table>
124</div><div class="memdoc">
125
126</div>
127</div>
128<a id="ga0130d505563d0236a6f85545f19e1721" name="ga0130d505563d0236a6f85545f19e1721"></a>
129<h2 class="memtitle"><span class="permalink"><a href="#ga0130d505563d0236a6f85545f19e1721">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_3</h2>
130
131<div class="memitem">
132<div class="memproto">
133 <table class="memname">
134 <tr>
135 <td class="memname">#define GLFW_MOUSE_BUTTON_3&#160;&#160;&#160;2</td>
136 </tr>
137 </table>
138</div><div class="memdoc">
139
140</div>
141</div>
142<a id="ga53f4097bb01d5521c7d9513418c91ca9" name="ga53f4097bb01d5521c7d9513418c91ca9"></a>
143<h2 class="memtitle"><span class="permalink"><a href="#ga53f4097bb01d5521c7d9513418c91ca9">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_4</h2>
144
145<div class="memitem">
146<div class="memproto">
147 <table class="memname">
148 <tr>
149 <td class="memname">#define GLFW_MOUSE_BUTTON_4&#160;&#160;&#160;3</td>
150 </tr>
151 </table>
152</div><div class="memdoc">
153
154</div>
155</div>
156<a id="gaf08c4ddecb051d3d9667db1d5e417c9c" name="gaf08c4ddecb051d3d9667db1d5e417c9c"></a>
157<h2 class="memtitle"><span class="permalink"><a href="#gaf08c4ddecb051d3d9667db1d5e417c9c">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_5</h2>
158
159<div class="memitem">
160<div class="memproto">
161 <table class="memname">
162 <tr>
163 <td class="memname">#define GLFW_MOUSE_BUTTON_5&#160;&#160;&#160;4</td>
164 </tr>
165 </table>
166</div><div class="memdoc">
167
168</div>
169</div>
170<a id="gae8513e06aab8aa393b595f22c6d8257a" name="gae8513e06aab8aa393b595f22c6d8257a"></a>
171<h2 class="memtitle"><span class="permalink"><a href="#gae8513e06aab8aa393b595f22c6d8257a">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_6</h2>
172
173<div class="memitem">
174<div class="memproto">
175 <table class="memname">
176 <tr>
177 <td class="memname">#define GLFW_MOUSE_BUTTON_6&#160;&#160;&#160;5</td>
178 </tr>
179 </table>
180</div><div class="memdoc">
181
182</div>
183</div>
184<a id="ga8b02a1ab55dde45b3a3883d54ffd7dc7" name="ga8b02a1ab55dde45b3a3883d54ffd7dc7"></a>
185<h2 class="memtitle"><span class="permalink"><a href="#ga8b02a1ab55dde45b3a3883d54ffd7dc7">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_7</h2>
186
187<div class="memitem">
188<div class="memproto">
189 <table class="memname">
190 <tr>
191 <td class="memname">#define GLFW_MOUSE_BUTTON_7&#160;&#160;&#160;6</td>
192 </tr>
193 </table>
194</div><div class="memdoc">
195
196</div>
197</div>
198<a id="ga35d5c4263e0dc0d0a4731ca6c562f32c" name="ga35d5c4263e0dc0d0a4731ca6c562f32c"></a>
199<h2 class="memtitle"><span class="permalink"><a href="#ga35d5c4263e0dc0d0a4731ca6c562f32c">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_8</h2>
200
201<div class="memitem">
202<div class="memproto">
203 <table class="memname">
204 <tr>
205 <td class="memname">#define GLFW_MOUSE_BUTTON_8&#160;&#160;&#160;7</td>
206 </tr>
207 </table>
208</div><div class="memdoc">
209
210</div>
211</div>
212<a id="gab1fd86a4518a9141ec7bcde2e15a2fdf" name="gab1fd86a4518a9141ec7bcde2e15a2fdf"></a>
213<h2 class="memtitle"><span class="permalink"><a href="#gab1fd86a4518a9141ec7bcde2e15a2fdf">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_LAST</h2>
214
215<div class="memitem">
216<div class="memproto">
217 <table class="memname">
218 <tr>
219 <td class="memname">#define GLFW_MOUSE_BUTTON_LAST&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a></td>
220 </tr>
221 </table>
222</div><div class="memdoc">
223
224</div>
225</div>
226<a id="gaf37100431dcd5082d48f95ee8bc8cd56" name="gaf37100431dcd5082d48f95ee8bc8cd56"></a>
227<h2 class="memtitle"><span class="permalink"><a href="#gaf37100431dcd5082d48f95ee8bc8cd56">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_LEFT</h2>
228
229<div class="memitem">
230<div class="memproto">
231 <table class="memname">
232 <tr>
233 <td class="memname">#define GLFW_MOUSE_BUTTON_LEFT&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a></td>
234 </tr>
235 </table>
236</div><div class="memdoc">
237
238</div>
239</div>
240<a id="ga3e2f2cf3c4942df73cc094247d275e74" name="ga3e2f2cf3c4942df73cc094247d275e74"></a>
241<h2 class="memtitle"><span class="permalink"><a href="#ga3e2f2cf3c4942df73cc094247d275e74">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_RIGHT</h2>
242
243<div class="memitem">
244<div class="memproto">
245 <table class="memname">
246 <tr>
247 <td class="memname">#define GLFW_MOUSE_BUTTON_RIGHT&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a></td>
248 </tr>
249 </table>
250</div><div class="memdoc">
251
252</div>
253</div>
254<a id="ga34a4d2a701434f763fd93a2ff842b95a" name="ga34a4d2a701434f763fd93a2ff842b95a"></a>
255<h2 class="memtitle"><span class="permalink"><a href="#ga34a4d2a701434f763fd93a2ff842b95a">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_MIDDLE</h2>
256
257<div class="memitem">
258<div class="memproto">
259 <table class="memname">
260 <tr>
261 <td class="memname">#define GLFW_MOUSE_BUTTON_MIDDLE&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a></td>
262 </tr>
263 </table>
264</div><div class="memdoc">
265
266</div>
267</div>
268</div><!-- contents -->
269<address class="footer">
270<p>
271Last update on Thu Oct 28 2021 for GLFW 3.3.5
272</p>
273</address>
274</body>
275</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__context.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__context.html
new file mode 100644
index 0000000..fc874f7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__context.html
@@ -0,0 +1,295 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Context reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#typedef-members">Typedefs</a> &#124;
66<a href="#func-members">Functions</a> </div>
67 <div class="headertitle"><div class="title">Context reference</div></div>
68</div><!--header-->
69<div class="contents">
70<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
71<p >This is the reference documentation for OpenGL and OpenGL ES context related functions. For more task-oriented information, see the <a class="el" href="context_guide.html">Context guide</a>. </p>
72<table class="memberdecls">
73<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
74Typedefs</h2></td></tr>
75<tr class="memitem:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>) (void)</td></tr>
76<tr class="memdesc:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Client API function pointer type. <a href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">More...</a><br /></td></tr>
77<tr class="separator:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memSeparator" colspan="2">&#160;</td></tr>
78</table><table class="memberdecls">
79<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
80Functions</h2></td></tr>
81<tr class="memitem:ga1c04dc242268f827290fe40aa1c91157"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
82<tr class="memdesc:ga1c04dc242268f827290fe40aa1c91157"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the context of the specified window current for the calling thread. <a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">More...</a><br /></td></tr>
83<tr class="separator:ga1c04dc242268f827290fe40aa1c91157"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:gad94e80185397a6cf5fe2ab30567af71c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a> (void)</td></tr>
85<tr class="memdesc:gad94e80185397a6cf5fe2ab30567af71c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the window whose context is current on the calling thread. <a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">More...</a><br /></td></tr>
86<tr class="separator:gad94e80185397a6cf5fe2ab30567af71c"><td class="memSeparator" colspan="2">&#160;</td></tr>
87<tr class="memitem:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> (int interval)</td></tr>
88<tr class="memdesc:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the swap interval for the current context. <a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">More...</a><br /></td></tr>
89<tr class="separator:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:ga87425065c011cef1ebd6aac75e059dfa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> (const char *extension)</td></tr>
91<tr class="memdesc:ga87425065c011cef1ebd6aac75e059dfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified extension is available. <a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">More...</a><br /></td></tr>
92<tr class="separator:ga87425065c011cef1ebd6aac75e059dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
93<tr class="memitem:ga35f1837e6f666781842483937612f163"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> (const char *procname)</td></tr>
94<tr class="memdesc:ga35f1837e6f666781842483937612f163"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified function for the current context. <a href="group__context.html#ga35f1837e6f666781842483937612f163">More...</a><br /></td></tr>
95<tr class="separator:ga35f1837e6f666781842483937612f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
96</table>
97<h2 class="groupheader">Typedef Documentation</h2>
98<a id="ga3d47c2d2fbe0be9c505d0e04e91a133c" name="ga3d47c2d2fbe0be9c505d0e04e91a133c"></a>
99<h2 class="memtitle"><span class="permalink"><a href="#ga3d47c2d2fbe0be9c505d0e04e91a133c">&#9670;&nbsp;</a></span>GLFWglproc</h2>
100
101<div class="memitem">
102<div class="memproto">
103 <table class="memname">
104 <tr>
105 <td class="memname">typedef void(* GLFWglproc) (void)</td>
106 </tr>
107 </table>
108</div><div class="memdoc">
109<p >Generic function pointer used for returning client API function pointers without forcing a cast from a regular pointer.</p>
110<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_glext">OpenGL and OpenGL ES extensions</a> </dd>
111<dd>
112<a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></dd></dl>
113<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
114
115</div>
116</div>
117<h2 class="groupheader">Function Documentation</h2>
118<a id="ga1c04dc242268f827290fe40aa1c91157" name="ga1c04dc242268f827290fe40aa1c91157"></a>
119<h2 class="memtitle"><span class="permalink"><a href="#ga1c04dc242268f827290fe40aa1c91157">&#9670;&nbsp;</a></span>glfwMakeContextCurrent()</h2>
120
121<div class="memitem">
122<div class="memproto">
123 <table class="memname">
124 <tr>
125 <td class="memname">void glfwMakeContextCurrent </td>
126 <td>(</td>
127 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
128 <td class="paramname"><em>window</em></td><td>)</td>
129 <td></td>
130 </tr>
131 </table>
132</div><div class="memdoc">
133<p >This function makes the OpenGL or OpenGL ES context of the specified window current on the calling thread. A context must only be made current on a single thread at a time and each thread can have only a single current context at a time.</p>
134<p >When moving a context between threads, you must make it non-current on the old thread before making it current on the new one.</p>
135<p >By default, making a context non-current implicitly forces a pipeline flush. On machines that support <code>GL_KHR_context_flush_control</code>, you can control whether a context performs this flush by setting the <a class="el" href="window_guide.html#GLFW_CONTEXT_RELEASE_BEHAVIOR_hint">GLFW_CONTEXT_RELEASE_BEHAVIOR</a> hint.</p>
136<p >The specified window must have an OpenGL or OpenGL ES context. Specifying a window without a context will generate a <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> error.</p>
137<dl class="params"><dt>Parameters</dt><dd>
138 <table class="params">
139 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose context to make current, or <code>NULL</code> to detach the current context.</td></tr>
140 </table>
141 </dd>
142</dl>
143<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
144<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
145<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_current">Current context</a> </dd>
146<dd>
147<a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></dd></dl>
148<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
149
150</div>
151</div>
152<a id="gad94e80185397a6cf5fe2ab30567af71c" name="gad94e80185397a6cf5fe2ab30567af71c"></a>
153<h2 class="memtitle"><span class="permalink"><a href="#gad94e80185397a6cf5fe2ab30567af71c">&#9670;&nbsp;</a></span>glfwGetCurrentContext()</h2>
154
155<div class="memitem">
156<div class="memproto">
157 <table class="memname">
158 <tr>
159 <td class="memname"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> * glfwGetCurrentContext </td>
160 <td>(</td>
161 <td class="paramtype">void&#160;</td>
162 <td class="paramname"></td><td>)</td>
163 <td></td>
164 </tr>
165 </table>
166</div><div class="memdoc">
167<p >This function returns the window whose OpenGL or OpenGL ES context is current on the calling thread.</p>
168<dl class="section return"><dt>Returns</dt><dd>The window whose context is current, or <code>NULL</code> if no window's context is current.</dd></dl>
169<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
170<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
171<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_current">Current context</a> </dd>
172<dd>
173<a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></dd></dl>
174<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
175
176</div>
177</div>
178<a id="ga6d4e0cdf151b5e579bd67f13202994ed" name="ga6d4e0cdf151b5e579bd67f13202994ed"></a>
179<h2 class="memtitle"><span class="permalink"><a href="#ga6d4e0cdf151b5e579bd67f13202994ed">&#9670;&nbsp;</a></span>glfwSwapInterval()</h2>
180
181<div class="memitem">
182<div class="memproto">
183 <table class="memname">
184 <tr>
185 <td class="memname">void glfwSwapInterval </td>
186 <td>(</td>
187 <td class="paramtype">int&#160;</td>
188 <td class="paramname"><em>interval</em></td><td>)</td>
189 <td></td>
190 </tr>
191 </table>
192</div><div class="memdoc">
193<p >This function sets the swap interval for the current OpenGL or OpenGL ES context, i.e. the number of screen updates to wait from the time <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> was called before swapping the buffers and returning. This is sometimes called <em>vertical synchronization</em>, <em>vertical retrace synchronization</em> or just <em>vsync</em>.</p>
194<p >A context that supports either of the <code>WGL_EXT_swap_control_tear</code> and <code>GLX_EXT_swap_control_tear</code> extensions also accepts <em>negative</em> swap intervals, which allows the driver to swap immediately even if a frame arrives a little bit late. You can check for these extensions with <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>.</p>
195<p >A context must be current on the calling thread. Calling this function without a current context will cause a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
196<p >This function does not apply to Vulkan. If you are rendering with Vulkan, see the present mode of your swapchain instead.</p>
197<dl class="params"><dt>Parameters</dt><dd>
198 <table class="params">
199 <tr><td class="paramdir">[in]</td><td class="paramname">interval</td><td>The minimum number of screen updates to wait for until the buffers are swapped by <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>.</td></tr>
200 </table>
201 </dd>
202</dl>
203<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
204<dl class="section remark"><dt>Remarks</dt><dd>This function is not called during context creation, leaving the swap interval set to whatever is the default on that platform. This is done because some swap interval extensions used by GLFW do not allow the swap interval to be reset to zero once it has been set to a non-zero value.</dd>
205<dd>
206Some GPU drivers do not honor the requested swap interval, either because of a user setting that overrides the application's request or due to bugs in the driver.</dd></dl>
207<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
208<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#buffer_swap">Buffer swapping</a> </dd>
209<dd>
210<a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></dd></dl>
211<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
212
213</div>
214</div>
215<a id="ga87425065c011cef1ebd6aac75e059dfa" name="ga87425065c011cef1ebd6aac75e059dfa"></a>
216<h2 class="memtitle"><span class="permalink"><a href="#ga87425065c011cef1ebd6aac75e059dfa">&#9670;&nbsp;</a></span>glfwExtensionSupported()</h2>
217
218<div class="memitem">
219<div class="memproto">
220 <table class="memname">
221 <tr>
222 <td class="memname">int glfwExtensionSupported </td>
223 <td>(</td>
224 <td class="paramtype">const char *&#160;</td>
225 <td class="paramname"><em>extension</em></td><td>)</td>
226 <td></td>
227 </tr>
228 </table>
229</div><div class="memdoc">
230<p >This function returns whether the specified <a class="el" href="context_guide.html#context_glext">API extension</a> is supported by the current OpenGL or OpenGL ES context. It searches both for client API extension and context creation API extensions.</p>
231<p >A context must be current on the calling thread. Calling this function without a current context will cause a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
232<p >As this functions retrieves and searches one or more extension strings each call, it is recommended that you cache its results if it is going to be used frequently. The extension strings will not change during the lifetime of a context, so there is no danger in doing this.</p>
233<p >This function does not apply to Vulkan. If you are using Vulkan, see <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>, <code>vkEnumerateInstanceExtensionProperties</code> and <code>vkEnumerateDeviceExtensionProperties</code> instead.</p>
234<dl class="params"><dt>Parameters</dt><dd>
235 <table class="params">
236 <tr><td class="paramdir">[in]</td><td class="paramname">extension</td><td>The ASCII encoded name of the extension. </td></tr>
237 </table>
238 </dd>
239</dl>
240<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if the extension is available, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
241<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
242<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
243<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_glext">OpenGL and OpenGL ES extensions</a> </dd>
244<dd>
245<a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></dd></dl>
246<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
247
248</div>
249</div>
250<a id="ga35f1837e6f666781842483937612f163" name="ga35f1837e6f666781842483937612f163"></a>
251<h2 class="memtitle"><span class="permalink"><a href="#ga35f1837e6f666781842483937612f163">&#9670;&nbsp;</a></span>glfwGetProcAddress()</h2>
252
253<div class="memitem">
254<div class="memproto">
255 <table class="memname">
256 <tr>
257 <td class="memname"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a> glfwGetProcAddress </td>
258 <td>(</td>
259 <td class="paramtype">const char *&#160;</td>
260 <td class="paramname"><em>procname</em></td><td>)</td>
261 <td></td>
262 </tr>
263 </table>
264</div><div class="memdoc">
265<p >This function returns the address of the specified OpenGL or OpenGL ES <a class="el" href="context_guide.html#context_glext">core or extension function</a>, if it is supported by the current context.</p>
266<p >A context must be current on the calling thread. Calling this function without a current context will cause a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
267<p >This function does not apply to Vulkan. If you are rendering with Vulkan, see <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>, <code>vkGetInstanceProcAddr</code> and <code>vkGetDeviceProcAddr</code> instead.</p>
268<dl class="params"><dt>Parameters</dt><dd>
269 <table class="params">
270 <tr><td class="paramdir">[in]</td><td class="paramname">procname</td><td>The ASCII encoded name of the function. </td></tr>
271 </table>
272 </dd>
273</dl>
274<dl class="section return"><dt>Returns</dt><dd>The address of the function, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
275<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
276<dl class="section remark"><dt>Remarks</dt><dd>The address of a given function is not guaranteed to be the same between contexts.</dd>
277<dd>
278This function may return a non-<code>NULL</code> address despite the associated version or extension not being available. Always check the context version or extension string first.</dd></dl>
279<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned function pointer is valid until the context is destroyed or the library is terminated.</dd></dl>
280<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
281<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_glext">OpenGL and OpenGL ES extensions</a> </dd>
282<dd>
283<a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></dd></dl>
284<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
285
286</div>
287</div>
288</div><!-- contents -->
289<address class="footer">
290<p>
291Last update on Thu Oct 28 2021 for GLFW 3.3.5
292</p>
293</address>
294</body>
295</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__errors.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__errors.html
new file mode 100644
index 0000000..01ae983
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__errors.html
@@ -0,0 +1,297 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Error codes</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Error codes<div class="ingroups"><a class="el" href="group__init.html">Initialization, version and error reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="intro_guide.html#error_handling">error handling</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a>&#160;&#160;&#160;0</td></tr>
75<tr class="memdesc:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">No error has occurred. <a href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">More...</a><br /></td></tr>
76<tr class="separator:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
77<tr class="memitem:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>&#160;&#160;&#160;0x00010001</td></tr>
78<tr class="memdesc:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW has not been initialized. <a href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">More...</a><br /></td></tr>
79<tr class="separator:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a>&#160;&#160;&#160;0x00010002</td></tr>
81<tr class="memdesc:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">No context is current for this thread. <a href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">More...</a><br /></td></tr>
82<tr class="separator:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
83<tr class="memitem:ga76f6bb9c4eea73db675f096b404593ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>&#160;&#160;&#160;0x00010003</td></tr>
84<tr class="memdesc:ga76f6bb9c4eea73db675f096b404593ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid enum value. <a href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">More...</a><br /></td></tr>
85<tr class="separator:ga76f6bb9c4eea73db675f096b404593ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>&#160;&#160;&#160;0x00010004</td></tr>
87<tr class="memdesc:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid value. <a href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">More...</a><br /></td></tr>
88<tr class="separator:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memSeparator" colspan="2">&#160;</td></tr>
89<tr class="memitem:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">GLFW_OUT_OF_MEMORY</a>&#160;&#160;&#160;0x00010005</td></tr>
90<tr class="memdesc:ga9023953a2bcb98c2906afd071d21ee7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">A memory allocation failed. <a href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">More...</a><br /></td></tr>
91<tr class="separator:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:ga56882b290db23261cc6c053c40c2d08e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>&#160;&#160;&#160;0x00010006</td></tr>
93<tr class="memdesc:ga56882b290db23261cc6c053c40c2d08e"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW could not find support for the requested API on the system. <a href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">More...</a><br /></td></tr>
94<tr class="separator:ga56882b290db23261cc6c053c40c2d08e"><td class="memSeparator" colspan="2">&#160;</td></tr>
95<tr class="memitem:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a>&#160;&#160;&#160;0x00010007</td></tr>
96<tr class="memdesc:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested OpenGL or OpenGL ES version is not available. <a href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">More...</a><br /></td></tr>
97<tr class="separator:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memSeparator" colspan="2">&#160;</td></tr>
98<tr class="memitem:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>&#160;&#160;&#160;0x00010008</td></tr>
99<tr class="memdesc:gad44162d78100ea5e87cdd38426b8c7a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">A platform-specific error occurred that does not match any of the more specific categories. <a href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">More...</a><br /></td></tr>
100<tr class="separator:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
101<tr class="memitem:ga196e125ef261d94184e2b55c05762f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a>&#160;&#160;&#160;0x00010009</td></tr>
102<tr class="memdesc:ga196e125ef261d94184e2b55c05762f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested format is not supported or available. <a href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">More...</a><br /></td></tr>
103<tr class="separator:ga196e125ef261d94184e2b55c05762f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
104<tr class="memitem:gacff24d2757da752ae4c80bf452356487"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a>&#160;&#160;&#160;0x0001000A</td></tr>
105<tr class="memdesc:gacff24d2757da752ae4c80bf452356487"><td class="mdescLeft">&#160;</td><td class="mdescRight">The specified window does not have an OpenGL or OpenGL ES context. <a href="group__errors.html#gacff24d2757da752ae4c80bf452356487">More...</a><br /></td></tr>
106<tr class="separator:gacff24d2757da752ae4c80bf452356487"><td class="memSeparator" colspan="2">&#160;</td></tr>
107</table>
108<h2 class="groupheader">Macro Definition Documentation</h2>
109<a id="gafa30deee5db4d69c4c93d116ed87dbf4" name="gafa30deee5db4d69c4c93d116ed87dbf4"></a>
110<h2 class="memtitle"><span class="permalink"><a href="#gafa30deee5db4d69c4c93d116ed87dbf4">&#9670;&nbsp;</a></span>GLFW_NO_ERROR</h2>
111
112<div class="memitem">
113<div class="memproto">
114 <table class="memname">
115 <tr>
116 <td class="memname">#define GLFW_NO_ERROR&#160;&#160;&#160;0</td>
117 </tr>
118 </table>
119</div><div class="memdoc">
120<p >No error has occurred.</p>
121<dl class="section user"><dt>Analysis</dt><dd>Yay. </dd></dl>
122
123</div>
124</div>
125<a id="ga2374ee02c177f12e1fa76ff3ed15e14a" name="ga2374ee02c177f12e1fa76ff3ed15e14a"></a>
126<h2 class="memtitle"><span class="permalink"><a href="#ga2374ee02c177f12e1fa76ff3ed15e14a">&#9670;&nbsp;</a></span>GLFW_NOT_INITIALIZED</h2>
127
128<div class="memitem">
129<div class="memproto">
130 <table class="memname">
131 <tr>
132 <td class="memname">#define GLFW_NOT_INITIALIZED&#160;&#160;&#160;0x00010001</td>
133 </tr>
134 </table>
135</div><div class="memdoc">
136<p >This occurs if a GLFW function was called that must not be called unless the library is <a class="el" href="intro_guide.html#intro_init">initialized</a>.</p>
137<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Initialize GLFW before calling any function that requires initialization. </dd></dl>
138
139</div>
140</div>
141<a id="gaa8290386e9528ccb9e42a3a4e16fc0d0" name="gaa8290386e9528ccb9e42a3a4e16fc0d0"></a>
142<h2 class="memtitle"><span class="permalink"><a href="#gaa8290386e9528ccb9e42a3a4e16fc0d0">&#9670;&nbsp;</a></span>GLFW_NO_CURRENT_CONTEXT</h2>
143
144<div class="memitem">
145<div class="memproto">
146 <table class="memname">
147 <tr>
148 <td class="memname">#define GLFW_NO_CURRENT_CONTEXT&#160;&#160;&#160;0x00010002</td>
149 </tr>
150 </table>
151</div><div class="memdoc">
152<p >This occurs if a GLFW function was called that needs and operates on the current OpenGL or OpenGL ES context but no context is current on the calling thread. One such function is <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>.</p>
153<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Ensure a context is current before calling functions that require a current context. </dd></dl>
154
155</div>
156</div>
157<a id="ga76f6bb9c4eea73db675f096b404593ce" name="ga76f6bb9c4eea73db675f096b404593ce"></a>
158<h2 class="memtitle"><span class="permalink"><a href="#ga76f6bb9c4eea73db675f096b404593ce">&#9670;&nbsp;</a></span>GLFW_INVALID_ENUM</h2>
159
160<div class="memitem">
161<div class="memproto">
162 <table class="memname">
163 <tr>
164 <td class="memname">#define GLFW_INVALID_ENUM&#160;&#160;&#160;0x00010003</td>
165 </tr>
166 </table>
167</div><div class="memdoc">
168<p >One of the arguments to the function was an invalid enum value, for example requesting <a class="el" href="window_guide.html#GLFW_RED_BITS">GLFW_RED_BITS</a> with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
169<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Fix the offending call. </dd></dl>
170
171</div>
172</div>
173<a id="gaaf2ef9aa8202c2b82ac2d921e554c687" name="gaaf2ef9aa8202c2b82ac2d921e554c687"></a>
174<h2 class="memtitle"><span class="permalink"><a href="#gaaf2ef9aa8202c2b82ac2d921e554c687">&#9670;&nbsp;</a></span>GLFW_INVALID_VALUE</h2>
175
176<div class="memitem">
177<div class="memproto">
178 <table class="memname">
179 <tr>
180 <td class="memname">#define GLFW_INVALID_VALUE&#160;&#160;&#160;0x00010004</td>
181 </tr>
182 </table>
183</div><div class="memdoc">
184<p >One of the arguments to the function was an invalid value, for example requesting a non-existent OpenGL or OpenGL ES version like 2.7.</p>
185<p >Requesting a valid but unavailable OpenGL or OpenGL ES version will instead result in a <a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a> error.</p>
186<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Fix the offending call. </dd></dl>
187
188</div>
189</div>
190<a id="ga9023953a2bcb98c2906afd071d21ee7f" name="ga9023953a2bcb98c2906afd071d21ee7f"></a>
191<h2 class="memtitle"><span class="permalink"><a href="#ga9023953a2bcb98c2906afd071d21ee7f">&#9670;&nbsp;</a></span>GLFW_OUT_OF_MEMORY</h2>
192
193<div class="memitem">
194<div class="memproto">
195 <table class="memname">
196 <tr>
197 <td class="memname">#define GLFW_OUT_OF_MEMORY&#160;&#160;&#160;0x00010005</td>
198 </tr>
199 </table>
200</div><div class="memdoc">
201<p >A memory allocation failed.</p>
202<dl class="section user"><dt>Analysis</dt><dd>A bug in GLFW or the underlying operating system. Report the bug to our <a href="https://github.com/glfw/glfw/issues">issue tracker</a>. </dd></dl>
203
204</div>
205</div>
206<a id="ga56882b290db23261cc6c053c40c2d08e" name="ga56882b290db23261cc6c053c40c2d08e"></a>
207<h2 class="memtitle"><span class="permalink"><a href="#ga56882b290db23261cc6c053c40c2d08e">&#9670;&nbsp;</a></span>GLFW_API_UNAVAILABLE</h2>
208
209<div class="memitem">
210<div class="memproto">
211 <table class="memname">
212 <tr>
213 <td class="memname">#define GLFW_API_UNAVAILABLE&#160;&#160;&#160;0x00010006</td>
214 </tr>
215 </table>
216</div><div class="memdoc">
217<p >GLFW could not find support for the requested API on the system.</p>
218<dl class="section user"><dt>Analysis</dt><dd>The installed graphics driver does not support the requested API, or does not support it via the chosen context creation backend. Below are a few examples.</dd></dl>
219<dl class="section user"><dt></dt><dd>Some pre-installed Windows graphics drivers do not support OpenGL. AMD only supports OpenGL ES via EGL, while Nvidia and Intel only support it via a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary driver. Older graphics drivers do not support Vulkan. </dd></dl>
220
221</div>
222</div>
223<a id="gad16c5565b4a69f9c2a9ac2c0dbc89462" name="gad16c5565b4a69f9c2a9ac2c0dbc89462"></a>
224<h2 class="memtitle"><span class="permalink"><a href="#gad16c5565b4a69f9c2a9ac2c0dbc89462">&#9670;&nbsp;</a></span>GLFW_VERSION_UNAVAILABLE</h2>
225
226<div class="memitem">
227<div class="memproto">
228 <table class="memname">
229 <tr>
230 <td class="memname">#define GLFW_VERSION_UNAVAILABLE&#160;&#160;&#160;0x00010007</td>
231 </tr>
232 </table>
233</div><div class="memdoc">
234<p >The requested OpenGL or OpenGL ES version (including any requested context or framebuffer hints) is not available on this machine.</p>
235<dl class="section user"><dt>Analysis</dt><dd>The machine does not support your requirements. If your application is sufficiently flexible, downgrade your requirements and try again. Otherwise, inform the user that their machine does not match your requirements.</dd></dl>
236<dl class="section user"><dt></dt><dd>Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 comes out before the 4.x series gets that far, also fail with this error and not <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>, because GLFW cannot know what future versions will exist. </dd></dl>
237
238</div>
239</div>
240<a id="gad44162d78100ea5e87cdd38426b8c7a1" name="gad44162d78100ea5e87cdd38426b8c7a1"></a>
241<h2 class="memtitle"><span class="permalink"><a href="#gad44162d78100ea5e87cdd38426b8c7a1">&#9670;&nbsp;</a></span>GLFW_PLATFORM_ERROR</h2>
242
243<div class="memitem">
244<div class="memproto">
245 <table class="memname">
246 <tr>
247 <td class="memname">#define GLFW_PLATFORM_ERROR&#160;&#160;&#160;0x00010008</td>
248 </tr>
249 </table>
250</div><div class="memdoc">
251<p >A platform-specific error occurred that does not match any of the more specific categories.</p>
252<dl class="section user"><dt>Analysis</dt><dd>A bug or configuration error in GLFW, the underlying operating system or its drivers, or a lack of required resources. Report the issue to our <a href="https://github.com/glfw/glfw/issues">issue tracker</a>. </dd></dl>
253
254</div>
255</div>
256<a id="ga196e125ef261d94184e2b55c05762f14" name="ga196e125ef261d94184e2b55c05762f14"></a>
257<h2 class="memtitle"><span class="permalink"><a href="#ga196e125ef261d94184e2b55c05762f14">&#9670;&nbsp;</a></span>GLFW_FORMAT_UNAVAILABLE</h2>
258
259<div class="memitem">
260<div class="memproto">
261 <table class="memname">
262 <tr>
263 <td class="memname">#define GLFW_FORMAT_UNAVAILABLE&#160;&#160;&#160;0x00010009</td>
264 </tr>
265 </table>
266</div><div class="memdoc">
267<p >If emitted during window creation, the requested pixel format is not supported.</p>
268<p >If emitted when querying the clipboard, the contents of the clipboard could not be converted to the requested format.</p>
269<dl class="section user"><dt>Analysis</dt><dd>If emitted during window creation, one or more <a class="el" href="window_guide.html#window_hints_hard">hard constraints</a> did not match any of the available pixel formats. If your application is sufficiently flexible, downgrade your requirements and try again. Otherwise, inform the user that their machine does not match your requirements.</dd></dl>
270<dl class="section user"><dt></dt><dd>If emitted when querying the clipboard, ignore the error or report it to the user, as appropriate. </dd></dl>
271
272</div>
273</div>
274<a id="gacff24d2757da752ae4c80bf452356487" name="gacff24d2757da752ae4c80bf452356487"></a>
275<h2 class="memtitle"><span class="permalink"><a href="#gacff24d2757da752ae4c80bf452356487">&#9670;&nbsp;</a></span>GLFW_NO_WINDOW_CONTEXT</h2>
276
277<div class="memitem">
278<div class="memproto">
279 <table class="memname">
280 <tr>
281 <td class="memname">#define GLFW_NO_WINDOW_CONTEXT&#160;&#160;&#160;0x0001000A</td>
282 </tr>
283 </table>
284</div><div class="memdoc">
285<p >A window that does not have an OpenGL or OpenGL ES context was passed to a function that requires it to have one.</p>
286<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Fix the offending call. </dd></dl>
287
288</div>
289</div>
290</div><!-- contents -->
291<address class="footer">
292<p>
293Last update on Thu Oct 28 2021 for GLFW 3.3.5
294</p>
295</address>
296</body>
297</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__axes.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__axes.html
new file mode 100644
index 0000000..70e69e6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__axes.html
@@ -0,0 +1,195 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Gamepad axes</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Gamepad axes<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#gamepad">Gamepad input</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:ga544e396d092036a7d80c1e5f233f7a38"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38">GLFW_GAMEPAD_AXIS_LEFT_X</a>&#160;&#160;&#160;0</td></tr>
75<tr class="separator:ga544e396d092036a7d80c1e5f233f7a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
76<tr class="memitem:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5">GLFW_GAMEPAD_AXIS_LEFT_Y</a>&#160;&#160;&#160;1</td></tr>
77<tr class="separator:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
78<tr class="memitem:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc">GLFW_GAMEPAD_AXIS_RIGHT_X</a>&#160;&#160;&#160;2</td></tr>
79<tr class="separator:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4">GLFW_GAMEPAD_AXIS_RIGHT_Y</a>&#160;&#160;&#160;3</td></tr>
81<tr class="separator:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
82<tr class="memitem:ga6d79561dd8907c37354426242901b86e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e">GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</a>&#160;&#160;&#160;4</td></tr>
83<tr class="separator:ga6d79561dd8907c37354426242901b86e"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a>&#160;&#160;&#160;5</td></tr>
85<tr class="separator:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:ga0818fd9433e1359692b7443293e5ac86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86">GLFW_GAMEPAD_AXIS_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></td></tr>
87<tr class="separator:ga0818fd9433e1359692b7443293e5ac86"><td class="memSeparator" colspan="2">&#160;</td></tr>
88</table>
89<h2 class="groupheader">Macro Definition Documentation</h2>
90<a id="ga544e396d092036a7d80c1e5f233f7a38" name="ga544e396d092036a7d80c1e5f233f7a38"></a>
91<h2 class="memtitle"><span class="permalink"><a href="#ga544e396d092036a7d80c1e5f233f7a38">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LEFT_X</h2>
92
93<div class="memitem">
94<div class="memproto">
95 <table class="memname">
96 <tr>
97 <td class="memname">#define GLFW_GAMEPAD_AXIS_LEFT_X&#160;&#160;&#160;0</td>
98 </tr>
99 </table>
100</div><div class="memdoc">
101
102</div>
103</div>
104<a id="ga64dcf2c6e9be50b7c556ff7671996dd5" name="ga64dcf2c6e9be50b7c556ff7671996dd5"></a>
105<h2 class="memtitle"><span class="permalink"><a href="#ga64dcf2c6e9be50b7c556ff7671996dd5">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LEFT_Y</h2>
106
107<div class="memitem">
108<div class="memproto">
109 <table class="memname">
110 <tr>
111 <td class="memname">#define GLFW_GAMEPAD_AXIS_LEFT_Y&#160;&#160;&#160;1</td>
112 </tr>
113 </table>
114</div><div class="memdoc">
115
116</div>
117</div>
118<a id="gabd6785106cd3c5a044a6e49a395ee2fc" name="gabd6785106cd3c5a044a6e49a395ee2fc"></a>
119<h2 class="memtitle"><span class="permalink"><a href="#gabd6785106cd3c5a044a6e49a395ee2fc">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_RIGHT_X</h2>
120
121<div class="memitem">
122<div class="memproto">
123 <table class="memname">
124 <tr>
125 <td class="memname">#define GLFW_GAMEPAD_AXIS_RIGHT_X&#160;&#160;&#160;2</td>
126 </tr>
127 </table>
128</div><div class="memdoc">
129
130</div>
131</div>
132<a id="ga1cc20566d44d521b7183681a8e88e2e4" name="ga1cc20566d44d521b7183681a8e88e2e4"></a>
133<h2 class="memtitle"><span class="permalink"><a href="#ga1cc20566d44d521b7183681a8e88e2e4">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_RIGHT_Y</h2>
134
135<div class="memitem">
136<div class="memproto">
137 <table class="memname">
138 <tr>
139 <td class="memname">#define GLFW_GAMEPAD_AXIS_RIGHT_Y&#160;&#160;&#160;3</td>
140 </tr>
141 </table>
142</div><div class="memdoc">
143
144</div>
145</div>
146<a id="ga6d79561dd8907c37354426242901b86e" name="ga6d79561dd8907c37354426242901b86e"></a>
147<h2 class="memtitle"><span class="permalink"><a href="#ga6d79561dd8907c37354426242901b86e">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</h2>
148
149<div class="memitem">
150<div class="memproto">
151 <table class="memname">
152 <tr>
153 <td class="memname">#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER&#160;&#160;&#160;4</td>
154 </tr>
155 </table>
156</div><div class="memdoc">
157
158</div>
159</div>
160<a id="ga121a7d5d20589a423cd1634dd6ee6eab" name="ga121a7d5d20589a423cd1634dd6ee6eab"></a>
161<h2 class="memtitle"><span class="permalink"><a href="#ga121a7d5d20589a423cd1634dd6ee6eab">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</h2>
162
163<div class="memitem">
164<div class="memproto">
165 <table class="memname">
166 <tr>
167 <td class="memname">#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER&#160;&#160;&#160;5</td>
168 </tr>
169 </table>
170</div><div class="memdoc">
171
172</div>
173</div>
174<a id="ga0818fd9433e1359692b7443293e5ac86" name="ga0818fd9433e1359692b7443293e5ac86"></a>
175<h2 class="memtitle"><span class="permalink"><a href="#ga0818fd9433e1359692b7443293e5ac86">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LAST</h2>
176
177<div class="memitem">
178<div class="memproto">
179 <table class="memname">
180 <tr>
181 <td class="memname">#define GLFW_GAMEPAD_AXIS_LAST&#160;&#160;&#160;<a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></td>
182 </tr>
183 </table>
184</div><div class="memdoc">
185
186</div>
187</div>
188</div><!-- contents -->
189<address class="footer">
190<p>
191Last update on Thu Oct 28 2021 for GLFW 3.3.5
192</p>
193</address>
194</body>
195</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__buttons.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__buttons.html
new file mode 100644
index 0000000..cff3e86
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__gamepad__buttons.html
@@ -0,0 +1,403 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Gamepad buttons</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Gamepad buttons<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#gamepad">Gamepad input</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a>&#160;&#160;&#160;0</td></tr>
75<tr class="separator:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memSeparator" colspan="2">&#160;</td></tr>
76<tr class="memitem:ga2228a6512fd5950cdb51ba07846546fa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a>&#160;&#160;&#160;1</td></tr>
77<tr class="separator:ga2228a6512fd5950cdb51ba07846546fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
78<tr class="memitem:ga52cc94785cf3fe9a12e246539259887c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a>&#160;&#160;&#160;2</td></tr>
79<tr class="separator:ga52cc94785cf3fe9a12e246539259887c"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:gafc931248bda494b530cbe057f386a5ed"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a>&#160;&#160;&#160;3</td></tr>
81<tr class="separator:gafc931248bda494b530cbe057f386a5ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
82<tr class="memitem:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3">GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</a>&#160;&#160;&#160;4</td></tr>
83<tr class="separator:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f">GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</a>&#160;&#160;&#160;5</td></tr>
85<tr class="separator:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:gabc7c0264ce778835b516a472b47f6caf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf">GLFW_GAMEPAD_BUTTON_BACK</a>&#160;&#160;&#160;6</td></tr>
87<tr class="separator:gabc7c0264ce778835b516a472b47f6caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:ga04606949dd9139434b8a1bedf4ac1021"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021">GLFW_GAMEPAD_BUTTON_START</a>&#160;&#160;&#160;7</td></tr>
89<tr class="separator:ga04606949dd9139434b8a1bedf4ac1021"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc">GLFW_GAMEPAD_BUTTON_GUIDE</a>&#160;&#160;&#160;8</td></tr>
91<tr class="separator:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:ga3e089787327454f7bfca7364d6ca206a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a">GLFW_GAMEPAD_BUTTON_LEFT_THUMB</a>&#160;&#160;&#160;9</td></tr>
93<tr class="separator:ga3e089787327454f7bfca7364d6ca206a"><td class="memSeparator" colspan="2">&#160;</td></tr>
94<tr class="memitem:ga1c003f52b5aebb45272475b48953b21a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a">GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</a>&#160;&#160;&#160;10</td></tr>
95<tr class="separator:ga1c003f52b5aebb45272475b48953b21a"><td class="memSeparator" colspan="2">&#160;</td></tr>
96<tr class="memitem:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a">GLFW_GAMEPAD_BUTTON_DPAD_UP</a>&#160;&#160;&#160;11</td></tr>
97<tr class="separator:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memSeparator" colspan="2">&#160;</td></tr>
98<tr class="memitem:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6">GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</a>&#160;&#160;&#160;12</td></tr>
99<tr class="separator:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
100<tr class="memitem:ga8f2b731b97d80f90f11967a83207665c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c">GLFW_GAMEPAD_BUTTON_DPAD_DOWN</a>&#160;&#160;&#160;13</td></tr>
101<tr class="separator:ga8f2b731b97d80f90f11967a83207665c"><td class="memSeparator" colspan="2">&#160;</td></tr>
102<tr class="memitem:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a>&#160;&#160;&#160;14</td></tr>
103<tr class="separator:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memSeparator" colspan="2">&#160;</td></tr>
104<tr class="memitem:ga5cc98882f4f81dacf761639a567f61eb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb">GLFW_GAMEPAD_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></td></tr>
105<tr class="separator:ga5cc98882f4f81dacf761639a567f61eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
106<tr class="memitem:gaf08d0df26527c9305253422bd98ed63a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a">GLFW_GAMEPAD_BUTTON_CROSS</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></td></tr>
107<tr class="separator:gaf08d0df26527c9305253422bd98ed63a"><td class="memSeparator" colspan="2">&#160;</td></tr>
108<tr class="memitem:gaaef094b3dacbf15f272b274516839b82"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82">GLFW_GAMEPAD_BUTTON_CIRCLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></td></tr>
109<tr class="separator:gaaef094b3dacbf15f272b274516839b82"><td class="memSeparator" colspan="2">&#160;</td></tr>
110<tr class="memitem:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f">GLFW_GAMEPAD_BUTTON_SQUARE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></td></tr>
111<tr class="separator:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memSeparator" colspan="2">&#160;</td></tr>
112<tr class="memitem:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802">GLFW_GAMEPAD_BUTTON_TRIANGLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></td></tr>
113<tr class="separator:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memSeparator" colspan="2">&#160;</td></tr>
114</table>
115<h2 class="groupheader">Macro Definition Documentation</h2>
116<a id="gae055a12fbf4b48b5954c8e1cd129b810" name="gae055a12fbf4b48b5954c8e1cd129b810"></a>
117<h2 class="memtitle"><span class="permalink"><a href="#gae055a12fbf4b48b5954c8e1cd129b810">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_A</h2>
118
119<div class="memitem">
120<div class="memproto">
121 <table class="memname">
122 <tr>
123 <td class="memname">#define GLFW_GAMEPAD_BUTTON_A&#160;&#160;&#160;0</td>
124 </tr>
125 </table>
126</div><div class="memdoc">
127
128</div>
129</div>
130<a id="ga2228a6512fd5950cdb51ba07846546fa" name="ga2228a6512fd5950cdb51ba07846546fa"></a>
131<h2 class="memtitle"><span class="permalink"><a href="#ga2228a6512fd5950cdb51ba07846546fa">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_B</h2>
132
133<div class="memitem">
134<div class="memproto">
135 <table class="memname">
136 <tr>
137 <td class="memname">#define GLFW_GAMEPAD_BUTTON_B&#160;&#160;&#160;1</td>
138 </tr>
139 </table>
140</div><div class="memdoc">
141
142</div>
143</div>
144<a id="ga52cc94785cf3fe9a12e246539259887c" name="ga52cc94785cf3fe9a12e246539259887c"></a>
145<h2 class="memtitle"><span class="permalink"><a href="#ga52cc94785cf3fe9a12e246539259887c">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_X</h2>
146
147<div class="memitem">
148<div class="memproto">
149 <table class="memname">
150 <tr>
151 <td class="memname">#define GLFW_GAMEPAD_BUTTON_X&#160;&#160;&#160;2</td>
152 </tr>
153 </table>
154</div><div class="memdoc">
155
156</div>
157</div>
158<a id="gafc931248bda494b530cbe057f386a5ed" name="gafc931248bda494b530cbe057f386a5ed"></a>
159<h2 class="memtitle"><span class="permalink"><a href="#gafc931248bda494b530cbe057f386a5ed">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_Y</h2>
160
161<div class="memitem">
162<div class="memproto">
163 <table class="memname">
164 <tr>
165 <td class="memname">#define GLFW_GAMEPAD_BUTTON_Y&#160;&#160;&#160;3</td>
166 </tr>
167 </table>
168</div><div class="memdoc">
169
170</div>
171</div>
172<a id="ga17d67b4f39a39d6b813bd1567a3507c3" name="ga17d67b4f39a39d6b813bd1567a3507c3"></a>
173<h2 class="memtitle"><span class="permalink"><a href="#ga17d67b4f39a39d6b813bd1567a3507c3">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</h2>
174
175<div class="memitem">
176<div class="memproto">
177 <table class="memname">
178 <tr>
179 <td class="memname">#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER&#160;&#160;&#160;4</td>
180 </tr>
181 </table>
182</div><div class="memdoc">
183
184</div>
185</div>
186<a id="gadfbc9ea9bf3aae896b79fa49fdc85c7f" name="gadfbc9ea9bf3aae896b79fa49fdc85c7f"></a>
187<h2 class="memtitle"><span class="permalink"><a href="#gadfbc9ea9bf3aae896b79fa49fdc85c7f">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</h2>
188
189<div class="memitem">
190<div class="memproto">
191 <table class="memname">
192 <tr>
193 <td class="memname">#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER&#160;&#160;&#160;5</td>
194 </tr>
195 </table>
196</div><div class="memdoc">
197
198</div>
199</div>
200<a id="gabc7c0264ce778835b516a472b47f6caf" name="gabc7c0264ce778835b516a472b47f6caf"></a>
201<h2 class="memtitle"><span class="permalink"><a href="#gabc7c0264ce778835b516a472b47f6caf">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_BACK</h2>
202
203<div class="memitem">
204<div class="memproto">
205 <table class="memname">
206 <tr>
207 <td class="memname">#define GLFW_GAMEPAD_BUTTON_BACK&#160;&#160;&#160;6</td>
208 </tr>
209 </table>
210</div><div class="memdoc">
211
212</div>
213</div>
214<a id="ga04606949dd9139434b8a1bedf4ac1021" name="ga04606949dd9139434b8a1bedf4ac1021"></a>
215<h2 class="memtitle"><span class="permalink"><a href="#ga04606949dd9139434b8a1bedf4ac1021">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_START</h2>
216
217<div class="memitem">
218<div class="memproto">
219 <table class="memname">
220 <tr>
221 <td class="memname">#define GLFW_GAMEPAD_BUTTON_START&#160;&#160;&#160;7</td>
222 </tr>
223 </table>
224</div><div class="memdoc">
225
226</div>
227</div>
228<a id="ga7fa48c32e5b2f5db2f080aa0b8b573dc" name="ga7fa48c32e5b2f5db2f080aa0b8b573dc"></a>
229<h2 class="memtitle"><span class="permalink"><a href="#ga7fa48c32e5b2f5db2f080aa0b8b573dc">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_GUIDE</h2>
230
231<div class="memitem">
232<div class="memproto">
233 <table class="memname">
234 <tr>
235 <td class="memname">#define GLFW_GAMEPAD_BUTTON_GUIDE&#160;&#160;&#160;8</td>
236 </tr>
237 </table>
238</div><div class="memdoc">
239
240</div>
241</div>
242<a id="ga3e089787327454f7bfca7364d6ca206a" name="ga3e089787327454f7bfca7364d6ca206a"></a>
243<h2 class="memtitle"><span class="permalink"><a href="#ga3e089787327454f7bfca7364d6ca206a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_LEFT_THUMB</h2>
244
245<div class="memitem">
246<div class="memproto">
247 <table class="memname">
248 <tr>
249 <td class="memname">#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB&#160;&#160;&#160;9</td>
250 </tr>
251 </table>
252</div><div class="memdoc">
253
254</div>
255</div>
256<a id="ga1c003f52b5aebb45272475b48953b21a" name="ga1c003f52b5aebb45272475b48953b21a"></a>
257<h2 class="memtitle"><span class="permalink"><a href="#ga1c003f52b5aebb45272475b48953b21a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</h2>
258
259<div class="memitem">
260<div class="memproto">
261 <table class="memname">
262 <tr>
263 <td class="memname">#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB&#160;&#160;&#160;10</td>
264 </tr>
265 </table>
266</div><div class="memdoc">
267
268</div>
269</div>
270<a id="ga4f1ed6f974a47bc8930d4874a283476a" name="ga4f1ed6f974a47bc8930d4874a283476a"></a>
271<h2 class="memtitle"><span class="permalink"><a href="#ga4f1ed6f974a47bc8930d4874a283476a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_UP</h2>
272
273<div class="memitem">
274<div class="memproto">
275 <table class="memname">
276 <tr>
277 <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_UP&#160;&#160;&#160;11</td>
278 </tr>
279 </table>
280</div><div class="memdoc">
281
282</div>
283</div>
284<a id="gae2a780d2a8c79e0b77c0b7b601ca57c6" name="gae2a780d2a8c79e0b77c0b7b601ca57c6"></a>
285<h2 class="memtitle"><span class="permalink"><a href="#gae2a780d2a8c79e0b77c0b7b601ca57c6">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</h2>
286
287<div class="memitem">
288<div class="memproto">
289 <table class="memname">
290 <tr>
291 <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT&#160;&#160;&#160;12</td>
292 </tr>
293 </table>
294</div><div class="memdoc">
295
296</div>
297</div>
298<a id="ga8f2b731b97d80f90f11967a83207665c" name="ga8f2b731b97d80f90f11967a83207665c"></a>
299<h2 class="memtitle"><span class="permalink"><a href="#ga8f2b731b97d80f90f11967a83207665c">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_DOWN</h2>
300
301<div class="memitem">
302<div class="memproto">
303 <table class="memname">
304 <tr>
305 <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN&#160;&#160;&#160;13</td>
306 </tr>
307 </table>
308</div><div class="memdoc">
309
310</div>
311</div>
312<a id="gaf0697e0e8607b2ebe1c93b0c6befe301" name="gaf0697e0e8607b2ebe1c93b0c6befe301"></a>
313<h2 class="memtitle"><span class="permalink"><a href="#gaf0697e0e8607b2ebe1c93b0c6befe301">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_LEFT</h2>
314
315<div class="memitem">
316<div class="memproto">
317 <table class="memname">
318 <tr>
319 <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT&#160;&#160;&#160;14</td>
320 </tr>
321 </table>
322</div><div class="memdoc">
323
324</div>
325</div>
326<a id="ga5cc98882f4f81dacf761639a567f61eb" name="ga5cc98882f4f81dacf761639a567f61eb"></a>
327<h2 class="memtitle"><span class="permalink"><a href="#ga5cc98882f4f81dacf761639a567f61eb">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_LAST</h2>
328
329<div class="memitem">
330<div class="memproto">
331 <table class="memname">
332 <tr>
333 <td class="memname">#define GLFW_GAMEPAD_BUTTON_LAST&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></td>
334 </tr>
335 </table>
336</div><div class="memdoc">
337
338</div>
339</div>
340<a id="gaf08d0df26527c9305253422bd98ed63a" name="gaf08d0df26527c9305253422bd98ed63a"></a>
341<h2 class="memtitle"><span class="permalink"><a href="#gaf08d0df26527c9305253422bd98ed63a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_CROSS</h2>
342
343<div class="memitem">
344<div class="memproto">
345 <table class="memname">
346 <tr>
347 <td class="memname">#define GLFW_GAMEPAD_BUTTON_CROSS&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></td>
348 </tr>
349 </table>
350</div><div class="memdoc">
351
352</div>
353</div>
354<a id="gaaef094b3dacbf15f272b274516839b82" name="gaaef094b3dacbf15f272b274516839b82"></a>
355<h2 class="memtitle"><span class="permalink"><a href="#gaaef094b3dacbf15f272b274516839b82">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_CIRCLE</h2>
356
357<div class="memitem">
358<div class="memproto">
359 <table class="memname">
360 <tr>
361 <td class="memname">#define GLFW_GAMEPAD_BUTTON_CIRCLE&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></td>
362 </tr>
363 </table>
364</div><div class="memdoc">
365
366</div>
367</div>
368<a id="gafc7821e87d77d41ed2cd3e1f726ec35f" name="gafc7821e87d77d41ed2cd3e1f726ec35f"></a>
369<h2 class="memtitle"><span class="permalink"><a href="#gafc7821e87d77d41ed2cd3e1f726ec35f">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_SQUARE</h2>
370
371<div class="memitem">
372<div class="memproto">
373 <table class="memname">
374 <tr>
375 <td class="memname">#define GLFW_GAMEPAD_BUTTON_SQUARE&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></td>
376 </tr>
377 </table>
378</div><div class="memdoc">
379
380</div>
381</div>
382<a id="ga3a7ef6bcb768a08cd3bf142f7f09f802" name="ga3a7ef6bcb768a08cd3bf142f7f09f802"></a>
383<h2 class="memtitle"><span class="permalink"><a href="#ga3a7ef6bcb768a08cd3bf142f7f09f802">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_TRIANGLE</h2>
384
385<div class="memitem">
386<div class="memproto">
387 <table class="memname">
388 <tr>
389 <td class="memname">#define GLFW_GAMEPAD_BUTTON_TRIANGLE&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></td>
390 </tr>
391 </table>
392</div><div class="memdoc">
393
394</div>
395</div>
396</div><!-- contents -->
397<address class="footer">
398<p>
399Last update on Thu Oct 28 2021 for GLFW 3.3.5
400</p>
401</address>
402</body>
403</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__hat__state.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__hat__state.html
new file mode 100644
index 0000000..6148f2a
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__hat__state.html
@@ -0,0 +1,227 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Joystick hat states</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Joystick hat states<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#joystick_hat">joystick hat input</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:gae2c0bcb7aec609e4736437554f6638fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd">GLFW_HAT_CENTERED</a>&#160;&#160;&#160;0</td></tr>
75<tr class="separator:gae2c0bcb7aec609e4736437554f6638fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
76<tr class="memitem:ga8c9720c76cd1b912738159ed74c85b36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>&#160;&#160;&#160;1</td></tr>
77<tr class="separator:ga8c9720c76cd1b912738159ed74c85b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
78<tr class="memitem:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>&#160;&#160;&#160;2</td></tr>
79<tr class="separator:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>&#160;&#160;&#160;4</td></tr>
81<tr class="separator:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memSeparator" colspan="2">&#160;</td></tr>
82<tr class="memitem:gac775f4b3154fdf5db93eb432ba546dff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a>&#160;&#160;&#160;8</td></tr>
83<tr class="separator:gac775f4b3154fdf5db93eb432ba546dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:ga94aea0ae241a8b902883536c592ee693"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693">GLFW_HAT_RIGHT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
85<tr class="separator:ga94aea0ae241a8b902883536c592ee693"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5">GLFW_HAT_RIGHT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
87<tr class="separator:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:ga638f0e20dc5de90de21a33564e8ce129"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129">GLFW_HAT_LEFT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
89<tr class="separator:ga638f0e20dc5de90de21a33564e8ce129"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19">GLFW_HAT_LEFT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
91<tr class="separator:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memSeparator" colspan="2">&#160;</td></tr>
92</table>
93<h2 class="groupheader">Macro Definition Documentation</h2>
94<a id="gae2c0bcb7aec609e4736437554f6638fd" name="gae2c0bcb7aec609e4736437554f6638fd"></a>
95<h2 class="memtitle"><span class="permalink"><a href="#gae2c0bcb7aec609e4736437554f6638fd">&#9670;&nbsp;</a></span>GLFW_HAT_CENTERED</h2>
96
97<div class="memitem">
98<div class="memproto">
99 <table class="memname">
100 <tr>
101 <td class="memname">#define GLFW_HAT_CENTERED&#160;&#160;&#160;0</td>
102 </tr>
103 </table>
104</div><div class="memdoc">
105
106</div>
107</div>
108<a id="ga8c9720c76cd1b912738159ed74c85b36" name="ga8c9720c76cd1b912738159ed74c85b36"></a>
109<h2 class="memtitle"><span class="permalink"><a href="#ga8c9720c76cd1b912738159ed74c85b36">&#9670;&nbsp;</a></span>GLFW_HAT_UP</h2>
110
111<div class="memitem">
112<div class="memproto">
113 <table class="memname">
114 <tr>
115 <td class="memname">#define GLFW_HAT_UP&#160;&#160;&#160;1</td>
116 </tr>
117 </table>
118</div><div class="memdoc">
119
120</div>
121</div>
122<a id="ga252586e3bbde75f4b0e07ad3124867f5" name="ga252586e3bbde75f4b0e07ad3124867f5"></a>
123<h2 class="memtitle"><span class="permalink"><a href="#ga252586e3bbde75f4b0e07ad3124867f5">&#9670;&nbsp;</a></span>GLFW_HAT_RIGHT</h2>
124
125<div class="memitem">
126<div class="memproto">
127 <table class="memname">
128 <tr>
129 <td class="memname">#define GLFW_HAT_RIGHT&#160;&#160;&#160;2</td>
130 </tr>
131 </table>
132</div><div class="memdoc">
133
134</div>
135</div>
136<a id="gad60d1fd0dc85c18f2642cbae96d3deff" name="gad60d1fd0dc85c18f2642cbae96d3deff"></a>
137<h2 class="memtitle"><span class="permalink"><a href="#gad60d1fd0dc85c18f2642cbae96d3deff">&#9670;&nbsp;</a></span>GLFW_HAT_DOWN</h2>
138
139<div class="memitem">
140<div class="memproto">
141 <table class="memname">
142 <tr>
143 <td class="memname">#define GLFW_HAT_DOWN&#160;&#160;&#160;4</td>
144 </tr>
145 </table>
146</div><div class="memdoc">
147
148</div>
149</div>
150<a id="gac775f4b3154fdf5db93eb432ba546dff" name="gac775f4b3154fdf5db93eb432ba546dff"></a>
151<h2 class="memtitle"><span class="permalink"><a href="#gac775f4b3154fdf5db93eb432ba546dff">&#9670;&nbsp;</a></span>GLFW_HAT_LEFT</h2>
152
153<div class="memitem">
154<div class="memproto">
155 <table class="memname">
156 <tr>
157 <td class="memname">#define GLFW_HAT_LEFT&#160;&#160;&#160;8</td>
158 </tr>
159 </table>
160</div><div class="memdoc">
161
162</div>
163</div>
164<a id="ga94aea0ae241a8b902883536c592ee693" name="ga94aea0ae241a8b902883536c592ee693"></a>
165<h2 class="memtitle"><span class="permalink"><a href="#ga94aea0ae241a8b902883536c592ee693">&#9670;&nbsp;</a></span>GLFW_HAT_RIGHT_UP</h2>
166
167<div class="memitem">
168<div class="memproto">
169 <table class="memname">
170 <tr>
171 <td class="memname">#define GLFW_HAT_RIGHT_UP&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td>
172 </tr>
173 </table>
174</div><div class="memdoc">
175
176</div>
177</div>
178<a id="gad7f0e4f52fd68d734863aaeadab3a3f5" name="gad7f0e4f52fd68d734863aaeadab3a3f5"></a>
179<h2 class="memtitle"><span class="permalink"><a href="#gad7f0e4f52fd68d734863aaeadab3a3f5">&#9670;&nbsp;</a></span>GLFW_HAT_RIGHT_DOWN</h2>
180
181<div class="memitem">
182<div class="memproto">
183 <table class="memname">
184 <tr>
185 <td class="memname">#define GLFW_HAT_RIGHT_DOWN&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td>
186 </tr>
187 </table>
188</div><div class="memdoc">
189
190</div>
191</div>
192<a id="ga638f0e20dc5de90de21a33564e8ce129" name="ga638f0e20dc5de90de21a33564e8ce129"></a>
193<h2 class="memtitle"><span class="permalink"><a href="#ga638f0e20dc5de90de21a33564e8ce129">&#9670;&nbsp;</a></span>GLFW_HAT_LEFT_UP</h2>
194
195<div class="memitem">
196<div class="memproto">
197 <table class="memname">
198 <tr>
199 <td class="memname">#define GLFW_HAT_LEFT_UP&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td>
200 </tr>
201 </table>
202</div><div class="memdoc">
203
204</div>
205</div>
206<a id="ga76c02baf1ea345fcbe3e8ff176a73e19" name="ga76c02baf1ea345fcbe3e8ff176a73e19"></a>
207<h2 class="memtitle"><span class="permalink"><a href="#ga76c02baf1ea345fcbe3e8ff176a73e19">&#9670;&nbsp;</a></span>GLFW_HAT_LEFT_DOWN</h2>
208
209<div class="memitem">
210<div class="memproto">
211 <table class="memname">
212 <tr>
213 <td class="memname">#define GLFW_HAT_LEFT_DOWN&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td>
214 </tr>
215 </table>
216</div><div class="memdoc">
217
218</div>
219</div>
220</div><!-- contents -->
221<address class="footer">
222<p>
223Last update on Thu Oct 28 2021 for GLFW 3.3.5
224</p>
225</address>
226</body>
227</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__init.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__init.html
new file mode 100644
index 0000000..baa3fcf
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__init.html
@@ -0,0 +1,545 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Initialization, version and error reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#groups">Modules</a> &#124;
66<a href="#define-members">Macros</a> &#124;
67<a href="#typedef-members">Typedefs</a> &#124;
68<a href="#func-members">Functions</a> </div>
69 <div class="headertitle"><div class="title">Initialization, version and error reference</div></div>
70</div><!--header-->
71<div class="contents">
72<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
73<p >This is the reference documentation for initialization and termination of the library, version management and error handling. For more task-oriented information, see the <a class="el" href="intro_guide.html">Introduction to the API</a>. </p>
74<table class="memberdecls">
75<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
76Modules</h2></td></tr>
77<tr class="memitem:group__errors"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html">Error codes</a></td></tr>
78<tr class="memdesc:group__errors"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error codes. <br /></td></tr>
79<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
80</table><table class="memberdecls">
81<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
82Macros</h2></td></tr>
83<tr class="memitem:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>&#160;&#160;&#160;1</td></tr>
84<tr class="memdesc:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="mdescLeft">&#160;</td><td class="mdescRight">One. <a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">More...</a><br /></td></tr>
85<tr class="separator:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>&#160;&#160;&#160;0</td></tr>
87<tr class="memdesc:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zero. <a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">More...</a><br /></td></tr>
88<tr class="separator:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
89<tr class="memitem:gab9c0534709fda03ec8959201da3a9a18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a>&#160;&#160;&#160;0x00050001</td></tr>
90<tr class="memdesc:gab9c0534709fda03ec8959201da3a9a18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick hat buttons init hint. <a href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">More...</a><br /></td></tr>
91<tr class="separator:gab9c0534709fda03ec8959201da3a9a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:gab937983147a3158d45f88fad7129d9f2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a>&#160;&#160;&#160;0x00051001</td></tr>
93<tr class="memdesc:gab937983147a3158d45f88fad7129d9f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#gab937983147a3158d45f88fad7129d9f2">More...</a><br /></td></tr>
94<tr class="separator:gab937983147a3158d45f88fad7129d9f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
95<tr class="memitem:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a>&#160;&#160;&#160;0x00051002</td></tr>
96<tr class="memdesc:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">More...</a><br /></td></tr>
97<tr class="separator:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
98</table><table class="memberdecls">
99<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
100Typedefs</h2></td></tr>
101<tr class="memitem:ga8184701785c096b3862a75cda1bf44a3"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>) (int error_code, const char *description)</td></tr>
102<tr class="memdesc:ga8184701785c096b3862a75cda1bf44a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for error callbacks. <a href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">More...</a><br /></td></tr>
103<tr class="separator:ga8184701785c096b3862a75cda1bf44a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
104</table><table class="memberdecls">
105<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
106Functions</h2></td></tr>
107<tr class="memitem:ga317aac130a235ab08c6db0834907d85e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> (void)</td></tr>
108<tr class="memdesc:ga317aac130a235ab08c6db0834907d85e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the GLFW library. <a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">More...</a><br /></td></tr>
109<tr class="separator:ga317aac130a235ab08c6db0834907d85e"><td class="memSeparator" colspan="2">&#160;</td></tr>
110<tr class="memitem:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> (void)</td></tr>
111<tr class="memdesc:gaaae48c0a18607ea4a4ba951d939f0901"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminates the GLFW library. <a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">More...</a><br /></td></tr>
112<tr class="separator:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memSeparator" colspan="2">&#160;</td></tr>
113<tr class="memitem:ga110fd1d3f0412822b4f1908c026f724a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a> (int hint, int value)</td></tr>
114<tr class="memdesc:ga110fd1d3f0412822b4f1908c026f724a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified init hint to the desired value. <a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">More...</a><br /></td></tr>
115<tr class="separator:ga110fd1d3f0412822b4f1908c026f724a"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> (int *major, int *minor, int *rev)</td></tr>
117<tr class="memdesc:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the version of the GLFW library. <a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">More...</a><br /></td></tr>
118<tr class="separator:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memSeparator" colspan="2">&#160;</td></tr>
119<tr class="memitem:ga026abd003c8e6501981ab1662062f1c0"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a> (void)</td></tr>
120<tr class="memdesc:ga026abd003c8e6501981ab1662062f1c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a string describing the compile-time configuration. <a href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">More...</a><br /></td></tr>
121<tr class="separator:ga026abd003c8e6501981ab1662062f1c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:ga944986b4ec0b928d488141f92982aa18"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> (const char **description)</td></tr>
123<tr class="memdesc:ga944986b4ec0b928d488141f92982aa18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns and clears the last error for the calling thread. <a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">More...</a><br /></td></tr>
124<tr class="separator:ga944986b4ec0b928d488141f92982aa18"><td class="memSeparator" colspan="2">&#160;</td></tr>
125<tr class="memitem:gaff45816610d53f0b83656092a4034f40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a> (<a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> callback)</td></tr>
126<tr class="memdesc:gaff45816610d53f0b83656092a4034f40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the error callback. <a href="group__init.html#gaff45816610d53f0b83656092a4034f40">More...</a><br /></td></tr>
127<tr class="separator:gaff45816610d53f0b83656092a4034f40"><td class="memSeparator" colspan="2">&#160;</td></tr>
128</table>
129<h2 class="groupheader">Macro Definition Documentation</h2>
130<a id="ga6337d9ea43b22fc529b2bba066b4a576" name="ga6337d9ea43b22fc529b2bba066b4a576"></a>
131<h2 class="memtitle"><span class="permalink"><a href="#ga6337d9ea43b22fc529b2bba066b4a576">&#9670;&nbsp;</a></span>GLFW_VERSION_MAJOR</h2>
132
133<div class="memitem">
134<div class="memproto">
135 <table class="memname">
136 <tr>
137 <td class="memname">#define GLFW_VERSION_MAJOR&#160;&#160;&#160;3</td>
138 </tr>
139 </table>
140</div><div class="memdoc">
141<p >The major version number of the GLFW header. This is incremented when the API is changed in non-compatible ways. </p>
142
143</div>
144</div>
145<a id="gaf80d40f0aea7088ff337606e9c48f7a3" name="gaf80d40f0aea7088ff337606e9c48f7a3"></a>
146<h2 class="memtitle"><span class="permalink"><a href="#gaf80d40f0aea7088ff337606e9c48f7a3">&#9670;&nbsp;</a></span>GLFW_VERSION_MINOR</h2>
147
148<div class="memitem">
149<div class="memproto">
150 <table class="memname">
151 <tr>
152 <td class="memname">#define GLFW_VERSION_MINOR&#160;&#160;&#160;3</td>
153 </tr>
154 </table>
155</div><div class="memdoc">
156<p >The minor version number of the GLFW header. This is incremented when features are added to the API but it remains backward-compatible. </p>
157
158</div>
159</div>
160<a id="gab72ae2e2035d9ea461abc3495eac0502" name="gab72ae2e2035d9ea461abc3495eac0502"></a>
161<h2 class="memtitle"><span class="permalink"><a href="#gab72ae2e2035d9ea461abc3495eac0502">&#9670;&nbsp;</a></span>GLFW_VERSION_REVISION</h2>
162
163<div class="memitem">
164<div class="memproto">
165 <table class="memname">
166 <tr>
167 <td class="memname">#define GLFW_VERSION_REVISION&#160;&#160;&#160;5</td>
168 </tr>
169 </table>
170</div><div class="memdoc">
171<p >The revision number of the GLFW header. This is incremented when a bug fix release is made that does not contain any API changes. </p>
172
173</div>
174</div>
175<a id="ga2744fbb29b5631bb28802dbe0cf36eba" name="ga2744fbb29b5631bb28802dbe0cf36eba"></a>
176<h2 class="memtitle"><span class="permalink"><a href="#ga2744fbb29b5631bb28802dbe0cf36eba">&#9670;&nbsp;</a></span>GLFW_TRUE</h2>
177
178<div class="memitem">
179<div class="memproto">
180 <table class="memname">
181 <tr>
182 <td class="memname">#define GLFW_TRUE&#160;&#160;&#160;1</td>
183 </tr>
184 </table>
185</div><div class="memdoc">
186<p >This is only semantic sugar for the number 1. You can instead use <code>1</code> or <code>true</code> or <code>_True</code> or <code>GL_TRUE</code> or <code>VK_TRUE</code> or anything else that is equal to one. </p>
187
188</div>
189</div>
190<a id="gac877fe3b627d21ef3a0a23e0a73ba8c5" name="gac877fe3b627d21ef3a0a23e0a73ba8c5"></a>
191<h2 class="memtitle"><span class="permalink"><a href="#gac877fe3b627d21ef3a0a23e0a73ba8c5">&#9670;&nbsp;</a></span>GLFW_FALSE</h2>
192
193<div class="memitem">
194<div class="memproto">
195 <table class="memname">
196 <tr>
197 <td class="memname">#define GLFW_FALSE&#160;&#160;&#160;0</td>
198 </tr>
199 </table>
200</div><div class="memdoc">
201<p >This is only semantic sugar for the number 0. You can instead use <code>0</code> or <code>false</code> or <code>_False</code> or <code>GL_FALSE</code> or <code>VK_FALSE</code> or anything else that is equal to zero. </p>
202
203</div>
204</div>
205<a id="gab9c0534709fda03ec8959201da3a9a18" name="gab9c0534709fda03ec8959201da3a9a18"></a>
206<h2 class="memtitle"><span class="permalink"><a href="#gab9c0534709fda03ec8959201da3a9a18">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_HAT_BUTTONS</h2>
207
208<div class="memitem">
209<div class="memproto">
210 <table class="memname">
211 <tr>
212 <td class="memname">#define GLFW_JOYSTICK_HAT_BUTTONS&#160;&#160;&#160;0x00050001</td>
213 </tr>
214 </table>
215</div><div class="memdoc">
216<p >Joystick hat buttons <a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">init hint</a>. </p>
217
218</div>
219</div>
220<a id="gab937983147a3158d45f88fad7129d9f2" name="gab937983147a3158d45f88fad7129d9f2"></a>
221<h2 class="memtitle"><span class="permalink"><a href="#gab937983147a3158d45f88fad7129d9f2">&#9670;&nbsp;</a></span>GLFW_COCOA_CHDIR_RESOURCES</h2>
222
223<div class="memitem">
224<div class="memproto">
225 <table class="memname">
226 <tr>
227 <td class="memname">#define GLFW_COCOA_CHDIR_RESOURCES&#160;&#160;&#160;0x00051001</td>
228 </tr>
229 </table>
230</div><div class="memdoc">
231<p >macOS specific <a class="el" href="intro_guide.html#GLFW_COCOA_CHDIR_RESOURCES_hint">init hint</a>. </p>
232
233</div>
234</div>
235<a id="ga71e0b4ce2f2696a84a9b8c5e12dc70cf" name="ga71e0b4ce2f2696a84a9b8c5e12dc70cf"></a>
236<h2 class="memtitle"><span class="permalink"><a href="#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">&#9670;&nbsp;</a></span>GLFW_COCOA_MENUBAR</h2>
237
238<div class="memitem">
239<div class="memproto">
240 <table class="memname">
241 <tr>
242 <td class="memname">#define GLFW_COCOA_MENUBAR&#160;&#160;&#160;0x00051002</td>
243 </tr>
244 </table>
245</div><div class="memdoc">
246<p >macOS specific <a class="el" href="intro_guide.html#GLFW_COCOA_MENUBAR_hint">init hint</a>. </p>
247
248</div>
249</div>
250<h2 class="groupheader">Typedef Documentation</h2>
251<a id="ga8184701785c096b3862a75cda1bf44a3" name="ga8184701785c096b3862a75cda1bf44a3"></a>
252<h2 class="memtitle"><span class="permalink"><a href="#ga8184701785c096b3862a75cda1bf44a3">&#9670;&nbsp;</a></span>GLFWerrorfun</h2>
253
254<div class="memitem">
255<div class="memproto">
256 <table class="memname">
257 <tr>
258 <td class="memname">typedef void(* GLFWerrorfun) (int error_code, const char *description)</td>
259 </tr>
260 </table>
261</div><div class="memdoc">
262<p >This is the function pointer type for error callbacks. An error callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
263</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
264 <table class="params">
265 <tr><td class="paramdir">[in]</td><td class="paramname">error_code</td><td>An <a class="el" href="group__errors.html">error code</a>. Future releases may add more error codes. </td></tr>
266 <tr><td class="paramdir">[in]</td><td class="paramname">description</td><td>A UTF-8 encoded string describing the error.</td></tr>
267 </table>
268 </dd>
269</dl>
270<dl class="section user"><dt>Pointer lifetime</dt><dd>The error description string is valid until the callback function returns.</dd></dl>
271<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#error_handling">Error handling</a> </dd>
272<dd>
273<a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></dd></dl>
274<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
275
276</div>
277</div>
278<h2 class="groupheader">Function Documentation</h2>
279<a id="ga317aac130a235ab08c6db0834907d85e" name="ga317aac130a235ab08c6db0834907d85e"></a>
280<h2 class="memtitle"><span class="permalink"><a href="#ga317aac130a235ab08c6db0834907d85e">&#9670;&nbsp;</a></span>glfwInit()</h2>
281
282<div class="memitem">
283<div class="memproto">
284 <table class="memname">
285 <tr>
286 <td class="memname">int glfwInit </td>
287 <td>(</td>
288 <td class="paramtype">void&#160;</td>
289 <td class="paramname"></td><td>)</td>
290 <td></td>
291 </tr>
292 </table>
293</div><div class="memdoc">
294<p >This function initializes the GLFW library. Before most GLFW functions can be used, GLFW must be initialized, and before an application terminates GLFW should be terminated in order to free any resources allocated during or after initialization.</p>
295<p >If this function fails, it calls <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> before returning. If it succeeds, you should call <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> before the application exits.</p>
296<p >Additional calls to this function after successful initialization but before termination will return <code>GLFW_TRUE</code> immediately.</p>
297<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
298<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
299<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> This function will change the current directory of the application to the <code>Contents/Resources</code> subdirectory of the application's bundle, if present. This can be disabled with the <a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a> init hint.</dd>
300<dd>
301<b>X11:</b> This function will set the <code>LC_CTYPE</code> category of the application locale according to the current environment if that category is still "C". This is because the "C" locale breaks Unicode text input.</dd></dl>
302<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
303<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_init">Initialization and termination</a> </dd>
304<dd>
305<a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></dd></dl>
306<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
307
308</div>
309</div>
310<a id="gaaae48c0a18607ea4a4ba951d939f0901" name="gaaae48c0a18607ea4a4ba951d939f0901"></a>
311<h2 class="memtitle"><span class="permalink"><a href="#gaaae48c0a18607ea4a4ba951d939f0901">&#9670;&nbsp;</a></span>glfwTerminate()</h2>
312
313<div class="memitem">
314<div class="memproto">
315 <table class="memname">
316 <tr>
317 <td class="memname">void glfwTerminate </td>
318 <td>(</td>
319 <td class="paramtype">void&#160;</td>
320 <td class="paramname"></td><td>)</td>
321 <td></td>
322 </tr>
323 </table>
324</div><div class="memdoc">
325<p >This function destroys all remaining windows and cursors, restores any modified gamma ramps and frees any other allocated resources. Once this function is called, you must again call <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> successfully before you will be able to use most GLFW functions.</p>
326<p >If GLFW has been successfully initialized, this function should be called before the application exits. If initialization fails, there is no need to call this function, as it is called by <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> before it returns failure.</p>
327<p >This function has no effect if GLFW is not initialized.</p>
328<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
329<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
330<dl class="section warning"><dt>Warning</dt><dd>The contexts of any remaining windows must not be current on any other thread when this function is called.</dd></dl>
331<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
332<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
333<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_init">Initialization and termination</a> </dd>
334<dd>
335<a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></dd></dl>
336<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
337
338</div>
339</div>
340<a id="ga110fd1d3f0412822b4f1908c026f724a" name="ga110fd1d3f0412822b4f1908c026f724a"></a>
341<h2 class="memtitle"><span class="permalink"><a href="#ga110fd1d3f0412822b4f1908c026f724a">&#9670;&nbsp;</a></span>glfwInitHint()</h2>
342
343<div class="memitem">
344<div class="memproto">
345 <table class="memname">
346 <tr>
347 <td class="memname">void glfwInitHint </td>
348 <td>(</td>
349 <td class="paramtype">int&#160;</td>
350 <td class="paramname"><em>hint</em>, </td>
351 </tr>
352 <tr>
353 <td class="paramkey"></td>
354 <td></td>
355 <td class="paramtype">int&#160;</td>
356 <td class="paramname"><em>value</em>&#160;</td>
357 </tr>
358 <tr>
359 <td></td>
360 <td>)</td>
361 <td></td><td></td>
362 </tr>
363 </table>
364</div><div class="memdoc">
365<p >This function sets hints for the next initialization of GLFW.</p>
366<p >The values you set hints to are never reset by GLFW, but they only take effect during initialization. Once GLFW has been initialized, any values you set will be ignored until the library is terminated and initialized again.</p>
367<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
368<dl class="params"><dt>Parameters</dt><dd>
369 <table class="params">
370 <tr><td class="paramdir">[in]</td><td class="paramname">hint</td><td>The <a class="el" href="intro_guide.html#init_hints">init hint</a> to set. </td></tr>
371 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the init hint.</td></tr>
372 </table>
373 </dd>
374</dl>
375<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>.</dd></dl>
376<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
377<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
378<dl class="section see"><dt>See also</dt><dd>init_hints </dd>
379<dd>
380<a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e" title="Initializes the GLFW library.">glfwInit</a></dd></dl>
381<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
382
383</div>
384</div>
385<a id="ga9f8ffaacf3c269cc48eafbf8b9b71197" name="ga9f8ffaacf3c269cc48eafbf8b9b71197"></a>
386<h2 class="memtitle"><span class="permalink"><a href="#ga9f8ffaacf3c269cc48eafbf8b9b71197">&#9670;&nbsp;</a></span>glfwGetVersion()</h2>
387
388<div class="memitem">
389<div class="memproto">
390 <table class="memname">
391 <tr>
392 <td class="memname">void glfwGetVersion </td>
393 <td>(</td>
394 <td class="paramtype">int *&#160;</td>
395 <td class="paramname"><em>major</em>, </td>
396 </tr>
397 <tr>
398 <td class="paramkey"></td>
399 <td></td>
400 <td class="paramtype">int *&#160;</td>
401 <td class="paramname"><em>minor</em>, </td>
402 </tr>
403 <tr>
404 <td class="paramkey"></td>
405 <td></td>
406 <td class="paramtype">int *&#160;</td>
407 <td class="paramname"><em>rev</em>&#160;</td>
408 </tr>
409 <tr>
410 <td></td>
411 <td>)</td>
412 <td></td><td></td>
413 </tr>
414 </table>
415</div><div class="memdoc">
416<p >This function retrieves the major, minor and revision numbers of the GLFW library. It is intended for when you are using GLFW as a shared library and want to ensure that you are using the minimum required version.</p>
417<p >Any or all of the version arguments may be <code>NULL</code>.</p>
418<dl class="params"><dt>Parameters</dt><dd>
419 <table class="params">
420 <tr><td class="paramdir">[out]</td><td class="paramname">major</td><td>Where to store the major version number, or <code>NULL</code>. </td></tr>
421 <tr><td class="paramdir">[out]</td><td class="paramname">minor</td><td>Where to store the minor version number, or <code>NULL</code>. </td></tr>
422 <tr><td class="paramdir">[out]</td><td class="paramname">rev</td><td>Where to store the revision number, or <code>NULL</code>.</td></tr>
423 </table>
424 </dd>
425</dl>
426<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
427<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
428<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
429<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_version">Version management</a> </dd>
430<dd>
431<a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></dd></dl>
432<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
433
434</div>
435</div>
436<a id="ga026abd003c8e6501981ab1662062f1c0" name="ga026abd003c8e6501981ab1662062f1c0"></a>
437<h2 class="memtitle"><span class="permalink"><a href="#ga026abd003c8e6501981ab1662062f1c0">&#9670;&nbsp;</a></span>glfwGetVersionString()</h2>
438
439<div class="memitem">
440<div class="memproto">
441 <table class="memname">
442 <tr>
443 <td class="memname">const char * glfwGetVersionString </td>
444 <td>(</td>
445 <td class="paramtype">void&#160;</td>
446 <td class="paramname"></td><td>)</td>
447 <td></td>
448 </tr>
449 </table>
450</div><div class="memdoc">
451<p >This function returns the compile-time generated <a class="el" href="intro_guide.html#intro_version_string">version string</a> of the GLFW library binary. It describes the version, platform, compiler and any platform-specific compile-time options. It should not be confused with the OpenGL or OpenGL ES version string, queried with <code>glGetString</code>.</p>
452<p ><b>Do not use the version string</b> to parse the GLFW library version. The <a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> function provides the version of the running library binary in numerical format.</p>
453<dl class="section return"><dt>Returns</dt><dd>The ASCII encoded GLFW version string.</dd></dl>
454<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
455<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
456<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is static and compile-time generated.</dd></dl>
457<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
458<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_version">Version management</a> </dd>
459<dd>
460<a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></dd></dl>
461<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
462
463</div>
464</div>
465<a id="ga944986b4ec0b928d488141f92982aa18" name="ga944986b4ec0b928d488141f92982aa18"></a>
466<h2 class="memtitle"><span class="permalink"><a href="#ga944986b4ec0b928d488141f92982aa18">&#9670;&nbsp;</a></span>glfwGetError()</h2>
467
468<div class="memitem">
469<div class="memproto">
470 <table class="memname">
471 <tr>
472 <td class="memname">int glfwGetError </td>
473 <td>(</td>
474 <td class="paramtype">const char **&#160;</td>
475 <td class="paramname"><em>description</em></td><td>)</td>
476 <td></td>
477 </tr>
478 </table>
479</div><div class="memdoc">
480<p >This function returns and clears the <a class="el" href="group__errors.html">error code</a> of the last error that occurred on the calling thread, and optionally a UTF-8 encoded human-readable description of it. If no error has occurred since the last call, it returns <a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a> (zero) and the description pointer is set to <code>NULL</code>.</p>
481<dl class="params"><dt>Parameters</dt><dd>
482 <table class="params">
483 <tr><td class="paramdir">[in]</td><td class="paramname">description</td><td>Where to store the error description pointer, or <code>NULL</code>. </td></tr>
484 </table>
485 </dd>
486</dl>
487<dl class="section return"><dt>Returns</dt><dd>The last error code for the calling thread, or <a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a> (zero).</dd></dl>
488<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
489<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the next error occurs or the library is terminated.</dd></dl>
490<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
491<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
492<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#error_handling">Error handling</a> </dd>
493<dd>
494<a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></dd></dl>
495<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
496
497</div>
498</div>
499<a id="gaff45816610d53f0b83656092a4034f40" name="gaff45816610d53f0b83656092a4034f40"></a>
500<h2 class="memtitle"><span class="permalink"><a href="#gaff45816610d53f0b83656092a4034f40">&#9670;&nbsp;</a></span>glfwSetErrorCallback()</h2>
501
502<div class="memitem">
503<div class="memproto">
504 <table class="memname">
505 <tr>
506 <td class="memname"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> glfwSetErrorCallback </td>
507 <td>(</td>
508 <td class="paramtype"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>&#160;</td>
509 <td class="paramname"><em>callback</em></td><td>)</td>
510 <td></td>
511 </tr>
512 </table>
513</div><div class="memdoc">
514<p >This function sets the error callback, which is called with an error code and a human-readable description each time a GLFW error occurs.</p>
515<p >The error code is set before the callback is called. Calling <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> from the error callback will return the same value as the error code argument.</p>
516<p >The error callback is called on the thread where the error occurred. If you are using GLFW from multiple threads, your error callback needs to be written accordingly.</p>
517<p >Because the description string may have been generated specifically for that error, it is not guaranteed to be valid after the callback has returned. If you wish to use it after the callback returns, you need to make a copy.</p>
518<p >Once set, the error callback remains set even after the library has been terminated.</p>
519<dl class="params"><dt>Parameters</dt><dd>
520 <table class="params">
521 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
522 </table>
523 </dd>
524</dl>
525<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set.</dd></dl>
526<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
527</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">callback pointer type</a>.</dd></dl>
528<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
529<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
530<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
531<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#error_handling">Error handling</a> </dd>
532<dd>
533<a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></dd></dl>
534<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
535
536</div>
537</div>
538</div><!-- contents -->
539<address class="footer">
540<p>
541Last update on Thu Oct 28 2021 for GLFW 3.3.5
542</p>
543</address>
544</body>
545</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__input.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__input.html
new file mode 100644
index 0000000..0df94a6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__input.html
@@ -0,0 +1,2227 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Input reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#groups">Modules</a> &#124;
66<a href="#typedef-members">Typedefs</a> &#124;
67<a href="#func-members">Functions</a> </div>
68 <div class="headertitle"><div class="title">Input reference</div></div>
69</div><!--header-->
70<div class="contents">
71<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
72<p >This is the reference documentation for input related functions and types. For more task-oriented information, see the <a class="el" href="input_guide.html">Input guide</a>. </p>
73<table class="memberdecls">
74<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
75Modules</h2></td></tr>
76<tr class="memitem:group__gamepad__axes"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html">Gamepad axes</a></td></tr>
77<tr class="memdesc:group__gamepad__axes"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad axes. <br /></td></tr>
78<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
79<tr class="memitem:group__gamepad__buttons"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html">Gamepad buttons</a></td></tr>
80<tr class="memdesc:group__gamepad__buttons"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad buttons. <br /></td></tr>
81<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
82<tr class="memitem:group__hat__state"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html">Joystick hat states</a></td></tr>
83<tr class="memdesc:group__hat__state"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick hat states. <br /></td></tr>
84<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
85<tr class="memitem:group__joysticks"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html">Joysticks</a></td></tr>
86<tr class="memdesc:group__joysticks"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick IDs. <br /></td></tr>
87<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:group__keys"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html">Keyboard keys</a></td></tr>
89<tr class="memdesc:group__keys"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keyboard key IDs. <br /></td></tr>
90<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
91<tr class="memitem:group__mods"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html">Modifier key flags</a></td></tr>
92<tr class="memdesc:group__mods"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modifier key flags. <br /></td></tr>
93<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
94<tr class="memitem:group__buttons"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html">Mouse buttons</a></td></tr>
95<tr class="memdesc:group__buttons"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mouse button IDs. <br /></td></tr>
96<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
97<tr class="memitem:group__shapes"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html">Standard cursor shapes</a></td></tr>
98<tr class="memdesc:group__shapes"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard system cursor shapes. <br /></td></tr>
99<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
100</table><table class="memberdecls">
101<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
102Typedefs</h2></td></tr>
103<tr class="memitem:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></td></tr>
104<tr class="memdesc:ga89261ae18c75e863aaf2656ecdd238f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque cursor object. <a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">More...</a><br /></td></tr>
105<tr class="separator:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
106<tr class="memitem:ga0184dcb59f6d85d735503dcaae809727"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button, int action, int mods)</td></tr>
107<tr class="memdesc:ga0184dcb59f6d85d735503dcaae809727"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for mouse button callbacks. <a href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">More...</a><br /></td></tr>
108<tr class="separator:ga0184dcb59f6d85d735503dcaae809727"><td class="memSeparator" colspan="2">&#160;</td></tr>
109<tr class="memitem:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
110<tr class="memdesc:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor position callbacks. <a href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">More...</a><br /></td></tr>
111<tr class="separator:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memSeparator" colspan="2">&#160;</td></tr>
112<tr class="memitem:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int entered)</td></tr>
113<tr class="memdesc:gaa93dc4818ac9ab32532909d53a337cbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor enter/leave callbacks. <a href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">More...</a><br /></td></tr>
114<tr class="separator:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
115<tr class="memitem:gaf656112c33de3efdb227fa58f0134cf5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xoffset, double yoffset)</td></tr>
116<tr class="memdesc:gaf656112c33de3efdb227fa58f0134cf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for scroll callbacks. <a href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">More...</a><br /></td></tr>
117<tr class="separator:gaf656112c33de3efdb227fa58f0134cf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:ga5bd751b27b90f865d2ea613533f0453c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key, int scancode, int action, int mods)</td></tr>
119<tr class="memdesc:ga5bd751b27b90f865d2ea613533f0453c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for keyboard key callbacks. <a href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">More...</a><br /></td></tr>
120<tr class="separator:ga5bd751b27b90f865d2ea613533f0453c"><td class="memSeparator" colspan="2">&#160;</td></tr>
121<tr class="memitem:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint)</td></tr>
122<tr class="memdesc:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character callbacks. <a href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">More...</a><br /></td></tr>
123<tr class="separator:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint, int mods)</td></tr>
125<tr class="memdesc:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character with modifiers callbacks. <a href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">More...</a><br /></td></tr>
126<tr class="separator:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
127<tr class="memitem:gaaba73c3274062c18723b7f05862d94b2"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int path_count, const char *paths[])</td></tr>
128<tr class="memdesc:gaaba73c3274062c18723b7f05862d94b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for path drop callbacks. <a href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">More...</a><br /></td></tr>
129<tr class="separator:gaaba73c3274062c18723b7f05862d94b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:gaa21ad5986ae9a26077a40142efb56243"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>) (int jid, int event)</td></tr>
131<tr class="memdesc:gaa21ad5986ae9a26077a40142efb56243"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for joystick configuration callbacks. <a href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">More...</a><br /></td></tr>
132<tr class="separator:gaa21ad5986ae9a26077a40142efb56243"><td class="memSeparator" colspan="2">&#160;</td></tr>
133<tr class="memitem:ga61acfb1f28f751438dd221225c5e725d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a></td></tr>
134<tr class="memdesc:ga61acfb1f28f751438dd221225c5e725d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad input state. <a href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">More...</a><br /></td></tr>
135<tr class="separator:ga61acfb1f28f751438dd221225c5e725d"><td class="memSeparator" colspan="2">&#160;</td></tr>
136</table><table class="memberdecls">
137<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
138Functions</h2></td></tr>
139<tr class="memitem:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode)</td></tr>
140<tr class="memdesc:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of an input option for the specified window. <a href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">More...</a><br /></td></tr>
141<tr class="separator:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
142<tr class="memitem:gaa92336e173da9c8834558b54ee80563b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode, int value)</td></tr>
143<tr class="memdesc:gaa92336e173da9c8834558b54ee80563b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an input option for the specified window. <a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">More...</a><br /></td></tr>
144<tr class="separator:gaa92336e173da9c8834558b54ee80563b"><td class="memSeparator" colspan="2">&#160;</td></tr>
145<tr class="memitem:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> (void)</td></tr>
146<tr class="memdesc:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether raw mouse motion is supported. <a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">More...</a><br /></td></tr>
147<tr class="separator:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
148<tr class="memitem:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a> (int key, int scancode)</td></tr>
149<tr class="memdesc:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layout-specific name of the specified printable key. <a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">More...</a><br /></td></tr>
150<tr class="separator:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
151<tr class="memitem:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a> (int key)</td></tr>
152<tr class="memdesc:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the platform-specific scancode of the specified key. <a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">More...</a><br /></td></tr>
153<tr class="separator:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memSeparator" colspan="2">&#160;</td></tr>
154<tr class="memitem:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key)</td></tr>
155<tr class="memdesc:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a keyboard key for the specified window. <a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">More...</a><br /></td></tr>
156<tr class="separator:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
157<tr class="memitem:gac1473feacb5996c01a7a5a33b5066704"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button)</td></tr>
158<tr class="memdesc:gac1473feacb5996c01a7a5a33b5066704"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a mouse button for the specified window. <a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">More...</a><br /></td></tr>
159<tr class="separator:gac1473feacb5996c01a7a5a33b5066704"><td class="memSeparator" colspan="2">&#160;</td></tr>
160<tr class="memitem:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double *xpos, double *ypos)</td></tr>
161<tr class="memdesc:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the cursor relative to the content area of the window. <a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">More...</a><br /></td></tr>
162<tr class="separator:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
163<tr class="memitem:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
164<tr class="memdesc:ga04b03af936d906ca123c8f4ee08b39e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the cursor, relative to the content area of the window. <a href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">More...</a><br /></td></tr>
165<tr class="separator:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
166<tr class="memitem:ga556f604f73af156c0db0e97c081373c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> (const <a class="el" href="structGLFWimage.html">GLFWimage</a> *image, int xhot, int yhot)</td></tr>
167<tr class="memdesc:ga556f604f73af156c0db0e97c081373c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a custom cursor. <a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">More...</a><br /></td></tr>
168<tr class="separator:ga556f604f73af156c0db0e97c081373c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
169<tr class="memitem:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a> (int shape)</td></tr>
170<tr class="memdesc:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a cursor with a standard shape. <a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">More...</a><br /></td></tr>
171<tr class="separator:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a> (<a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
173<tr class="memdesc:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a cursor. <a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">More...</a><br /></td></tr>
174<tr class="separator:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
175<tr class="memitem:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
176<tr class="memdesc:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor for the window. <a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">More...</a><br /></td></tr>
177<tr class="separator:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:ga1caf18159767e761185e49a3be019f8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> callback)</td></tr>
179<tr class="memdesc:ga1caf18159767e761185e49a3be019f8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the key callback. <a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">More...</a><br /></td></tr>
180<tr class="separator:ga1caf18159767e761185e49a3be019f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
181<tr class="memitem:gab25c4a220fd8f5717718dbc487828996"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> callback)</td></tr>
182<tr class="memdesc:gab25c4a220fd8f5717718dbc487828996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character callback. <a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">More...</a><br /></td></tr>
183<tr class="separator:gab25c4a220fd8f5717718dbc487828996"><td class="memSeparator" colspan="2">&#160;</td></tr>
184<tr class="memitem:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> callback)</td></tr>
185<tr class="memdesc:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character with modifiers callback. <a href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">More...</a><br /></td></tr>
186<tr class="separator:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memSeparator" colspan="2">&#160;</td></tr>
187<tr class="memitem:ga6ab84420974d812bee700e45284a723c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> callback)</td></tr>
188<tr class="memdesc:ga6ab84420974d812bee700e45284a723c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mouse button callback. <a href="group__input.html#ga6ab84420974d812bee700e45284a723c">More...</a><br /></td></tr>
189<tr class="separator:ga6ab84420974d812bee700e45284a723c"><td class="memSeparator" colspan="2">&#160;</td></tr>
190<tr class="memitem:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> callback)</td></tr>
191<tr class="memdesc:gac1f879ab7435d54d4d79bb469fe225d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor position callback. <a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">More...</a><br /></td></tr>
192<tr class="separator:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
193<tr class="memitem:gad27f8ad0142c038a281466c0966817d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> callback)</td></tr>
194<tr class="memdesc:gad27f8ad0142c038a281466c0966817d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor enter/leave callback. <a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">More...</a><br /></td></tr>
195<tr class="separator:gad27f8ad0142c038a281466c0966817d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
196<tr class="memitem:ga571e45a030ae4061f746ed56cb76aede"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> callback)</td></tr>
197<tr class="memdesc:ga571e45a030ae4061f746ed56cb76aede"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the scroll callback. <a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">More...</a><br /></td></tr>
198<tr class="separator:ga571e45a030ae4061f746ed56cb76aede"><td class="memSeparator" colspan="2">&#160;</td></tr>
199<tr class="memitem:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> callback)</td></tr>
200<tr class="memdesc:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the path drop callback. <a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">More...</a><br /></td></tr>
201<tr class="separator:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
202<tr class="memitem:gaed0966cee139d815317f9ffcba64c9f1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> (int jid)</td></tr>
203<tr class="memdesc:gaed0966cee139d815317f9ffcba64c9f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick is present. <a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">More...</a><br /></td></tr>
204<tr class="separator:gaed0966cee139d815317f9ffcba64c9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
205<tr class="memitem:gaeb1c0191d3140a233a682987c61eb408"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> (int jid, int *count)</td></tr>
206<tr class="memdesc:gaeb1c0191d3140a233a682987c61eb408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the values of all axes of the specified joystick. <a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">More...</a><br /></td></tr>
207<tr class="separator:gaeb1c0191d3140a233a682987c61eb408"><td class="memSeparator" colspan="2">&#160;</td></tr>
208<tr class="memitem:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> (int jid, int *count)</td></tr>
209<tr class="memdesc:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all buttons of the specified joystick. <a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">More...</a><br /></td></tr>
210<tr class="separator:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memSeparator" colspan="2">&#160;</td></tr>
211<tr class="memitem:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a> (int jid, int *count)</td></tr>
212<tr class="memdesc:ga06e660841b3e79c54da4f54a932c5a2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all hats of the specified joystick. <a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">More...</a><br /></td></tr>
213<tr class="separator:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
214<tr class="memitem:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a> (int jid)</td></tr>
215<tr class="memdesc:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified joystick. <a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">More...</a><br /></td></tr>
216<tr class="separator:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a> (int jid)</td></tr>
218<tr class="memdesc:ga6659411aec3c7fcef27780e2cb2d9600"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the SDL compatible GUID of the specified joystick. <a href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">More...</a><br /></td></tr>
219<tr class="separator:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memSeparator" colspan="2">&#160;</td></tr>
220<tr class="memitem:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> (int jid, void *pointer)</td></tr>
221<tr class="memdesc:ga6b2f72d64d636b48a727b437cbb7489e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified joystick. <a href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">More...</a><br /></td></tr>
222<tr class="separator:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="memitem:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a> (int jid)</td></tr>
224<tr class="memdesc:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified joystick. <a href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">More...</a><br /></td></tr>
225<tr class="separator:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
226<tr class="memitem:gad0f676860f329d80f7e47e9f06a96f00"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> (int jid)</td></tr>
227<tr class="memdesc:gad0f676860f329d80f7e47e9f06a96f00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick has a gamepad mapping. <a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">More...</a><br /></td></tr>
228<tr class="separator:gad0f676860f329d80f7e47e9f06a96f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
229<tr class="memitem:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a> (<a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> callback)</td></tr>
230<tr class="memdesc:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the joystick configuration callback. <a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">More...</a><br /></td></tr>
231<tr class="separator:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
232<tr class="memitem:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> (const char *string)</td></tr>
233<tr class="memdesc:gaed5104612f2fa8e66aa6e846652ad00f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds the specified SDL_GameControllerDB gamepad mappings. <a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">More...</a><br /></td></tr>
234<tr class="separator:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memSeparator" colspan="2">&#160;</td></tr>
235<tr class="memitem:ga8aea73a1a25cc6c0486a617019f56728"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a> (int jid)</td></tr>
236<tr class="memdesc:ga8aea73a1a25cc6c0486a617019f56728"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the human-readable gamepad name for the specified joystick. <a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">More...</a><br /></td></tr>
237<tr class="separator:ga8aea73a1a25cc6c0486a617019f56728"><td class="memSeparator" colspan="2">&#160;</td></tr>
238<tr class="memitem:gadccddea8bce6113fa459de379ddaf051"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a> (int jid, <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> *state)</td></tr>
239<tr class="memdesc:gadccddea8bce6113fa459de379ddaf051"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the state of the specified joystick remapped as a gamepad. <a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">More...</a><br /></td></tr>
240<tr class="separator:gadccddea8bce6113fa459de379ddaf051"><td class="memSeparator" colspan="2">&#160;</td></tr>
241<tr class="memitem:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *string)</td></tr>
242<tr class="memdesc:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the clipboard to the specified string. <a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">More...</a><br /></td></tr>
243<tr class="separator:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
244<tr class="memitem:ga71a5b20808ea92193d65c21b82580355"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
245<tr class="memdesc:ga71a5b20808ea92193d65c21b82580355"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the clipboard as a string. <a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">More...</a><br /></td></tr>
246<tr class="separator:ga71a5b20808ea92193d65c21b82580355"><td class="memSeparator" colspan="2">&#160;</td></tr>
247<tr class="memitem:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a> (void)</td></tr>
248<tr class="memdesc:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the GLFW time. <a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">More...</a><br /></td></tr>
249<tr class="separator:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
250<tr class="memitem:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> (double time)</td></tr>
251<tr class="memdesc:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the GLFW time. <a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">More...</a><br /></td></tr>
252<tr class="separator:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
253<tr class="memitem:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a> (void)</td></tr>
254<tr class="memdesc:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of the raw timer. <a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">More...</a><br /></td></tr>
255<tr class="separator:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
256<tr class="memitem:ga3289ee876572f6e91f06df3a24824443"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> (void)</td></tr>
257<tr class="memdesc:ga3289ee876572f6e91f06df3a24824443"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the frequency, in Hz, of the raw timer. <a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">More...</a><br /></td></tr>
258<tr class="separator:ga3289ee876572f6e91f06df3a24824443"><td class="memSeparator" colspan="2">&#160;</td></tr>
259</table>
260<h2 class="groupheader">Macro Definition Documentation</h2>
261<a id="gada11d965c4da13090ad336e030e4d11f" name="gada11d965c4da13090ad336e030e4d11f"></a>
262<h2 class="memtitle"><span class="permalink"><a href="#gada11d965c4da13090ad336e030e4d11f">&#9670;&nbsp;</a></span>GLFW_RELEASE</h2>
263
264<div class="memitem">
265<div class="memproto">
266 <table class="memname">
267 <tr>
268 <td class="memname">#define GLFW_RELEASE&#160;&#160;&#160;0</td>
269 </tr>
270 </table>
271</div><div class="memdoc">
272<p >The key or mouse button was released. </p>
273
274</div>
275</div>
276<a id="ga2485743d0b59df3791c45951c4195265" name="ga2485743d0b59df3791c45951c4195265"></a>
277<h2 class="memtitle"><span class="permalink"><a href="#ga2485743d0b59df3791c45951c4195265">&#9670;&nbsp;</a></span>GLFW_PRESS</h2>
278
279<div class="memitem">
280<div class="memproto">
281 <table class="memname">
282 <tr>
283 <td class="memname">#define GLFW_PRESS&#160;&#160;&#160;1</td>
284 </tr>
285 </table>
286</div><div class="memdoc">
287<p >The key or mouse button was pressed. </p>
288
289</div>
290</div>
291<a id="gac96fd3b9fc66c6f0eebaf6532595338f" name="gac96fd3b9fc66c6f0eebaf6532595338f"></a>
292<h2 class="memtitle"><span class="permalink"><a href="#gac96fd3b9fc66c6f0eebaf6532595338f">&#9670;&nbsp;</a></span>GLFW_REPEAT</h2>
293
294<div class="memitem">
295<div class="memproto">
296 <table class="memname">
297 <tr>
298 <td class="memname">#define GLFW_REPEAT&#160;&#160;&#160;2</td>
299 </tr>
300 </table>
301</div><div class="memdoc">
302<p >The key was held down until it repeated. </p>
303
304</div>
305</div>
306<h2 class="groupheader">Typedef Documentation</h2>
307<a id="ga89261ae18c75e863aaf2656ecdd238f4" name="ga89261ae18c75e863aaf2656ecdd238f4"></a>
308<h2 class="memtitle"><span class="permalink"><a href="#ga89261ae18c75e863aaf2656ecdd238f4">&#9670;&nbsp;</a></span>GLFWcursor</h2>
309
310<div class="memitem">
311<div class="memproto">
312 <table class="memname">
313 <tr>
314 <td class="memname">typedef struct <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></td>
315 </tr>
316 </table>
317</div><div class="memdoc">
318<p >Opaque cursor object.</p>
319<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a></dd></dl>
320<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
321
322</div>
323</div>
324<a id="ga0184dcb59f6d85d735503dcaae809727" name="ga0184dcb59f6d85d735503dcaae809727"></a>
325<h2 class="memtitle"><span class="permalink"><a href="#ga0184dcb59f6d85d735503dcaae809727">&#9670;&nbsp;</a></span>GLFWmousebuttonfun</h2>
326
327<div class="memitem">
328<div class="memproto">
329 <table class="memname">
330 <tr>
331 <td class="memname">typedef void(* GLFWmousebuttonfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button, int action, int mods)</td>
332 </tr>
333 </table>
334</div><div class="memdoc">
335<p >This is the function pointer type for mouse button callback functions. A mouse button callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
336<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
337</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
338 <table class="params">
339 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
340 <tr><td class="paramdir">[in]</td><td class="paramname">button</td><td>The <a class="el" href="group__buttons.html">mouse button</a> that was pressed or released. </td></tr>
341 <tr><td class="paramdir">[in]</td><td class="paramname">action</td><td>One of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>. Future releases may add more actions. </td></tr>
342 <tr><td class="paramdir">[in]</td><td class="paramname">mods</td><td>Bit field describing which <a class="el" href="group__mods.html">modifier keys</a> were held down.</td></tr>
343 </table>
344 </dd>
345</dl>
346<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_mouse_button">Mouse button input</a> </dd>
347<dd>
348<a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a></dd></dl>
349<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle and modifier mask parameters. </dd></dl>
350
351</div>
352</div>
353<a id="gad6fae41b3ac2e4209aaa87b596c57f68" name="gad6fae41b3ac2e4209aaa87b596c57f68"></a>
354<h2 class="memtitle"><span class="permalink"><a href="#gad6fae41b3ac2e4209aaa87b596c57f68">&#9670;&nbsp;</a></span>GLFWcursorposfun</h2>
355
356<div class="memitem">
357<div class="memproto">
358 <table class="memname">
359 <tr>
360 <td class="memname">typedef void(* GLFWcursorposfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td>
361 </tr>
362 </table>
363</div><div class="memdoc">
364<p >This is the function pointer type for cursor position callbacks. A cursor position callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
365</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
366 <table class="params">
367 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
368 <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The new cursor x-coordinate, relative to the left edge of the content area. </td></tr>
369 <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The new cursor y-coordinate, relative to the top edge of the content area.</td></tr>
370 </table>
371 </dd>
372</dl>
373<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a> </dd>
374<dd>
375<a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a></dd></dl>
376<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>GLFWmouseposfun</code>. </dd></dl>
377
378</div>
379</div>
380<a id="gaa93dc4818ac9ab32532909d53a337cbe" name="gaa93dc4818ac9ab32532909d53a337cbe"></a>
381<h2 class="memtitle"><span class="permalink"><a href="#gaa93dc4818ac9ab32532909d53a337cbe">&#9670;&nbsp;</a></span>GLFWcursorenterfun</h2>
382
383<div class="memitem">
384<div class="memproto">
385 <table class="memname">
386 <tr>
387 <td class="memname">typedef void(* GLFWcursorenterfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int entered)</td>
388 </tr>
389 </table>
390</div><div class="memdoc">
391<p >This is the function pointer type for cursor enter/leave callbacks. A cursor enter/leave callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered)</div>
392</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
393 <table class="params">
394 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
395 <tr><td class="paramdir">[in]</td><td class="paramname">entered</td><td><code>GLFW_TRUE</code> if the cursor entered the window's content area, or <code>GLFW_FALSE</code> if it left it.</td></tr>
396 </table>
397 </dd>
398</dl>
399<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_enter">Cursor enter/leave events</a> </dd>
400<dd>
401<a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a></dd></dl>
402<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
403
404</div>
405</div>
406<a id="gaf656112c33de3efdb227fa58f0134cf5" name="gaf656112c33de3efdb227fa58f0134cf5"></a>
407<h2 class="memtitle"><span class="permalink"><a href="#gaf656112c33de3efdb227fa58f0134cf5">&#9670;&nbsp;</a></span>GLFWscrollfun</h2>
408
409<div class="memitem">
410<div class="memproto">
411 <table class="memname">
412 <tr>
413 <td class="memname">typedef void(* GLFWscrollfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xoffset, double yoffset)</td>
414 </tr>
415 </table>
416</div><div class="memdoc">
417<p >This is the function pointer type for scroll callbacks. A scroll callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset)</div>
418</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
419 <table class="params">
420 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
421 <tr><td class="paramdir">[in]</td><td class="paramname">xoffset</td><td>The scroll offset along the x-axis. </td></tr>
422 <tr><td class="paramdir">[in]</td><td class="paramname">yoffset</td><td>The scroll offset along the y-axis.</td></tr>
423 </table>
424 </dd>
425</dl>
426<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#scrolling">Scroll input</a> </dd>
427<dd>
428<a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a></dd></dl>
429<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>GLFWmousewheelfun</code>. </dd></dl>
430
431</div>
432</div>
433<a id="ga5bd751b27b90f865d2ea613533f0453c" name="ga5bd751b27b90f865d2ea613533f0453c"></a>
434<h2 class="memtitle"><span class="permalink"><a href="#ga5bd751b27b90f865d2ea613533f0453c">&#9670;&nbsp;</a></span>GLFWkeyfun</h2>
435
436<div class="memitem">
437<div class="memproto">
438 <table class="memname">
439 <tr>
440 <td class="memname">typedef void(* GLFWkeyfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key, int scancode, int action, int mods)</td>
441 </tr>
442 </table>
443</div><div class="memdoc">
444<p >This is the function pointer type for keyboard key callbacks. A keyboard key callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
445</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
446 <table class="params">
447 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
448 <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The <a class="el" href="group__keys.html">keyboard key</a> that was pressed or released. </td></tr>
449 <tr><td class="paramdir">[in]</td><td class="paramname">scancode</td><td>The system-specific scancode of the key. </td></tr>
450 <tr><td class="paramdir">[in]</td><td class="paramname">action</td><td><code>GLFW_PRESS</code>, <code>GLFW_RELEASE</code> or <code>GLFW_REPEAT</code>. Future releases may add more actions. </td></tr>
451 <tr><td class="paramdir">[in]</td><td class="paramname">mods</td><td>Bit field describing which <a class="el" href="group__mods.html">modifier keys</a> were held down.</td></tr>
452 </table>
453 </dd>
454</dl>
455<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a> </dd>
456<dd>
457<a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></dd></dl>
458<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle, scancode and modifier mask parameters. </dd></dl>
459
460</div>
461</div>
462<a id="ga1ab90a55cf3f58639b893c0f4118cb6e" name="ga1ab90a55cf3f58639b893c0f4118cb6e"></a>
463<h2 class="memtitle"><span class="permalink"><a href="#ga1ab90a55cf3f58639b893c0f4118cb6e">&#9670;&nbsp;</a></span>GLFWcharfun</h2>
464
465<div class="memitem">
466<div class="memproto">
467 <table class="memname">
468 <tr>
469 <td class="memname">typedef void(* GLFWcharfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint)</td>
470 </tr>
471 </table>
472</div><div class="memdoc">
473<p >This is the function pointer type for Unicode character callbacks. A Unicode character callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint)</div>
474</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
475 <table class="params">
476 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
477 <tr><td class="paramdir">[in]</td><td class="paramname">codepoint</td><td>The Unicode code point of the character.</td></tr>
478 </table>
479 </dd>
480</dl>
481<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a> </dd>
482<dd>
483<a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a></dd></dl>
484<dl class="section since"><dt>Since</dt><dd>Added in version 2.4. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
485
486</div>
487</div>
488<a id="gac3cf64f90b6219c05ac7b7822d5a4b8f" name="gac3cf64f90b6219c05ac7b7822d5a4b8f"></a>
489<h2 class="memtitle"><span class="permalink"><a href="#gac3cf64f90b6219c05ac7b7822d5a4b8f">&#9670;&nbsp;</a></span>GLFWcharmodsfun</h2>
490
491<div class="memitem">
492<div class="memproto">
493 <table class="memname">
494 <tr>
495 <td class="memname">typedef void(* GLFWcharmodsfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint, int mods)</td>
496 </tr>
497 </table>
498</div><div class="memdoc">
499<p >This is the function pointer type for Unicode character with modifiers callbacks. It is called for each input character, regardless of what modifier keys are held down. A Unicode character with modifiers callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint, <span class="keywordtype">int</span> mods)</div>
500</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
501 <table class="params">
502 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
503 <tr><td class="paramdir">[in]</td><td class="paramname">codepoint</td><td>The Unicode code point of the character. </td></tr>
504 <tr><td class="paramdir">[in]</td><td class="paramname">mods</td><td>Bit field describing which <a class="el" href="group__mods.html">modifier keys</a> were held down.</td></tr>
505 </table>
506 </dd>
507</dl>
508<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a> </dd>
509<dd>
510<a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a></dd></dl>
511<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Scheduled for removal in version 4.0.</dd></dl>
512<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
513
514</div>
515</div>
516<a id="gaaba73c3274062c18723b7f05862d94b2" name="gaaba73c3274062c18723b7f05862d94b2"></a>
517<h2 class="memtitle"><span class="permalink"><a href="#gaaba73c3274062c18723b7f05862d94b2">&#9670;&nbsp;</a></span>GLFWdropfun</h2>
518
519<div class="memitem">
520<div class="memproto">
521 <table class="memname">
522 <tr>
523 <td class="memname">typedef void(* GLFWdropfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int path_count, const char *paths[])</td>
524 </tr>
525 </table>
526</div><div class="memdoc">
527<p >This is the function pointer type for path drop callbacks. A path drop callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> path_count, <span class="keyword">const</span> <span class="keywordtype">char</span>* paths[])</div>
528</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
529 <table class="params">
530 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
531 <tr><td class="paramdir">[in]</td><td class="paramname">path_count</td><td>The number of dropped paths. </td></tr>
532 <tr><td class="paramdir">[in]</td><td class="paramname">paths</td><td>The UTF-8 encoded file and/or directory path names.</td></tr>
533 </table>
534 </dd>
535</dl>
536<dl class="section user"><dt>Pointer lifetime</dt><dd>The path array and its strings are valid until the callback function returns.</dd></dl>
537<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#path_drop">Path drop input</a> </dd>
538<dd>
539<a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a></dd></dl>
540<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
541
542</div>
543</div>
544<a id="gaa21ad5986ae9a26077a40142efb56243" name="gaa21ad5986ae9a26077a40142efb56243"></a>
545<h2 class="memtitle"><span class="permalink"><a href="#gaa21ad5986ae9a26077a40142efb56243">&#9670;&nbsp;</a></span>GLFWjoystickfun</h2>
546
547<div class="memitem">
548<div class="memproto">
549 <table class="memname">
550 <tr>
551 <td class="memname">typedef void(* GLFWjoystickfun) (int jid, int event)</td>
552 </tr>
553 </table>
554</div><div class="memdoc">
555<p >This is the function pointer type for joystick configuration callbacks. A joystick configuration callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event)</div>
556</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
557 <table class="params">
558 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The joystick that was connected or disconnected. </td></tr>
559 <tr><td class="paramdir">[in]</td><td class="paramname">event</td><td>One of <code>GLFW_CONNECTED</code> or <code>GLFW_DISCONNECTED</code>. Future releases may add more events.</td></tr>
560 </table>
561 </dd>
562</dl>
563<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_event">Joystick configuration changes</a> </dd>
564<dd>
565<a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a></dd></dl>
566<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
567
568</div>
569</div>
570<a id="ga61acfb1f28f751438dd221225c5e725d" name="ga61acfb1f28f751438dd221225c5e725d"></a>
571<h2 class="memtitle"><span class="permalink"><a href="#ga61acfb1f28f751438dd221225c5e725d">&#9670;&nbsp;</a></span>GLFWgamepadstate</h2>
572
573<div class="memitem">
574<div class="memproto">
575 <table class="memname">
576 <tr>
577 <td class="memname">typedef struct <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a></td>
578 </tr>
579 </table>
580</div><div class="memdoc">
581<p >This describes the input state of a gamepad.</p>
582<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
583<dd>
584<a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></dd></dl>
585<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
586
587</div>
588</div>
589<h2 class="groupheader">Function Documentation</h2>
590<a id="gaf5b859dbe19bdf434e42695ea45cc5f4" name="gaf5b859dbe19bdf434e42695ea45cc5f4"></a>
591<h2 class="memtitle"><span class="permalink"><a href="#gaf5b859dbe19bdf434e42695ea45cc5f4">&#9670;&nbsp;</a></span>glfwGetInputMode()</h2>
592
593<div class="memitem">
594<div class="memproto">
595 <table class="memname">
596 <tr>
597 <td class="memname">int glfwGetInputMode </td>
598 <td>(</td>
599 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
600 <td class="paramname"><em>window</em>, </td>
601 </tr>
602 <tr>
603 <td class="paramkey"></td>
604 <td></td>
605 <td class="paramtype">int&#160;</td>
606 <td class="paramname"><em>mode</em>&#160;</td>
607 </tr>
608 <tr>
609 <td></td>
610 <td>)</td>
611 <td></td><td></td>
612 </tr>
613 </table>
614</div><div class="memdoc">
615<p >This function returns the value of an input option for the specified window. The mode must be one of <a class="el" href="input_guide.html#GLFW_CURSOR">GLFW_CURSOR</a>, <a class="el" href="input_guide.html#GLFW_STICKY_KEYS">GLFW_STICKY_KEYS</a>, <a class="el" href="input_guide.html#GLFW_STICKY_MOUSE_BUTTONS">GLFW_STICKY_MOUSE_BUTTONS</a>, <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> or <a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a>.</p>
616<dl class="params"><dt>Parameters</dt><dd>
617 <table class="params">
618 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
619 <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>One of <code>GLFW_CURSOR</code>, <code>GLFW_STICKY_KEYS</code>, <code>GLFW_STICKY_MOUSE_BUTTONS</code>, <code>GLFW_LOCK_KEY_MODS</code> or <code>GLFW_RAW_MOUSE_MOTION</code>.</td></tr>
620 </table>
621 </dd>
622</dl>
623<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
624<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
625<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></dd></dl>
626<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
627
628</div>
629</div>
630<a id="gaa92336e173da9c8834558b54ee80563b" name="gaa92336e173da9c8834558b54ee80563b"></a>
631<h2 class="memtitle"><span class="permalink"><a href="#gaa92336e173da9c8834558b54ee80563b">&#9670;&nbsp;</a></span>glfwSetInputMode()</h2>
632
633<div class="memitem">
634<div class="memproto">
635 <table class="memname">
636 <tr>
637 <td class="memname">void glfwSetInputMode </td>
638 <td>(</td>
639 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
640 <td class="paramname"><em>window</em>, </td>
641 </tr>
642 <tr>
643 <td class="paramkey"></td>
644 <td></td>
645 <td class="paramtype">int&#160;</td>
646 <td class="paramname"><em>mode</em>, </td>
647 </tr>
648 <tr>
649 <td class="paramkey"></td>
650 <td></td>
651 <td class="paramtype">int&#160;</td>
652 <td class="paramname"><em>value</em>&#160;</td>
653 </tr>
654 <tr>
655 <td></td>
656 <td>)</td>
657 <td></td><td></td>
658 </tr>
659 </table>
660</div><div class="memdoc">
661<p >This function sets an input mode option for the specified window. The mode must be one of <a class="el" href="input_guide.html#GLFW_CURSOR">GLFW_CURSOR</a>, <a class="el" href="input_guide.html#GLFW_STICKY_KEYS">GLFW_STICKY_KEYS</a>, <a class="el" href="input_guide.html#GLFW_STICKY_MOUSE_BUTTONS">GLFW_STICKY_MOUSE_BUTTONS</a>, <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> or <a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a>.</p>
662<p >If the mode is <code>GLFW_CURSOR</code>, the value must be one of the following cursor modes:</p><ul>
663<li><code>GLFW_CURSOR_NORMAL</code> makes the cursor visible and behaving normally.</li>
664<li><code>GLFW_CURSOR_HIDDEN</code> makes the cursor invisible when it is over the content area of the window but does not restrict the cursor from leaving.</li>
665<li><code>GLFW_CURSOR_DISABLED</code> hides and grabs the cursor, providing virtual and unlimited cursor movement. This is useful for implementing for example 3D camera controls.</li>
666</ul>
667<p >If the mode is <code>GLFW_STICKY_KEYS</code>, the value must be either <code>GLFW_TRUE</code> to enable sticky keys, or <code>GLFW_FALSE</code> to disable it. If sticky keys are enabled, a key press will ensure that <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> returns <code>GLFW_PRESS</code> the next time it is called even if the key had been released before the call. This is useful when you are only interested in whether keys have been pressed but not when or in which order.</p>
668<p >If the mode is <code>GLFW_STICKY_MOUSE_BUTTONS</code>, the value must be either <code>GLFW_TRUE</code> to enable sticky mouse buttons, or <code>GLFW_FALSE</code> to disable it. If sticky mouse buttons are enabled, a mouse button press will ensure that <a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a> returns <code>GLFW_PRESS</code> the next time it is called even if the mouse button had been released before the call. This is useful when you are only interested in whether mouse buttons have been pressed but not when or in which order.</p>
669<p >If the mode is <code>GLFW_LOCK_KEY_MODS</code>, the value must be either <code>GLFW_TRUE</code> to enable lock key modifier bits, or <code>GLFW_FALSE</code> to disable them. If enabled, callbacks that receive modifier bits will also have the <a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a> bit set when the event was generated with Caps Lock on, and the <a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a> bit when Num Lock was on.</p>
670<p >If the mode is <code>GLFW_RAW_MOUSE_MOTION</code>, the value must be either <code>GLFW_TRUE</code> to enable raw (unscaled and unaccelerated) mouse motion when the cursor is disabled, or <code>GLFW_FALSE</code> to disable it. If raw motion is not supported, attempting to set this will emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>. Call <a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> to check for support.</p>
671<dl class="params"><dt>Parameters</dt><dd>
672 <table class="params">
673 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose input mode to set. </td></tr>
674 <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>One of <code>GLFW_CURSOR</code>, <code>GLFW_STICKY_KEYS</code>, <code>GLFW_STICKY_MOUSE_BUTTONS</code>, <code>GLFW_LOCK_KEY_MODS</code> or <code>GLFW_RAW_MOUSE_MOTION</code>. </td></tr>
675 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the specified input mode.</td></tr>
676 </table>
677 </dd>
678</dl>
679<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
680<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
681<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a></dd></dl>
682<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwEnable</code> and <code>glfwDisable</code>. </dd></dl>
683
684</div>
685</div>
686<a id="gae4ee0dbd0d256183e1ea4026d897e1c2" name="gae4ee0dbd0d256183e1ea4026d897e1c2"></a>
687<h2 class="memtitle"><span class="permalink"><a href="#gae4ee0dbd0d256183e1ea4026d897e1c2">&#9670;&nbsp;</a></span>glfwRawMouseMotionSupported()</h2>
688
689<div class="memitem">
690<div class="memproto">
691 <table class="memname">
692 <tr>
693 <td class="memname">int glfwRawMouseMotionSupported </td>
694 <td>(</td>
695 <td class="paramtype">void&#160;</td>
696 <td class="paramname"></td><td>)</td>
697 <td></td>
698 </tr>
699 </table>
700</div><div class="memdoc">
701<p >This function returns whether raw mouse motion is supported on the current system. This status does not change after GLFW has been initialized so you only need to check this once. If you attempt to enable raw motion on a system that does not support it, <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> will be emitted.</p>
702<p >Raw mouse motion is closer to the actual motion of the mouse across a surface. It is not affected by the scaling and acceleration applied to the motion of the desktop cursor. That processing is suitable for a cursor while raw motion is better for controlling for example a 3D camera. Because of this, raw mouse motion is only provided when the cursor is disabled.</p>
703<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if raw mouse motion is supported on the current machine, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
704<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
705<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
706<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#raw_mouse_motion">Raw mouse motion</a> </dd>
707<dd>
708<a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></dd></dl>
709<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
710
711</div>
712</div>
713<a id="gaeaed62e69c3bd62b7ff8f7b19913ce4f" name="gaeaed62e69c3bd62b7ff8f7b19913ce4f"></a>
714<h2 class="memtitle"><span class="permalink"><a href="#gaeaed62e69c3bd62b7ff8f7b19913ce4f">&#9670;&nbsp;</a></span>glfwGetKeyName()</h2>
715
716<div class="memitem">
717<div class="memproto">
718 <table class="memname">
719 <tr>
720 <td class="memname">const char * glfwGetKeyName </td>
721 <td>(</td>
722 <td class="paramtype">int&#160;</td>
723 <td class="paramname"><em>key</em>, </td>
724 </tr>
725 <tr>
726 <td class="paramkey"></td>
727 <td></td>
728 <td class="paramtype">int&#160;</td>
729 <td class="paramname"><em>scancode</em>&#160;</td>
730 </tr>
731 <tr>
732 <td></td>
733 <td>)</td>
734 <td></td><td></td>
735 </tr>
736 </table>
737</div><div class="memdoc">
738<p >This function returns the name of the specified printable key, encoded as UTF-8. This is typically the character that key would produce without any modifier keys, intended for displaying key bindings to the user. For dead keys, it is typically the diacritic it would add to a character.</p>
739<p ><b>Do not use this function</b> for <a class="el" href="input_guide.html#input_char">text input</a>. You will break text input for many languages even if it happens to work for yours.</p>
740<p >If the key is <code>GLFW_KEY_UNKNOWN</code>, the scancode is used to identify the key, otherwise the scancode is ignored. If you specify a non-printable key, or <code>GLFW_KEY_UNKNOWN</code> and a scancode that maps to a non-printable key, this function returns <code>NULL</code> but does not emit an error.</p>
741<p >This behavior allows you to always pass in the arguments in the <a class="el" href="input_guide.html#input_key">key callback</a> without modification.</p>
742<p >The printable keys are:</p><ul>
743<li><code>GLFW_KEY_APOSTROPHE</code></li>
744<li><code>GLFW_KEY_COMMA</code></li>
745<li><code>GLFW_KEY_MINUS</code></li>
746<li><code>GLFW_KEY_PERIOD</code></li>
747<li><code>GLFW_KEY_SLASH</code></li>
748<li><code>GLFW_KEY_SEMICOLON</code></li>
749<li><code>GLFW_KEY_EQUAL</code></li>
750<li><code>GLFW_KEY_LEFT_BRACKET</code></li>
751<li><code>GLFW_KEY_RIGHT_BRACKET</code></li>
752<li><code>GLFW_KEY_BACKSLASH</code></li>
753<li><code>GLFW_KEY_WORLD_1</code></li>
754<li><code>GLFW_KEY_WORLD_2</code></li>
755<li><code>GLFW_KEY_0</code> to <code>GLFW_KEY_9</code></li>
756<li><code>GLFW_KEY_A</code> to <code>GLFW_KEY_Z</code></li>
757<li><code>GLFW_KEY_KP_0</code> to <code>GLFW_KEY_KP_9</code></li>
758<li><code>GLFW_KEY_KP_DECIMAL</code></li>
759<li><code>GLFW_KEY_KP_DIVIDE</code></li>
760<li><code>GLFW_KEY_KP_MULTIPLY</code></li>
761<li><code>GLFW_KEY_KP_SUBTRACT</code></li>
762<li><code>GLFW_KEY_KP_ADD</code></li>
763<li><code>GLFW_KEY_KP_EQUAL</code></li>
764</ul>
765<p >Names for printable keys depend on keyboard layout, while names for non-printable keys are the same across layouts but depend on the application language and should be localized along with other user interface text.</p>
766<dl class="params"><dt>Parameters</dt><dd>
767 <table class="params">
768 <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key to query, or <code>GLFW_KEY_UNKNOWN</code>. </td></tr>
769 <tr><td class="paramdir">[in]</td><td class="paramname">scancode</td><td>The scancode of the key to query. </td></tr>
770 </table>
771 </dd>
772</dl>
773<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded, layout-specific name of the key, or <code>NULL</code>.</dd></dl>
774<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
775<dl class="section remark"><dt>Remarks</dt><dd>The contents of the returned string may change when a keyboard layout change event is received.</dd></dl>
776<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the library is terminated.</dd></dl>
777<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
778<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key_name">Key names</a></dd></dl>
779<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
780
781</div>
782</div>
783<a id="ga67ddd1b7dcbbaff03e4a76c0ea67103a" name="ga67ddd1b7dcbbaff03e4a76c0ea67103a"></a>
784<h2 class="memtitle"><span class="permalink"><a href="#ga67ddd1b7dcbbaff03e4a76c0ea67103a">&#9670;&nbsp;</a></span>glfwGetKeyScancode()</h2>
785
786<div class="memitem">
787<div class="memproto">
788 <table class="memname">
789 <tr>
790 <td class="memname">int glfwGetKeyScancode </td>
791 <td>(</td>
792 <td class="paramtype">int&#160;</td>
793 <td class="paramname"><em>key</em></td><td>)</td>
794 <td></td>
795 </tr>
796 </table>
797</div><div class="memdoc">
798<p >This function returns the platform-specific scancode of the specified key.</p>
799<p >If the key is <code>GLFW_KEY_UNKNOWN</code> or does not exist on the keyboard this method will return <code>-1</code>.</p>
800<dl class="params"><dt>Parameters</dt><dd>
801 <table class="params">
802 <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>Any <a class="el" href="group__keys.html">named key</a>. </td></tr>
803 </table>
804 </dd>
805</dl>
806<dl class="section return"><dt>Returns</dt><dd>The platform-specific scancode for the key, or <code>-1</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
807<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
808<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
809<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a></dd></dl>
810<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
811
812</div>
813</div>
814<a id="gadd341da06bc8d418b4dc3a3518af9ad2" name="gadd341da06bc8d418b4dc3a3518af9ad2"></a>
815<h2 class="memtitle"><span class="permalink"><a href="#gadd341da06bc8d418b4dc3a3518af9ad2">&#9670;&nbsp;</a></span>glfwGetKey()</h2>
816
817<div class="memitem">
818<div class="memproto">
819 <table class="memname">
820 <tr>
821 <td class="memname">int glfwGetKey </td>
822 <td>(</td>
823 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
824 <td class="paramname"><em>window</em>, </td>
825 </tr>
826 <tr>
827 <td class="paramkey"></td>
828 <td></td>
829 <td class="paramtype">int&#160;</td>
830 <td class="paramname"><em>key</em>&#160;</td>
831 </tr>
832 <tr>
833 <td></td>
834 <td>)</td>
835 <td></td><td></td>
836 </tr>
837 </table>
838</div><div class="memdoc">
839<p >This function returns the last state reported for the specified key to the specified window. The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>. The higher-level action <code>GLFW_REPEAT</code> is only reported to the key callback.</p>
840<p >If the <a class="el" href="input_guide.html#GLFW_STICKY_KEYS">GLFW_STICKY_KEYS</a> input mode is enabled, this function returns <code>GLFW_PRESS</code> the first time you call it for a key that was pressed, even if that key has already been released.</p>
841<p >The key functions deal with physical keys, with <a class="el" href="group__keys.html">key tokens</a> named after their use on the standard US keyboard layout. If you want to input text, use the Unicode character callback instead.</p>
842<p >The <a class="el" href="group__mods.html">modifier key bit masks</a> are not key tokens and cannot be used with this function.</p>
843<p ><b>Do not use this function</b> to implement <a class="el" href="input_guide.html#input_char">text input</a>.</p>
844<dl class="params"><dt>Parameters</dt><dd>
845 <table class="params">
846 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
847 <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The desired <a class="el" href="group__keys.html">keyboard key</a>. <code>GLFW_KEY_UNKNOWN</code> is not a valid key for this function. </td></tr>
848 </table>
849 </dd>
850</dl>
851<dl class="section return"><dt>Returns</dt><dd>One of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</dd></dl>
852<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
853<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
854<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a></dd></dl>
855<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
856
857</div>
858</div>
859<a id="gac1473feacb5996c01a7a5a33b5066704" name="gac1473feacb5996c01a7a5a33b5066704"></a>
860<h2 class="memtitle"><span class="permalink"><a href="#gac1473feacb5996c01a7a5a33b5066704">&#9670;&nbsp;</a></span>glfwGetMouseButton()</h2>
861
862<div class="memitem">
863<div class="memproto">
864 <table class="memname">
865 <tr>
866 <td class="memname">int glfwGetMouseButton </td>
867 <td>(</td>
868 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
869 <td class="paramname"><em>window</em>, </td>
870 </tr>
871 <tr>
872 <td class="paramkey"></td>
873 <td></td>
874 <td class="paramtype">int&#160;</td>
875 <td class="paramname"><em>button</em>&#160;</td>
876 </tr>
877 <tr>
878 <td></td>
879 <td>)</td>
880 <td></td><td></td>
881 </tr>
882 </table>
883</div><div class="memdoc">
884<p >This function returns the last state reported for the specified mouse button to the specified window. The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
885<p >If the <a class="el" href="input_guide.html#GLFW_STICKY_MOUSE_BUTTONS">GLFW_STICKY_MOUSE_BUTTONS</a> input mode is enabled, this function returns <code>GLFW_PRESS</code> the first time you call it for a mouse button that was pressed, even if that mouse button has already been released.</p>
886<dl class="params"><dt>Parameters</dt><dd>
887 <table class="params">
888 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
889 <tr><td class="paramdir">[in]</td><td class="paramname">button</td><td>The desired <a class="el" href="group__buttons.html">mouse button</a>. </td></tr>
890 </table>
891 </dd>
892</dl>
893<dl class="section return"><dt>Returns</dt><dd>One of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</dd></dl>
894<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
895<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
896<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_mouse_button">Mouse button input</a></dd></dl>
897<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
898
899</div>
900</div>
901<a id="ga01d37b6c40133676b9cea60ca1d7c0cc" name="ga01d37b6c40133676b9cea60ca1d7c0cc"></a>
902<h2 class="memtitle"><span class="permalink"><a href="#ga01d37b6c40133676b9cea60ca1d7c0cc">&#9670;&nbsp;</a></span>glfwGetCursorPos()</h2>
903
904<div class="memitem">
905<div class="memproto">
906 <table class="memname">
907 <tr>
908 <td class="memname">void glfwGetCursorPos </td>
909 <td>(</td>
910 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
911 <td class="paramname"><em>window</em>, </td>
912 </tr>
913 <tr>
914 <td class="paramkey"></td>
915 <td></td>
916 <td class="paramtype">double *&#160;</td>
917 <td class="paramname"><em>xpos</em>, </td>
918 </tr>
919 <tr>
920 <td class="paramkey"></td>
921 <td></td>
922 <td class="paramtype">double *&#160;</td>
923 <td class="paramname"><em>ypos</em>&#160;</td>
924 </tr>
925 <tr>
926 <td></td>
927 <td>)</td>
928 <td></td><td></td>
929 </tr>
930 </table>
931</div><div class="memdoc">
932<p >This function returns the position of the cursor, in screen coordinates, relative to the upper-left corner of the content area of the specified window.</p>
933<p >If the cursor is disabled (with <code>GLFW_CURSOR_DISABLED</code>) then the cursor position is unbounded and limited only by the minimum and maximum values of a <code>double</code>.</p>
934<p >The coordinate can be converted to their integer equivalents with the <code>floor</code> function. Casting directly to an integer type works for positive coordinates, but fails for negative ones.</p>
935<p >Any or all of the position arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position arguments will be set to zero.</p>
936<dl class="params"><dt>Parameters</dt><dd>
937 <table class="params">
938 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
939 <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the cursor x-coordinate, relative to the left edge of the content area, or <code>NULL</code>. </td></tr>
940 <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the cursor y-coordinate, relative to the to top edge of the content area, or <code>NULL</code>.</td></tr>
941 </table>
942 </dd>
943</dl>
944<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
945<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
946<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a> </dd>
947<dd>
948<a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a></dd></dl>
949<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetMousePos</code>. </dd></dl>
950
951</div>
952</div>
953<a id="ga04b03af936d906ca123c8f4ee08b39e7" name="ga04b03af936d906ca123c8f4ee08b39e7"></a>
954<h2 class="memtitle"><span class="permalink"><a href="#ga04b03af936d906ca123c8f4ee08b39e7">&#9670;&nbsp;</a></span>glfwSetCursorPos()</h2>
955
956<div class="memitem">
957<div class="memproto">
958 <table class="memname">
959 <tr>
960 <td class="memname">void glfwSetCursorPos </td>
961 <td>(</td>
962 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
963 <td class="paramname"><em>window</em>, </td>
964 </tr>
965 <tr>
966 <td class="paramkey"></td>
967 <td></td>
968 <td class="paramtype">double&#160;</td>
969 <td class="paramname"><em>xpos</em>, </td>
970 </tr>
971 <tr>
972 <td class="paramkey"></td>
973 <td></td>
974 <td class="paramtype">double&#160;</td>
975 <td class="paramname"><em>ypos</em>&#160;</td>
976 </tr>
977 <tr>
978 <td></td>
979 <td>)</td>
980 <td></td><td></td>
981 </tr>
982 </table>
983</div><div class="memdoc">
984<p >This function sets the position, in screen coordinates, of the cursor relative to the upper-left corner of the content area of the specified window. The window must have input focus. If the window does not have input focus when this function is called, it fails silently.</p>
985<p ><b>Do not use this function</b> to implement things like camera controls. GLFW already provides the <code>GLFW_CURSOR_DISABLED</code> cursor mode that hides the cursor, transparently re-centers it and provides unconstrained cursor motion. See <a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> for more information.</p>
986<p >If the cursor mode is <code>GLFW_CURSOR_DISABLED</code> then the cursor position is unconstrained and limited only by the minimum and maximum values of a <code>double</code>.</p>
987<dl class="params"><dt>Parameters</dt><dd>
988 <table class="params">
989 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
990 <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The desired x-coordinate, relative to the left edge of the content area. </td></tr>
991 <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The desired y-coordinate, relative to the top edge of the content area.</td></tr>
992 </table>
993 </dd>
994</dl>
995<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
996<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> This function will only work when the cursor mode is <code>GLFW_CURSOR_DISABLED</code>, otherwise it will do nothing.</dd></dl>
997<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
998<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a> </dd>
999<dd>
1000<a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a></dd></dl>
1001<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwSetMousePos</code>. </dd></dl>
1002
1003</div>
1004</div>
1005<a id="ga556f604f73af156c0db0e97c081373c3" name="ga556f604f73af156c0db0e97c081373c3"></a>
1006<h2 class="memtitle"><span class="permalink"><a href="#ga556f604f73af156c0db0e97c081373c3">&#9670;&nbsp;</a></span>glfwCreateCursor()</h2>
1007
1008<div class="memitem">
1009<div class="memproto">
1010 <table class="memname">
1011 <tr>
1012 <td class="memname"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> * glfwCreateCursor </td>
1013 <td>(</td>
1014 <td class="paramtype">const <a class="el" href="structGLFWimage.html">GLFWimage</a> *&#160;</td>
1015 <td class="paramname"><em>image</em>, </td>
1016 </tr>
1017 <tr>
1018 <td class="paramkey"></td>
1019 <td></td>
1020 <td class="paramtype">int&#160;</td>
1021 <td class="paramname"><em>xhot</em>, </td>
1022 </tr>
1023 <tr>
1024 <td class="paramkey"></td>
1025 <td></td>
1026 <td class="paramtype">int&#160;</td>
1027 <td class="paramname"><em>yhot</em>&#160;</td>
1028 </tr>
1029 <tr>
1030 <td></td>
1031 <td>)</td>
1032 <td></td><td></td>
1033 </tr>
1034 </table>
1035</div><div class="memdoc">
1036<p >Creates a new custom cursor image that can be set for a window with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>. The cursor can be destroyed with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>. Any remaining cursors are destroyed by <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
1037<p >The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. They are arranged canonically as packed sequential rows, starting from the top-left corner.</p>
1038<p >The cursor hotspot is specified in pixels, relative to the upper-left corner of the cursor image. Like all other coordinate systems in GLFW, the X-axis points to the right and the Y-axis points down.</p>
1039<dl class="params"><dt>Parameters</dt><dd>
1040 <table class="params">
1041 <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>The desired cursor image. </td></tr>
1042 <tr><td class="paramdir">[in]</td><td class="paramname">xhot</td><td>The desired x-coordinate, in pixels, of the cursor hotspot. </td></tr>
1043 <tr><td class="paramdir">[in]</td><td class="paramname">yhot</td><td>The desired y-coordinate, in pixels, of the cursor hotspot. </td></tr>
1044 </table>
1045 </dd>
1046</dl>
1047<dl class="section return"><dt>Returns</dt><dd>The handle of the created cursor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1048<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1049<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified image data is copied before this function returns.</dd></dl>
1050<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1051<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a> </dd>
1052<dd>
1053<a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a> </dd>
1054<dd>
1055<a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a></dd></dl>
1056<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
1057
1058</div>
1059</div>
1060<a id="gaf2fb2eb2c9dd842d1cef8a34e3c6403e" name="gaf2fb2eb2c9dd842d1cef8a34e3c6403e"></a>
1061<h2 class="memtitle"><span class="permalink"><a href="#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">&#9670;&nbsp;</a></span>glfwCreateStandardCursor()</h2>
1062
1063<div class="memitem">
1064<div class="memproto">
1065 <table class="memname">
1066 <tr>
1067 <td class="memname"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> * glfwCreateStandardCursor </td>
1068 <td>(</td>
1069 <td class="paramtype">int&#160;</td>
1070 <td class="paramname"><em>shape</em></td><td>)</td>
1071 <td></td>
1072 </tr>
1073 </table>
1074</div><div class="memdoc">
1075<p >Returns a cursor with a <a class="el" href="group__shapes.html">standard shape</a>, that can be set for a window with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>.</p>
1076<dl class="params"><dt>Parameters</dt><dd>
1077 <table class="params">
1078 <tr><td class="paramdir">[in]</td><td class="paramname">shape</td><td>One of the <a class="el" href="group__shapes.html">standard shapes</a>. </td></tr>
1079 </table>
1080 </dd>
1081</dl>
1082<dl class="section return"><dt>Returns</dt><dd>A new cursor ready to use or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1083<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1084<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1085<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a> </dd>
1086<dd>
1087<a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></dd></dl>
1088<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
1089
1090</div>
1091</div>
1092<a id="ga81b952cd1764274d0db7fb3c5a79ba6a" name="ga81b952cd1764274d0db7fb3c5a79ba6a"></a>
1093<h2 class="memtitle"><span class="permalink"><a href="#ga81b952cd1764274d0db7fb3c5a79ba6a">&#9670;&nbsp;</a></span>glfwDestroyCursor()</h2>
1094
1095<div class="memitem">
1096<div class="memproto">
1097 <table class="memname">
1098 <tr>
1099 <td class="memname">void glfwDestroyCursor </td>
1100 <td>(</td>
1101 <td class="paramtype"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td>
1102 <td class="paramname"><em>cursor</em></td><td>)</td>
1103 <td></td>
1104 </tr>
1105 </table>
1106</div><div class="memdoc">
1107<p >This function destroys a cursor previously created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>. Any remaining cursors will be destroyed by <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
1108<p >If the specified cursor is current for any window, that window will be reverted to the default cursor. This does not affect the cursor mode.</p>
1109<dl class="params"><dt>Parameters</dt><dd>
1110 <table class="params">
1111 <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>The cursor object to destroy.</td></tr>
1112 </table>
1113 </dd>
1114</dl>
1115<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1116<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
1117<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1118<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a> </dd>
1119<dd>
1120<a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></dd></dl>
1121<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
1122
1123</div>
1124</div>
1125<a id="gad3b4f38c8d5dae036bc8fa959e18343e" name="gad3b4f38c8d5dae036bc8fa959e18343e"></a>
1126<h2 class="memtitle"><span class="permalink"><a href="#gad3b4f38c8d5dae036bc8fa959e18343e">&#9670;&nbsp;</a></span>glfwSetCursor()</h2>
1127
1128<div class="memitem">
1129<div class="memproto">
1130 <table class="memname">
1131 <tr>
1132 <td class="memname">void glfwSetCursor </td>
1133 <td>(</td>
1134 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1135 <td class="paramname"><em>window</em>, </td>
1136 </tr>
1137 <tr>
1138 <td class="paramkey"></td>
1139 <td></td>
1140 <td class="paramtype"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td>
1141 <td class="paramname"><em>cursor</em>&#160;</td>
1142 </tr>
1143 <tr>
1144 <td></td>
1145 <td>)</td>
1146 <td></td><td></td>
1147 </tr>
1148 </table>
1149</div><div class="memdoc">
1150<p >This function sets the cursor image to be used when the cursor is over the content area of the specified window. The set cursor will only be visible when the <a class="el" href="input_guide.html#cursor_mode">cursor mode</a> of the window is <code>GLFW_CURSOR_NORMAL</code>.</p>
1151<p >On some platforms, the set cursor may not be visible unless the window also has input focus.</p>
1152<dl class="params"><dt>Parameters</dt><dd>
1153 <table class="params">
1154 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set the cursor for. </td></tr>
1155 <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>The cursor to set, or <code>NULL</code> to switch back to the default arrow cursor.</td></tr>
1156 </table>
1157 </dd>
1158</dl>
1159<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1160<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1161<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a></dd></dl>
1162<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
1163
1164</div>
1165</div>
1166<a id="ga1caf18159767e761185e49a3be019f8d" name="ga1caf18159767e761185e49a3be019f8d"></a>
1167<h2 class="memtitle"><span class="permalink"><a href="#ga1caf18159767e761185e49a3be019f8d">&#9670;&nbsp;</a></span>glfwSetKeyCallback()</h2>
1168
1169<div class="memitem">
1170<div class="memproto">
1171 <table class="memname">
1172 <tr>
1173 <td class="memname"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> glfwSetKeyCallback </td>
1174 <td>(</td>
1175 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1176 <td class="paramname"><em>window</em>, </td>
1177 </tr>
1178 <tr>
1179 <td class="paramkey"></td>
1180 <td></td>
1181 <td class="paramtype"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>&#160;</td>
1182 <td class="paramname"><em>callback</em>&#160;</td>
1183 </tr>
1184 <tr>
1185 <td></td>
1186 <td>)</td>
1187 <td></td><td></td>
1188 </tr>
1189 </table>
1190</div><div class="memdoc">
1191<p >This function sets the key callback of the specified window, which is called when a key is pressed, repeated or released.</p>
1192<p >The key functions deal with physical keys, with layout independent <a class="el" href="group__keys.html">key tokens</a> named after their values in the standard US keyboard layout. If you want to input text, use the <a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">character callback</a> instead.</p>
1193<p >When a window loses input focus, it will generate synthetic key release events for all pressed keys. You can tell these events from user-generated events by the fact that the synthetic ones are generated after the focus loss event has been processed, i.e. after the <a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">window focus callback</a> has been called.</p>
1194<p >The scancode of a key is specific to that platform or sometimes even to that machine. Scancodes are intended to allow users to bind keys that don't have a GLFW key token. Such keys have <code>key</code> set to <code>GLFW_KEY_UNKNOWN</code>, their state is not saved and so it cannot be queried with <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>.</p>
1195<p >Sometimes GLFW needs to generate synthetic key events, in which case the scancode may be zero.</p>
1196<dl class="params"><dt>Parameters</dt><dd>
1197 <table class="params">
1198 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1199 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new key callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1200 </table>
1201 </dd>
1202</dl>
1203<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1204<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
1205</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">function pointer type</a>.</dd></dl>
1206<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1207<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1208<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a></dd></dl>
1209<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
1210
1211</div>
1212</div>
1213<a id="gab25c4a220fd8f5717718dbc487828996" name="gab25c4a220fd8f5717718dbc487828996"></a>
1214<h2 class="memtitle"><span class="permalink"><a href="#gab25c4a220fd8f5717718dbc487828996">&#9670;&nbsp;</a></span>glfwSetCharCallback()</h2>
1215
1216<div class="memitem">
1217<div class="memproto">
1218 <table class="memname">
1219 <tr>
1220 <td class="memname"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> glfwSetCharCallback </td>
1221 <td>(</td>
1222 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1223 <td class="paramname"><em>window</em>, </td>
1224 </tr>
1225 <tr>
1226 <td class="paramkey"></td>
1227 <td></td>
1228 <td class="paramtype"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>&#160;</td>
1229 <td class="paramname"><em>callback</em>&#160;</td>
1230 </tr>
1231 <tr>
1232 <td></td>
1233 <td>)</td>
1234 <td></td><td></td>
1235 </tr>
1236 </table>
1237</div><div class="memdoc">
1238<p >This function sets the character callback of the specified window, which is called when a Unicode character is input.</p>
1239<p >The character callback is intended for Unicode text input. As it deals with characters, it is keyboard layout dependent, whereas the <a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">key callback</a> is not. Characters do not map 1:1 to physical keys, as a key may produce zero, one or more characters. If you want to know whether a specific physical key was pressed or released, see the key callback instead.</p>
1240<p >The character callback behaves as system text input normally does and will not be called if modifier keys are held down that would prevent normal text input on that platform, for example a Super (Command) key on macOS or Alt key on Windows.</p>
1241<dl class="params"><dt>Parameters</dt><dd>
1242 <table class="params">
1243 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1244 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1245 </table>
1246 </dd>
1247</dl>
1248<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1249<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint)</div>
1250</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">function pointer type</a>.</dd></dl>
1251<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1252<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1253<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a></dd></dl>
1254<dl class="section since"><dt>Since</dt><dd>Added in version 2.4. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
1255
1256</div>
1257</div>
1258<a id="ga0b7f4ad13c2b17435ff13b6dcfb4e43c" name="ga0b7f4ad13c2b17435ff13b6dcfb4e43c"></a>
1259<h2 class="memtitle"><span class="permalink"><a href="#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">&#9670;&nbsp;</a></span>glfwSetCharModsCallback()</h2>
1260
1261<div class="memitem">
1262<div class="memproto">
1263 <table class="memname">
1264 <tr>
1265 <td class="memname"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> glfwSetCharModsCallback </td>
1266 <td>(</td>
1267 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1268 <td class="paramname"><em>window</em>, </td>
1269 </tr>
1270 <tr>
1271 <td class="paramkey"></td>
1272 <td></td>
1273 <td class="paramtype"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>&#160;</td>
1274 <td class="paramname"><em>callback</em>&#160;</td>
1275 </tr>
1276 <tr>
1277 <td></td>
1278 <td>)</td>
1279 <td></td><td></td>
1280 </tr>
1281 </table>
1282</div><div class="memdoc">
1283<p >This function sets the character with modifiers callback of the specified window, which is called when a Unicode character is input regardless of what modifier keys are used.</p>
1284<p >The character with modifiers callback is intended for implementing custom Unicode character input. For regular Unicode text input, see the <a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">character callback</a>. Like the character callback, the character with modifiers callback deals with characters and is keyboard layout dependent. Characters do not map 1:1 to physical keys, as a key may produce zero, one or more characters. If you want to know whether a specific physical key was pressed or released, see the <a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">key callback</a> instead.</p>
1285<dl class="params"><dt>Parameters</dt><dd>
1286 <table class="params">
1287 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1288 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1289 </table>
1290 </dd>
1291</dl>
1292<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1293<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint, <span class="keywordtype">int</span> mods)</div>
1294</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">function pointer type</a>.</dd></dl>
1295<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Scheduled for removal in version 4.0.</dd></dl>
1296<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1297<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1298<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a></dd></dl>
1299<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
1300
1301</div>
1302</div>
1303<a id="ga6ab84420974d812bee700e45284a723c" name="ga6ab84420974d812bee700e45284a723c"></a>
1304<h2 class="memtitle"><span class="permalink"><a href="#ga6ab84420974d812bee700e45284a723c">&#9670;&nbsp;</a></span>glfwSetMouseButtonCallback()</h2>
1305
1306<div class="memitem">
1307<div class="memproto">
1308 <table class="memname">
1309 <tr>
1310 <td class="memname"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> glfwSetMouseButtonCallback </td>
1311 <td>(</td>
1312 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1313 <td class="paramname"><em>window</em>, </td>
1314 </tr>
1315 <tr>
1316 <td class="paramkey"></td>
1317 <td></td>
1318 <td class="paramtype"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>&#160;</td>
1319 <td class="paramname"><em>callback</em>&#160;</td>
1320 </tr>
1321 <tr>
1322 <td></td>
1323 <td>)</td>
1324 <td></td><td></td>
1325 </tr>
1326 </table>
1327</div><div class="memdoc">
1328<p >This function sets the mouse button callback of the specified window, which is called when a mouse button is pressed or released.</p>
1329<p >When a window loses input focus, it will generate synthetic mouse button release events for all pressed mouse buttons. You can tell these events from user-generated events by the fact that the synthetic ones are generated after the focus loss event has been processed, i.e. after the <a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">window focus callback</a> has been called.</p>
1330<dl class="params"><dt>Parameters</dt><dd>
1331 <table class="params">
1332 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1333 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1334 </table>
1335 </dd>
1336</dl>
1337<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1338<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
1339</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">function pointer type</a>.</dd></dl>
1340<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1341<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1342<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_mouse_button">Mouse button input</a></dd></dl>
1343<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
1344
1345</div>
1346</div>
1347<a id="gac1f879ab7435d54d4d79bb469fe225d7" name="gac1f879ab7435d54d4d79bb469fe225d7"></a>
1348<h2 class="memtitle"><span class="permalink"><a href="#gac1f879ab7435d54d4d79bb469fe225d7">&#9670;&nbsp;</a></span>glfwSetCursorPosCallback()</h2>
1349
1350<div class="memitem">
1351<div class="memproto">
1352 <table class="memname">
1353 <tr>
1354 <td class="memname"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> glfwSetCursorPosCallback </td>
1355 <td>(</td>
1356 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1357 <td class="paramname"><em>window</em>, </td>
1358 </tr>
1359 <tr>
1360 <td class="paramkey"></td>
1361 <td></td>
1362 <td class="paramtype"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>&#160;</td>
1363 <td class="paramname"><em>callback</em>&#160;</td>
1364 </tr>
1365 <tr>
1366 <td></td>
1367 <td>)</td>
1368 <td></td><td></td>
1369 </tr>
1370 </table>
1371</div><div class="memdoc">
1372<p >This function sets the cursor position callback of the specified window, which is called when the cursor is moved. The callback is provided with the position, in screen coordinates, relative to the upper-left corner of the content area of the window.</p>
1373<dl class="params"><dt>Parameters</dt><dd>
1374 <table class="params">
1375 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1376 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1377 </table>
1378 </dd>
1379</dl>
1380<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1381<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
1382</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">function pointer type</a>.</dd></dl>
1383<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1384<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1385<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a></dd></dl>
1386<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwSetMousePosCallback</code>. </dd></dl>
1387
1388</div>
1389</div>
1390<a id="gad27f8ad0142c038a281466c0966817d8" name="gad27f8ad0142c038a281466c0966817d8"></a>
1391<h2 class="memtitle"><span class="permalink"><a href="#gad27f8ad0142c038a281466c0966817d8">&#9670;&nbsp;</a></span>glfwSetCursorEnterCallback()</h2>
1392
1393<div class="memitem">
1394<div class="memproto">
1395 <table class="memname">
1396 <tr>
1397 <td class="memname"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> glfwSetCursorEnterCallback </td>
1398 <td>(</td>
1399 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1400 <td class="paramname"><em>window</em>, </td>
1401 </tr>
1402 <tr>
1403 <td class="paramkey"></td>
1404 <td></td>
1405 <td class="paramtype"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>&#160;</td>
1406 <td class="paramname"><em>callback</em>&#160;</td>
1407 </tr>
1408 <tr>
1409 <td></td>
1410 <td>)</td>
1411 <td></td><td></td>
1412 </tr>
1413 </table>
1414</div><div class="memdoc">
1415<p >This function sets the cursor boundary crossing callback of the specified window, which is called when the cursor enters or leaves the content area of the window.</p>
1416<dl class="params"><dt>Parameters</dt><dd>
1417 <table class="params">
1418 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1419 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1420 </table>
1421 </dd>
1422</dl>
1423<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1424<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered)</div>
1425</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">function pointer type</a>.</dd></dl>
1426<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1427<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1428<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_enter">Cursor enter/leave events</a></dd></dl>
1429<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1430
1431</div>
1432</div>
1433<a id="ga571e45a030ae4061f746ed56cb76aede" name="ga571e45a030ae4061f746ed56cb76aede"></a>
1434<h2 class="memtitle"><span class="permalink"><a href="#ga571e45a030ae4061f746ed56cb76aede">&#9670;&nbsp;</a></span>glfwSetScrollCallback()</h2>
1435
1436<div class="memitem">
1437<div class="memproto">
1438 <table class="memname">
1439 <tr>
1440 <td class="memname"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> glfwSetScrollCallback </td>
1441 <td>(</td>
1442 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1443 <td class="paramname"><em>window</em>, </td>
1444 </tr>
1445 <tr>
1446 <td class="paramkey"></td>
1447 <td></td>
1448 <td class="paramtype"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>&#160;</td>
1449 <td class="paramname"><em>callback</em>&#160;</td>
1450 </tr>
1451 <tr>
1452 <td></td>
1453 <td>)</td>
1454 <td></td><td></td>
1455 </tr>
1456 </table>
1457</div><div class="memdoc">
1458<p >This function sets the scroll callback of the specified window, which is called when a scrolling device is used, such as a mouse wheel or scrolling area of a touchpad.</p>
1459<p >The scroll callback receives all scrolling input, like that from a mouse wheel or a touchpad scrolling area.</p>
1460<dl class="params"><dt>Parameters</dt><dd>
1461 <table class="params">
1462 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1463 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new scroll callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1464 </table>
1465 </dd>
1466</dl>
1467<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1468<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset)</div>
1469</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">function pointer type</a>.</dd></dl>
1470<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1471<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1472<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#scrolling">Scroll input</a></dd></dl>
1473<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwSetMouseWheelCallback</code>. </dd></dl>
1474
1475</div>
1476</div>
1477<a id="gab773f0ee0a07cff77a210cea40bc1f6b" name="gab773f0ee0a07cff77a210cea40bc1f6b"></a>
1478<h2 class="memtitle"><span class="permalink"><a href="#gab773f0ee0a07cff77a210cea40bc1f6b">&#9670;&nbsp;</a></span>glfwSetDropCallback()</h2>
1479
1480<div class="memitem">
1481<div class="memproto">
1482 <table class="memname">
1483 <tr>
1484 <td class="memname"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> glfwSetDropCallback </td>
1485 <td>(</td>
1486 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1487 <td class="paramname"><em>window</em>, </td>
1488 </tr>
1489 <tr>
1490 <td class="paramkey"></td>
1491 <td></td>
1492 <td class="paramtype"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>&#160;</td>
1493 <td class="paramname"><em>callback</em>&#160;</td>
1494 </tr>
1495 <tr>
1496 <td></td>
1497 <td>)</td>
1498 <td></td><td></td>
1499 </tr>
1500 </table>
1501</div><div class="memdoc">
1502<p >This function sets the path drop callback of the specified window, which is called when one or more dragged paths are dropped on the window.</p>
1503<p >Because the path array and its strings may have been generated specifically for that event, they are not guaranteed to be valid after the callback has returned. If you wish to use them after the callback returns, you need to make a deep copy.</p>
1504<dl class="params"><dt>Parameters</dt><dd>
1505 <table class="params">
1506 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
1507 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new file drop callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1508 </table>
1509 </dd>
1510</dl>
1511<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1512<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> path_count, <span class="keyword">const</span> <span class="keywordtype">char</span>* paths[])</div>
1513</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">function pointer type</a>.</dd></dl>
1514<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1515<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> File drop is currently unimplemented.</dd></dl>
1516<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1517<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#path_drop">Path drop input</a></dd></dl>
1518<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
1519
1520</div>
1521</div>
1522<a id="gaed0966cee139d815317f9ffcba64c9f1" name="gaed0966cee139d815317f9ffcba64c9f1"></a>
1523<h2 class="memtitle"><span class="permalink"><a href="#gaed0966cee139d815317f9ffcba64c9f1">&#9670;&nbsp;</a></span>glfwJoystickPresent()</h2>
1524
1525<div class="memitem">
1526<div class="memproto">
1527 <table class="memname">
1528 <tr>
1529 <td class="memname">int glfwJoystickPresent </td>
1530 <td>(</td>
1531 <td class="paramtype">int&#160;</td>
1532 <td class="paramname"><em>jid</em></td><td>)</td>
1533 <td></td>
1534 </tr>
1535 </table>
1536</div><div class="memdoc">
1537<p >This function returns whether the specified joystick is present.</p>
1538<p >There is no need to call this function before other functions that accept a joystick ID, as they all check for presence before performing any other work.</p>
1539<dl class="params"><dt>Parameters</dt><dd>
1540 <table class="params">
1541 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1542 </table>
1543 </dd>
1544</dl>
1545<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if the joystick is present, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
1546<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1547<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1548<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick">Joystick input</a></dd></dl>
1549<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetJoystickParam</code>. </dd></dl>
1550
1551</div>
1552</div>
1553<a id="gaeb1c0191d3140a233a682987c61eb408" name="gaeb1c0191d3140a233a682987c61eb408"></a>
1554<h2 class="memtitle"><span class="permalink"><a href="#gaeb1c0191d3140a233a682987c61eb408">&#9670;&nbsp;</a></span>glfwGetJoystickAxes()</h2>
1555
1556<div class="memitem">
1557<div class="memproto">
1558 <table class="memname">
1559 <tr>
1560 <td class="memname">const float * glfwGetJoystickAxes </td>
1561 <td>(</td>
1562 <td class="paramtype">int&#160;</td>
1563 <td class="paramname"><em>jid</em>, </td>
1564 </tr>
1565 <tr>
1566 <td class="paramkey"></td>
1567 <td></td>
1568 <td class="paramtype">int *&#160;</td>
1569 <td class="paramname"><em>count</em>&#160;</td>
1570 </tr>
1571 <tr>
1572 <td></td>
1573 <td>)</td>
1574 <td></td><td></td>
1575 </tr>
1576 </table>
1577</div><div class="memdoc">
1578<p >This function returns the values of all axes of the specified joystick. Each element in the array is a value between -1.0 and 1.0.</p>
1579<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
1580<dl class="params"><dt>Parameters</dt><dd>
1581 <table class="params">
1582 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1583 <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of axis values in the returned array. This is set to zero if the joystick is not present or an error occurred. </td></tr>
1584 </table>
1585 </dd>
1586</dl>
1587<dl class="section return"><dt>Returns</dt><dd>An array of axis values, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1588<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1589<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
1590<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1591<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_axis">Joystick axis states</a></dd></dl>
1592<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetJoystickPos</code>. </dd></dl>
1593
1594</div>
1595</div>
1596<a id="ga5ffe34739d3dc97efe432ed2d81d9938" name="ga5ffe34739d3dc97efe432ed2d81d9938"></a>
1597<h2 class="memtitle"><span class="permalink"><a href="#ga5ffe34739d3dc97efe432ed2d81d9938">&#9670;&nbsp;</a></span>glfwGetJoystickButtons()</h2>
1598
1599<div class="memitem">
1600<div class="memproto">
1601 <table class="memname">
1602 <tr>
1603 <td class="memname">const unsigned char * glfwGetJoystickButtons </td>
1604 <td>(</td>
1605 <td class="paramtype">int&#160;</td>
1606 <td class="paramname"><em>jid</em>, </td>
1607 </tr>
1608 <tr>
1609 <td class="paramkey"></td>
1610 <td></td>
1611 <td class="paramtype">int *&#160;</td>
1612 <td class="paramname"><em>count</em>&#160;</td>
1613 </tr>
1614 <tr>
1615 <td></td>
1616 <td>)</td>
1617 <td></td><td></td>
1618 </tr>
1619 </table>
1620</div><div class="memdoc">
1621<p >This function returns the state of all buttons of the specified joystick. Each element in the array is either <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
1622<p >For backward compatibility with earlier versions that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>, the button array also includes all hats, each represented as four buttons. The hats are in the same order as returned by <b>glfwGetJoystickHats</b> and are in the order <em>up</em>, <em>right</em>, <em>down</em> and <em>left</em>. To disable these extra buttons, set the <a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a> init hint before initialization.</p>
1623<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
1624<dl class="params"><dt>Parameters</dt><dd>
1625 <table class="params">
1626 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1627 <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of button states in the returned array. This is set to zero if the joystick is not present or an error occurred. </td></tr>
1628 </table>
1629 </dd>
1630</dl>
1631<dl class="section return"><dt>Returns</dt><dd>An array of button states, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1632<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1633<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
1634<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1635<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_button">Joystick button states</a></dd></dl>
1636<dl class="section since"><dt>Since</dt><dd>Added in version 2.2. <b>GLFW 3:</b> Changed to return a dynamic array. </dd></dl>
1637
1638</div>
1639</div>
1640<a id="ga06e660841b3e79c54da4f54a932c5a2c" name="ga06e660841b3e79c54da4f54a932c5a2c"></a>
1641<h2 class="memtitle"><span class="permalink"><a href="#ga06e660841b3e79c54da4f54a932c5a2c">&#9670;&nbsp;</a></span>glfwGetJoystickHats()</h2>
1642
1643<div class="memitem">
1644<div class="memproto">
1645 <table class="memname">
1646 <tr>
1647 <td class="memname">const unsigned char * glfwGetJoystickHats </td>
1648 <td>(</td>
1649 <td class="paramtype">int&#160;</td>
1650 <td class="paramname"><em>jid</em>, </td>
1651 </tr>
1652 <tr>
1653 <td class="paramkey"></td>
1654 <td></td>
1655 <td class="paramtype">int *&#160;</td>
1656 <td class="paramname"><em>count</em>&#160;</td>
1657 </tr>
1658 <tr>
1659 <td></td>
1660 <td>)</td>
1661 <td></td><td></td>
1662 </tr>
1663 </table>
1664</div><div class="memdoc">
1665<p >This function returns the state of all hats of the specified joystick. Each element in the array is one of the following values:</p>
1666<table class="markdownTable">
1667<tr class="markdownTableHead">
1668<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Value </th></tr>
1669<tr class="markdownTableRowOdd">
1670<td class="markdownTableBodyNone"><code>GLFW_HAT_CENTERED</code> </td><td class="markdownTableBodyNone">0 </td></tr>
1671<tr class="markdownTableRowEven">
1672<td class="markdownTableBodyNone"><code>GLFW_HAT_UP</code> </td><td class="markdownTableBodyNone">1 </td></tr>
1673<tr class="markdownTableRowOdd">
1674<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> </td><td class="markdownTableBodyNone">2 </td></tr>
1675<tr class="markdownTableRowEven">
1676<td class="markdownTableBodyNone"><code>GLFW_HAT_DOWN</code> </td><td class="markdownTableBodyNone">4 </td></tr>
1677<tr class="markdownTableRowOdd">
1678<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> </td><td class="markdownTableBodyNone">8 </td></tr>
1679<tr class="markdownTableRowEven">
1680<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_UP</code> </td></tr>
1681<tr class="markdownTableRowOdd">
1682<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
1683<tr class="markdownTableRowEven">
1684<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_UP</code> </td></tr>
1685<tr class="markdownTableRowOdd">
1686<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
1687</table>
1688<p >The diagonal directions are bitwise combinations of the primary (up, right, down and left) directions and you can test for these individually by ANDing it with the corresponding direction.</p>
1689<div class="fragment"><div class="line"><span class="keywordflow">if</span> (hats[2] &amp; <a class="code hl_define" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>)</div>
1690<div class="line">{</div>
1691<div class="line"> <span class="comment">// State of hat 2 could be right-up, right or right-down</span></div>
1692<div class="line">}</div>
1693<div class="ttc" id="agroup__hat__state_html_ga252586e3bbde75f4b0e07ad3124867f5"><div class="ttname"><a href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a></div><div class="ttdeci">#define GLFW_HAT_RIGHT</div><div class="ttdef"><b>Definition:</b> glfw3.h:358</div></div>
1694</div><!-- fragment --><p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
1695<dl class="params"><dt>Parameters</dt><dd>
1696 <table class="params">
1697 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1698 <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of hat states in the returned array. This is set to zero if the joystick is not present or an error occurred. </td></tr>
1699 </table>
1700 </dd>
1701</dl>
1702<dl class="section return"><dt>Returns</dt><dd>An array of hat states, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1703<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1704<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected, this function is called again for that joystick or the library is terminated.</dd></dl>
1705<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1706<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_hat">Joystick hat states</a></dd></dl>
1707<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1708
1709</div>
1710</div>
1711<a id="gac6a8e769e18e0bcfa9097793fc2c3978" name="gac6a8e769e18e0bcfa9097793fc2c3978"></a>
1712<h2 class="memtitle"><span class="permalink"><a href="#gac6a8e769e18e0bcfa9097793fc2c3978">&#9670;&nbsp;</a></span>glfwGetJoystickName()</h2>
1713
1714<div class="memitem">
1715<div class="memproto">
1716 <table class="memname">
1717 <tr>
1718 <td class="memname">const char * glfwGetJoystickName </td>
1719 <td>(</td>
1720 <td class="paramtype">int&#160;</td>
1721 <td class="paramname"><em>jid</em></td><td>)</td>
1722 <td></td>
1723 </tr>
1724 </table>
1725</div><div class="memdoc">
1726<p >This function returns the name, encoded as UTF-8, of the specified joystick. The returned string is allocated and freed by GLFW. You should not free it yourself.</p>
1727<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
1728<dl class="params"><dt>Parameters</dt><dd>
1729 <table class="params">
1730 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1731 </table>
1732 </dd>
1733</dl>
1734<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded name of the joystick, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1735<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1736<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
1737<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1738<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_name">Joystick name</a></dd></dl>
1739<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1740
1741</div>
1742</div>
1743<a id="ga6659411aec3c7fcef27780e2cb2d9600" name="ga6659411aec3c7fcef27780e2cb2d9600"></a>
1744<h2 class="memtitle"><span class="permalink"><a href="#ga6659411aec3c7fcef27780e2cb2d9600">&#9670;&nbsp;</a></span>glfwGetJoystickGUID()</h2>
1745
1746<div class="memitem">
1747<div class="memproto">
1748 <table class="memname">
1749 <tr>
1750 <td class="memname">const char * glfwGetJoystickGUID </td>
1751 <td>(</td>
1752 <td class="paramtype">int&#160;</td>
1753 <td class="paramname"><em>jid</em></td><td>)</td>
1754 <td></td>
1755 </tr>
1756 </table>
1757</div><div class="memdoc">
1758<p >This function returns the SDL compatible GUID, as a UTF-8 encoded hexadecimal string, of the specified joystick. The returned string is allocated and freed by GLFW. You should not free it yourself.</p>
1759<p >The GUID is what connects a joystick to a gamepad mapping. A connected joystick will always have a GUID even if there is no gamepad mapping assigned to it.</p>
1760<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
1761<p >The GUID uses the format introduced in SDL 2.0.5. This GUID tries to uniquely identify the make and model of a joystick but does not identify a specific unit, e.g. all wired Xbox 360 controllers will have the same GUID on that platform. The GUID for a unit may vary between platforms depending on what hardware information the platform specific APIs provide.</p>
1762<dl class="params"><dt>Parameters</dt><dd>
1763 <table class="params">
1764 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1765 </table>
1766 </dd>
1767</dl>
1768<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded GUID of the joystick, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1769<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1770<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
1771<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1772<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a></dd></dl>
1773<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1774
1775</div>
1776</div>
1777<a id="ga6b2f72d64d636b48a727b437cbb7489e" name="ga6b2f72d64d636b48a727b437cbb7489e"></a>
1778<h2 class="memtitle"><span class="permalink"><a href="#ga6b2f72d64d636b48a727b437cbb7489e">&#9670;&nbsp;</a></span>glfwSetJoystickUserPointer()</h2>
1779
1780<div class="memitem">
1781<div class="memproto">
1782 <table class="memname">
1783 <tr>
1784 <td class="memname">void glfwSetJoystickUserPointer </td>
1785 <td>(</td>
1786 <td class="paramtype">int&#160;</td>
1787 <td class="paramname"><em>jid</em>, </td>
1788 </tr>
1789 <tr>
1790 <td class="paramkey"></td>
1791 <td></td>
1792 <td class="paramtype">void *&#160;</td>
1793 <td class="paramname"><em>pointer</em>&#160;</td>
1794 </tr>
1795 <tr>
1796 <td></td>
1797 <td>)</td>
1798 <td></td><td></td>
1799 </tr>
1800 </table>
1801</div><div class="memdoc">
1802<p >This function sets the user-defined pointer of the specified joystick. The current value is retained until the joystick is disconnected. The initial value is <code>NULL</code>.</p>
1803<p >This function may be called from the joystick callback, even for a joystick that is being disconnected.</p>
1804<dl class="params"><dt>Parameters</dt><dd>
1805 <table class="params">
1806 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The joystick whose pointer to set. </td></tr>
1807 <tr><td class="paramdir">[in]</td><td class="paramname">pointer</td><td>The new value.</td></tr>
1808 </table>
1809 </dd>
1810</dl>
1811<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1812<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
1813<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_userptr">Joystick user pointer</a> </dd>
1814<dd>
1815<a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a></dd></dl>
1816<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1817
1818</div>
1819</div>
1820<a id="ga18cefd7265d1fa04f3fd38a6746db5f3" name="ga18cefd7265d1fa04f3fd38a6746db5f3"></a>
1821<h2 class="memtitle"><span class="permalink"><a href="#ga18cefd7265d1fa04f3fd38a6746db5f3">&#9670;&nbsp;</a></span>glfwGetJoystickUserPointer()</h2>
1822
1823<div class="memitem">
1824<div class="memproto">
1825 <table class="memname">
1826 <tr>
1827 <td class="memname">void * glfwGetJoystickUserPointer </td>
1828 <td>(</td>
1829 <td class="paramtype">int&#160;</td>
1830 <td class="paramname"><em>jid</em></td><td>)</td>
1831 <td></td>
1832 </tr>
1833 </table>
1834</div><div class="memdoc">
1835<p >This function returns the current value of the user-defined pointer of the specified joystick. The initial value is <code>NULL</code>.</p>
1836<p >This function may be called from the joystick callback, even for a joystick that is being disconnected.</p>
1837<dl class="params"><dt>Parameters</dt><dd>
1838 <table class="params">
1839 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The joystick whose pointer to return.</td></tr>
1840 </table>
1841 </dd>
1842</dl>
1843<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1844<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
1845<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_userptr">Joystick user pointer</a> </dd>
1846<dd>
1847<a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a></dd></dl>
1848<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1849
1850</div>
1851</div>
1852<a id="gad0f676860f329d80f7e47e9f06a96f00" name="gad0f676860f329d80f7e47e9f06a96f00"></a>
1853<h2 class="memtitle"><span class="permalink"><a href="#gad0f676860f329d80f7e47e9f06a96f00">&#9670;&nbsp;</a></span>glfwJoystickIsGamepad()</h2>
1854
1855<div class="memitem">
1856<div class="memproto">
1857 <table class="memname">
1858 <tr>
1859 <td class="memname">int glfwJoystickIsGamepad </td>
1860 <td>(</td>
1861 <td class="paramtype">int&#160;</td>
1862 <td class="paramname"><em>jid</em></td><td>)</td>
1863 <td></td>
1864 </tr>
1865 </table>
1866</div><div class="memdoc">
1867<p >This function returns whether the specified joystick is both present and has a gamepad mapping.</p>
1868<p >If the specified joystick is present but does not have a gamepad mapping this function will return <code>GLFW_FALSE</code> but will not generate an error. Call <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> to check if a joystick is present regardless of whether it has a mapping.</p>
1869<dl class="params"><dt>Parameters</dt><dd>
1870 <table class="params">
1871 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1872 </table>
1873 </dd>
1874</dl>
1875<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if a joystick is both present and has a gamepad mapping, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
1876<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
1877<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1878<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
1879<dd>
1880<a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></dd></dl>
1881<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1882
1883</div>
1884</div>
1885<a id="ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c" name="ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"></a>
1886<h2 class="memtitle"><span class="permalink"><a href="#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">&#9670;&nbsp;</a></span>glfwSetJoystickCallback()</h2>
1887
1888<div class="memitem">
1889<div class="memproto">
1890 <table class="memname">
1891 <tr>
1892 <td class="memname"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> glfwSetJoystickCallback </td>
1893 <td>(</td>
1894 <td class="paramtype"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>&#160;</td>
1895 <td class="paramname"><em>callback</em></td><td>)</td>
1896 <td></td>
1897 </tr>
1898 </table>
1899</div><div class="memdoc">
1900<p >This function sets the joystick configuration callback, or removes the currently set callback. This is called when a joystick is connected to or disconnected from the system.</p>
1901<p >For joystick connection and disconnection events to be delivered on all platforms, you need to call one of the <a class="el" href="input_guide.html#events">event processing</a> functions. Joystick disconnection may also be detected and the callback called by joystick functions. The function will then return whatever it returns if the joystick is not present.</p>
1902<dl class="params"><dt>Parameters</dt><dd>
1903 <table class="params">
1904 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
1905 </table>
1906 </dd>
1907</dl>
1908<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
1909<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event)</div>
1910</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">function pointer type</a>.</dd></dl>
1911<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1912<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1913<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_event">Joystick configuration changes</a></dd></dl>
1914<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
1915
1916</div>
1917</div>
1918<a id="gaed5104612f2fa8e66aa6e846652ad00f" name="gaed5104612f2fa8e66aa6e846652ad00f"></a>
1919<h2 class="memtitle"><span class="permalink"><a href="#gaed5104612f2fa8e66aa6e846652ad00f">&#9670;&nbsp;</a></span>glfwUpdateGamepadMappings()</h2>
1920
1921<div class="memitem">
1922<div class="memproto">
1923 <table class="memname">
1924 <tr>
1925 <td class="memname">int glfwUpdateGamepadMappings </td>
1926 <td>(</td>
1927 <td class="paramtype">const char *&#160;</td>
1928 <td class="paramname"><em>string</em></td><td>)</td>
1929 <td></td>
1930 </tr>
1931 </table>
1932</div><div class="memdoc">
1933<p >This function parses the specified ASCII encoded string and updates the internal list with any gamepad mappings it finds. This string may contain either a single gamepad mapping or many mappings separated by newlines. The parser supports the full format of the <code>gamecontrollerdb.txt</code> source file including empty lines and comments.</p>
1934<p >See <a class="el" href="input_guide.html#gamepad_mapping">Gamepad mappings</a> for a description of the format.</p>
1935<p >If there is already a gamepad mapping for a given GUID in the internal list, it will be replaced by the one passed to this function. If the library is terminated and re-initialized the internal list will revert to the built-in default.</p>
1936<dl class="params"><dt>Parameters</dt><dd>
1937 <table class="params">
1938 <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>The string containing the gamepad mappings. </td></tr>
1939 </table>
1940 </dd>
1941</dl>
1942<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1943<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>.</dd></dl>
1944<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1945<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
1946<dd>
1947<a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> </dd>
1948<dd>
1949<a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></dd></dl>
1950<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1951
1952</div>
1953</div>
1954<a id="ga8aea73a1a25cc6c0486a617019f56728" name="ga8aea73a1a25cc6c0486a617019f56728"></a>
1955<h2 class="memtitle"><span class="permalink"><a href="#ga8aea73a1a25cc6c0486a617019f56728">&#9670;&nbsp;</a></span>glfwGetGamepadName()</h2>
1956
1957<div class="memitem">
1958<div class="memproto">
1959 <table class="memname">
1960 <tr>
1961 <td class="memname">const char * glfwGetGamepadName </td>
1962 <td>(</td>
1963 <td class="paramtype">int&#160;</td>
1964 <td class="paramname"><em>jid</em></td><td>)</td>
1965 <td></td>
1966 </tr>
1967 </table>
1968</div><div class="memdoc">
1969<p >This function returns the human-readable name of the gamepad from the gamepad mapping assigned to the specified joystick.</p>
1970<p >If the specified joystick is not present or does not have a gamepad mapping this function will return <code>NULL</code> but will not generate an error. Call <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> to check whether it is present regardless of whether it has a mapping.</p>
1971<dl class="params"><dt>Parameters</dt><dd>
1972 <table class="params">
1973 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
1974 </table>
1975 </dd>
1976</dl>
1977<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded name of the gamepad, or <code>NULL</code> if the joystick is not present, does not have a mapping or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1978<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected, the gamepad mappings are updated or the library is terminated.</dd></dl>
1979<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1980<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
1981<dd>
1982<a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></dd></dl>
1983<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1984
1985</div>
1986</div>
1987<a id="gadccddea8bce6113fa459de379ddaf051" name="gadccddea8bce6113fa459de379ddaf051"></a>
1988<h2 class="memtitle"><span class="permalink"><a href="#gadccddea8bce6113fa459de379ddaf051">&#9670;&nbsp;</a></span>glfwGetGamepadState()</h2>
1989
1990<div class="memitem">
1991<div class="memproto">
1992 <table class="memname">
1993 <tr>
1994 <td class="memname">int glfwGetGamepadState </td>
1995 <td>(</td>
1996 <td class="paramtype">int&#160;</td>
1997 <td class="paramname"><em>jid</em>, </td>
1998 </tr>
1999 <tr>
2000 <td class="paramkey"></td>
2001 <td></td>
2002 <td class="paramtype"><a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> *&#160;</td>
2003 <td class="paramname"><em>state</em>&#160;</td>
2004 </tr>
2005 <tr>
2006 <td></td>
2007 <td>)</td>
2008 <td></td><td></td>
2009 </tr>
2010 </table>
2011</div><div class="memdoc">
2012<p >This function retrieves the state of the specified joystick remapped to an Xbox-like gamepad.</p>
2013<p >If the specified joystick is not present or does not have a gamepad mapping this function will return <code>GLFW_FALSE</code> but will not generate an error. Call <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> to check whether it is present regardless of whether it has a mapping.</p>
2014<p >The Guide button may not be available for input as it is often hooked by the system or the Steam client.</p>
2015<p >Not all devices have all the buttons or axes provided by <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>. Unavailable buttons and axes will always report <code>GLFW_RELEASE</code> and 0.0 respectively.</p>
2016<dl class="params"><dt>Parameters</dt><dd>
2017 <table class="params">
2018 <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
2019 <tr><td class="paramdir">[out]</td><td class="paramname">state</td><td>The gamepad input state of the joystick. </td></tr>
2020 </table>
2021 </dd>
2022</dl>
2023<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if no joystick is connected, it has no gamepad mapping or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
2024<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
2025<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2026<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
2027<dd>
2028<a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> </dd>
2029<dd>
2030<a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></dd></dl>
2031<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
2032
2033</div>
2034</div>
2035<a id="gaba1f022c5eb07dfac421df34cdcd31dd" name="gaba1f022c5eb07dfac421df34cdcd31dd"></a>
2036<h2 class="memtitle"><span class="permalink"><a href="#gaba1f022c5eb07dfac421df34cdcd31dd">&#9670;&nbsp;</a></span>glfwSetClipboardString()</h2>
2037
2038<div class="memitem">
2039<div class="memproto">
2040 <table class="memname">
2041 <tr>
2042 <td class="memname">void glfwSetClipboardString </td>
2043 <td>(</td>
2044 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2045 <td class="paramname"><em>window</em>, </td>
2046 </tr>
2047 <tr>
2048 <td class="paramkey"></td>
2049 <td></td>
2050 <td class="paramtype">const char *&#160;</td>
2051 <td class="paramname"><em>string</em>&#160;</td>
2052 </tr>
2053 <tr>
2054 <td></td>
2055 <td>)</td>
2056 <td></td><td></td>
2057 </tr>
2058 </table>
2059</div><div class="memdoc">
2060<p >This function sets the system clipboard to the specified, UTF-8 encoded string.</p>
2061<dl class="params"><dt>Parameters</dt><dd>
2062 <table class="params">
2063 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>Deprecated. Any valid window or <code>NULL</code>. </td></tr>
2064 <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>A UTF-8 encoded string.</td></tr>
2065 </table>
2066 </dd>
2067</dl>
2068<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2069<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified string is copied before this function returns.</dd></dl>
2070<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2071<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
2072<dd>
2073<a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a></dd></dl>
2074<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2075
2076</div>
2077</div>
2078<a id="ga71a5b20808ea92193d65c21b82580355" name="ga71a5b20808ea92193d65c21b82580355"></a>
2079<h2 class="memtitle"><span class="permalink"><a href="#ga71a5b20808ea92193d65c21b82580355">&#9670;&nbsp;</a></span>glfwGetClipboardString()</h2>
2080
2081<div class="memitem">
2082<div class="memproto">
2083 <table class="memname">
2084 <tr>
2085 <td class="memname">const char * glfwGetClipboardString </td>
2086 <td>(</td>
2087 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2088 <td class="paramname"><em>window</em></td><td>)</td>
2089 <td></td>
2090 </tr>
2091 </table>
2092</div><div class="memdoc">
2093<p >This function returns the contents of the system clipboard, if it contains or is convertible to a UTF-8 encoded string. If the clipboard is empty or if its contents cannot be converted, <code>NULL</code> is returned and a <a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a> error is generated.</p>
2094<dl class="params"><dt>Parameters</dt><dd>
2095 <table class="params">
2096 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>Deprecated. Any valid window or <code>NULL</code>. </td></tr>
2097 </table>
2098 </dd>
2099</dl>
2100<dl class="section return"><dt>Returns</dt><dd>The contents of the clipboard as a UTF-8 encoded string, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
2101<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2102<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the next call to <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> or <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>, or until the library is terminated.</dd></dl>
2103<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2104<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
2105<dd>
2106<a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a></dd></dl>
2107<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2108
2109</div>
2110</div>
2111<a id="gaa6cf4e7a77158a3b8fd00328b1720a4a" name="gaa6cf4e7a77158a3b8fd00328b1720a4a"></a>
2112<h2 class="memtitle"><span class="permalink"><a href="#gaa6cf4e7a77158a3b8fd00328b1720a4a">&#9670;&nbsp;</a></span>glfwGetTime()</h2>
2113
2114<div class="memitem">
2115<div class="memproto">
2116 <table class="memname">
2117 <tr>
2118 <td class="memname">double glfwGetTime </td>
2119 <td>(</td>
2120 <td class="paramtype">void&#160;</td>
2121 <td class="paramname"></td><td>)</td>
2122 <td></td>
2123 </tr>
2124 </table>
2125</div><div class="memdoc">
2126<p >This function returns the current GLFW time, in seconds. Unless the time has been set using <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> it measures time elapsed since GLFW was initialized.</p>
2127<p >This function and <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> are helper functions on top of <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> and <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>.</p>
2128<p >The resolution of the timer is system dependent, but is usually on the order of a few micro- or nanoseconds. It uses the highest-resolution monotonic time source on each supported platform.</p>
2129<dl class="section return"><dt>Returns</dt><dd>The current time, in seconds, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
2130<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2131<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Reading and writing of the internal base time is not atomic, so it needs to be externally synchronized with calls to <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>.</dd></dl>
2132<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a></dd></dl>
2133<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
2134
2135</div>
2136</div>
2137<a id="gaf59589ef6e8b8c8b5ad184b25afd4dc0" name="gaf59589ef6e8b8c8b5ad184b25afd4dc0"></a>
2138<h2 class="memtitle"><span class="permalink"><a href="#gaf59589ef6e8b8c8b5ad184b25afd4dc0">&#9670;&nbsp;</a></span>glfwSetTime()</h2>
2139
2140<div class="memitem">
2141<div class="memproto">
2142 <table class="memname">
2143 <tr>
2144 <td class="memname">void glfwSetTime </td>
2145 <td>(</td>
2146 <td class="paramtype">double&#160;</td>
2147 <td class="paramname"><em>time</em></td><td>)</td>
2148 <td></td>
2149 </tr>
2150 </table>
2151</div><div class="memdoc">
2152<p >This function sets the current GLFW time, in seconds. The value must be a positive finite number less than or equal to 18446744073.0, which is approximately 584.5 years.</p>
2153<p >This function and <a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a> are helper functions on top of <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> and <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>.</p>
2154<dl class="params"><dt>Parameters</dt><dd>
2155 <table class="params">
2156 <tr><td class="paramdir">[in]</td><td class="paramname">time</td><td>The new value, in seconds.</td></tr>
2157 </table>
2158 </dd>
2159</dl>
2160<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>.</dd></dl>
2161<dl class="section remark"><dt>Remarks</dt><dd>The upper limit of GLFW time is calculated as floor((2<sup>64</sup> - 1) / 10<sup>9</sup>) and is due to implementations storing nanoseconds in 64 bits. The limit may be increased in the future.</dd></dl>
2162<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Reading and writing of the internal base time is not atomic, so it needs to be externally synchronized with calls to <a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>.</dd></dl>
2163<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a></dd></dl>
2164<dl class="section since"><dt>Since</dt><dd>Added in version 2.2. </dd></dl>
2165
2166</div>
2167</div>
2168<a id="ga09b2bd37d328e0b9456c7ec575cc26aa" name="ga09b2bd37d328e0b9456c7ec575cc26aa"></a>
2169<h2 class="memtitle"><span class="permalink"><a href="#ga09b2bd37d328e0b9456c7ec575cc26aa">&#9670;&nbsp;</a></span>glfwGetTimerValue()</h2>
2170
2171<div class="memitem">
2172<div class="memproto">
2173 <table class="memname">
2174 <tr>
2175 <td class="memname">uint64_t glfwGetTimerValue </td>
2176 <td>(</td>
2177 <td class="paramtype">void&#160;</td>
2178 <td class="paramname"></td><td>)</td>
2179 <td></td>
2180 </tr>
2181 </table>
2182</div><div class="memdoc">
2183<p >This function returns the current value of the raw timer, measured in 1&#160;/&#160;frequency seconds. To get the frequency, call <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>.</p>
2184<dl class="section return"><dt>Returns</dt><dd>The value of the timer, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
2185<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2186<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
2187<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a> </dd>
2188<dd>
2189<a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></dd></dl>
2190<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
2191
2192</div>
2193</div>
2194<a id="ga3289ee876572f6e91f06df3a24824443" name="ga3289ee876572f6e91f06df3a24824443"></a>
2195<h2 class="memtitle"><span class="permalink"><a href="#ga3289ee876572f6e91f06df3a24824443">&#9670;&nbsp;</a></span>glfwGetTimerFrequency()</h2>
2196
2197<div class="memitem">
2198<div class="memproto">
2199 <table class="memname">
2200 <tr>
2201 <td class="memname">uint64_t glfwGetTimerFrequency </td>
2202 <td>(</td>
2203 <td class="paramtype">void&#160;</td>
2204 <td class="paramname"></td><td>)</td>
2205 <td></td>
2206 </tr>
2207 </table>
2208</div><div class="memdoc">
2209<p >This function returns the frequency, in Hz, of the raw timer.</p>
2210<dl class="section return"><dt>Returns</dt><dd>The frequency of the timer, in Hz, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
2211<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2212<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
2213<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a> </dd>
2214<dd>
2215<a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></dd></dl>
2216<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
2217
2218</div>
2219</div>
2220</div><!-- contents -->
2221<address class="footer">
2222<p>
2223Last update on Thu Oct 28 2021 for GLFW 3.3.5
2224</p>
2225</address>
2226</body>
2227</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__joysticks.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__joysticks.html
new file mode 100644
index 0000000..81ca699
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__joysticks.html
@@ -0,0 +1,355 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Joysticks</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Joysticks<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#joystick">joystick input</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:ga34a0443d059e9f22272cd4669073f73d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a>&#160;&#160;&#160;0</td></tr>
75<tr class="separator:ga34a0443d059e9f22272cd4669073f73d"><td class="memSeparator" colspan="2">&#160;</td></tr>
76<tr class="memitem:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a>&#160;&#160;&#160;1</td></tr>
77<tr class="separator:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memSeparator" colspan="2">&#160;</td></tr>
78<tr class="memitem:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>&#160;&#160;&#160;2</td></tr>
79<tr class="separator:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a>&#160;&#160;&#160;3</td></tr>
81<tr class="separator:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memSeparator" colspan="2">&#160;</td></tr>
82<tr class="memitem:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a>&#160;&#160;&#160;4</td></tr>
83<tr class="separator:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:ga74771620aa53bd68a487186dea66fd77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga74771620aa53bd68a487186dea66fd77">GLFW_JOYSTICK_6</a>&#160;&#160;&#160;5</td></tr>
85<tr class="separator:ga74771620aa53bd68a487186dea66fd77"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>&#160;&#160;&#160;6</td></tr>
87<tr class="separator:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb">GLFW_JOYSTICK_8</a>&#160;&#160;&#160;7</td></tr>
89<tr class="separator:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf">GLFW_JOYSTICK_9</a>&#160;&#160;&#160;8</td></tr>
91<tr class="separator:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec">GLFW_JOYSTICK_10</a>&#160;&#160;&#160;9</td></tr>
93<tr class="separator:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
94<tr class="memitem:gae7d26e3df447c2c14a569fcc18516af4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4">GLFW_JOYSTICK_11</a>&#160;&#160;&#160;10</td></tr>
95<tr class="separator:gae7d26e3df447c2c14a569fcc18516af4"><td class="memSeparator" colspan="2">&#160;</td></tr>
96<tr class="memitem:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7">GLFW_JOYSTICK_12</a>&#160;&#160;&#160;11</td></tr>
97<tr class="separator:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
98<tr class="memitem:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508">GLFW_JOYSTICK_13</a>&#160;&#160;&#160;12</td></tr>
99<tr class="separator:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memSeparator" colspan="2">&#160;</td></tr>
100<tr class="memitem:ga89540873278ae5a42b3e70d64164dc74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74">GLFW_JOYSTICK_14</a>&#160;&#160;&#160;13</td></tr>
101<tr class="separator:ga89540873278ae5a42b3e70d64164dc74"><td class="memSeparator" colspan="2">&#160;</td></tr>
102<tr class="memitem:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9">GLFW_JOYSTICK_15</a>&#160;&#160;&#160;14</td></tr>
103<tr class="separator:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
104<tr class="memitem:ga453edeeabf350827646b6857df4f80ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a>&#160;&#160;&#160;15</td></tr>
105<tr class="separator:ga453edeeabf350827646b6857df4f80ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
106<tr class="memitem:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9">GLFW_JOYSTICK_LAST</a>&#160;&#160;&#160;<a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a></td></tr>
107<tr class="separator:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
108</table>
109<h2 class="groupheader">Macro Definition Documentation</h2>
110<a id="ga34a0443d059e9f22272cd4669073f73d" name="ga34a0443d059e9f22272cd4669073f73d"></a>
111<h2 class="memtitle"><span class="permalink"><a href="#ga34a0443d059e9f22272cd4669073f73d">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_1</h2>
112
113<div class="memitem">
114<div class="memproto">
115 <table class="memname">
116 <tr>
117 <td class="memname">#define GLFW_JOYSTICK_1&#160;&#160;&#160;0</td>
118 </tr>
119 </table>
120</div><div class="memdoc">
121
122</div>
123</div>
124<a id="ga6eab65ec88e65e0850ef8413504cb50c" name="ga6eab65ec88e65e0850ef8413504cb50c"></a>
125<h2 class="memtitle"><span class="permalink"><a href="#ga6eab65ec88e65e0850ef8413504cb50c">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_2</h2>
126
127<div class="memitem">
128<div class="memproto">
129 <table class="memname">
130 <tr>
131 <td class="memname">#define GLFW_JOYSTICK_2&#160;&#160;&#160;1</td>
132 </tr>
133 </table>
134</div><div class="memdoc">
135
136</div>
137</div>
138<a id="gae6f3eedfeb42424c2f5e3161efb0b654" name="gae6f3eedfeb42424c2f5e3161efb0b654"></a>
139<h2 class="memtitle"><span class="permalink"><a href="#gae6f3eedfeb42424c2f5e3161efb0b654">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_3</h2>
140
141<div class="memitem">
142<div class="memproto">
143 <table class="memname">
144 <tr>
145 <td class="memname">#define GLFW_JOYSTICK_3&#160;&#160;&#160;2</td>
146 </tr>
147 </table>
148</div><div class="memdoc">
149
150</div>
151</div>
152<a id="ga97ddbcad02b7f48d74fad4ddb08fff59" name="ga97ddbcad02b7f48d74fad4ddb08fff59"></a>
153<h2 class="memtitle"><span class="permalink"><a href="#ga97ddbcad02b7f48d74fad4ddb08fff59">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_4</h2>
154
155<div class="memitem">
156<div class="memproto">
157 <table class="memname">
158 <tr>
159 <td class="memname">#define GLFW_JOYSTICK_4&#160;&#160;&#160;3</td>
160 </tr>
161 </table>
162</div><div class="memdoc">
163
164</div>
165</div>
166<a id="gae43281bc66d3fa5089fb50c3e7a28695" name="gae43281bc66d3fa5089fb50c3e7a28695"></a>
167<h2 class="memtitle"><span class="permalink"><a href="#gae43281bc66d3fa5089fb50c3e7a28695">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_5</h2>
168
169<div class="memitem">
170<div class="memproto">
171 <table class="memname">
172 <tr>
173 <td class="memname">#define GLFW_JOYSTICK_5&#160;&#160;&#160;4</td>
174 </tr>
175 </table>
176</div><div class="memdoc">
177
178</div>
179</div>
180<a id="ga74771620aa53bd68a487186dea66fd77" name="ga74771620aa53bd68a487186dea66fd77"></a>
181<h2 class="memtitle"><span class="permalink"><a href="#ga74771620aa53bd68a487186dea66fd77">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_6</h2>
182
183<div class="memitem">
184<div class="memproto">
185 <table class="memname">
186 <tr>
187 <td class="memname">#define GLFW_JOYSTICK_6&#160;&#160;&#160;5</td>
188 </tr>
189 </table>
190</div><div class="memdoc">
191
192</div>
193</div>
194<a id="ga20a9f4f3aaefed9ea5e66072fc588b87" name="ga20a9f4f3aaefed9ea5e66072fc588b87"></a>
195<h2 class="memtitle"><span class="permalink"><a href="#ga20a9f4f3aaefed9ea5e66072fc588b87">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_7</h2>
196
197<div class="memitem">
198<div class="memproto">
199 <table class="memname">
200 <tr>
201 <td class="memname">#define GLFW_JOYSTICK_7&#160;&#160;&#160;6</td>
202 </tr>
203 </table>
204</div><div class="memdoc">
205
206</div>
207</div>
208<a id="ga21a934c940bcf25db0e4c8fe9b364bdb" name="ga21a934c940bcf25db0e4c8fe9b364bdb"></a>
209<h2 class="memtitle"><span class="permalink"><a href="#ga21a934c940bcf25db0e4c8fe9b364bdb">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_8</h2>
210
211<div class="memitem">
212<div class="memproto">
213 <table class="memname">
214 <tr>
215 <td class="memname">#define GLFW_JOYSTICK_8&#160;&#160;&#160;7</td>
216 </tr>
217 </table>
218</div><div class="memdoc">
219
220</div>
221</div>
222<a id="ga87689d47df0ba6f9f5fcbbcaf7b3cecf" name="ga87689d47df0ba6f9f5fcbbcaf7b3cecf"></a>
223<h2 class="memtitle"><span class="permalink"><a href="#ga87689d47df0ba6f9f5fcbbcaf7b3cecf">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_9</h2>
224
225<div class="memitem">
226<div class="memproto">
227 <table class="memname">
228 <tr>
229 <td class="memname">#define GLFW_JOYSTICK_9&#160;&#160;&#160;8</td>
230 </tr>
231 </table>
232</div><div class="memdoc">
233
234</div>
235</div>
236<a id="gaef55389ee605d6dfc31aef6fe98c54ec" name="gaef55389ee605d6dfc31aef6fe98c54ec"></a>
237<h2 class="memtitle"><span class="permalink"><a href="#gaef55389ee605d6dfc31aef6fe98c54ec">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_10</h2>
238
239<div class="memitem">
240<div class="memproto">
241 <table class="memname">
242 <tr>
243 <td class="memname">#define GLFW_JOYSTICK_10&#160;&#160;&#160;9</td>
244 </tr>
245 </table>
246</div><div class="memdoc">
247
248</div>
249</div>
250<a id="gae7d26e3df447c2c14a569fcc18516af4" name="gae7d26e3df447c2c14a569fcc18516af4"></a>
251<h2 class="memtitle"><span class="permalink"><a href="#gae7d26e3df447c2c14a569fcc18516af4">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_11</h2>
252
253<div class="memitem">
254<div class="memproto">
255 <table class="memname">
256 <tr>
257 <td class="memname">#define GLFW_JOYSTICK_11&#160;&#160;&#160;10</td>
258 </tr>
259 </table>
260</div><div class="memdoc">
261
262</div>
263</div>
264<a id="gab91bbf5b7ca6be8d3ac5c4d89ff48ac7" name="gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"></a>
265<h2 class="memtitle"><span class="permalink"><a href="#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_12</h2>
266
267<div class="memitem">
268<div class="memproto">
269 <table class="memname">
270 <tr>
271 <td class="memname">#define GLFW_JOYSTICK_12&#160;&#160;&#160;11</td>
272 </tr>
273 </table>
274</div><div class="memdoc">
275
276</div>
277</div>
278<a id="ga5c84fb4e49bf661d7d7c78eb4018c508" name="ga5c84fb4e49bf661d7d7c78eb4018c508"></a>
279<h2 class="memtitle"><span class="permalink"><a href="#ga5c84fb4e49bf661d7d7c78eb4018c508">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_13</h2>
280
281<div class="memitem">
282<div class="memproto">
283 <table class="memname">
284 <tr>
285 <td class="memname">#define GLFW_JOYSTICK_13&#160;&#160;&#160;12</td>
286 </tr>
287 </table>
288</div><div class="memdoc">
289
290</div>
291</div>
292<a id="ga89540873278ae5a42b3e70d64164dc74" name="ga89540873278ae5a42b3e70d64164dc74"></a>
293<h2 class="memtitle"><span class="permalink"><a href="#ga89540873278ae5a42b3e70d64164dc74">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_14</h2>
294
295<div class="memitem">
296<div class="memproto">
297 <table class="memname">
298 <tr>
299 <td class="memname">#define GLFW_JOYSTICK_14&#160;&#160;&#160;13</td>
300 </tr>
301 </table>
302</div><div class="memdoc">
303
304</div>
305</div>
306<a id="ga7b02ab70daf7a78bcc942d5d4cc1dcf9" name="ga7b02ab70daf7a78bcc942d5d4cc1dcf9"></a>
307<h2 class="memtitle"><span class="permalink"><a href="#ga7b02ab70daf7a78bcc942d5d4cc1dcf9">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_15</h2>
308
309<div class="memitem">
310<div class="memproto">
311 <table class="memname">
312 <tr>
313 <td class="memname">#define GLFW_JOYSTICK_15&#160;&#160;&#160;14</td>
314 </tr>
315 </table>
316</div><div class="memdoc">
317
318</div>
319</div>
320<a id="ga453edeeabf350827646b6857df4f80ce" name="ga453edeeabf350827646b6857df4f80ce"></a>
321<h2 class="memtitle"><span class="permalink"><a href="#ga453edeeabf350827646b6857df4f80ce">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_16</h2>
322
323<div class="memitem">
324<div class="memproto">
325 <table class="memname">
326 <tr>
327 <td class="memname">#define GLFW_JOYSTICK_16&#160;&#160;&#160;15</td>
328 </tr>
329 </table>
330</div><div class="memdoc">
331
332</div>
333</div>
334<a id="ga9ca13ebf24c331dd98df17d84a4b72c9" name="ga9ca13ebf24c331dd98df17d84a4b72c9"></a>
335<h2 class="memtitle"><span class="permalink"><a href="#ga9ca13ebf24c331dd98df17d84a4b72c9">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_LAST</h2>
336
337<div class="memitem">
338<div class="memproto">
339 <table class="memname">
340 <tr>
341 <td class="memname">#define GLFW_JOYSTICK_LAST&#160;&#160;&#160;<a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a></td>
342 </tr>
343 </table>
344</div><div class="memdoc">
345
346</div>
347</div>
348</div><!-- contents -->
349<address class="footer">
350<p>
351Last update on Thu Oct 28 2021 for GLFW 3.3.5
352</p>
353</address>
354</body>
355</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__keys.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__keys.html
new file mode 100644
index 0000000..66f1bea
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__keys.html
@@ -0,0 +1,2043 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Keyboard keys</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Keyboard keys<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#input_key">key input</a> for how these are used.</p>
71<p >These key codes are inspired by the <em>USB HID Usage Tables v1.12</em> (p. 53-60), but re-arranged to map to 7-bit ASCII for printable keys (function keys are put in the 256+ range).</p>
72<p >The naming of the key codes follow these rules:</p><ul>
73<li>The US keyboard layout is used</li>
74<li>Names of printable alpha-numeric characters are used (e.g. "A", "R", "3", etc.)</li>
75<li>For non-alphanumeric characters, Unicode:ish names are used (e.g. "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not correspond to the Unicode standard (usually for brevity)</li>
76<li>Keys that lack a clear US mapping are named "WORLD_x"</li>
77<li>For non-printable keys, custom names are used (e.g. "F4", "BACKSPACE", etc.) </li>
78</ul>
79<table class="memberdecls">
80<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
81Macros</h2></td></tr>
82<tr class="memitem:ga99aacc875b6b27a072552631e13775c7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga99aacc875b6b27a072552631e13775c7">GLFW_KEY_UNKNOWN</a>&#160;&#160;&#160;-1</td></tr>
83<tr class="separator:ga99aacc875b6b27a072552631e13775c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014">GLFW_KEY_SPACE</a>&#160;&#160;&#160;32</td></tr>
85<tr class="separator:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24">GLFW_KEY_APOSTROPHE</a>&#160;&#160;&#160;39 /* ' */</td></tr>
87<tr class="separator:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:gab3d5d72e59d3055f494627b0a524926c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab3d5d72e59d3055f494627b0a524926c">GLFW_KEY_COMMA</a>&#160;&#160;&#160;44 /* , */</td></tr>
89<tr class="separator:gab3d5d72e59d3055f494627b0a524926c"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4">GLFW_KEY_MINUS</a>&#160;&#160;&#160;45 /* - */</td></tr>
91<tr class="separator:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
92<tr class="memitem:ga37e296b650eab419fc474ff69033d927"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga37e296b650eab419fc474ff69033d927">GLFW_KEY_PERIOD</a>&#160;&#160;&#160;46 /* . */</td></tr>
93<tr class="separator:ga37e296b650eab419fc474ff69033d927"><td class="memSeparator" colspan="2">&#160;</td></tr>
94<tr class="memitem:gadf3d753b2d479148d711de34b83fd0db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadf3d753b2d479148d711de34b83fd0db">GLFW_KEY_SLASH</a>&#160;&#160;&#160;47 /* / */</td></tr>
95<tr class="separator:gadf3d753b2d479148d711de34b83fd0db"><td class="memSeparator" colspan="2">&#160;</td></tr>
96<tr class="memitem:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1">GLFW_KEY_0</a>&#160;&#160;&#160;48</td></tr>
97<tr class="separator:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
98<tr class="memitem:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f">GLFW_KEY_1</a>&#160;&#160;&#160;49</td></tr>
99<tr class="separator:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memSeparator" colspan="2">&#160;</td></tr>
100<tr class="memitem:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c">GLFW_KEY_2</a>&#160;&#160;&#160;50</td></tr>
101<tr class="separator:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memSeparator" colspan="2">&#160;</td></tr>
102<tr class="memitem:ga812f0273fe1a981e1fa002ae73e92271"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga812f0273fe1a981e1fa002ae73e92271">GLFW_KEY_3</a>&#160;&#160;&#160;51</td></tr>
103<tr class="separator:ga812f0273fe1a981e1fa002ae73e92271"><td class="memSeparator" colspan="2">&#160;</td></tr>
104<tr class="memitem:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356">GLFW_KEY_4</a>&#160;&#160;&#160;52</td></tr>
105<tr class="separator:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memSeparator" colspan="2">&#160;</td></tr>
106<tr class="memitem:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924">GLFW_KEY_5</a>&#160;&#160;&#160;53</td></tr>
107<tr class="separator:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memSeparator" colspan="2">&#160;</td></tr>
108<tr class="memitem:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d">GLFW_KEY_6</a>&#160;&#160;&#160;54</td></tr>
109<tr class="separator:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
110<tr class="memitem:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666">GLFW_KEY_7</a>&#160;&#160;&#160;55</td></tr>
111<tr class="separator:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memSeparator" colspan="2">&#160;</td></tr>
112<tr class="memitem:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f">GLFW_KEY_8</a>&#160;&#160;&#160;56</td></tr>
113<tr class="separator:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
114<tr class="memitem:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39">GLFW_KEY_9</a>&#160;&#160;&#160;57</td></tr>
115<tr class="separator:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d">GLFW_KEY_SEMICOLON</a>&#160;&#160;&#160;59 /* ; */</td></tr>
117<tr class="separator:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:gae1a2de47240d6664423c204bdd91bd17"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae1a2de47240d6664423c204bdd91bd17">GLFW_KEY_EQUAL</a>&#160;&#160;&#160;61 /* = */</td></tr>
119<tr class="separator:gae1a2de47240d6664423c204bdd91bd17"><td class="memSeparator" colspan="2">&#160;</td></tr>
120<tr class="memitem:ga03e842608e1ea323370889d33b8f70ff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff">GLFW_KEY_A</a>&#160;&#160;&#160;65</td></tr>
121<tr class="separator:ga03e842608e1ea323370889d33b8f70ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941">GLFW_KEY_B</a>&#160;&#160;&#160;66</td></tr>
123<tr class="separator:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:ga00ccf3475d9ee2e679480d540d554669"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga00ccf3475d9ee2e679480d540d554669">GLFW_KEY_C</a>&#160;&#160;&#160;67</td></tr>
125<tr class="separator:ga00ccf3475d9ee2e679480d540d554669"><td class="memSeparator" colspan="2">&#160;</td></tr>
126<tr class="memitem:ga011f7cdc9a654da984a2506479606933"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga011f7cdc9a654da984a2506479606933">GLFW_KEY_D</a>&#160;&#160;&#160;68</td></tr>
127<tr class="separator:ga011f7cdc9a654da984a2506479606933"><td class="memSeparator" colspan="2">&#160;</td></tr>
128<tr class="memitem:gabf48fcc3afbe69349df432b470c96ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a>&#160;&#160;&#160;69</td></tr>
129<tr class="separator:gabf48fcc3afbe69349df432b470c96ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:ga5df402e02aca08444240058fd9b42a55"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga5df402e02aca08444240058fd9b42a55">GLFW_KEY_F</a>&#160;&#160;&#160;70</td></tr>
131<tr class="separator:ga5df402e02aca08444240058fd9b42a55"><td class="memSeparator" colspan="2">&#160;</td></tr>
132<tr class="memitem:gae74ecddf7cc96104ab23989b1cdab536"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae74ecddf7cc96104ab23989b1cdab536">GLFW_KEY_G</a>&#160;&#160;&#160;71</td></tr>
133<tr class="separator:gae74ecddf7cc96104ab23989b1cdab536"><td class="memSeparator" colspan="2">&#160;</td></tr>
134<tr class="memitem:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076">GLFW_KEY_H</a>&#160;&#160;&#160;72</td></tr>
135<tr class="separator:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memSeparator" colspan="2">&#160;</td></tr>
136<tr class="memitem:ga274655c8bfe39742684ca393cf8ed093"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga274655c8bfe39742684ca393cf8ed093">GLFW_KEY_I</a>&#160;&#160;&#160;73</td></tr>
137<tr class="separator:ga274655c8bfe39742684ca393cf8ed093"><td class="memSeparator" colspan="2">&#160;</td></tr>
138<tr class="memitem:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f">GLFW_KEY_J</a>&#160;&#160;&#160;74</td></tr>
139<tr class="separator:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memSeparator" colspan="2">&#160;</td></tr>
140<tr class="memitem:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0">GLFW_KEY_K</a>&#160;&#160;&#160;75</td></tr>
141<tr class="separator:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
142<tr class="memitem:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2">GLFW_KEY_L</a>&#160;&#160;&#160;76</td></tr>
143<tr class="separator:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
144<tr class="memitem:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716">GLFW_KEY_M</a>&#160;&#160;&#160;77</td></tr>
145<tr class="separator:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memSeparator" colspan="2">&#160;</td></tr>
146<tr class="memitem:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda">GLFW_KEY_N</a>&#160;&#160;&#160;78</td></tr>
147<tr class="separator:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memSeparator" colspan="2">&#160;</td></tr>
148<tr class="memitem:gaecbbb79130df419d58dd7f09a169efe9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaecbbb79130df419d58dd7f09a169efe9">GLFW_KEY_O</a>&#160;&#160;&#160;79</td></tr>
149<tr class="separator:gaecbbb79130df419d58dd7f09a169efe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
150<tr class="memitem:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1">GLFW_KEY_P</a>&#160;&#160;&#160;80</td></tr>
151<tr class="separator:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
152<tr class="memitem:gafdd01e38b120d67cf51e348bb47f3964"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafdd01e38b120d67cf51e348bb47f3964">GLFW_KEY_Q</a>&#160;&#160;&#160;81</td></tr>
153<tr class="separator:gafdd01e38b120d67cf51e348bb47f3964"><td class="memSeparator" colspan="2">&#160;</td></tr>
154<tr class="memitem:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36">GLFW_KEY_R</a>&#160;&#160;&#160;82</td></tr>
155<tr class="separator:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
156<tr class="memitem:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9">GLFW_KEY_S</a>&#160;&#160;&#160;83</td></tr>
157<tr class="separator:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
158<tr class="memitem:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9">GLFW_KEY_T</a>&#160;&#160;&#160;84</td></tr>
159<tr class="separator:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
160<tr class="memitem:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d">GLFW_KEY_U</a>&#160;&#160;&#160;85</td></tr>
161<tr class="separator:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memSeparator" colspan="2">&#160;</td></tr>
162<tr class="memitem:ga22c7763899ecf7788862e5f90eacce6b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga22c7763899ecf7788862e5f90eacce6b">GLFW_KEY_V</a>&#160;&#160;&#160;86</td></tr>
163<tr class="separator:ga22c7763899ecf7788862e5f90eacce6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
164<tr class="memitem:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a>&#160;&#160;&#160;87</td></tr>
165<tr class="separator:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memSeparator" colspan="2">&#160;</td></tr>
166<tr class="memitem:gac1c42c0bf4192cea713c55598b06b744"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a>&#160;&#160;&#160;88</td></tr>
167<tr class="separator:gac1c42c0bf4192cea713c55598b06b744"><td class="memSeparator" colspan="2">&#160;</td></tr>
168<tr class="memitem:gafd9f115a549effdf8e372a787c360313"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafd9f115a549effdf8e372a787c360313">GLFW_KEY_Y</a>&#160;&#160;&#160;89</td></tr>
169<tr class="separator:gafd9f115a549effdf8e372a787c360313"><td class="memSeparator" colspan="2">&#160;</td></tr>
170<tr class="memitem:gac489e208c26afda8d4938ed88718760a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac489e208c26afda8d4938ed88718760a">GLFW_KEY_Z</a>&#160;&#160;&#160;90</td></tr>
171<tr class="separator:gac489e208c26afda8d4938ed88718760a"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:gad1c8d9adac53925276ecb1d592511d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1c8d9adac53925276ecb1d592511d8a">GLFW_KEY_LEFT_BRACKET</a>&#160;&#160;&#160;91 /* [ */</td></tr>
173<tr class="separator:gad1c8d9adac53925276ecb1d592511d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
174<tr class="memitem:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1">GLFW_KEY_BACKSLASH</a>&#160;&#160;&#160;92 /* \ */</td></tr>
175<tr class="separator:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
176<tr class="memitem:ga86ef225fd6a66404caae71044cdd58d8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86ef225fd6a66404caae71044cdd58d8">GLFW_KEY_RIGHT_BRACKET</a>&#160;&#160;&#160;93 /* ] */</td></tr>
177<tr class="separator:ga86ef225fd6a66404caae71044cdd58d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668">GLFW_KEY_GRAVE_ACCENT</a>&#160;&#160;&#160;96 /* ` */</td></tr>
179<tr class="separator:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memSeparator" colspan="2">&#160;</td></tr>
180<tr class="memitem:gadc78dad3dab76bcd4b5c20114052577a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc78dad3dab76bcd4b5c20114052577a">GLFW_KEY_WORLD_1</a>&#160;&#160;&#160;161 /* non-US #1 */</td></tr>
181<tr class="separator:gadc78dad3dab76bcd4b5c20114052577a"><td class="memSeparator" colspan="2">&#160;</td></tr>
182<tr class="memitem:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e">GLFW_KEY_WORLD_2</a>&#160;&#160;&#160;162 /* non-US #2 */</td></tr>
183<tr class="separator:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
184<tr class="memitem:gaac6596c350b635c245113b81c2123b93"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a>&#160;&#160;&#160;256</td></tr>
185<tr class="separator:gaac6596c350b635c245113b81c2123b93"><td class="memSeparator" colspan="2">&#160;</td></tr>
186<tr class="memitem:ga9555a92ecbecdbc1f3435219c571d667"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9555a92ecbecdbc1f3435219c571d667">GLFW_KEY_ENTER</a>&#160;&#160;&#160;257</td></tr>
187<tr class="separator:ga9555a92ecbecdbc1f3435219c571d667"><td class="memSeparator" colspan="2">&#160;</td></tr>
188<tr class="memitem:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df">GLFW_KEY_TAB</a>&#160;&#160;&#160;258</td></tr>
189<tr class="separator:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memSeparator" colspan="2">&#160;</td></tr>
190<tr class="memitem:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635">GLFW_KEY_BACKSPACE</a>&#160;&#160;&#160;259</td></tr>
191<tr class="separator:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memSeparator" colspan="2">&#160;</td></tr>
192<tr class="memitem:ga373ac7365435d6b0eb1068f470e34f47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga373ac7365435d6b0eb1068f470e34f47">GLFW_KEY_INSERT</a>&#160;&#160;&#160;260</td></tr>
193<tr class="separator:ga373ac7365435d6b0eb1068f470e34f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
194<tr class="memitem:gadb111e4df74b8a715f2c05dad58d2682"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadb111e4df74b8a715f2c05dad58d2682">GLFW_KEY_DELETE</a>&#160;&#160;&#160;261</td></tr>
195<tr class="separator:gadb111e4df74b8a715f2c05dad58d2682"><td class="memSeparator" colspan="2">&#160;</td></tr>
196<tr class="memitem:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac">GLFW_KEY_RIGHT</a>&#160;&#160;&#160;262</td></tr>
197<tr class="separator:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
198<tr class="memitem:gae12a010d33c309a67ab9460c51eb2462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae12a010d33c309a67ab9460c51eb2462">GLFW_KEY_LEFT</a>&#160;&#160;&#160;263</td></tr>
199<tr class="separator:gae12a010d33c309a67ab9460c51eb2462"><td class="memSeparator" colspan="2">&#160;</td></tr>
200<tr class="memitem:gae2e3958c71595607416aa7bf082be2f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae2e3958c71595607416aa7bf082be2f9">GLFW_KEY_DOWN</a>&#160;&#160;&#160;264</td></tr>
201<tr class="separator:gae2e3958c71595607416aa7bf082be2f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
202<tr class="memitem:ga2f3342b194020d3544c67e3506b6f144"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2f3342b194020d3544c67e3506b6f144">GLFW_KEY_UP</a>&#160;&#160;&#160;265</td></tr>
203<tr class="separator:ga2f3342b194020d3544c67e3506b6f144"><td class="memSeparator" colspan="2">&#160;</td></tr>
204<tr class="memitem:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586">GLFW_KEY_PAGE_UP</a>&#160;&#160;&#160;266</td></tr>
205<tr class="separator:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memSeparator" colspan="2">&#160;</td></tr>
206<tr class="memitem:gaee0a8fa442001cc2147812f84b59041c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaee0a8fa442001cc2147812f84b59041c">GLFW_KEY_PAGE_DOWN</a>&#160;&#160;&#160;267</td></tr>
207<tr class="separator:gaee0a8fa442001cc2147812f84b59041c"><td class="memSeparator" colspan="2">&#160;</td></tr>
208<tr class="memitem:ga41452c7287195d481e43207318c126a7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga41452c7287195d481e43207318c126a7">GLFW_KEY_HOME</a>&#160;&#160;&#160;268</td></tr>
209<tr class="separator:ga41452c7287195d481e43207318c126a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
210<tr class="memitem:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9">GLFW_KEY_END</a>&#160;&#160;&#160;269</td></tr>
211<tr class="separator:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
212<tr class="memitem:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672">GLFW_KEY_CAPS_LOCK</a>&#160;&#160;&#160;280</td></tr>
213<tr class="separator:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memSeparator" colspan="2">&#160;</td></tr>
214<tr class="memitem:gaf622b63b9537f7084c2ab649b8365630"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf622b63b9537f7084c2ab649b8365630">GLFW_KEY_SCROLL_LOCK</a>&#160;&#160;&#160;281</td></tr>
215<tr class="separator:gaf622b63b9537f7084c2ab649b8365630"><td class="memSeparator" colspan="2">&#160;</td></tr>
216<tr class="memitem:ga3946edc362aeff213b2be6304296cf43"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3946edc362aeff213b2be6304296cf43">GLFW_KEY_NUM_LOCK</a>&#160;&#160;&#160;282</td></tr>
217<tr class="separator:ga3946edc362aeff213b2be6304296cf43"><td class="memSeparator" colspan="2">&#160;</td></tr>
218<tr class="memitem:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642">GLFW_KEY_PRINT_SCREEN</a>&#160;&#160;&#160;283</td></tr>
219<tr class="separator:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memSeparator" colspan="2">&#160;</td></tr>
220<tr class="memitem:ga8116b9692d87382afb5849b6d8907f18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8116b9692d87382afb5849b6d8907f18">GLFW_KEY_PAUSE</a>&#160;&#160;&#160;284</td></tr>
221<tr class="separator:ga8116b9692d87382afb5849b6d8907f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
222<tr class="memitem:gafb8d66c573acf22e364049477dcbea30"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb8d66c573acf22e364049477dcbea30">GLFW_KEY_F1</a>&#160;&#160;&#160;290</td></tr>
223<tr class="separator:gafb8d66c573acf22e364049477dcbea30"><td class="memSeparator" colspan="2">&#160;</td></tr>
224<tr class="memitem:ga0900750aff94889b940f5e428c07daee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0900750aff94889b940f5e428c07daee">GLFW_KEY_F2</a>&#160;&#160;&#160;291</td></tr>
225<tr class="separator:ga0900750aff94889b940f5e428c07daee"><td class="memSeparator" colspan="2">&#160;</td></tr>
226<tr class="memitem:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015">GLFW_KEY_F3</a>&#160;&#160;&#160;292</td></tr>
227<tr class="separator:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memSeparator" colspan="2">&#160;</td></tr>
228<tr class="memitem:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6">GLFW_KEY_F4</a>&#160;&#160;&#160;293</td></tr>
229<tr class="separator:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
230<tr class="memitem:gaf258dda9947daa428377938ed577c8c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf258dda9947daa428377938ed577c8c2">GLFW_KEY_F5</a>&#160;&#160;&#160;294</td></tr>
231<tr class="separator:gaf258dda9947daa428377938ed577c8c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
232<tr class="memitem:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d">GLFW_KEY_F6</a>&#160;&#160;&#160;295</td></tr>
233<tr class="separator:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
234<tr class="memitem:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a">GLFW_KEY_F7</a>&#160;&#160;&#160;296</td></tr>
235<tr class="separator:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memSeparator" colspan="2">&#160;</td></tr>
236<tr class="memitem:gac9d39390336ae14e4a93e295de43c7e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac9d39390336ae14e4a93e295de43c7e8">GLFW_KEY_F8</a>&#160;&#160;&#160;297</td></tr>
237<tr class="separator:gac9d39390336ae14e4a93e295de43c7e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
238<tr class="memitem:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851">GLFW_KEY_F9</a>&#160;&#160;&#160;298</td></tr>
239<tr class="separator:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memSeparator" colspan="2">&#160;</td></tr>
240<tr class="memitem:ga718d11d2f7d57471a2f6a894235995b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga718d11d2f7d57471a2f6a894235995b1">GLFW_KEY_F10</a>&#160;&#160;&#160;299</td></tr>
241<tr class="separator:ga718d11d2f7d57471a2f6a894235995b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
242<tr class="memitem:ga0bc04b11627e7d69339151e7306b2832"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0bc04b11627e7d69339151e7306b2832">GLFW_KEY_F11</a>&#160;&#160;&#160;300</td></tr>
243<tr class="separator:ga0bc04b11627e7d69339151e7306b2832"><td class="memSeparator" colspan="2">&#160;</td></tr>
244<tr class="memitem:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2">GLFW_KEY_F12</a>&#160;&#160;&#160;301</td></tr>
245<tr class="separator:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
246<tr class="memitem:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b">GLFW_KEY_F13</a>&#160;&#160;&#160;302</td></tr>
247<tr class="separator:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
248<tr class="memitem:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f">GLFW_KEY_F14</a>&#160;&#160;&#160;303</td></tr>
249<tr class="separator:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
250<tr class="memitem:ga7f70970db6e8be1794da8516a6d14058"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f70970db6e8be1794da8516a6d14058">GLFW_KEY_F15</a>&#160;&#160;&#160;304</td></tr>
251<tr class="separator:ga7f70970db6e8be1794da8516a6d14058"><td class="memSeparator" colspan="2">&#160;</td></tr>
252<tr class="memitem:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27">GLFW_KEY_F16</a>&#160;&#160;&#160;305</td></tr>
253<tr class="separator:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
254<tr class="memitem:ga972ce5c365e2394b36104b0e3125c748"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga972ce5c365e2394b36104b0e3125c748">GLFW_KEY_F17</a>&#160;&#160;&#160;306</td></tr>
255<tr class="separator:ga972ce5c365e2394b36104b0e3125c748"><td class="memSeparator" colspan="2">&#160;</td></tr>
256<tr class="memitem:gaebf6391058d5566601e357edc5ea737c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebf6391058d5566601e357edc5ea737c">GLFW_KEY_F18</a>&#160;&#160;&#160;307</td></tr>
257<tr class="separator:gaebf6391058d5566601e357edc5ea737c"><td class="memSeparator" colspan="2">&#160;</td></tr>
258<tr class="memitem:gaec011d9ba044058cb54529da710e9791"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaec011d9ba044058cb54529da710e9791">GLFW_KEY_F19</a>&#160;&#160;&#160;308</td></tr>
259<tr class="separator:gaec011d9ba044058cb54529da710e9791"><td class="memSeparator" colspan="2">&#160;</td></tr>
260<tr class="memitem:ga82b9c721ada04cd5ca8de767da38022f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga82b9c721ada04cd5ca8de767da38022f">GLFW_KEY_F20</a>&#160;&#160;&#160;309</td></tr>
261<tr class="separator:ga82b9c721ada04cd5ca8de767da38022f"><td class="memSeparator" colspan="2">&#160;</td></tr>
262<tr class="memitem:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f">GLFW_KEY_F21</a>&#160;&#160;&#160;310</td></tr>
263<tr class="separator:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memSeparator" colspan="2">&#160;</td></tr>
264<tr class="memitem:ga90960bd2a155f2b09675324d3dff1565"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90960bd2a155f2b09675324d3dff1565">GLFW_KEY_F22</a>&#160;&#160;&#160;311</td></tr>
265<tr class="separator:ga90960bd2a155f2b09675324d3dff1565"><td class="memSeparator" colspan="2">&#160;</td></tr>
266<tr class="memitem:ga43c21099aac10952d1be909a8ddee4d5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga43c21099aac10952d1be909a8ddee4d5">GLFW_KEY_F23</a>&#160;&#160;&#160;312</td></tr>
267<tr class="separator:ga43c21099aac10952d1be909a8ddee4d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
268<tr class="memitem:ga8150374677b5bed3043408732152dea2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8150374677b5bed3043408732152dea2">GLFW_KEY_F24</a>&#160;&#160;&#160;313</td></tr>
269<tr class="separator:ga8150374677b5bed3043408732152dea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
270<tr class="memitem:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199">GLFW_KEY_F25</a>&#160;&#160;&#160;314</td></tr>
271<tr class="separator:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memSeparator" colspan="2">&#160;</td></tr>
272<tr class="memitem:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d">GLFW_KEY_KP_0</a>&#160;&#160;&#160;320</td></tr>
273<tr class="separator:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memSeparator" colspan="2">&#160;</td></tr>
274<tr class="memitem:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3">GLFW_KEY_KP_1</a>&#160;&#160;&#160;321</td></tr>
275<tr class="separator:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
276<tr class="memitem:gaf82d5a802ab8213c72653d7480c16f13"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf82d5a802ab8213c72653d7480c16f13">GLFW_KEY_KP_2</a>&#160;&#160;&#160;322</td></tr>
277<tr class="separator:gaf82d5a802ab8213c72653d7480c16f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
278<tr class="memitem:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2">GLFW_KEY_KP_3</a>&#160;&#160;&#160;323</td></tr>
279<tr class="separator:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
280<tr class="memitem:gada7ec86778b85e0b4de0beea72234aea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gada7ec86778b85e0b4de0beea72234aea">GLFW_KEY_KP_4</a>&#160;&#160;&#160;324</td></tr>
281<tr class="separator:gada7ec86778b85e0b4de0beea72234aea"><td class="memSeparator" colspan="2">&#160;</td></tr>
282<tr class="memitem:ga9a5be274434866c51738cafbb6d26b45"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9a5be274434866c51738cafbb6d26b45">GLFW_KEY_KP_5</a>&#160;&#160;&#160;325</td></tr>
283<tr class="separator:ga9a5be274434866c51738cafbb6d26b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
284<tr class="memitem:gafc141b0f8450519084c01092a3157faa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafc141b0f8450519084c01092a3157faa">GLFW_KEY_KP_6</a>&#160;&#160;&#160;326</td></tr>
285<tr class="separator:gafc141b0f8450519084c01092a3157faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
286<tr class="memitem:ga8882f411f05d04ec77a9563974bbfa53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8882f411f05d04ec77a9563974bbfa53">GLFW_KEY_KP_7</a>&#160;&#160;&#160;327</td></tr>
287<tr class="separator:ga8882f411f05d04ec77a9563974bbfa53"><td class="memSeparator" colspan="2">&#160;</td></tr>
288<tr class="memitem:gab2ea2e6a12f89d315045af520ac78cec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab2ea2e6a12f89d315045af520ac78cec">GLFW_KEY_KP_8</a>&#160;&#160;&#160;328</td></tr>
289<tr class="separator:gab2ea2e6a12f89d315045af520ac78cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
290<tr class="memitem:gafb21426b630ed4fcc084868699ba74c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb21426b630ed4fcc084868699ba74c1">GLFW_KEY_KP_9</a>&#160;&#160;&#160;329</td></tr>
291<tr class="separator:gafb21426b630ed4fcc084868699ba74c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
292<tr class="memitem:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b">GLFW_KEY_KP_DECIMAL</a>&#160;&#160;&#160;330</td></tr>
293<tr class="separator:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memSeparator" colspan="2">&#160;</td></tr>
294<tr class="memitem:gabca1733780a273d549129ad0f250d1e5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabca1733780a273d549129ad0f250d1e5">GLFW_KEY_KP_DIVIDE</a>&#160;&#160;&#160;331</td></tr>
295<tr class="separator:gabca1733780a273d549129ad0f250d1e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
296<tr class="memitem:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef">GLFW_KEY_KP_MULTIPLY</a>&#160;&#160;&#160;332</td></tr>
297<tr class="separator:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
298<tr class="memitem:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236">GLFW_KEY_KP_SUBTRACT</a>&#160;&#160;&#160;333</td></tr>
299<tr class="separator:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memSeparator" colspan="2">&#160;</td></tr>
300<tr class="memitem:gad09c7c98acc79e89aa6a0a91275becac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad09c7c98acc79e89aa6a0a91275becac">GLFW_KEY_KP_ADD</a>&#160;&#160;&#160;334</td></tr>
301<tr class="separator:gad09c7c98acc79e89aa6a0a91275becac"><td class="memSeparator" colspan="2">&#160;</td></tr>
302<tr class="memitem:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf">GLFW_KEY_KP_ENTER</a>&#160;&#160;&#160;335</td></tr>
303<tr class="separator:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
304<tr class="memitem:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97">GLFW_KEY_KP_EQUAL</a>&#160;&#160;&#160;336</td></tr>
305<tr class="separator:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memSeparator" colspan="2">&#160;</td></tr>
306<tr class="memitem:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6">GLFW_KEY_LEFT_SHIFT</a>&#160;&#160;&#160;340</td></tr>
307<tr class="separator:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
308<tr class="memitem:ga9f97b743e81460ac4b2deddecd10a464"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9f97b743e81460ac4b2deddecd10a464">GLFW_KEY_LEFT_CONTROL</a>&#160;&#160;&#160;341</td></tr>
309<tr class="separator:ga9f97b743e81460ac4b2deddecd10a464"><td class="memSeparator" colspan="2">&#160;</td></tr>
310<tr class="memitem:ga7f27dabf63a7789daa31e1c96790219b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f27dabf63a7789daa31e1c96790219b">GLFW_KEY_LEFT_ALT</a>&#160;&#160;&#160;342</td></tr>
311<tr class="separator:ga7f27dabf63a7789daa31e1c96790219b"><td class="memSeparator" colspan="2">&#160;</td></tr>
312<tr class="memitem:gafb1207c91997fc295afd1835fbc5641a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb1207c91997fc295afd1835fbc5641a">GLFW_KEY_LEFT_SUPER</a>&#160;&#160;&#160;343</td></tr>
313<tr class="separator:gafb1207c91997fc295afd1835fbc5641a"><td class="memSeparator" colspan="2">&#160;</td></tr>
314<tr class="memitem:gaffca36b99c9dce1a19cb9befbadce691"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaffca36b99c9dce1a19cb9befbadce691">GLFW_KEY_RIGHT_SHIFT</a>&#160;&#160;&#160;344</td></tr>
315<tr class="separator:gaffca36b99c9dce1a19cb9befbadce691"><td class="memSeparator" colspan="2">&#160;</td></tr>
316<tr class="memitem:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519">GLFW_KEY_RIGHT_CONTROL</a>&#160;&#160;&#160;345</td></tr>
317<tr class="separator:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memSeparator" colspan="2">&#160;</td></tr>
318<tr class="memitem:ga687b38009131cfdd07a8d05fff8fa446"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga687b38009131cfdd07a8d05fff8fa446">GLFW_KEY_RIGHT_ALT</a>&#160;&#160;&#160;346</td></tr>
319<tr class="separator:ga687b38009131cfdd07a8d05fff8fa446"><td class="memSeparator" colspan="2">&#160;</td></tr>
320<tr class="memitem:gad4547a3e8e247594acb60423fe6502db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4547a3e8e247594acb60423fe6502db">GLFW_KEY_RIGHT_SUPER</a>&#160;&#160;&#160;347</td></tr>
321<tr class="separator:gad4547a3e8e247594acb60423fe6502db"><td class="memSeparator" colspan="2">&#160;</td></tr>
322<tr class="memitem:ga9845be48a745fc232045c9ec174d8820"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a>&#160;&#160;&#160;348</td></tr>
323<tr class="separator:ga9845be48a745fc232045c9ec174d8820"><td class="memSeparator" colspan="2">&#160;</td></tr>
324<tr class="memitem:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789">GLFW_KEY_LAST</a>&#160;&#160;&#160;<a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a></td></tr>
325<tr class="separator:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memSeparator" colspan="2">&#160;</td></tr>
326</table>
327<h2 class="groupheader">Macro Definition Documentation</h2>
328<a id="ga99aacc875b6b27a072552631e13775c7" name="ga99aacc875b6b27a072552631e13775c7"></a>
329<h2 class="memtitle"><span class="permalink"><a href="#ga99aacc875b6b27a072552631e13775c7">&#9670;&nbsp;</a></span>GLFW_KEY_UNKNOWN</h2>
330
331<div class="memitem">
332<div class="memproto">
333 <table class="memname">
334 <tr>
335 <td class="memname">#define GLFW_KEY_UNKNOWN&#160;&#160;&#160;-1</td>
336 </tr>
337 </table>
338</div><div class="memdoc">
339
340</div>
341</div>
342<a id="gaddb2c23772b97fd7e26e8ee66f1ad014" name="gaddb2c23772b97fd7e26e8ee66f1ad014"></a>
343<h2 class="memtitle"><span class="permalink"><a href="#gaddb2c23772b97fd7e26e8ee66f1ad014">&#9670;&nbsp;</a></span>GLFW_KEY_SPACE</h2>
344
345<div class="memitem">
346<div class="memproto">
347 <table class="memname">
348 <tr>
349 <td class="memname">#define GLFW_KEY_SPACE&#160;&#160;&#160;32</td>
350 </tr>
351 </table>
352</div><div class="memdoc">
353
354</div>
355</div>
356<a id="ga6059b0b048ba6980b6107fffbd3b4b24" name="ga6059b0b048ba6980b6107fffbd3b4b24"></a>
357<h2 class="memtitle"><span class="permalink"><a href="#ga6059b0b048ba6980b6107fffbd3b4b24">&#9670;&nbsp;</a></span>GLFW_KEY_APOSTROPHE</h2>
358
359<div class="memitem">
360<div class="memproto">
361 <table class="memname">
362 <tr>
363 <td class="memname">#define GLFW_KEY_APOSTROPHE&#160;&#160;&#160;39 /* ' */</td>
364 </tr>
365 </table>
366</div><div class="memdoc">
367
368</div>
369</div>
370<a id="gab3d5d72e59d3055f494627b0a524926c" name="gab3d5d72e59d3055f494627b0a524926c"></a>
371<h2 class="memtitle"><span class="permalink"><a href="#gab3d5d72e59d3055f494627b0a524926c">&#9670;&nbsp;</a></span>GLFW_KEY_COMMA</h2>
372
373<div class="memitem">
374<div class="memproto">
375 <table class="memname">
376 <tr>
377 <td class="memname">#define GLFW_KEY_COMMA&#160;&#160;&#160;44 /* , */</td>
378 </tr>
379 </table>
380</div><div class="memdoc">
381
382</div>
383</div>
384<a id="gac556b360f7f6fca4b70ba0aecf313fd4" name="gac556b360f7f6fca4b70ba0aecf313fd4"></a>
385<h2 class="memtitle"><span class="permalink"><a href="#gac556b360f7f6fca4b70ba0aecf313fd4">&#9670;&nbsp;</a></span>GLFW_KEY_MINUS</h2>
386
387<div class="memitem">
388<div class="memproto">
389 <table class="memname">
390 <tr>
391 <td class="memname">#define GLFW_KEY_MINUS&#160;&#160;&#160;45 /* - */</td>
392 </tr>
393 </table>
394</div><div class="memdoc">
395
396</div>
397</div>
398<a id="ga37e296b650eab419fc474ff69033d927" name="ga37e296b650eab419fc474ff69033d927"></a>
399<h2 class="memtitle"><span class="permalink"><a href="#ga37e296b650eab419fc474ff69033d927">&#9670;&nbsp;</a></span>GLFW_KEY_PERIOD</h2>
400
401<div class="memitem">
402<div class="memproto">
403 <table class="memname">
404 <tr>
405 <td class="memname">#define GLFW_KEY_PERIOD&#160;&#160;&#160;46 /* . */</td>
406 </tr>
407 </table>
408</div><div class="memdoc">
409
410</div>
411</div>
412<a id="gadf3d753b2d479148d711de34b83fd0db" name="gadf3d753b2d479148d711de34b83fd0db"></a>
413<h2 class="memtitle"><span class="permalink"><a href="#gadf3d753b2d479148d711de34b83fd0db">&#9670;&nbsp;</a></span>GLFW_KEY_SLASH</h2>
414
415<div class="memitem">
416<div class="memproto">
417 <table class="memname">
418 <tr>
419 <td class="memname">#define GLFW_KEY_SLASH&#160;&#160;&#160;47 /* / */</td>
420 </tr>
421 </table>
422</div><div class="memdoc">
423
424</div>
425</div>
426<a id="ga50391730e9d7112ad4fd42d0bd1597c1" name="ga50391730e9d7112ad4fd42d0bd1597c1"></a>
427<h2 class="memtitle"><span class="permalink"><a href="#ga50391730e9d7112ad4fd42d0bd1597c1">&#9670;&nbsp;</a></span>GLFW_KEY_0</h2>
428
429<div class="memitem">
430<div class="memproto">
431 <table class="memname">
432 <tr>
433 <td class="memname">#define GLFW_KEY_0&#160;&#160;&#160;48</td>
434 </tr>
435 </table>
436</div><div class="memdoc">
437
438</div>
439</div>
440<a id="ga05e4cae9ddb8d40cf6d82c8f11f2502f" name="ga05e4cae9ddb8d40cf6d82c8f11f2502f"></a>
441<h2 class="memtitle"><span class="permalink"><a href="#ga05e4cae9ddb8d40cf6d82c8f11f2502f">&#9670;&nbsp;</a></span>GLFW_KEY_1</h2>
442
443<div class="memitem">
444<div class="memproto">
445 <table class="memname">
446 <tr>
447 <td class="memname">#define GLFW_KEY_1&#160;&#160;&#160;49</td>
448 </tr>
449 </table>
450</div><div class="memdoc">
451
452</div>
453</div>
454<a id="gadc8e66b3a4c4b5c39ad1305cf852863c" name="gadc8e66b3a4c4b5c39ad1305cf852863c"></a>
455<h2 class="memtitle"><span class="permalink"><a href="#gadc8e66b3a4c4b5c39ad1305cf852863c">&#9670;&nbsp;</a></span>GLFW_KEY_2</h2>
456
457<div class="memitem">
458<div class="memproto">
459 <table class="memname">
460 <tr>
461 <td class="memname">#define GLFW_KEY_2&#160;&#160;&#160;50</td>
462 </tr>
463 </table>
464</div><div class="memdoc">
465
466</div>
467</div>
468<a id="ga812f0273fe1a981e1fa002ae73e92271" name="ga812f0273fe1a981e1fa002ae73e92271"></a>
469<h2 class="memtitle"><span class="permalink"><a href="#ga812f0273fe1a981e1fa002ae73e92271">&#9670;&nbsp;</a></span>GLFW_KEY_3</h2>
470
471<div class="memitem">
472<div class="memproto">
473 <table class="memname">
474 <tr>
475 <td class="memname">#define GLFW_KEY_3&#160;&#160;&#160;51</td>
476 </tr>
477 </table>
478</div><div class="memdoc">
479
480</div>
481</div>
482<a id="ga9e14b6975a9cc8f66cdd5cb3d3861356" name="ga9e14b6975a9cc8f66cdd5cb3d3861356"></a>
483<h2 class="memtitle"><span class="permalink"><a href="#ga9e14b6975a9cc8f66cdd5cb3d3861356">&#9670;&nbsp;</a></span>GLFW_KEY_4</h2>
484
485<div class="memitem">
486<div class="memproto">
487 <table class="memname">
488 <tr>
489 <td class="memname">#define GLFW_KEY_4&#160;&#160;&#160;52</td>
490 </tr>
491 </table>
492</div><div class="memdoc">
493
494</div>
495</div>
496<a id="ga4d74ddaa5d4c609993b4d4a15736c924" name="ga4d74ddaa5d4c609993b4d4a15736c924"></a>
497<h2 class="memtitle"><span class="permalink"><a href="#ga4d74ddaa5d4c609993b4d4a15736c924">&#9670;&nbsp;</a></span>GLFW_KEY_5</h2>
498
499<div class="memitem">
500<div class="memproto">
501 <table class="memname">
502 <tr>
503 <td class="memname">#define GLFW_KEY_5&#160;&#160;&#160;53</td>
504 </tr>
505 </table>
506</div><div class="memdoc">
507
508</div>
509</div>
510<a id="ga9ea4ab80c313a227b14d0a7c6f810b5d" name="ga9ea4ab80c313a227b14d0a7c6f810b5d"></a>
511<h2 class="memtitle"><span class="permalink"><a href="#ga9ea4ab80c313a227b14d0a7c6f810b5d">&#9670;&nbsp;</a></span>GLFW_KEY_6</h2>
512
513<div class="memitem">
514<div class="memproto">
515 <table class="memname">
516 <tr>
517 <td class="memname">#define GLFW_KEY_6&#160;&#160;&#160;54</td>
518 </tr>
519 </table>
520</div><div class="memdoc">
521
522</div>
523</div>
524<a id="gab79b1cfae7bd630cfc4604c1f263c666" name="gab79b1cfae7bd630cfc4604c1f263c666"></a>
525<h2 class="memtitle"><span class="permalink"><a href="#gab79b1cfae7bd630cfc4604c1f263c666">&#9670;&nbsp;</a></span>GLFW_KEY_7</h2>
526
527<div class="memitem">
528<div class="memproto">
529 <table class="memname">
530 <tr>
531 <td class="memname">#define GLFW_KEY_7&#160;&#160;&#160;55</td>
532 </tr>
533 </table>
534</div><div class="memdoc">
535
536</div>
537</div>
538<a id="gadeaa109a0f9f5afc94fe4a108e686f6f" name="gadeaa109a0f9f5afc94fe4a108e686f6f"></a>
539<h2 class="memtitle"><span class="permalink"><a href="#gadeaa109a0f9f5afc94fe4a108e686f6f">&#9670;&nbsp;</a></span>GLFW_KEY_8</h2>
540
541<div class="memitem">
542<div class="memproto">
543 <table class="memname">
544 <tr>
545 <td class="memname">#define GLFW_KEY_8&#160;&#160;&#160;56</td>
546 </tr>
547 </table>
548</div><div class="memdoc">
549
550</div>
551</div>
552<a id="ga2924cb5349ebbf97c8987f3521c44f39" name="ga2924cb5349ebbf97c8987f3521c44f39"></a>
553<h2 class="memtitle"><span class="permalink"><a href="#ga2924cb5349ebbf97c8987f3521c44f39">&#9670;&nbsp;</a></span>GLFW_KEY_9</h2>
554
555<div class="memitem">
556<div class="memproto">
557 <table class="memname">
558 <tr>
559 <td class="memname">#define GLFW_KEY_9&#160;&#160;&#160;57</td>
560 </tr>
561 </table>
562</div><div class="memdoc">
563
564</div>
565</div>
566<a id="ga84233de9ee5bb3e8788a5aa07d80af7d" name="ga84233de9ee5bb3e8788a5aa07d80af7d"></a>
567<h2 class="memtitle"><span class="permalink"><a href="#ga84233de9ee5bb3e8788a5aa07d80af7d">&#9670;&nbsp;</a></span>GLFW_KEY_SEMICOLON</h2>
568
569<div class="memitem">
570<div class="memproto">
571 <table class="memname">
572 <tr>
573 <td class="memname">#define GLFW_KEY_SEMICOLON&#160;&#160;&#160;59 /* ; */</td>
574 </tr>
575 </table>
576</div><div class="memdoc">
577
578</div>
579</div>
580<a id="gae1a2de47240d6664423c204bdd91bd17" name="gae1a2de47240d6664423c204bdd91bd17"></a>
581<h2 class="memtitle"><span class="permalink"><a href="#gae1a2de47240d6664423c204bdd91bd17">&#9670;&nbsp;</a></span>GLFW_KEY_EQUAL</h2>
582
583<div class="memitem">
584<div class="memproto">
585 <table class="memname">
586 <tr>
587 <td class="memname">#define GLFW_KEY_EQUAL&#160;&#160;&#160;61 /* = */</td>
588 </tr>
589 </table>
590</div><div class="memdoc">
591
592</div>
593</div>
594<a id="ga03e842608e1ea323370889d33b8f70ff" name="ga03e842608e1ea323370889d33b8f70ff"></a>
595<h2 class="memtitle"><span class="permalink"><a href="#ga03e842608e1ea323370889d33b8f70ff">&#9670;&nbsp;</a></span>GLFW_KEY_A</h2>
596
597<div class="memitem">
598<div class="memproto">
599 <table class="memname">
600 <tr>
601 <td class="memname">#define GLFW_KEY_A&#160;&#160;&#160;65</td>
602 </tr>
603 </table>
604</div><div class="memdoc">
605
606</div>
607</div>
608<a id="ga8e3fb647ff3aca9e8dbf14fe66332941" name="ga8e3fb647ff3aca9e8dbf14fe66332941"></a>
609<h2 class="memtitle"><span class="permalink"><a href="#ga8e3fb647ff3aca9e8dbf14fe66332941">&#9670;&nbsp;</a></span>GLFW_KEY_B</h2>
610
611<div class="memitem">
612<div class="memproto">
613 <table class="memname">
614 <tr>
615 <td class="memname">#define GLFW_KEY_B&#160;&#160;&#160;66</td>
616 </tr>
617 </table>
618</div><div class="memdoc">
619
620</div>
621</div>
622<a id="ga00ccf3475d9ee2e679480d540d554669" name="ga00ccf3475d9ee2e679480d540d554669"></a>
623<h2 class="memtitle"><span class="permalink"><a href="#ga00ccf3475d9ee2e679480d540d554669">&#9670;&nbsp;</a></span>GLFW_KEY_C</h2>
624
625<div class="memitem">
626<div class="memproto">
627 <table class="memname">
628 <tr>
629 <td class="memname">#define GLFW_KEY_C&#160;&#160;&#160;67</td>
630 </tr>
631 </table>
632</div><div class="memdoc">
633
634</div>
635</div>
636<a id="ga011f7cdc9a654da984a2506479606933" name="ga011f7cdc9a654da984a2506479606933"></a>
637<h2 class="memtitle"><span class="permalink"><a href="#ga011f7cdc9a654da984a2506479606933">&#9670;&nbsp;</a></span>GLFW_KEY_D</h2>
638
639<div class="memitem">
640<div class="memproto">
641 <table class="memname">
642 <tr>
643 <td class="memname">#define GLFW_KEY_D&#160;&#160;&#160;68</td>
644 </tr>
645 </table>
646</div><div class="memdoc">
647
648</div>
649</div>
650<a id="gabf48fcc3afbe69349df432b470c96ef2" name="gabf48fcc3afbe69349df432b470c96ef2"></a>
651<h2 class="memtitle"><span class="permalink"><a href="#gabf48fcc3afbe69349df432b470c96ef2">&#9670;&nbsp;</a></span>GLFW_KEY_E</h2>
652
653<div class="memitem">
654<div class="memproto">
655 <table class="memname">
656 <tr>
657 <td class="memname">#define GLFW_KEY_E&#160;&#160;&#160;69</td>
658 </tr>
659 </table>
660</div><div class="memdoc">
661
662</div>
663</div>
664<a id="ga5df402e02aca08444240058fd9b42a55" name="ga5df402e02aca08444240058fd9b42a55"></a>
665<h2 class="memtitle"><span class="permalink"><a href="#ga5df402e02aca08444240058fd9b42a55">&#9670;&nbsp;</a></span>GLFW_KEY_F</h2>
666
667<div class="memitem">
668<div class="memproto">
669 <table class="memname">
670 <tr>
671 <td class="memname">#define GLFW_KEY_F&#160;&#160;&#160;70</td>
672 </tr>
673 </table>
674</div><div class="memdoc">
675
676</div>
677</div>
678<a id="gae74ecddf7cc96104ab23989b1cdab536" name="gae74ecddf7cc96104ab23989b1cdab536"></a>
679<h2 class="memtitle"><span class="permalink"><a href="#gae74ecddf7cc96104ab23989b1cdab536">&#9670;&nbsp;</a></span>GLFW_KEY_G</h2>
680
681<div class="memitem">
682<div class="memproto">
683 <table class="memname">
684 <tr>
685 <td class="memname">#define GLFW_KEY_G&#160;&#160;&#160;71</td>
686 </tr>
687 </table>
688</div><div class="memdoc">
689
690</div>
691</div>
692<a id="gad4cc98fc8f35f015d9e2fb94bf136076" name="gad4cc98fc8f35f015d9e2fb94bf136076"></a>
693<h2 class="memtitle"><span class="permalink"><a href="#gad4cc98fc8f35f015d9e2fb94bf136076">&#9670;&nbsp;</a></span>GLFW_KEY_H</h2>
694
695<div class="memitem">
696<div class="memproto">
697 <table class="memname">
698 <tr>
699 <td class="memname">#define GLFW_KEY_H&#160;&#160;&#160;72</td>
700 </tr>
701 </table>
702</div><div class="memdoc">
703
704</div>
705</div>
706<a id="ga274655c8bfe39742684ca393cf8ed093" name="ga274655c8bfe39742684ca393cf8ed093"></a>
707<h2 class="memtitle"><span class="permalink"><a href="#ga274655c8bfe39742684ca393cf8ed093">&#9670;&nbsp;</a></span>GLFW_KEY_I</h2>
708
709<div class="memitem">
710<div class="memproto">
711 <table class="memname">
712 <tr>
713 <td class="memname">#define GLFW_KEY_I&#160;&#160;&#160;73</td>
714 </tr>
715 </table>
716</div><div class="memdoc">
717
718</div>
719</div>
720<a id="ga65ff2aedb129a3149ad9cb3e4159a75f" name="ga65ff2aedb129a3149ad9cb3e4159a75f"></a>
721<h2 class="memtitle"><span class="permalink"><a href="#ga65ff2aedb129a3149ad9cb3e4159a75f">&#9670;&nbsp;</a></span>GLFW_KEY_J</h2>
722
723<div class="memitem">
724<div class="memproto">
725 <table class="memname">
726 <tr>
727 <td class="memname">#define GLFW_KEY_J&#160;&#160;&#160;74</td>
728 </tr>
729 </table>
730</div><div class="memdoc">
731
732</div>
733</div>
734<a id="ga4ae8debadf6d2a691badae0b53ea3ba0" name="ga4ae8debadf6d2a691badae0b53ea3ba0"></a>
735<h2 class="memtitle"><span class="permalink"><a href="#ga4ae8debadf6d2a691badae0b53ea3ba0">&#9670;&nbsp;</a></span>GLFW_KEY_K</h2>
736
737<div class="memitem">
738<div class="memproto">
739 <table class="memname">
740 <tr>
741 <td class="memname">#define GLFW_KEY_K&#160;&#160;&#160;75</td>
742 </tr>
743 </table>
744</div><div class="memdoc">
745
746</div>
747</div>
748<a id="gaaa8b54a13f6b1eed85ac86f82d550db2" name="gaaa8b54a13f6b1eed85ac86f82d550db2"></a>
749<h2 class="memtitle"><span class="permalink"><a href="#gaaa8b54a13f6b1eed85ac86f82d550db2">&#9670;&nbsp;</a></span>GLFW_KEY_L</h2>
750
751<div class="memitem">
752<div class="memproto">
753 <table class="memname">
754 <tr>
755 <td class="memname">#define GLFW_KEY_L&#160;&#160;&#160;76</td>
756 </tr>
757 </table>
758</div><div class="memdoc">
759
760</div>
761</div>
762<a id="ga4d7f0260c82e4ea3d6ebc7a21d6e3716" name="ga4d7f0260c82e4ea3d6ebc7a21d6e3716"></a>
763<h2 class="memtitle"><span class="permalink"><a href="#ga4d7f0260c82e4ea3d6ebc7a21d6e3716">&#9670;&nbsp;</a></span>GLFW_KEY_M</h2>
764
765<div class="memitem">
766<div class="memproto">
767 <table class="memname">
768 <tr>
769 <td class="memname">#define GLFW_KEY_M&#160;&#160;&#160;77</td>
770 </tr>
771 </table>
772</div><div class="memdoc">
773
774</div>
775</div>
776<a id="gae00856dfeb5d13aafebf59d44de5cdda" name="gae00856dfeb5d13aafebf59d44de5cdda"></a>
777<h2 class="memtitle"><span class="permalink"><a href="#gae00856dfeb5d13aafebf59d44de5cdda">&#9670;&nbsp;</a></span>GLFW_KEY_N</h2>
778
779<div class="memitem">
780<div class="memproto">
781 <table class="memname">
782 <tr>
783 <td class="memname">#define GLFW_KEY_N&#160;&#160;&#160;78</td>
784 </tr>
785 </table>
786</div><div class="memdoc">
787
788</div>
789</div>
790<a id="gaecbbb79130df419d58dd7f09a169efe9" name="gaecbbb79130df419d58dd7f09a169efe9"></a>
791<h2 class="memtitle"><span class="permalink"><a href="#gaecbbb79130df419d58dd7f09a169efe9">&#9670;&nbsp;</a></span>GLFW_KEY_O</h2>
792
793<div class="memitem">
794<div class="memproto">
795 <table class="memname">
796 <tr>
797 <td class="memname">#define GLFW_KEY_O&#160;&#160;&#160;79</td>
798 </tr>
799 </table>
800</div><div class="memdoc">
801
802</div>
803</div>
804<a id="ga8fc15819c1094fb2afa01d84546b33e1" name="ga8fc15819c1094fb2afa01d84546b33e1"></a>
805<h2 class="memtitle"><span class="permalink"><a href="#ga8fc15819c1094fb2afa01d84546b33e1">&#9670;&nbsp;</a></span>GLFW_KEY_P</h2>
806
807<div class="memitem">
808<div class="memproto">
809 <table class="memname">
810 <tr>
811 <td class="memname">#define GLFW_KEY_P&#160;&#160;&#160;80</td>
812 </tr>
813 </table>
814</div><div class="memdoc">
815
816</div>
817</div>
818<a id="gafdd01e38b120d67cf51e348bb47f3964" name="gafdd01e38b120d67cf51e348bb47f3964"></a>
819<h2 class="memtitle"><span class="permalink"><a href="#gafdd01e38b120d67cf51e348bb47f3964">&#9670;&nbsp;</a></span>GLFW_KEY_Q</h2>
820
821<div class="memitem">
822<div class="memproto">
823 <table class="memname">
824 <tr>
825 <td class="memname">#define GLFW_KEY_Q&#160;&#160;&#160;81</td>
826 </tr>
827 </table>
828</div><div class="memdoc">
829
830</div>
831</div>
832<a id="ga4ce6c70a0c98c50b3fe4ab9a728d4d36" name="ga4ce6c70a0c98c50b3fe4ab9a728d4d36"></a>
833<h2 class="memtitle"><span class="permalink"><a href="#ga4ce6c70a0c98c50b3fe4ab9a728d4d36">&#9670;&nbsp;</a></span>GLFW_KEY_R</h2>
834
835<div class="memitem">
836<div class="memproto">
837 <table class="memname">
838 <tr>
839 <td class="memname">#define GLFW_KEY_R&#160;&#160;&#160;82</td>
840 </tr>
841 </table>
842</div><div class="memdoc">
843
844</div>
845</div>
846<a id="ga1570e2ccaab036ea82bed66fc1dab2a9" name="ga1570e2ccaab036ea82bed66fc1dab2a9"></a>
847<h2 class="memtitle"><span class="permalink"><a href="#ga1570e2ccaab036ea82bed66fc1dab2a9">&#9670;&nbsp;</a></span>GLFW_KEY_S</h2>
848
849<div class="memitem">
850<div class="memproto">
851 <table class="memname">
852 <tr>
853 <td class="memname">#define GLFW_KEY_S&#160;&#160;&#160;83</td>
854 </tr>
855 </table>
856</div><div class="memdoc">
857
858</div>
859</div>
860<a id="ga90e0560422ec7a30e7f3f375bc9f37f9" name="ga90e0560422ec7a30e7f3f375bc9f37f9"></a>
861<h2 class="memtitle"><span class="permalink"><a href="#ga90e0560422ec7a30e7f3f375bc9f37f9">&#9670;&nbsp;</a></span>GLFW_KEY_T</h2>
862
863<div class="memitem">
864<div class="memproto">
865 <table class="memname">
866 <tr>
867 <td class="memname">#define GLFW_KEY_T&#160;&#160;&#160;84</td>
868 </tr>
869 </table>
870</div><div class="memdoc">
871
872</div>
873</div>
874<a id="gacad52f3bf7d378fc0ffa72a76769256d" name="gacad52f3bf7d378fc0ffa72a76769256d"></a>
875<h2 class="memtitle"><span class="permalink"><a href="#gacad52f3bf7d378fc0ffa72a76769256d">&#9670;&nbsp;</a></span>GLFW_KEY_U</h2>
876
877<div class="memitem">
878<div class="memproto">
879 <table class="memname">
880 <tr>
881 <td class="memname">#define GLFW_KEY_U&#160;&#160;&#160;85</td>
882 </tr>
883 </table>
884</div><div class="memdoc">
885
886</div>
887</div>
888<a id="ga22c7763899ecf7788862e5f90eacce6b" name="ga22c7763899ecf7788862e5f90eacce6b"></a>
889<h2 class="memtitle"><span class="permalink"><a href="#ga22c7763899ecf7788862e5f90eacce6b">&#9670;&nbsp;</a></span>GLFW_KEY_V</h2>
890
891<div class="memitem">
892<div class="memproto">
893 <table class="memname">
894 <tr>
895 <td class="memname">#define GLFW_KEY_V&#160;&#160;&#160;86</td>
896 </tr>
897 </table>
898</div><div class="memdoc">
899
900</div>
901</div>
902<a id="gaa06a712e6202661fc03da5bdb7b6e545" name="gaa06a712e6202661fc03da5bdb7b6e545"></a>
903<h2 class="memtitle"><span class="permalink"><a href="#gaa06a712e6202661fc03da5bdb7b6e545">&#9670;&nbsp;</a></span>GLFW_KEY_W</h2>
904
905<div class="memitem">
906<div class="memproto">
907 <table class="memname">
908 <tr>
909 <td class="memname">#define GLFW_KEY_W&#160;&#160;&#160;87</td>
910 </tr>
911 </table>
912</div><div class="memdoc">
913
914</div>
915</div>
916<a id="gac1c42c0bf4192cea713c55598b06b744" name="gac1c42c0bf4192cea713c55598b06b744"></a>
917<h2 class="memtitle"><span class="permalink"><a href="#gac1c42c0bf4192cea713c55598b06b744">&#9670;&nbsp;</a></span>GLFW_KEY_X</h2>
918
919<div class="memitem">
920<div class="memproto">
921 <table class="memname">
922 <tr>
923 <td class="memname">#define GLFW_KEY_X&#160;&#160;&#160;88</td>
924 </tr>
925 </table>
926</div><div class="memdoc">
927
928</div>
929</div>
930<a id="gafd9f115a549effdf8e372a787c360313" name="gafd9f115a549effdf8e372a787c360313"></a>
931<h2 class="memtitle"><span class="permalink"><a href="#gafd9f115a549effdf8e372a787c360313">&#9670;&nbsp;</a></span>GLFW_KEY_Y</h2>
932
933<div class="memitem">
934<div class="memproto">
935 <table class="memname">
936 <tr>
937 <td class="memname">#define GLFW_KEY_Y&#160;&#160;&#160;89</td>
938 </tr>
939 </table>
940</div><div class="memdoc">
941
942</div>
943</div>
944<a id="gac489e208c26afda8d4938ed88718760a" name="gac489e208c26afda8d4938ed88718760a"></a>
945<h2 class="memtitle"><span class="permalink"><a href="#gac489e208c26afda8d4938ed88718760a">&#9670;&nbsp;</a></span>GLFW_KEY_Z</h2>
946
947<div class="memitem">
948<div class="memproto">
949 <table class="memname">
950 <tr>
951 <td class="memname">#define GLFW_KEY_Z&#160;&#160;&#160;90</td>
952 </tr>
953 </table>
954</div><div class="memdoc">
955
956</div>
957</div>
958<a id="gad1c8d9adac53925276ecb1d592511d8a" name="gad1c8d9adac53925276ecb1d592511d8a"></a>
959<h2 class="memtitle"><span class="permalink"><a href="#gad1c8d9adac53925276ecb1d592511d8a">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_BRACKET</h2>
960
961<div class="memitem">
962<div class="memproto">
963 <table class="memname">
964 <tr>
965 <td class="memname">#define GLFW_KEY_LEFT_BRACKET&#160;&#160;&#160;91 /* [ */</td>
966 </tr>
967 </table>
968</div><div class="memdoc">
969
970</div>
971</div>
972<a id="gab8155ea99d1ab27ff56f24f8dc73f8d1" name="gab8155ea99d1ab27ff56f24f8dc73f8d1"></a>
973<h2 class="memtitle"><span class="permalink"><a href="#gab8155ea99d1ab27ff56f24f8dc73f8d1">&#9670;&nbsp;</a></span>GLFW_KEY_BACKSLASH</h2>
974
975<div class="memitem">
976<div class="memproto">
977 <table class="memname">
978 <tr>
979 <td class="memname">#define GLFW_KEY_BACKSLASH&#160;&#160;&#160;92 /* \ */</td>
980 </tr>
981 </table>
982</div><div class="memdoc">
983
984</div>
985</div>
986<a id="ga86ef225fd6a66404caae71044cdd58d8" name="ga86ef225fd6a66404caae71044cdd58d8"></a>
987<h2 class="memtitle"><span class="permalink"><a href="#ga86ef225fd6a66404caae71044cdd58d8">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_BRACKET</h2>
988
989<div class="memitem">
990<div class="memproto">
991 <table class="memname">
992 <tr>
993 <td class="memname">#define GLFW_KEY_RIGHT_BRACKET&#160;&#160;&#160;93 /* ] */</td>
994 </tr>
995 </table>
996</div><div class="memdoc">
997
998</div>
999</div>
1000<a id="ga7a3701fb4e2a0b136ff4b568c3c8d668" name="ga7a3701fb4e2a0b136ff4b568c3c8d668"></a>
1001<h2 class="memtitle"><span class="permalink"><a href="#ga7a3701fb4e2a0b136ff4b568c3c8d668">&#9670;&nbsp;</a></span>GLFW_KEY_GRAVE_ACCENT</h2>
1002
1003<div class="memitem">
1004<div class="memproto">
1005 <table class="memname">
1006 <tr>
1007 <td class="memname">#define GLFW_KEY_GRAVE_ACCENT&#160;&#160;&#160;96 /* ` */</td>
1008 </tr>
1009 </table>
1010</div><div class="memdoc">
1011
1012</div>
1013</div>
1014<a id="gadc78dad3dab76bcd4b5c20114052577a" name="gadc78dad3dab76bcd4b5c20114052577a"></a>
1015<h2 class="memtitle"><span class="permalink"><a href="#gadc78dad3dab76bcd4b5c20114052577a">&#9670;&nbsp;</a></span>GLFW_KEY_WORLD_1</h2>
1016
1017<div class="memitem">
1018<div class="memproto">
1019 <table class="memname">
1020 <tr>
1021 <td class="memname">#define GLFW_KEY_WORLD_1&#160;&#160;&#160;161 /* non-US #1 */</td>
1022 </tr>
1023 </table>
1024</div><div class="memdoc">
1025
1026</div>
1027</div>
1028<a id="ga20494bfebf0bb4fc9503afca18ab2c5e" name="ga20494bfebf0bb4fc9503afca18ab2c5e"></a>
1029<h2 class="memtitle"><span class="permalink"><a href="#ga20494bfebf0bb4fc9503afca18ab2c5e">&#9670;&nbsp;</a></span>GLFW_KEY_WORLD_2</h2>
1030
1031<div class="memitem">
1032<div class="memproto">
1033 <table class="memname">
1034 <tr>
1035 <td class="memname">#define GLFW_KEY_WORLD_2&#160;&#160;&#160;162 /* non-US #2 */</td>
1036 </tr>
1037 </table>
1038</div><div class="memdoc">
1039
1040</div>
1041</div>
1042<a id="gaac6596c350b635c245113b81c2123b93" name="gaac6596c350b635c245113b81c2123b93"></a>
1043<h2 class="memtitle"><span class="permalink"><a href="#gaac6596c350b635c245113b81c2123b93">&#9670;&nbsp;</a></span>GLFW_KEY_ESCAPE</h2>
1044
1045<div class="memitem">
1046<div class="memproto">
1047 <table class="memname">
1048 <tr>
1049 <td class="memname">#define GLFW_KEY_ESCAPE&#160;&#160;&#160;256</td>
1050 </tr>
1051 </table>
1052</div><div class="memdoc">
1053
1054</div>
1055</div>
1056<a id="ga9555a92ecbecdbc1f3435219c571d667" name="ga9555a92ecbecdbc1f3435219c571d667"></a>
1057<h2 class="memtitle"><span class="permalink"><a href="#ga9555a92ecbecdbc1f3435219c571d667">&#9670;&nbsp;</a></span>GLFW_KEY_ENTER</h2>
1058
1059<div class="memitem">
1060<div class="memproto">
1061 <table class="memname">
1062 <tr>
1063 <td class="memname">#define GLFW_KEY_ENTER&#160;&#160;&#160;257</td>
1064 </tr>
1065 </table>
1066</div><div class="memdoc">
1067
1068</div>
1069</div>
1070<a id="ga6908a4bda9950a3e2b73f794bbe985df" name="ga6908a4bda9950a3e2b73f794bbe985df"></a>
1071<h2 class="memtitle"><span class="permalink"><a href="#ga6908a4bda9950a3e2b73f794bbe985df">&#9670;&nbsp;</a></span>GLFW_KEY_TAB</h2>
1072
1073<div class="memitem">
1074<div class="memproto">
1075 <table class="memname">
1076 <tr>
1077 <td class="memname">#define GLFW_KEY_TAB&#160;&#160;&#160;258</td>
1078 </tr>
1079 </table>
1080</div><div class="memdoc">
1081
1082</div>
1083</div>
1084<a id="ga6c0df1fe2f156bbd5a98c66d76ff3635" name="ga6c0df1fe2f156bbd5a98c66d76ff3635"></a>
1085<h2 class="memtitle"><span class="permalink"><a href="#ga6c0df1fe2f156bbd5a98c66d76ff3635">&#9670;&nbsp;</a></span>GLFW_KEY_BACKSPACE</h2>
1086
1087<div class="memitem">
1088<div class="memproto">
1089 <table class="memname">
1090 <tr>
1091 <td class="memname">#define GLFW_KEY_BACKSPACE&#160;&#160;&#160;259</td>
1092 </tr>
1093 </table>
1094</div><div class="memdoc">
1095
1096</div>
1097</div>
1098<a id="ga373ac7365435d6b0eb1068f470e34f47" name="ga373ac7365435d6b0eb1068f470e34f47"></a>
1099<h2 class="memtitle"><span class="permalink"><a href="#ga373ac7365435d6b0eb1068f470e34f47">&#9670;&nbsp;</a></span>GLFW_KEY_INSERT</h2>
1100
1101<div class="memitem">
1102<div class="memproto">
1103 <table class="memname">
1104 <tr>
1105 <td class="memname">#define GLFW_KEY_INSERT&#160;&#160;&#160;260</td>
1106 </tr>
1107 </table>
1108</div><div class="memdoc">
1109
1110</div>
1111</div>
1112<a id="gadb111e4df74b8a715f2c05dad58d2682" name="gadb111e4df74b8a715f2c05dad58d2682"></a>
1113<h2 class="memtitle"><span class="permalink"><a href="#gadb111e4df74b8a715f2c05dad58d2682">&#9670;&nbsp;</a></span>GLFW_KEY_DELETE</h2>
1114
1115<div class="memitem">
1116<div class="memproto">
1117 <table class="memname">
1118 <tr>
1119 <td class="memname">#define GLFW_KEY_DELETE&#160;&#160;&#160;261</td>
1120 </tr>
1121 </table>
1122</div><div class="memdoc">
1123
1124</div>
1125</div>
1126<a id="ga06ba07662e8c291a4a84535379ffc7ac" name="ga06ba07662e8c291a4a84535379ffc7ac"></a>
1127<h2 class="memtitle"><span class="permalink"><a href="#ga06ba07662e8c291a4a84535379ffc7ac">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT</h2>
1128
1129<div class="memitem">
1130<div class="memproto">
1131 <table class="memname">
1132 <tr>
1133 <td class="memname">#define GLFW_KEY_RIGHT&#160;&#160;&#160;262</td>
1134 </tr>
1135 </table>
1136</div><div class="memdoc">
1137
1138</div>
1139</div>
1140<a id="gae12a010d33c309a67ab9460c51eb2462" name="gae12a010d33c309a67ab9460c51eb2462"></a>
1141<h2 class="memtitle"><span class="permalink"><a href="#gae12a010d33c309a67ab9460c51eb2462">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT</h2>
1142
1143<div class="memitem">
1144<div class="memproto">
1145 <table class="memname">
1146 <tr>
1147 <td class="memname">#define GLFW_KEY_LEFT&#160;&#160;&#160;263</td>
1148 </tr>
1149 </table>
1150</div><div class="memdoc">
1151
1152</div>
1153</div>
1154<a id="gae2e3958c71595607416aa7bf082be2f9" name="gae2e3958c71595607416aa7bf082be2f9"></a>
1155<h2 class="memtitle"><span class="permalink"><a href="#gae2e3958c71595607416aa7bf082be2f9">&#9670;&nbsp;</a></span>GLFW_KEY_DOWN</h2>
1156
1157<div class="memitem">
1158<div class="memproto">
1159 <table class="memname">
1160 <tr>
1161 <td class="memname">#define GLFW_KEY_DOWN&#160;&#160;&#160;264</td>
1162 </tr>
1163 </table>
1164</div><div class="memdoc">
1165
1166</div>
1167</div>
1168<a id="ga2f3342b194020d3544c67e3506b6f144" name="ga2f3342b194020d3544c67e3506b6f144"></a>
1169<h2 class="memtitle"><span class="permalink"><a href="#ga2f3342b194020d3544c67e3506b6f144">&#9670;&nbsp;</a></span>GLFW_KEY_UP</h2>
1170
1171<div class="memitem">
1172<div class="memproto">
1173 <table class="memname">
1174 <tr>
1175 <td class="memname">#define GLFW_KEY_UP&#160;&#160;&#160;265</td>
1176 </tr>
1177 </table>
1178</div><div class="memdoc">
1179
1180</div>
1181</div>
1182<a id="ga3ab731f9622f0db280178a5f3cc6d586" name="ga3ab731f9622f0db280178a5f3cc6d586"></a>
1183<h2 class="memtitle"><span class="permalink"><a href="#ga3ab731f9622f0db280178a5f3cc6d586">&#9670;&nbsp;</a></span>GLFW_KEY_PAGE_UP</h2>
1184
1185<div class="memitem">
1186<div class="memproto">
1187 <table class="memname">
1188 <tr>
1189 <td class="memname">#define GLFW_KEY_PAGE_UP&#160;&#160;&#160;266</td>
1190 </tr>
1191 </table>
1192</div><div class="memdoc">
1193
1194</div>
1195</div>
1196<a id="gaee0a8fa442001cc2147812f84b59041c" name="gaee0a8fa442001cc2147812f84b59041c"></a>
1197<h2 class="memtitle"><span class="permalink"><a href="#gaee0a8fa442001cc2147812f84b59041c">&#9670;&nbsp;</a></span>GLFW_KEY_PAGE_DOWN</h2>
1198
1199<div class="memitem">
1200<div class="memproto">
1201 <table class="memname">
1202 <tr>
1203 <td class="memname">#define GLFW_KEY_PAGE_DOWN&#160;&#160;&#160;267</td>
1204 </tr>
1205 </table>
1206</div><div class="memdoc">
1207
1208</div>
1209</div>
1210<a id="ga41452c7287195d481e43207318c126a7" name="ga41452c7287195d481e43207318c126a7"></a>
1211<h2 class="memtitle"><span class="permalink"><a href="#ga41452c7287195d481e43207318c126a7">&#9670;&nbsp;</a></span>GLFW_KEY_HOME</h2>
1212
1213<div class="memitem">
1214<div class="memproto">
1215 <table class="memname">
1216 <tr>
1217 <td class="memname">#define GLFW_KEY_HOME&#160;&#160;&#160;268</td>
1218 </tr>
1219 </table>
1220</div><div class="memdoc">
1221
1222</div>
1223</div>
1224<a id="ga86587ea1df19a65978d3e3b8439bedd9" name="ga86587ea1df19a65978d3e3b8439bedd9"></a>
1225<h2 class="memtitle"><span class="permalink"><a href="#ga86587ea1df19a65978d3e3b8439bedd9">&#9670;&nbsp;</a></span>GLFW_KEY_END</h2>
1226
1227<div class="memitem">
1228<div class="memproto">
1229 <table class="memname">
1230 <tr>
1231 <td class="memname">#define GLFW_KEY_END&#160;&#160;&#160;269</td>
1232 </tr>
1233 </table>
1234</div><div class="memdoc">
1235
1236</div>
1237</div>
1238<a id="ga92c1d2c9d63485f3d70f94f688d48672" name="ga92c1d2c9d63485f3d70f94f688d48672"></a>
1239<h2 class="memtitle"><span class="permalink"><a href="#ga92c1d2c9d63485f3d70f94f688d48672">&#9670;&nbsp;</a></span>GLFW_KEY_CAPS_LOCK</h2>
1240
1241<div class="memitem">
1242<div class="memproto">
1243 <table class="memname">
1244 <tr>
1245 <td class="memname">#define GLFW_KEY_CAPS_LOCK&#160;&#160;&#160;280</td>
1246 </tr>
1247 </table>
1248</div><div class="memdoc">
1249
1250</div>
1251</div>
1252<a id="gaf622b63b9537f7084c2ab649b8365630" name="gaf622b63b9537f7084c2ab649b8365630"></a>
1253<h2 class="memtitle"><span class="permalink"><a href="#gaf622b63b9537f7084c2ab649b8365630">&#9670;&nbsp;</a></span>GLFW_KEY_SCROLL_LOCK</h2>
1254
1255<div class="memitem">
1256<div class="memproto">
1257 <table class="memname">
1258 <tr>
1259 <td class="memname">#define GLFW_KEY_SCROLL_LOCK&#160;&#160;&#160;281</td>
1260 </tr>
1261 </table>
1262</div><div class="memdoc">
1263
1264</div>
1265</div>
1266<a id="ga3946edc362aeff213b2be6304296cf43" name="ga3946edc362aeff213b2be6304296cf43"></a>
1267<h2 class="memtitle"><span class="permalink"><a href="#ga3946edc362aeff213b2be6304296cf43">&#9670;&nbsp;</a></span>GLFW_KEY_NUM_LOCK</h2>
1268
1269<div class="memitem">
1270<div class="memproto">
1271 <table class="memname">
1272 <tr>
1273 <td class="memname">#define GLFW_KEY_NUM_LOCK&#160;&#160;&#160;282</td>
1274 </tr>
1275 </table>
1276</div><div class="memdoc">
1277
1278</div>
1279</div>
1280<a id="gaf964c2e65e97d0cf785a5636ee8df642" name="gaf964c2e65e97d0cf785a5636ee8df642"></a>
1281<h2 class="memtitle"><span class="permalink"><a href="#gaf964c2e65e97d0cf785a5636ee8df642">&#9670;&nbsp;</a></span>GLFW_KEY_PRINT_SCREEN</h2>
1282
1283<div class="memitem">
1284<div class="memproto">
1285 <table class="memname">
1286 <tr>
1287 <td class="memname">#define GLFW_KEY_PRINT_SCREEN&#160;&#160;&#160;283</td>
1288 </tr>
1289 </table>
1290</div><div class="memdoc">
1291
1292</div>
1293</div>
1294<a id="ga8116b9692d87382afb5849b6d8907f18" name="ga8116b9692d87382afb5849b6d8907f18"></a>
1295<h2 class="memtitle"><span class="permalink"><a href="#ga8116b9692d87382afb5849b6d8907f18">&#9670;&nbsp;</a></span>GLFW_KEY_PAUSE</h2>
1296
1297<div class="memitem">
1298<div class="memproto">
1299 <table class="memname">
1300 <tr>
1301 <td class="memname">#define GLFW_KEY_PAUSE&#160;&#160;&#160;284</td>
1302 </tr>
1303 </table>
1304</div><div class="memdoc">
1305
1306</div>
1307</div>
1308<a id="gafb8d66c573acf22e364049477dcbea30" name="gafb8d66c573acf22e364049477dcbea30"></a>
1309<h2 class="memtitle"><span class="permalink"><a href="#gafb8d66c573acf22e364049477dcbea30">&#9670;&nbsp;</a></span>GLFW_KEY_F1</h2>
1310
1311<div class="memitem">
1312<div class="memproto">
1313 <table class="memname">
1314 <tr>
1315 <td class="memname">#define GLFW_KEY_F1&#160;&#160;&#160;290</td>
1316 </tr>
1317 </table>
1318</div><div class="memdoc">
1319
1320</div>
1321</div>
1322<a id="ga0900750aff94889b940f5e428c07daee" name="ga0900750aff94889b940f5e428c07daee"></a>
1323<h2 class="memtitle"><span class="permalink"><a href="#ga0900750aff94889b940f5e428c07daee">&#9670;&nbsp;</a></span>GLFW_KEY_F2</h2>
1324
1325<div class="memitem">
1326<div class="memproto">
1327 <table class="memname">
1328 <tr>
1329 <td class="memname">#define GLFW_KEY_F2&#160;&#160;&#160;291</td>
1330 </tr>
1331 </table>
1332</div><div class="memdoc">
1333
1334</div>
1335</div>
1336<a id="gaed7cd729c0147a551bb8b7bb36c17015" name="gaed7cd729c0147a551bb8b7bb36c17015"></a>
1337<h2 class="memtitle"><span class="permalink"><a href="#gaed7cd729c0147a551bb8b7bb36c17015">&#9670;&nbsp;</a></span>GLFW_KEY_F3</h2>
1338
1339<div class="memitem">
1340<div class="memproto">
1341 <table class="memname">
1342 <tr>
1343 <td class="memname">#define GLFW_KEY_F3&#160;&#160;&#160;292</td>
1344 </tr>
1345 </table>
1346</div><div class="memdoc">
1347
1348</div>
1349</div>
1350<a id="ga9b61ebd0c63b44b7332fda2c9763eaa6" name="ga9b61ebd0c63b44b7332fda2c9763eaa6"></a>
1351<h2 class="memtitle"><span class="permalink"><a href="#ga9b61ebd0c63b44b7332fda2c9763eaa6">&#9670;&nbsp;</a></span>GLFW_KEY_F4</h2>
1352
1353<div class="memitem">
1354<div class="memproto">
1355 <table class="memname">
1356 <tr>
1357 <td class="memname">#define GLFW_KEY_F4&#160;&#160;&#160;293</td>
1358 </tr>
1359 </table>
1360</div><div class="memdoc">
1361
1362</div>
1363</div>
1364<a id="gaf258dda9947daa428377938ed577c8c2" name="gaf258dda9947daa428377938ed577c8c2"></a>
1365<h2 class="memtitle"><span class="permalink"><a href="#gaf258dda9947daa428377938ed577c8c2">&#9670;&nbsp;</a></span>GLFW_KEY_F5</h2>
1366
1367<div class="memitem">
1368<div class="memproto">
1369 <table class="memname">
1370 <tr>
1371 <td class="memname">#define GLFW_KEY_F5&#160;&#160;&#160;294</td>
1372 </tr>
1373 </table>
1374</div><div class="memdoc">
1375
1376</div>
1377</div>
1378<a id="ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d" name="ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"></a>
1379<h2 class="memtitle"><span class="permalink"><a href="#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d">&#9670;&nbsp;</a></span>GLFW_KEY_F6</h2>
1380
1381<div class="memitem">
1382<div class="memproto">
1383 <table class="memname">
1384 <tr>
1385 <td class="memname">#define GLFW_KEY_F6&#160;&#160;&#160;295</td>
1386 </tr>
1387 </table>
1388</div><div class="memdoc">
1389
1390</div>
1391</div>
1392<a id="gacca6ef8a2162c52a0ac1d881e8d9c38a" name="gacca6ef8a2162c52a0ac1d881e8d9c38a"></a>
1393<h2 class="memtitle"><span class="permalink"><a href="#gacca6ef8a2162c52a0ac1d881e8d9c38a">&#9670;&nbsp;</a></span>GLFW_KEY_F7</h2>
1394
1395<div class="memitem">
1396<div class="memproto">
1397 <table class="memname">
1398 <tr>
1399 <td class="memname">#define GLFW_KEY_F7&#160;&#160;&#160;296</td>
1400 </tr>
1401 </table>
1402</div><div class="memdoc">
1403
1404</div>
1405</div>
1406<a id="gac9d39390336ae14e4a93e295de43c7e8" name="gac9d39390336ae14e4a93e295de43c7e8"></a>
1407<h2 class="memtitle"><span class="permalink"><a href="#gac9d39390336ae14e4a93e295de43c7e8">&#9670;&nbsp;</a></span>GLFW_KEY_F8</h2>
1408
1409<div class="memitem">
1410<div class="memproto">
1411 <table class="memname">
1412 <tr>
1413 <td class="memname">#define GLFW_KEY_F8&#160;&#160;&#160;297</td>
1414 </tr>
1415 </table>
1416</div><div class="memdoc">
1417
1418</div>
1419</div>
1420<a id="gae40de0de1c9f21cd26c9afa3d7050851" name="gae40de0de1c9f21cd26c9afa3d7050851"></a>
1421<h2 class="memtitle"><span class="permalink"><a href="#gae40de0de1c9f21cd26c9afa3d7050851">&#9670;&nbsp;</a></span>GLFW_KEY_F9</h2>
1422
1423<div class="memitem">
1424<div class="memproto">
1425 <table class="memname">
1426 <tr>
1427 <td class="memname">#define GLFW_KEY_F9&#160;&#160;&#160;298</td>
1428 </tr>
1429 </table>
1430</div><div class="memdoc">
1431
1432</div>
1433</div>
1434<a id="ga718d11d2f7d57471a2f6a894235995b1" name="ga718d11d2f7d57471a2f6a894235995b1"></a>
1435<h2 class="memtitle"><span class="permalink"><a href="#ga718d11d2f7d57471a2f6a894235995b1">&#9670;&nbsp;</a></span>GLFW_KEY_F10</h2>
1436
1437<div class="memitem">
1438<div class="memproto">
1439 <table class="memname">
1440 <tr>
1441 <td class="memname">#define GLFW_KEY_F10&#160;&#160;&#160;299</td>
1442 </tr>
1443 </table>
1444</div><div class="memdoc">
1445
1446</div>
1447</div>
1448<a id="ga0bc04b11627e7d69339151e7306b2832" name="ga0bc04b11627e7d69339151e7306b2832"></a>
1449<h2 class="memtitle"><span class="permalink"><a href="#ga0bc04b11627e7d69339151e7306b2832">&#9670;&nbsp;</a></span>GLFW_KEY_F11</h2>
1450
1451<div class="memitem">
1452<div class="memproto">
1453 <table class="memname">
1454 <tr>
1455 <td class="memname">#define GLFW_KEY_F11&#160;&#160;&#160;300</td>
1456 </tr>
1457 </table>
1458</div><div class="memdoc">
1459
1460</div>
1461</div>
1462<a id="gaf5908fa9b0a906ae03fc2c61ac7aa3e2" name="gaf5908fa9b0a906ae03fc2c61ac7aa3e2"></a>
1463<h2 class="memtitle"><span class="permalink"><a href="#gaf5908fa9b0a906ae03fc2c61ac7aa3e2">&#9670;&nbsp;</a></span>GLFW_KEY_F12</h2>
1464
1465<div class="memitem">
1466<div class="memproto">
1467 <table class="memname">
1468 <tr>
1469 <td class="memname">#define GLFW_KEY_F12&#160;&#160;&#160;301</td>
1470 </tr>
1471 </table>
1472</div><div class="memdoc">
1473
1474</div>
1475</div>
1476<a id="gad637f4308655e1001bd6ad942bc0fd4b" name="gad637f4308655e1001bd6ad942bc0fd4b"></a>
1477<h2 class="memtitle"><span class="permalink"><a href="#gad637f4308655e1001bd6ad942bc0fd4b">&#9670;&nbsp;</a></span>GLFW_KEY_F13</h2>
1478
1479<div class="memitem">
1480<div class="memproto">
1481 <table class="memname">
1482 <tr>
1483 <td class="memname">#define GLFW_KEY_F13&#160;&#160;&#160;302</td>
1484 </tr>
1485 </table>
1486</div><div class="memdoc">
1487
1488</div>
1489</div>
1490<a id="gaf14c66cff3396e5bd46e803c035e6c1f" name="gaf14c66cff3396e5bd46e803c035e6c1f"></a>
1491<h2 class="memtitle"><span class="permalink"><a href="#gaf14c66cff3396e5bd46e803c035e6c1f">&#9670;&nbsp;</a></span>GLFW_KEY_F14</h2>
1492
1493<div class="memitem">
1494<div class="memproto">
1495 <table class="memname">
1496 <tr>
1497 <td class="memname">#define GLFW_KEY_F14&#160;&#160;&#160;303</td>
1498 </tr>
1499 </table>
1500</div><div class="memdoc">
1501
1502</div>
1503</div>
1504<a id="ga7f70970db6e8be1794da8516a6d14058" name="ga7f70970db6e8be1794da8516a6d14058"></a>
1505<h2 class="memtitle"><span class="permalink"><a href="#ga7f70970db6e8be1794da8516a6d14058">&#9670;&nbsp;</a></span>GLFW_KEY_F15</h2>
1506
1507<div class="memitem">
1508<div class="memproto">
1509 <table class="memname">
1510 <tr>
1511 <td class="memname">#define GLFW_KEY_F15&#160;&#160;&#160;304</td>
1512 </tr>
1513 </table>
1514</div><div class="memdoc">
1515
1516</div>
1517</div>
1518<a id="gaa582dbb1d2ba2050aa1dca0838095b27" name="gaa582dbb1d2ba2050aa1dca0838095b27"></a>
1519<h2 class="memtitle"><span class="permalink"><a href="#gaa582dbb1d2ba2050aa1dca0838095b27">&#9670;&nbsp;</a></span>GLFW_KEY_F16</h2>
1520
1521<div class="memitem">
1522<div class="memproto">
1523 <table class="memname">
1524 <tr>
1525 <td class="memname">#define GLFW_KEY_F16&#160;&#160;&#160;305</td>
1526 </tr>
1527 </table>
1528</div><div class="memdoc">
1529
1530</div>
1531</div>
1532<a id="ga972ce5c365e2394b36104b0e3125c748" name="ga972ce5c365e2394b36104b0e3125c748"></a>
1533<h2 class="memtitle"><span class="permalink"><a href="#ga972ce5c365e2394b36104b0e3125c748">&#9670;&nbsp;</a></span>GLFW_KEY_F17</h2>
1534
1535<div class="memitem">
1536<div class="memproto">
1537 <table class="memname">
1538 <tr>
1539 <td class="memname">#define GLFW_KEY_F17&#160;&#160;&#160;306</td>
1540 </tr>
1541 </table>
1542</div><div class="memdoc">
1543
1544</div>
1545</div>
1546<a id="gaebf6391058d5566601e357edc5ea737c" name="gaebf6391058d5566601e357edc5ea737c"></a>
1547<h2 class="memtitle"><span class="permalink"><a href="#gaebf6391058d5566601e357edc5ea737c">&#9670;&nbsp;</a></span>GLFW_KEY_F18</h2>
1548
1549<div class="memitem">
1550<div class="memproto">
1551 <table class="memname">
1552 <tr>
1553 <td class="memname">#define GLFW_KEY_F18&#160;&#160;&#160;307</td>
1554 </tr>
1555 </table>
1556</div><div class="memdoc">
1557
1558</div>
1559</div>
1560<a id="gaec011d9ba044058cb54529da710e9791" name="gaec011d9ba044058cb54529da710e9791"></a>
1561<h2 class="memtitle"><span class="permalink"><a href="#gaec011d9ba044058cb54529da710e9791">&#9670;&nbsp;</a></span>GLFW_KEY_F19</h2>
1562
1563<div class="memitem">
1564<div class="memproto">
1565 <table class="memname">
1566 <tr>
1567 <td class="memname">#define GLFW_KEY_F19&#160;&#160;&#160;308</td>
1568 </tr>
1569 </table>
1570</div><div class="memdoc">
1571
1572</div>
1573</div>
1574<a id="ga82b9c721ada04cd5ca8de767da38022f" name="ga82b9c721ada04cd5ca8de767da38022f"></a>
1575<h2 class="memtitle"><span class="permalink"><a href="#ga82b9c721ada04cd5ca8de767da38022f">&#9670;&nbsp;</a></span>GLFW_KEY_F20</h2>
1576
1577<div class="memitem">
1578<div class="memproto">
1579 <table class="memname">
1580 <tr>
1581 <td class="memname">#define GLFW_KEY_F20&#160;&#160;&#160;309</td>
1582 </tr>
1583 </table>
1584</div><div class="memdoc">
1585
1586</div>
1587</div>
1588<a id="ga356afb14d3440ff2bb378f74f7ebc60f" name="ga356afb14d3440ff2bb378f74f7ebc60f"></a>
1589<h2 class="memtitle"><span class="permalink"><a href="#ga356afb14d3440ff2bb378f74f7ebc60f">&#9670;&nbsp;</a></span>GLFW_KEY_F21</h2>
1590
1591<div class="memitem">
1592<div class="memproto">
1593 <table class="memname">
1594 <tr>
1595 <td class="memname">#define GLFW_KEY_F21&#160;&#160;&#160;310</td>
1596 </tr>
1597 </table>
1598</div><div class="memdoc">
1599
1600</div>
1601</div>
1602<a id="ga90960bd2a155f2b09675324d3dff1565" name="ga90960bd2a155f2b09675324d3dff1565"></a>
1603<h2 class="memtitle"><span class="permalink"><a href="#ga90960bd2a155f2b09675324d3dff1565">&#9670;&nbsp;</a></span>GLFW_KEY_F22</h2>
1604
1605<div class="memitem">
1606<div class="memproto">
1607 <table class="memname">
1608 <tr>
1609 <td class="memname">#define GLFW_KEY_F22&#160;&#160;&#160;311</td>
1610 </tr>
1611 </table>
1612</div><div class="memdoc">
1613
1614</div>
1615</div>
1616<a id="ga43c21099aac10952d1be909a8ddee4d5" name="ga43c21099aac10952d1be909a8ddee4d5"></a>
1617<h2 class="memtitle"><span class="permalink"><a href="#ga43c21099aac10952d1be909a8ddee4d5">&#9670;&nbsp;</a></span>GLFW_KEY_F23</h2>
1618
1619<div class="memitem">
1620<div class="memproto">
1621 <table class="memname">
1622 <tr>
1623 <td class="memname">#define GLFW_KEY_F23&#160;&#160;&#160;312</td>
1624 </tr>
1625 </table>
1626</div><div class="memdoc">
1627
1628</div>
1629</div>
1630<a id="ga8150374677b5bed3043408732152dea2" name="ga8150374677b5bed3043408732152dea2"></a>
1631<h2 class="memtitle"><span class="permalink"><a href="#ga8150374677b5bed3043408732152dea2">&#9670;&nbsp;</a></span>GLFW_KEY_F24</h2>
1632
1633<div class="memitem">
1634<div class="memproto">
1635 <table class="memname">
1636 <tr>
1637 <td class="memname">#define GLFW_KEY_F24&#160;&#160;&#160;313</td>
1638 </tr>
1639 </table>
1640</div><div class="memdoc">
1641
1642</div>
1643</div>
1644<a id="gaa4bbd93ed73bb4c6ae7d83df880b7199" name="gaa4bbd93ed73bb4c6ae7d83df880b7199"></a>
1645<h2 class="memtitle"><span class="permalink"><a href="#gaa4bbd93ed73bb4c6ae7d83df880b7199">&#9670;&nbsp;</a></span>GLFW_KEY_F25</h2>
1646
1647<div class="memitem">
1648<div class="memproto">
1649 <table class="memname">
1650 <tr>
1651 <td class="memname">#define GLFW_KEY_F25&#160;&#160;&#160;314</td>
1652 </tr>
1653 </table>
1654</div><div class="memdoc">
1655
1656</div>
1657</div>
1658<a id="ga10515dafc55b71e7683f5b4fedd1c70d" name="ga10515dafc55b71e7683f5b4fedd1c70d"></a>
1659<h2 class="memtitle"><span class="permalink"><a href="#ga10515dafc55b71e7683f5b4fedd1c70d">&#9670;&nbsp;</a></span>GLFW_KEY_KP_0</h2>
1660
1661<div class="memitem">
1662<div class="memproto">
1663 <table class="memname">
1664 <tr>
1665 <td class="memname">#define GLFW_KEY_KP_0&#160;&#160;&#160;320</td>
1666 </tr>
1667 </table>
1668</div><div class="memdoc">
1669
1670</div>
1671</div>
1672<a id="gaf3a29a334402c5eaf0b3439edf5587c3" name="gaf3a29a334402c5eaf0b3439edf5587c3"></a>
1673<h2 class="memtitle"><span class="permalink"><a href="#gaf3a29a334402c5eaf0b3439edf5587c3">&#9670;&nbsp;</a></span>GLFW_KEY_KP_1</h2>
1674
1675<div class="memitem">
1676<div class="memproto">
1677 <table class="memname">
1678 <tr>
1679 <td class="memname">#define GLFW_KEY_KP_1&#160;&#160;&#160;321</td>
1680 </tr>
1681 </table>
1682</div><div class="memdoc">
1683
1684</div>
1685</div>
1686<a id="gaf82d5a802ab8213c72653d7480c16f13" name="gaf82d5a802ab8213c72653d7480c16f13"></a>
1687<h2 class="memtitle"><span class="permalink"><a href="#gaf82d5a802ab8213c72653d7480c16f13">&#9670;&nbsp;</a></span>GLFW_KEY_KP_2</h2>
1688
1689<div class="memitem">
1690<div class="memproto">
1691 <table class="memname">
1692 <tr>
1693 <td class="memname">#define GLFW_KEY_KP_2&#160;&#160;&#160;322</td>
1694 </tr>
1695 </table>
1696</div><div class="memdoc">
1697
1698</div>
1699</div>
1700<a id="ga7e25ff30d56cd512828c1d4ae8d54ef2" name="ga7e25ff30d56cd512828c1d4ae8d54ef2"></a>
1701<h2 class="memtitle"><span class="permalink"><a href="#ga7e25ff30d56cd512828c1d4ae8d54ef2">&#9670;&nbsp;</a></span>GLFW_KEY_KP_3</h2>
1702
1703<div class="memitem">
1704<div class="memproto">
1705 <table class="memname">
1706 <tr>
1707 <td class="memname">#define GLFW_KEY_KP_3&#160;&#160;&#160;323</td>
1708 </tr>
1709 </table>
1710</div><div class="memdoc">
1711
1712</div>
1713</div>
1714<a id="gada7ec86778b85e0b4de0beea72234aea" name="gada7ec86778b85e0b4de0beea72234aea"></a>
1715<h2 class="memtitle"><span class="permalink"><a href="#gada7ec86778b85e0b4de0beea72234aea">&#9670;&nbsp;</a></span>GLFW_KEY_KP_4</h2>
1716
1717<div class="memitem">
1718<div class="memproto">
1719 <table class="memname">
1720 <tr>
1721 <td class="memname">#define GLFW_KEY_KP_4&#160;&#160;&#160;324</td>
1722 </tr>
1723 </table>
1724</div><div class="memdoc">
1725
1726</div>
1727</div>
1728<a id="ga9a5be274434866c51738cafbb6d26b45" name="ga9a5be274434866c51738cafbb6d26b45"></a>
1729<h2 class="memtitle"><span class="permalink"><a href="#ga9a5be274434866c51738cafbb6d26b45">&#9670;&nbsp;</a></span>GLFW_KEY_KP_5</h2>
1730
1731<div class="memitem">
1732<div class="memproto">
1733 <table class="memname">
1734 <tr>
1735 <td class="memname">#define GLFW_KEY_KP_5&#160;&#160;&#160;325</td>
1736 </tr>
1737 </table>
1738</div><div class="memdoc">
1739
1740</div>
1741</div>
1742<a id="gafc141b0f8450519084c01092a3157faa" name="gafc141b0f8450519084c01092a3157faa"></a>
1743<h2 class="memtitle"><span class="permalink"><a href="#gafc141b0f8450519084c01092a3157faa">&#9670;&nbsp;</a></span>GLFW_KEY_KP_6</h2>
1744
1745<div class="memitem">
1746<div class="memproto">
1747 <table class="memname">
1748 <tr>
1749 <td class="memname">#define GLFW_KEY_KP_6&#160;&#160;&#160;326</td>
1750 </tr>
1751 </table>
1752</div><div class="memdoc">
1753
1754</div>
1755</div>
1756<a id="ga8882f411f05d04ec77a9563974bbfa53" name="ga8882f411f05d04ec77a9563974bbfa53"></a>
1757<h2 class="memtitle"><span class="permalink"><a href="#ga8882f411f05d04ec77a9563974bbfa53">&#9670;&nbsp;</a></span>GLFW_KEY_KP_7</h2>
1758
1759<div class="memitem">
1760<div class="memproto">
1761 <table class="memname">
1762 <tr>
1763 <td class="memname">#define GLFW_KEY_KP_7&#160;&#160;&#160;327</td>
1764 </tr>
1765 </table>
1766</div><div class="memdoc">
1767
1768</div>
1769</div>
1770<a id="gab2ea2e6a12f89d315045af520ac78cec" name="gab2ea2e6a12f89d315045af520ac78cec"></a>
1771<h2 class="memtitle"><span class="permalink"><a href="#gab2ea2e6a12f89d315045af520ac78cec">&#9670;&nbsp;</a></span>GLFW_KEY_KP_8</h2>
1772
1773<div class="memitem">
1774<div class="memproto">
1775 <table class="memname">
1776 <tr>
1777 <td class="memname">#define GLFW_KEY_KP_8&#160;&#160;&#160;328</td>
1778 </tr>
1779 </table>
1780</div><div class="memdoc">
1781
1782</div>
1783</div>
1784<a id="gafb21426b630ed4fcc084868699ba74c1" name="gafb21426b630ed4fcc084868699ba74c1"></a>
1785<h2 class="memtitle"><span class="permalink"><a href="#gafb21426b630ed4fcc084868699ba74c1">&#9670;&nbsp;</a></span>GLFW_KEY_KP_9</h2>
1786
1787<div class="memitem">
1788<div class="memproto">
1789 <table class="memname">
1790 <tr>
1791 <td class="memname">#define GLFW_KEY_KP_9&#160;&#160;&#160;329</td>
1792 </tr>
1793 </table>
1794</div><div class="memdoc">
1795
1796</div>
1797</div>
1798<a id="ga4e231d968796331a9ea0dbfb98d4005b" name="ga4e231d968796331a9ea0dbfb98d4005b"></a>
1799<h2 class="memtitle"><span class="permalink"><a href="#ga4e231d968796331a9ea0dbfb98d4005b">&#9670;&nbsp;</a></span>GLFW_KEY_KP_DECIMAL</h2>
1800
1801<div class="memitem">
1802<div class="memproto">
1803 <table class="memname">
1804 <tr>
1805 <td class="memname">#define GLFW_KEY_KP_DECIMAL&#160;&#160;&#160;330</td>
1806 </tr>
1807 </table>
1808</div><div class="memdoc">
1809
1810</div>
1811</div>
1812<a id="gabca1733780a273d549129ad0f250d1e5" name="gabca1733780a273d549129ad0f250d1e5"></a>
1813<h2 class="memtitle"><span class="permalink"><a href="#gabca1733780a273d549129ad0f250d1e5">&#9670;&nbsp;</a></span>GLFW_KEY_KP_DIVIDE</h2>
1814
1815<div class="memitem">
1816<div class="memproto">
1817 <table class="memname">
1818 <tr>
1819 <td class="memname">#define GLFW_KEY_KP_DIVIDE&#160;&#160;&#160;331</td>
1820 </tr>
1821 </table>
1822</div><div class="memdoc">
1823
1824</div>
1825</div>
1826<a id="ga9ada267eb0e78ed2ada8701dd24a56ef" name="ga9ada267eb0e78ed2ada8701dd24a56ef"></a>
1827<h2 class="memtitle"><span class="permalink"><a href="#ga9ada267eb0e78ed2ada8701dd24a56ef">&#9670;&nbsp;</a></span>GLFW_KEY_KP_MULTIPLY</h2>
1828
1829<div class="memitem">
1830<div class="memproto">
1831 <table class="memname">
1832 <tr>
1833 <td class="memname">#define GLFW_KEY_KP_MULTIPLY&#160;&#160;&#160;332</td>
1834 </tr>
1835 </table>
1836</div><div class="memdoc">
1837
1838</div>
1839</div>
1840<a id="gaa3dbd60782ff93d6082a124bce1fa236" name="gaa3dbd60782ff93d6082a124bce1fa236"></a>
1841<h2 class="memtitle"><span class="permalink"><a href="#gaa3dbd60782ff93d6082a124bce1fa236">&#9670;&nbsp;</a></span>GLFW_KEY_KP_SUBTRACT</h2>
1842
1843<div class="memitem">
1844<div class="memproto">
1845 <table class="memname">
1846 <tr>
1847 <td class="memname">#define GLFW_KEY_KP_SUBTRACT&#160;&#160;&#160;333</td>
1848 </tr>
1849 </table>
1850</div><div class="memdoc">
1851
1852</div>
1853</div>
1854<a id="gad09c7c98acc79e89aa6a0a91275becac" name="gad09c7c98acc79e89aa6a0a91275becac"></a>
1855<h2 class="memtitle"><span class="permalink"><a href="#gad09c7c98acc79e89aa6a0a91275becac">&#9670;&nbsp;</a></span>GLFW_KEY_KP_ADD</h2>
1856
1857<div class="memitem">
1858<div class="memproto">
1859 <table class="memname">
1860 <tr>
1861 <td class="memname">#define GLFW_KEY_KP_ADD&#160;&#160;&#160;334</td>
1862 </tr>
1863 </table>
1864</div><div class="memdoc">
1865
1866</div>
1867</div>
1868<a id="ga4f728f8738f2986bd63eedd3d412e8cf" name="ga4f728f8738f2986bd63eedd3d412e8cf"></a>
1869<h2 class="memtitle"><span class="permalink"><a href="#ga4f728f8738f2986bd63eedd3d412e8cf">&#9670;&nbsp;</a></span>GLFW_KEY_KP_ENTER</h2>
1870
1871<div class="memitem">
1872<div class="memproto">
1873 <table class="memname">
1874 <tr>
1875 <td class="memname">#define GLFW_KEY_KP_ENTER&#160;&#160;&#160;335</td>
1876 </tr>
1877 </table>
1878</div><div class="memdoc">
1879
1880</div>
1881</div>
1882<a id="gaebdc76d4a808191e6d21b7e4ad2acd97" name="gaebdc76d4a808191e6d21b7e4ad2acd97"></a>
1883<h2 class="memtitle"><span class="permalink"><a href="#gaebdc76d4a808191e6d21b7e4ad2acd97">&#9670;&nbsp;</a></span>GLFW_KEY_KP_EQUAL</h2>
1884
1885<div class="memitem">
1886<div class="memproto">
1887 <table class="memname">
1888 <tr>
1889 <td class="memname">#define GLFW_KEY_KP_EQUAL&#160;&#160;&#160;336</td>
1890 </tr>
1891 </table>
1892</div><div class="memdoc">
1893
1894</div>
1895</div>
1896<a id="ga8a530a28a65c44ab5d00b759b756d3f6" name="ga8a530a28a65c44ab5d00b759b756d3f6"></a>
1897<h2 class="memtitle"><span class="permalink"><a href="#ga8a530a28a65c44ab5d00b759b756d3f6">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_SHIFT</h2>
1898
1899<div class="memitem">
1900<div class="memproto">
1901 <table class="memname">
1902 <tr>
1903 <td class="memname">#define GLFW_KEY_LEFT_SHIFT&#160;&#160;&#160;340</td>
1904 </tr>
1905 </table>
1906</div><div class="memdoc">
1907
1908</div>
1909</div>
1910<a id="ga9f97b743e81460ac4b2deddecd10a464" name="ga9f97b743e81460ac4b2deddecd10a464"></a>
1911<h2 class="memtitle"><span class="permalink"><a href="#ga9f97b743e81460ac4b2deddecd10a464">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_CONTROL</h2>
1912
1913<div class="memitem">
1914<div class="memproto">
1915 <table class="memname">
1916 <tr>
1917 <td class="memname">#define GLFW_KEY_LEFT_CONTROL&#160;&#160;&#160;341</td>
1918 </tr>
1919 </table>
1920</div><div class="memdoc">
1921
1922</div>
1923</div>
1924<a id="ga7f27dabf63a7789daa31e1c96790219b" name="ga7f27dabf63a7789daa31e1c96790219b"></a>
1925<h2 class="memtitle"><span class="permalink"><a href="#ga7f27dabf63a7789daa31e1c96790219b">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_ALT</h2>
1926
1927<div class="memitem">
1928<div class="memproto">
1929 <table class="memname">
1930 <tr>
1931 <td class="memname">#define GLFW_KEY_LEFT_ALT&#160;&#160;&#160;342</td>
1932 </tr>
1933 </table>
1934</div><div class="memdoc">
1935
1936</div>
1937</div>
1938<a id="gafb1207c91997fc295afd1835fbc5641a" name="gafb1207c91997fc295afd1835fbc5641a"></a>
1939<h2 class="memtitle"><span class="permalink"><a href="#gafb1207c91997fc295afd1835fbc5641a">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_SUPER</h2>
1940
1941<div class="memitem">
1942<div class="memproto">
1943 <table class="memname">
1944 <tr>
1945 <td class="memname">#define GLFW_KEY_LEFT_SUPER&#160;&#160;&#160;343</td>
1946 </tr>
1947 </table>
1948</div><div class="memdoc">
1949
1950</div>
1951</div>
1952<a id="gaffca36b99c9dce1a19cb9befbadce691" name="gaffca36b99c9dce1a19cb9befbadce691"></a>
1953<h2 class="memtitle"><span class="permalink"><a href="#gaffca36b99c9dce1a19cb9befbadce691">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_SHIFT</h2>
1954
1955<div class="memitem">
1956<div class="memproto">
1957 <table class="memname">
1958 <tr>
1959 <td class="memname">#define GLFW_KEY_RIGHT_SHIFT&#160;&#160;&#160;344</td>
1960 </tr>
1961 </table>
1962</div><div class="memdoc">
1963
1964</div>
1965</div>
1966<a id="gad1ca2094b2694e7251d0ab1fd34f8519" name="gad1ca2094b2694e7251d0ab1fd34f8519"></a>
1967<h2 class="memtitle"><span class="permalink"><a href="#gad1ca2094b2694e7251d0ab1fd34f8519">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_CONTROL</h2>
1968
1969<div class="memitem">
1970<div class="memproto">
1971 <table class="memname">
1972 <tr>
1973 <td class="memname">#define GLFW_KEY_RIGHT_CONTROL&#160;&#160;&#160;345</td>
1974 </tr>
1975 </table>
1976</div><div class="memdoc">
1977
1978</div>
1979</div>
1980<a id="ga687b38009131cfdd07a8d05fff8fa446" name="ga687b38009131cfdd07a8d05fff8fa446"></a>
1981<h2 class="memtitle"><span class="permalink"><a href="#ga687b38009131cfdd07a8d05fff8fa446">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_ALT</h2>
1982
1983<div class="memitem">
1984<div class="memproto">
1985 <table class="memname">
1986 <tr>
1987 <td class="memname">#define GLFW_KEY_RIGHT_ALT&#160;&#160;&#160;346</td>
1988 </tr>
1989 </table>
1990</div><div class="memdoc">
1991
1992</div>
1993</div>
1994<a id="gad4547a3e8e247594acb60423fe6502db" name="gad4547a3e8e247594acb60423fe6502db"></a>
1995<h2 class="memtitle"><span class="permalink"><a href="#gad4547a3e8e247594acb60423fe6502db">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_SUPER</h2>
1996
1997<div class="memitem">
1998<div class="memproto">
1999 <table class="memname">
2000 <tr>
2001 <td class="memname">#define GLFW_KEY_RIGHT_SUPER&#160;&#160;&#160;347</td>
2002 </tr>
2003 </table>
2004</div><div class="memdoc">
2005
2006</div>
2007</div>
2008<a id="ga9845be48a745fc232045c9ec174d8820" name="ga9845be48a745fc232045c9ec174d8820"></a>
2009<h2 class="memtitle"><span class="permalink"><a href="#ga9845be48a745fc232045c9ec174d8820">&#9670;&nbsp;</a></span>GLFW_KEY_MENU</h2>
2010
2011<div class="memitem">
2012<div class="memproto">
2013 <table class="memname">
2014 <tr>
2015 <td class="memname">#define GLFW_KEY_MENU&#160;&#160;&#160;348</td>
2016 </tr>
2017 </table>
2018</div><div class="memdoc">
2019
2020</div>
2021</div>
2022<a id="ga442cbaef7bfb9a4ba13594dd7fbf2789" name="ga442cbaef7bfb9a4ba13594dd7fbf2789"></a>
2023<h2 class="memtitle"><span class="permalink"><a href="#ga442cbaef7bfb9a4ba13594dd7fbf2789">&#9670;&nbsp;</a></span>GLFW_KEY_LAST</h2>
2024
2025<div class="memitem">
2026<div class="memproto">
2027 <table class="memname">
2028 <tr>
2029 <td class="memname">#define GLFW_KEY_LAST&#160;&#160;&#160;<a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a></td>
2030 </tr>
2031 </table>
2032</div><div class="memdoc">
2033
2034</div>
2035</div>
2036</div><!-- contents -->
2037<address class="footer">
2038<p>
2039Last update on Thu Oct 28 2021 for GLFW 3.3.5
2040</p>
2041</address>
2042</body>
2043</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__mods.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__mods.html
new file mode 100644
index 0000000..23eb4b5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__mods.html
@@ -0,0 +1,191 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Modifier key flags</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Modifier key flags<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#input_key">key input</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:ga14994d3196c290aaa347248e51740274"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga14994d3196c290aaa347248e51740274">GLFW_MOD_SHIFT</a>&#160;&#160;&#160;0x0001</td></tr>
75<tr class="memdesc:ga14994d3196c290aaa347248e51740274"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Shift keys were held down. <a href="group__mods.html#ga14994d3196c290aaa347248e51740274">More...</a><br /></td></tr>
76<tr class="separator:ga14994d3196c290aaa347248e51740274"><td class="memSeparator" colspan="2">&#160;</td></tr>
77<tr class="memitem:ga6ed94871c3208eefd85713fa929d45aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">GLFW_MOD_CONTROL</a>&#160;&#160;&#160;0x0002</td></tr>
78<tr class="memdesc:ga6ed94871c3208eefd85713fa929d45aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Control keys were held down. <a href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">More...</a><br /></td></tr>
79<tr class="separator:ga6ed94871c3208eefd85713fa929d45aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:gad2acd5633463c29e07008687ea73c0f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">GLFW_MOD_ALT</a>&#160;&#160;&#160;0x0004</td></tr>
81<tr class="memdesc:gad2acd5633463c29e07008687ea73c0f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Alt keys were held down. <a href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">More...</a><br /></td></tr>
82<tr class="separator:gad2acd5633463c29e07008687ea73c0f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
83<tr class="memitem:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">GLFW_MOD_SUPER</a>&#160;&#160;&#160;0x0008</td></tr>
84<tr class="memdesc:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Super keys were held down. <a href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">More...</a><br /></td></tr>
85<tr class="separator:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:gaefeef8fcf825a6e43e241b337897200f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a>&#160;&#160;&#160;0x0010</td></tr>
87<tr class="memdesc:gaefeef8fcf825a6e43e241b337897200f"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Caps Lock key is enabled. <a href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">More...</a><br /></td></tr>
88<tr class="separator:gaefeef8fcf825a6e43e241b337897200f"><td class="memSeparator" colspan="2">&#160;</td></tr>
89<tr class="memitem:ga64e020b8a42af8376e944baf61feecbe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a>&#160;&#160;&#160;0x0020</td></tr>
90<tr class="memdesc:ga64e020b8a42af8376e944baf61feecbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Num Lock key is enabled. <a href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">More...</a><br /></td></tr>
91<tr class="separator:ga64e020b8a42af8376e944baf61feecbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
92</table>
93<h2 class="groupheader">Macro Definition Documentation</h2>
94<a id="ga14994d3196c290aaa347248e51740274" name="ga14994d3196c290aaa347248e51740274"></a>
95<h2 class="memtitle"><span class="permalink"><a href="#ga14994d3196c290aaa347248e51740274">&#9670;&nbsp;</a></span>GLFW_MOD_SHIFT</h2>
96
97<div class="memitem">
98<div class="memproto">
99 <table class="memname">
100 <tr>
101 <td class="memname">#define GLFW_MOD_SHIFT&#160;&#160;&#160;0x0001</td>
102 </tr>
103 </table>
104</div><div class="memdoc">
105<p >If this bit is set one or more Shift keys were held down. </p>
106
107</div>
108</div>
109<a id="ga6ed94871c3208eefd85713fa929d45aa" name="ga6ed94871c3208eefd85713fa929d45aa"></a>
110<h2 class="memtitle"><span class="permalink"><a href="#ga6ed94871c3208eefd85713fa929d45aa">&#9670;&nbsp;</a></span>GLFW_MOD_CONTROL</h2>
111
112<div class="memitem">
113<div class="memproto">
114 <table class="memname">
115 <tr>
116 <td class="memname">#define GLFW_MOD_CONTROL&#160;&#160;&#160;0x0002</td>
117 </tr>
118 </table>
119</div><div class="memdoc">
120<p >If this bit is set one or more Control keys were held down. </p>
121
122</div>
123</div>
124<a id="gad2acd5633463c29e07008687ea73c0f4" name="gad2acd5633463c29e07008687ea73c0f4"></a>
125<h2 class="memtitle"><span class="permalink"><a href="#gad2acd5633463c29e07008687ea73c0f4">&#9670;&nbsp;</a></span>GLFW_MOD_ALT</h2>
126
127<div class="memitem">
128<div class="memproto">
129 <table class="memname">
130 <tr>
131 <td class="memname">#define GLFW_MOD_ALT&#160;&#160;&#160;0x0004</td>
132 </tr>
133 </table>
134</div><div class="memdoc">
135<p >If this bit is set one or more Alt keys were held down. </p>
136
137</div>
138</div>
139<a id="ga6b64ba10ea0227cf6f42efd0a220aba1" name="ga6b64ba10ea0227cf6f42efd0a220aba1"></a>
140<h2 class="memtitle"><span class="permalink"><a href="#ga6b64ba10ea0227cf6f42efd0a220aba1">&#9670;&nbsp;</a></span>GLFW_MOD_SUPER</h2>
141
142<div class="memitem">
143<div class="memproto">
144 <table class="memname">
145 <tr>
146 <td class="memname">#define GLFW_MOD_SUPER&#160;&#160;&#160;0x0008</td>
147 </tr>
148 </table>
149</div><div class="memdoc">
150<p >If this bit is set one or more Super keys were held down. </p>
151
152</div>
153</div>
154<a id="gaefeef8fcf825a6e43e241b337897200f" name="gaefeef8fcf825a6e43e241b337897200f"></a>
155<h2 class="memtitle"><span class="permalink"><a href="#gaefeef8fcf825a6e43e241b337897200f">&#9670;&nbsp;</a></span>GLFW_MOD_CAPS_LOCK</h2>
156
157<div class="memitem">
158<div class="memproto">
159 <table class="memname">
160 <tr>
161 <td class="memname">#define GLFW_MOD_CAPS_LOCK&#160;&#160;&#160;0x0010</td>
162 </tr>
163 </table>
164</div><div class="memdoc">
165<p >If this bit is set the Caps Lock key is enabled and the <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> input mode is set. </p>
166
167</div>
168</div>
169<a id="ga64e020b8a42af8376e944baf61feecbe" name="ga64e020b8a42af8376e944baf61feecbe"></a>
170<h2 class="memtitle"><span class="permalink"><a href="#ga64e020b8a42af8376e944baf61feecbe">&#9670;&nbsp;</a></span>GLFW_MOD_NUM_LOCK</h2>
171
172<div class="memitem">
173<div class="memproto">
174 <table class="memname">
175 <tr>
176 <td class="memname">#define GLFW_MOD_NUM_LOCK&#160;&#160;&#160;0x0020</td>
177 </tr>
178 </table>
179</div><div class="memdoc">
180<p >If this bit is set the Num Lock key is enabled and the <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> input mode is set. </p>
181
182</div>
183</div>
184</div><!-- contents -->
185<address class="footer">
186<p>
187Last update on Thu Oct 28 2021 for GLFW 3.3.5
188</p>
189</address>
190</body>
191</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__monitor.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__monitor.html
new file mode 100644
index 0000000..e9975b8
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__monitor.html
@@ -0,0 +1,841 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Monitor reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#typedef-members">Typedefs</a> &#124;
66<a href="#func-members">Functions</a> </div>
67 <div class="headertitle"><div class="title">Monitor reference</div></div>
68</div><!--header-->
69<div class="contents">
70<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
71<p >This is the reference documentation for monitor related functions and types. For more task-oriented information, see the <a class="el" href="monitor_guide.html">Monitor guide</a>. </p>
72<table class="memberdecls">
73<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
74Typedefs</h2></td></tr>
75<tr class="memitem:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></td></tr>
76<tr class="memdesc:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque monitor object. <a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">More...</a><br /></td></tr>
77<tr class="separator:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
78<tr class="memitem:gaabe16caca8dea952504dfdebdf4cd249"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>) (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int event)</td></tr>
79<tr class="memdesc:gaabe16caca8dea952504dfdebdf4cd249"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for monitor configuration callbacks. <a href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">More...</a><br /></td></tr>
80<tr class="separator:gaabe16caca8dea952504dfdebdf4cd249"><td class="memSeparator" colspan="2">&#160;</td></tr>
81<tr class="memitem:ga902c2816ac9b34b757282daab59b2565"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a></td></tr>
82<tr class="memdesc:ga902c2816ac9b34b757282daab59b2565"><td class="mdescLeft">&#160;</td><td class="mdescRight">Video mode type. <a href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">More...</a><br /></td></tr>
83<tr class="separator:ga902c2816ac9b34b757282daab59b2565"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:ga939cf093cb0af0498b7b54dc2e181404"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a></td></tr>
85<tr class="memdesc:ga939cf093cb0af0498b7b54dc2e181404"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamma ramp. <a href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">More...</a><br /></td></tr>
86<tr class="separator:ga939cf093cb0af0498b7b54dc2e181404"><td class="memSeparator" colspan="2">&#160;</td></tr>
87</table><table class="memberdecls">
88<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
89Functions</h2></td></tr>
90<tr class="memitem:ga70b1156d5d24e9928f145d6c864369d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a> (int *count)</td></tr>
91<tr class="memdesc:ga70b1156d5d24e9928f145d6c864369d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the currently connected monitors. <a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">More...</a><br /></td></tr>
92<tr class="separator:ga70b1156d5d24e9928f145d6c864369d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
93<tr class="memitem:gac3adb24947eb709e1874028272e5dfc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a> (void)</td></tr>
94<tr class="memdesc:gac3adb24947eb709e1874028272e5dfc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the primary monitor. <a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">More...</a><br /></td></tr>
95<tr class="separator:gac3adb24947eb709e1874028272e5dfc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
96<tr class="memitem:ga102f54e7acc9149edbcf0997152df8c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos)</td></tr>
97<tr class="memdesc:ga102f54e7acc9149edbcf0997152df8c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the position of the monitor's viewport on the virtual screen. <a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">More...</a><br /></td></tr>
98<tr class="separator:ga102f54e7acc9149edbcf0997152df8c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
99<tr class="memitem:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos, int *width, int *height)</td></tr>
100<tr class="memdesc:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the work area of the monitor. <a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">More...</a><br /></td></tr>
101<tr class="separator:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
102<tr class="memitem:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *widthMM, int *heightMM)</td></tr>
103<tr class="memdesc:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the physical size of the monitor. <a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">More...</a><br /></td></tr>
104<tr class="separator:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
105<tr class="memitem:gad3152e84465fa620b601265ebfcdb21b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float *xscale, float *yscale)</td></tr>
106<tr class="memdesc:gad3152e84465fa620b601265ebfcdb21b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified monitor. <a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">More...</a><br /></td></tr>
107<tr class="separator:gad3152e84465fa620b601265ebfcdb21b"><td class="memSeparator" colspan="2">&#160;</td></tr>
108<tr class="memitem:ga7af83e13489d90379588fb331b9e4b68"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
109<tr class="memdesc:ga7af83e13489d90379588fb331b9e4b68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified monitor. <a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">More...</a><br /></td></tr>
110<tr class="separator:ga7af83e13489d90379588fb331b9e4b68"><td class="memSeparator" colspan="2">&#160;</td></tr>
111<tr class="memitem:ga702750e24313a686d3637297b6e85fda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, void *pointer)</td></tr>
112<tr class="memdesc:ga702750e24313a686d3637297b6e85fda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified monitor. <a href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">More...</a><br /></td></tr>
113<tr class="separator:ga702750e24313a686d3637297b6e85fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
114<tr class="memitem:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
115<tr class="memdesc:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified monitor. <a href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">More...</a><br /></td></tr>
116<tr class="separator:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
117<tr class="memitem:gab39df645587c8518192aa746c2fb06c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a> (<a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> callback)</td></tr>
118<tr class="memdesc:gab39df645587c8518192aa746c2fb06c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the monitor configuration callback. <a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">More...</a><br /></td></tr>
119<tr class="separator:gab39df645587c8518192aa746c2fb06c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
120<tr class="memitem:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *count)</td></tr>
121<tr class="memdesc:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the available video modes for the specified monitor. <a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">More...</a><br /></td></tr>
122<tr class="separator:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
123<tr class="memitem:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
124<tr class="memdesc:gaba376fa7e76634b4788bddc505d6c9d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current mode of the specified monitor. <a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">More...</a><br /></td></tr>
125<tr class="separator:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
126<tr class="memitem:ga6ac582625c990220785ddd34efa3169a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float gamma)</td></tr>
127<tr class="memdesc:ga6ac582625c990220785ddd34efa3169a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a gamma ramp and sets it for the specified monitor. <a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">More...</a><br /></td></tr>
128<tr class="separator:ga6ac582625c990220785ddd34efa3169a"><td class="memSeparator" colspan="2">&#160;</td></tr>
129<tr class="memitem:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
130<tr class="memdesc:ga76ba90debcf0062b5c4b73052b24f96f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">More...</a><br /></td></tr>
131<tr class="separator:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memSeparator" colspan="2">&#160;</td></tr>
132<tr class="memitem:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *ramp)</td></tr>
133<tr class="memdesc:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">More...</a><br /></td></tr>
134<tr class="separator:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
135</table>
136<h2 class="groupheader">Typedef Documentation</h2>
137<a id="ga8d9efd1cde9426692c73fe40437d0ae3" name="ga8d9efd1cde9426692c73fe40437d0ae3"></a>
138<h2 class="memtitle"><span class="permalink"><a href="#ga8d9efd1cde9426692c73fe40437d0ae3">&#9670;&nbsp;</a></span>GLFWmonitor</h2>
139
140<div class="memitem">
141<div class="memproto">
142 <table class="memname">
143 <tr>
144 <td class="memname">typedef struct <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></td>
145 </tr>
146 </table>
147</div><div class="memdoc">
148<p >Opaque monitor object.</p>
149<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_object">Monitor objects</a></dd></dl>
150<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
151
152</div>
153</div>
154<a id="gaabe16caca8dea952504dfdebdf4cd249" name="gaabe16caca8dea952504dfdebdf4cd249"></a>
155<h2 class="memtitle"><span class="permalink"><a href="#gaabe16caca8dea952504dfdebdf4cd249">&#9670;&nbsp;</a></span>GLFWmonitorfun</h2>
156
157<div class="memitem">
158<div class="memproto">
159 <table class="memname">
160 <tr>
161 <td class="memname">typedef void(* GLFWmonitorfun) (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int event)</td>
162 </tr>
163 </table>
164</div><div class="memdoc">
165<p >This is the function pointer type for monitor configuration callbacks. A monitor callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event)</div>
166<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1174</div></div>
167</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
168 <table class="params">
169 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor that was connected or disconnected. </td></tr>
170 <tr><td class="paramdir">[in]</td><td class="paramname">event</td><td>One of <code>GLFW_CONNECTED</code> or <code>GLFW_DISCONNECTED</code>. Future releases may add more events.</td></tr>
171 </table>
172 </dd>
173</dl>
174<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a> </dd>
175<dd>
176<a class="el" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a></dd></dl>
177<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
178
179</div>
180</div>
181<a id="ga902c2816ac9b34b757282daab59b2565" name="ga902c2816ac9b34b757282daab59b2565"></a>
182<h2 class="memtitle"><span class="permalink"><a href="#ga902c2816ac9b34b757282daab59b2565">&#9670;&nbsp;</a></span>GLFWvidmode</h2>
183
184<div class="memitem">
185<div class="memproto">
186 <table class="memname">
187 <tr>
188 <td class="memname">typedef struct <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a></td>
189 </tr>
190 </table>
191</div><div class="memdoc">
192<p >This describes a single video mode.</p>
193<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
194<dd>
195<a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> </dd>
196<dd>
197<a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></dd></dl>
198<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added refresh rate member. </dd></dl>
199
200</div>
201</div>
202<a id="ga939cf093cb0af0498b7b54dc2e181404" name="ga939cf093cb0af0498b7b54dc2e181404"></a>
203<h2 class="memtitle"><span class="permalink"><a href="#ga939cf093cb0af0498b7b54dc2e181404">&#9670;&nbsp;</a></span>GLFWgammaramp</h2>
204
205<div class="memitem">
206<div class="memproto">
207 <table class="memname">
208 <tr>
209 <td class="memname">typedef struct <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a></td>
210 </tr>
211 </table>
212</div><div class="memdoc">
213<p >This describes the gamma ramp for a monitor.</p>
214<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a> </dd>
215<dd>
216<a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> </dd>
217<dd>
218<a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></dd></dl>
219<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
220
221</div>
222</div>
223<h2 class="groupheader">Function Documentation</h2>
224<a id="ga70b1156d5d24e9928f145d6c864369d2" name="ga70b1156d5d24e9928f145d6c864369d2"></a>
225<h2 class="memtitle"><span class="permalink"><a href="#ga70b1156d5d24e9928f145d6c864369d2">&#9670;&nbsp;</a></span>glfwGetMonitors()</h2>
226
227<div class="memitem">
228<div class="memproto">
229 <table class="memname">
230 <tr>
231 <td class="memname"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> ** glfwGetMonitors </td>
232 <td>(</td>
233 <td class="paramtype">int *&#160;</td>
234 <td class="paramname"><em>count</em></td><td>)</td>
235 <td></td>
236 </tr>
237 </table>
238</div><div class="memdoc">
239<p >This function returns an array of handles for all currently connected monitors. The primary monitor is always first in the returned array. If no monitors were found, this function returns <code>NULL</code>.</p>
240<dl class="params"><dt>Parameters</dt><dd>
241 <table class="params">
242 <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of monitors in the returned array. This is set to zero if an error occurred. </td></tr>
243 </table>
244 </dd>
245</dl>
246<dl class="section return"><dt>Returns</dt><dd>An array of monitor handles, or <code>NULL</code> if no monitors were found or if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
247<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
248<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the monitor configuration changes or the library is terminated.</dd></dl>
249<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
250<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a> </dd>
251<dd>
252<a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a> </dd>
253<dd>
254<a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></dd></dl>
255<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
256
257</div>
258</div>
259<a id="gac3adb24947eb709e1874028272e5dfc5" name="gac3adb24947eb709e1874028272e5dfc5"></a>
260<h2 class="memtitle"><span class="permalink"><a href="#gac3adb24947eb709e1874028272e5dfc5">&#9670;&nbsp;</a></span>glfwGetPrimaryMonitor()</h2>
261
262<div class="memitem">
263<div class="memproto">
264 <table class="memname">
265 <tr>
266 <td class="memname"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> * glfwGetPrimaryMonitor </td>
267 <td>(</td>
268 <td class="paramtype">void&#160;</td>
269 <td class="paramname"></td><td>)</td>
270 <td></td>
271 </tr>
272 </table>
273</div><div class="memdoc">
274<p >This function returns the primary monitor. This is usually the monitor where elements like the task bar or global menu bar are located.</p>
275<dl class="section return"><dt>Returns</dt><dd>The primary monitor, or <code>NULL</code> if no monitors were found or if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
276<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
277<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
278<dl class="section remark"><dt>Remarks</dt><dd>The primary monitor is always first in the array returned by <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>.</dd></dl>
279<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a> </dd>
280<dd>
281<a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a></dd></dl>
282<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
283
284</div>
285</div>
286<a id="ga102f54e7acc9149edbcf0997152df8c9" name="ga102f54e7acc9149edbcf0997152df8c9"></a>
287<h2 class="memtitle"><span class="permalink"><a href="#ga102f54e7acc9149edbcf0997152df8c9">&#9670;&nbsp;</a></span>glfwGetMonitorPos()</h2>
288
289<div class="memitem">
290<div class="memproto">
291 <table class="memname">
292 <tr>
293 <td class="memname">void glfwGetMonitorPos </td>
294 <td>(</td>
295 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
296 <td class="paramname"><em>monitor</em>, </td>
297 </tr>
298 <tr>
299 <td class="paramkey"></td>
300 <td></td>
301 <td class="paramtype">int *&#160;</td>
302 <td class="paramname"><em>xpos</em>, </td>
303 </tr>
304 <tr>
305 <td class="paramkey"></td>
306 <td></td>
307 <td class="paramtype">int *&#160;</td>
308 <td class="paramname"><em>ypos</em>&#160;</td>
309 </tr>
310 <tr>
311 <td></td>
312 <td>)</td>
313 <td></td><td></td>
314 </tr>
315 </table>
316</div><div class="memdoc">
317<p >This function returns the position, in screen coordinates, of the upper-left corner of the specified monitor.</p>
318<p >Any or all of the position arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position arguments will be set to zero.</p>
319<dl class="params"><dt>Parameters</dt><dd>
320 <table class="params">
321 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
322 <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the monitor x-coordinate, or <code>NULL</code>. </td></tr>
323 <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the monitor y-coordinate, or <code>NULL</code>.</td></tr>
324 </table>
325 </dd>
326</dl>
327<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
328<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
329<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_properties">Monitor properties</a></dd></dl>
330<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
331
332</div>
333</div>
334<a id="ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0" name="ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"></a>
335<h2 class="memtitle"><span class="permalink"><a href="#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">&#9670;&nbsp;</a></span>glfwGetMonitorWorkarea()</h2>
336
337<div class="memitem">
338<div class="memproto">
339 <table class="memname">
340 <tr>
341 <td class="memname">void glfwGetMonitorWorkarea </td>
342 <td>(</td>
343 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
344 <td class="paramname"><em>monitor</em>, </td>
345 </tr>
346 <tr>
347 <td class="paramkey"></td>
348 <td></td>
349 <td class="paramtype">int *&#160;</td>
350 <td class="paramname"><em>xpos</em>, </td>
351 </tr>
352 <tr>
353 <td class="paramkey"></td>
354 <td></td>
355 <td class="paramtype">int *&#160;</td>
356 <td class="paramname"><em>ypos</em>, </td>
357 </tr>
358 <tr>
359 <td class="paramkey"></td>
360 <td></td>
361 <td class="paramtype">int *&#160;</td>
362 <td class="paramname"><em>width</em>, </td>
363 </tr>
364 <tr>
365 <td class="paramkey"></td>
366 <td></td>
367 <td class="paramtype">int *&#160;</td>
368 <td class="paramname"><em>height</em>&#160;</td>
369 </tr>
370 <tr>
371 <td></td>
372 <td>)</td>
373 <td></td><td></td>
374 </tr>
375 </table>
376</div><div class="memdoc">
377<p >This function returns the position, in screen coordinates, of the upper-left corner of the work area of the specified monitor along with the work area size in screen coordinates. The work area is defined as the area of the monitor not occluded by the operating system task bar where present. If no task bar exists then the work area is the monitor resolution in screen coordinates.</p>
378<p >Any or all of the position and size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position and size arguments will be set to zero.</p>
379<dl class="params"><dt>Parameters</dt><dd>
380 <table class="params">
381 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
382 <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the monitor x-coordinate, or <code>NULL</code>. </td></tr>
383 <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the monitor y-coordinate, or <code>NULL</code>. </td></tr>
384 <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the monitor width, or <code>NULL</code>. </td></tr>
385 <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the monitor height, or <code>NULL</code>.</td></tr>
386 </table>
387 </dd>
388</dl>
389<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
390<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
391<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_workarea">Work area</a></dd></dl>
392<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
393
394</div>
395</div>
396<a id="ga7d8bffc6c55539286a6bd20d32a8d7ea" name="ga7d8bffc6c55539286a6bd20d32a8d7ea"></a>
397<h2 class="memtitle"><span class="permalink"><a href="#ga7d8bffc6c55539286a6bd20d32a8d7ea">&#9670;&nbsp;</a></span>glfwGetMonitorPhysicalSize()</h2>
398
399<div class="memitem">
400<div class="memproto">
401 <table class="memname">
402 <tr>
403 <td class="memname">void glfwGetMonitorPhysicalSize </td>
404 <td>(</td>
405 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
406 <td class="paramname"><em>monitor</em>, </td>
407 </tr>
408 <tr>
409 <td class="paramkey"></td>
410 <td></td>
411 <td class="paramtype">int *&#160;</td>
412 <td class="paramname"><em>widthMM</em>, </td>
413 </tr>
414 <tr>
415 <td class="paramkey"></td>
416 <td></td>
417 <td class="paramtype">int *&#160;</td>
418 <td class="paramname"><em>heightMM</em>&#160;</td>
419 </tr>
420 <tr>
421 <td></td>
422 <td>)</td>
423 <td></td><td></td>
424 </tr>
425 </table>
426</div><div class="memdoc">
427<p >This function returns the size, in millimetres, of the display area of the specified monitor.</p>
428<p >Some systems do not provide accurate monitor size information, either because the monitor <a href="https://en.wikipedia.org/wiki/Extended_display_identification_data">EDID</a> data is incorrect or because the driver does not report it accurately.</p>
429<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
430<dl class="params"><dt>Parameters</dt><dd>
431 <table class="params">
432 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
433 <tr><td class="paramdir">[out]</td><td class="paramname">widthMM</td><td>Where to store the width, in millimetres, of the monitor's display area, or <code>NULL</code>. </td></tr>
434 <tr><td class="paramdir">[out]</td><td class="paramname">heightMM</td><td>Where to store the height, in millimetres, of the monitor's display area, or <code>NULL</code>.</td></tr>
435 </table>
436 </dd>
437</dl>
438<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
439<dl class="section remark"><dt>Remarks</dt><dd><b>Windows:</b> On Windows 8 and earlier the physical size is calculated from the current resolution and system DPI instead of querying the monitor EDID data.</dd></dl>
440<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
441<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_properties">Monitor properties</a></dd></dl>
442<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
443
444</div>
445</div>
446<a id="gad3152e84465fa620b601265ebfcdb21b" name="gad3152e84465fa620b601265ebfcdb21b"></a>
447<h2 class="memtitle"><span class="permalink"><a href="#gad3152e84465fa620b601265ebfcdb21b">&#9670;&nbsp;</a></span>glfwGetMonitorContentScale()</h2>
448
449<div class="memitem">
450<div class="memproto">
451 <table class="memname">
452 <tr>
453 <td class="memname">void glfwGetMonitorContentScale </td>
454 <td>(</td>
455 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
456 <td class="paramname"><em>monitor</em>, </td>
457 </tr>
458 <tr>
459 <td class="paramkey"></td>
460 <td></td>
461 <td class="paramtype">float *&#160;</td>
462 <td class="paramname"><em>xscale</em>, </td>
463 </tr>
464 <tr>
465 <td class="paramkey"></td>
466 <td></td>
467 <td class="paramtype">float *&#160;</td>
468 <td class="paramname"><em>yscale</em>&#160;</td>
469 </tr>
470 <tr>
471 <td></td>
472 <td>)</td>
473 <td></td><td></td>
474 </tr>
475 </table>
476</div><div class="memdoc">
477<p >This function retrieves the content scale for the specified monitor. The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
478<p >The content scale may depend on both the monitor resolution and pixel density and on user settings. It may be very different from the raw DPI calculated from the physical size and current resolution.</p>
479<dl class="params"><dt>Parameters</dt><dd>
480 <table class="params">
481 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
482 <tr><td class="paramdir">[out]</td><td class="paramname">xscale</td><td>Where to store the x-axis content scale, or <code>NULL</code>. </td></tr>
483 <tr><td class="paramdir">[out]</td><td class="paramname">yscale</td><td>Where to store the y-axis content scale, or <code>NULL</code>.</td></tr>
484 </table>
485 </dd>
486</dl>
487<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
488<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
489<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_scale">Content scale</a> </dd>
490<dd>
491<a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></dd></dl>
492<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
493
494</div>
495</div>
496<a id="ga7af83e13489d90379588fb331b9e4b68" name="ga7af83e13489d90379588fb331b9e4b68"></a>
497<h2 class="memtitle"><span class="permalink"><a href="#ga7af83e13489d90379588fb331b9e4b68">&#9670;&nbsp;</a></span>glfwGetMonitorName()</h2>
498
499<div class="memitem">
500<div class="memproto">
501 <table class="memname">
502 <tr>
503 <td class="memname">const char * glfwGetMonitorName </td>
504 <td>(</td>
505 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
506 <td class="paramname"><em>monitor</em></td><td>)</td>
507 <td></td>
508 </tr>
509 </table>
510</div><div class="memdoc">
511<p >This function returns a human-readable name, encoded as UTF-8, of the specified monitor. The name typically reflects the make and model of the monitor and is not guaranteed to be unique among the connected monitors.</p>
512<dl class="params"><dt>Parameters</dt><dd>
513 <table class="params">
514 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
515 </table>
516 </dd>
517</dl>
518<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded name of the monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
519<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
520<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified monitor is disconnected or the library is terminated.</dd></dl>
521<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
522<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_properties">Monitor properties</a></dd></dl>
523<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
524
525</div>
526</div>
527<a id="ga702750e24313a686d3637297b6e85fda" name="ga702750e24313a686d3637297b6e85fda"></a>
528<h2 class="memtitle"><span class="permalink"><a href="#ga702750e24313a686d3637297b6e85fda">&#9670;&nbsp;</a></span>glfwSetMonitorUserPointer()</h2>
529
530<div class="memitem">
531<div class="memproto">
532 <table class="memname">
533 <tr>
534 <td class="memname">void glfwSetMonitorUserPointer </td>
535 <td>(</td>
536 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
537 <td class="paramname"><em>monitor</em>, </td>
538 </tr>
539 <tr>
540 <td class="paramkey"></td>
541 <td></td>
542 <td class="paramtype">void *&#160;</td>
543 <td class="paramname"><em>pointer</em>&#160;</td>
544 </tr>
545 <tr>
546 <td></td>
547 <td>)</td>
548 <td></td><td></td>
549 </tr>
550 </table>
551</div><div class="memdoc">
552<p >This function sets the user-defined pointer of the specified monitor. The current value is retained until the monitor is disconnected. The initial value is <code>NULL</code>.</p>
553<p >This function may be called from the monitor callback, even for a monitor that is being disconnected.</p>
554<dl class="params"><dt>Parameters</dt><dd>
555 <table class="params">
556 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose pointer to set. </td></tr>
557 <tr><td class="paramdir">[in]</td><td class="paramname">pointer</td><td>The new value.</td></tr>
558 </table>
559 </dd>
560</dl>
561<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
562<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
563<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_userptr">User pointer</a> </dd>
564<dd>
565<a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a></dd></dl>
566<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
567
568</div>
569</div>
570<a id="ga1adbfbfb8cd58b23cfee82e574fbbdc5" name="ga1adbfbfb8cd58b23cfee82e574fbbdc5"></a>
571<h2 class="memtitle"><span class="permalink"><a href="#ga1adbfbfb8cd58b23cfee82e574fbbdc5">&#9670;&nbsp;</a></span>glfwGetMonitorUserPointer()</h2>
572
573<div class="memitem">
574<div class="memproto">
575 <table class="memname">
576 <tr>
577 <td class="memname">void * glfwGetMonitorUserPointer </td>
578 <td>(</td>
579 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
580 <td class="paramname"><em>monitor</em></td><td>)</td>
581 <td></td>
582 </tr>
583 </table>
584</div><div class="memdoc">
585<p >This function returns the current value of the user-defined pointer of the specified monitor. The initial value is <code>NULL</code>.</p>
586<p >This function may be called from the monitor callback, even for a monitor that is being disconnected.</p>
587<dl class="params"><dt>Parameters</dt><dd>
588 <table class="params">
589 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose pointer to return.</td></tr>
590 </table>
591 </dd>
592</dl>
593<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
594<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
595<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_userptr">User pointer</a> </dd>
596<dd>
597<a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a></dd></dl>
598<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
599
600</div>
601</div>
602<a id="gab39df645587c8518192aa746c2fb06c3" name="gab39df645587c8518192aa746c2fb06c3"></a>
603<h2 class="memtitle"><span class="permalink"><a href="#gab39df645587c8518192aa746c2fb06c3">&#9670;&nbsp;</a></span>glfwSetMonitorCallback()</h2>
604
605<div class="memitem">
606<div class="memproto">
607 <table class="memname">
608 <tr>
609 <td class="memname"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> glfwSetMonitorCallback </td>
610 <td>(</td>
611 <td class="paramtype"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>&#160;</td>
612 <td class="paramname"><em>callback</em></td><td>)</td>
613 <td></td>
614 </tr>
615 </table>
616</div><div class="memdoc">
617<p >This function sets the monitor configuration callback, or removes the currently set callback. This is called when a monitor is connected to or disconnected from the system.</p>
618<dl class="params"><dt>Parameters</dt><dd>
619 <table class="params">
620 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
621 </table>
622 </dd>
623</dl>
624<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
625<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event)</div>
626</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">function pointer type</a>.</dd></dl>
627<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
628<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
629<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a></dd></dl>
630<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
631
632</div>
633</div>
634<a id="gad2e24d2843cb7d6c26202cddd530fc1b" name="gad2e24d2843cb7d6c26202cddd530fc1b"></a>
635<h2 class="memtitle"><span class="permalink"><a href="#gad2e24d2843cb7d6c26202cddd530fc1b">&#9670;&nbsp;</a></span>glfwGetVideoModes()</h2>
636
637<div class="memitem">
638<div class="memproto">
639 <table class="memname">
640 <tr>
641 <td class="memname">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> * glfwGetVideoModes </td>
642 <td>(</td>
643 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
644 <td class="paramname"><em>monitor</em>, </td>
645 </tr>
646 <tr>
647 <td class="paramkey"></td>
648 <td></td>
649 <td class="paramtype">int *&#160;</td>
650 <td class="paramname"><em>count</em>&#160;</td>
651 </tr>
652 <tr>
653 <td></td>
654 <td>)</td>
655 <td></td><td></td>
656 </tr>
657 </table>
658</div><div class="memdoc">
659<p >This function returns an array of all video modes supported by the specified monitor. The returned array is sorted in ascending order, first by color bit depth (the sum of all channel depths), then by resolution area (the product of width and height), then resolution width and finally by refresh rate.</p>
660<dl class="params"><dt>Parameters</dt><dd>
661 <table class="params">
662 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
663 <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of video modes in the returned array. This is set to zero if an error occurred. </td></tr>
664 </table>
665 </dd>
666</dl>
667<dl class="section return"><dt>Returns</dt><dd>An array of video modes, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
668<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
669<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified monitor is disconnected, this function is called again for that monitor or the library is terminated.</dd></dl>
670<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
671<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
672<dd>
673<a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></dd></dl>
674<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Changed to return an array of modes for a specific monitor. </dd></dl>
675
676</div>
677</div>
678<a id="gaba376fa7e76634b4788bddc505d6c9d5" name="gaba376fa7e76634b4788bddc505d6c9d5"></a>
679<h2 class="memtitle"><span class="permalink"><a href="#gaba376fa7e76634b4788bddc505d6c9d5">&#9670;&nbsp;</a></span>glfwGetVideoMode()</h2>
680
681<div class="memitem">
682<div class="memproto">
683 <table class="memname">
684 <tr>
685 <td class="memname">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> * glfwGetVideoMode </td>
686 <td>(</td>
687 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
688 <td class="paramname"><em>monitor</em></td><td>)</td>
689 <td></td>
690 </tr>
691 </table>
692</div><div class="memdoc">
693<p >This function returns the current video mode of the specified monitor. If you have created a full screen window for that monitor, the return value will depend on whether that window is iconified.</p>
694<dl class="params"><dt>Parameters</dt><dd>
695 <table class="params">
696 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
697 </table>
698 </dd>
699</dl>
700<dl class="section return"><dt>Returns</dt><dd>The current mode of the monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
701<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
702<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified monitor is disconnected or the library is terminated.</dd></dl>
703<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
704<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
705<dd>
706<a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></dd></dl>
707<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetDesktopMode</code>. </dd></dl>
708
709</div>
710</div>
711<a id="ga6ac582625c990220785ddd34efa3169a" name="ga6ac582625c990220785ddd34efa3169a"></a>
712<h2 class="memtitle"><span class="permalink"><a href="#ga6ac582625c990220785ddd34efa3169a">&#9670;&nbsp;</a></span>glfwSetGamma()</h2>
713
714<div class="memitem">
715<div class="memproto">
716 <table class="memname">
717 <tr>
718 <td class="memname">void glfwSetGamma </td>
719 <td>(</td>
720 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
721 <td class="paramname"><em>monitor</em>, </td>
722 </tr>
723 <tr>
724 <td class="paramkey"></td>
725 <td></td>
726 <td class="paramtype">float&#160;</td>
727 <td class="paramname"><em>gamma</em>&#160;</td>
728 </tr>
729 <tr>
730 <td></td>
731 <td>)</td>
732 <td></td><td></td>
733 </tr>
734 </table>
735</div><div class="memdoc">
736<p >This function generates an appropriately sized gamma ramp from the specified exponent and then calls <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> with it. The value must be a finite number greater than zero.</p>
737<p >The software controlled gamma ramp is applied <em>in addition</em> to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior.</p>
738<p >For gamma correct rendering with OpenGL or OpenGL ES, see the <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">GLFW_SRGB_CAPABLE</a> hint.</p>
739<dl class="params"><dt>Parameters</dt><dd>
740 <table class="params">
741 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose gamma ramp to set. </td></tr>
742 <tr><td class="paramdir">[in]</td><td class="paramname">gamma</td><td>The desired exponent.</td></tr>
743 </table>
744 </dd>
745</dl>
746<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
747<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> Gamma handling is a privileged protocol, this function will thus never be implemented and emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
748<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
749<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a></dd></dl>
750<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
751
752</div>
753</div>
754<a id="ga76ba90debcf0062b5c4b73052b24f96f" name="ga76ba90debcf0062b5c4b73052b24f96f"></a>
755<h2 class="memtitle"><span class="permalink"><a href="#ga76ba90debcf0062b5c4b73052b24f96f">&#9670;&nbsp;</a></span>glfwGetGammaRamp()</h2>
756
757<div class="memitem">
758<div class="memproto">
759 <table class="memname">
760 <tr>
761 <td class="memname">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> * glfwGetGammaRamp </td>
762 <td>(</td>
763 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
764 <td class="paramname"><em>monitor</em></td><td>)</td>
765 <td></td>
766 </tr>
767 </table>
768</div><div class="memdoc">
769<p >This function returns the current gamma ramp of the specified monitor.</p>
770<dl class="params"><dt>Parameters</dt><dd>
771 <table class="params">
772 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
773 </table>
774 </dd>
775</dl>
776<dl class="section return"><dt>Returns</dt><dd>The current gamma ramp, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
777<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
778<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> Gamma handling is a privileged protocol, this function will thus never be implemented and emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> while returning <code>NULL</code>.</dd></dl>
779<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned structure and its arrays are allocated and freed by GLFW. You should not free them yourself. They are valid until the specified monitor is disconnected, this function is called again for that monitor or the library is terminated.</dd></dl>
780<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
781<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a></dd></dl>
782<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
783
784</div>
785</div>
786<a id="ga583f0ffd0d29613d8cd172b996bbf0dd" name="ga583f0ffd0d29613d8cd172b996bbf0dd"></a>
787<h2 class="memtitle"><span class="permalink"><a href="#ga583f0ffd0d29613d8cd172b996bbf0dd">&#9670;&nbsp;</a></span>glfwSetGammaRamp()</h2>
788
789<div class="memitem">
790<div class="memproto">
791 <table class="memname">
792 <tr>
793 <td class="memname">void glfwSetGammaRamp </td>
794 <td>(</td>
795 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
796 <td class="paramname"><em>monitor</em>, </td>
797 </tr>
798 <tr>
799 <td class="paramkey"></td>
800 <td></td>
801 <td class="paramtype">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *&#160;</td>
802 <td class="paramname"><em>ramp</em>&#160;</td>
803 </tr>
804 <tr>
805 <td></td>
806 <td>)</td>
807 <td></td><td></td>
808 </tr>
809 </table>
810</div><div class="memdoc">
811<p >This function sets the current gamma ramp for the specified monitor. The original gamma ramp for that monitor is saved by GLFW the first time this function is called and is restored by <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
812<p >The software controlled gamma ramp is applied <em>in addition</em> to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior.</p>
813<p >For gamma correct rendering with OpenGL or OpenGL ES, see the <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">GLFW_SRGB_CAPABLE</a> hint.</p>
814<dl class="params"><dt>Parameters</dt><dd>
815 <table class="params">
816 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose gamma ramp to set. </td></tr>
817 <tr><td class="paramdir">[in]</td><td class="paramname">ramp</td><td>The gamma ramp to use.</td></tr>
818 </table>
819 </dd>
820</dl>
821<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
822<dl class="section remark"><dt>Remarks</dt><dd>The size of the specified gamma ramp should match the size of the current ramp for that monitor.</dd>
823<dd>
824<b>Windows:</b> The gamma ramp size must be 256.</dd>
825<dd>
826<b>Wayland:</b> Gamma handling is a privileged protocol, this function will thus never be implemented and emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
827<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified gamma ramp is copied before this function returns.</dd></dl>
828<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
829<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a></dd></dl>
830<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
831
832</div>
833</div>
834</div><!-- contents -->
835<address class="footer">
836<p>
837Last update on Thu Oct 28 2021 for GLFW 3.3.5
838</p>
839</address>
840</body>
841</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__native.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__native.html
new file mode 100644
index 0000000..2d88771
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__native.html
@@ -0,0 +1,798 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Native access</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#func-members">Functions</a> </div>
66 <div class="headertitle"><div class="title">Native access</div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p ><b>By using the native access functions you assert that you know what you're doing and how to fix problems caused by using them. If you don't, you shouldn't be using them.</b></p>
71<p >Before the inclusion of <a class="el" href="glfw3native_8h.html">glfw3native.h</a>, you may define zero or more window system API macro and zero or more context creation API macros.</p>
72<p >The chosen backends must match those the library was compiled for. Failure to do this will cause a link-time error.</p>
73<p >The available window API macros are:</p><ul>
74<li><code>GLFW_EXPOSE_NATIVE_WIN32</code></li>
75<li><code>GLFW_EXPOSE_NATIVE_COCOA</code></li>
76<li><code>GLFW_EXPOSE_NATIVE_X11</code></li>
77<li><code>GLFW_EXPOSE_NATIVE_WAYLAND</code></li>
78</ul>
79<p >The available context API macros are:</p><ul>
80<li><code>GLFW_EXPOSE_NATIVE_WGL</code></li>
81<li><code>GLFW_EXPOSE_NATIVE_NSGL</code></li>
82<li><code>GLFW_EXPOSE_NATIVE_GLX</code></li>
83<li><code>GLFW_EXPOSE_NATIVE_EGL</code></li>
84<li><code>GLFW_EXPOSE_NATIVE_OSMESA</code></li>
85</ul>
86<p >These macros select which of the native access functions that are declared and which platform-specific headers to include. It is then up your (by definition platform-specific) code to handle which of these should be defined. </p>
87<table class="memberdecls">
88<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
89Functions</h2></td></tr>
90<tr class="memitem:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
91<tr class="memdesc:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the adapter device name of the specified monitor. <a href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">More...</a><br /></td></tr>
92<tr class="separator:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memSeparator" colspan="2">&#160;</td></tr>
93<tr class="memitem:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
94<tr class="memdesc:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the display device name of the specified monitor. <a href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">More...</a><br /></td></tr>
95<tr class="separator:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memSeparator" colspan="2">&#160;</td></tr>
96<tr class="memitem:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memItemLeft" align="right" valign="top">HWND&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
97<tr class="memdesc:gafe5079aa79038b0079fc09d5f0a8e667"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HWND</code> of the specified window. <a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">More...</a><br /></td></tr>
98<tr class="separator:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memSeparator" colspan="2">&#160;</td></tr>
99<tr class="memitem:gadc4010d91d9cc1134d040eeb1202a143"><td class="memItemLeft" align="right" valign="top">HGLRC&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
100<tr class="memdesc:gadc4010d91d9cc1134d040eeb1202a143"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HGLRC</code> of the specified window. <a href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">More...</a><br /></td></tr>
101<tr class="separator:gadc4010d91d9cc1134d040eeb1202a143"><td class="memSeparator" colspan="2">&#160;</td></tr>
102<tr class="memitem:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memItemLeft" align="right" valign="top">CGDirectDisplayID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
103<tr class="memdesc:gaf22f429aec4b1aab316142d66d9be3e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>CGDirectDisplayID</code> of the specified monitor. <a href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">More...</a><br /></td></tr>
104<tr class="separator:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
105<tr class="memitem:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
106<tr class="memdesc:gac3ed9d495d0c2bb9652de5a50c648715"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSWindow</code> of the specified window. <a href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">More...</a><br /></td></tr>
107<tr class="separator:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memSeparator" colspan="2">&#160;</td></tr>
108<tr class="memitem:ga559e002e3cd63c979881770cd4dc63bc"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
109<tr class="memdesc:ga559e002e3cd63c979881770cd4dc63bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSOpenGLContext</code> of the specified window. <a href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">More...</a><br /></td></tr>
110<tr class="separator:ga559e002e3cd63c979881770cd4dc63bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
111<tr class="memitem:ga6e7822385cc8a1cc3b18f60352830189"><td class="memItemLeft" align="right" valign="top">Display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a> (void)</td></tr>
112<tr class="memdesc:ga6e7822385cc8a1cc3b18f60352830189"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Display</code> used by GLFW. <a href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">More...</a><br /></td></tr>
113<tr class="separator:ga6e7822385cc8a1cc3b18f60352830189"><td class="memSeparator" colspan="2">&#160;</td></tr>
114<tr class="memitem:ga088fbfa80f50569402b41be71ad66e40"><td class="memItemLeft" align="right" valign="top">RRCrtc&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
115<tr class="memdesc:ga088fbfa80f50569402b41be71ad66e40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RRCrtc</code> of the specified monitor. <a href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">More...</a><br /></td></tr>
116<tr class="separator:ga088fbfa80f50569402b41be71ad66e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
117<tr class="memitem:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memItemLeft" align="right" valign="top">RROutput&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
118<tr class="memdesc:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RROutput</code> of the specified monitor. <a href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">More...</a><br /></td></tr>
119<tr class="separator:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memSeparator" colspan="2">&#160;</td></tr>
120<tr class="memitem:ga90ca676322740842db446999a1b1f21d"><td class="memItemLeft" align="right" valign="top">Window&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
121<tr class="memdesc:ga90ca676322740842db446999a1b1f21d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Window</code> of the specified window. <a href="group__native.html#ga90ca676322740842db446999a1b1f21d">More...</a><br /></td></tr>
122<tr class="separator:ga90ca676322740842db446999a1b1f21d"><td class="memSeparator" colspan="2">&#160;</td></tr>
123<tr class="memitem:ga55f879ab02d93367f966186b6f0133f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a> (const char *string)</td></tr>
124<tr class="memdesc:ga55f879ab02d93367f966186b6f0133f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current primary selection to the specified string. <a href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">More...</a><br /></td></tr>
125<tr class="separator:ga55f879ab02d93367f966186b6f0133f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
126<tr class="memitem:gae084ef64dc0db140b455b1427256d3f7"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a> (void)</td></tr>
127<tr class="memdesc:gae084ef64dc0db140b455b1427256d3f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the current primary selection as a string. <a href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">More...</a><br /></td></tr>
128<tr class="separator:gae084ef64dc0db140b455b1427256d3f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
129<tr class="memitem:ga62d884114b0abfcdc2930e89f20867e2"><td class="memItemLeft" align="right" valign="top">GLXContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
130<tr class="memdesc:ga62d884114b0abfcdc2930e89f20867e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXContext</code> of the specified window. <a href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">More...</a><br /></td></tr>
131<tr class="separator:ga62d884114b0abfcdc2930e89f20867e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
132<tr class="memitem:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memItemLeft" align="right" valign="top">GLXWindow&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
133<tr class="memdesc:ga1ed27b8766e859a21381e8f8ce18d049"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXWindow</code> of the specified window. <a href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">More...</a><br /></td></tr>
134<tr class="separator:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memSeparator" colspan="2">&#160;</td></tr>
135<tr class="memitem:gacbe11f93ce20621de82989bbba94e62a"><td class="memItemLeft" align="right" valign="top">struct wl_display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a> (void)</td></tr>
136<tr class="memdesc:gacbe11f93ce20621de82989bbba94e62a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_display*</code> used by GLFW. <a href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">More...</a><br /></td></tr>
137<tr class="separator:gacbe11f93ce20621de82989bbba94e62a"><td class="memSeparator" colspan="2">&#160;</td></tr>
138<tr class="memitem:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memItemLeft" align="right" valign="top">struct wl_output *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
139<tr class="memdesc:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_output*</code> of the specified monitor. <a href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">More...</a><br /></td></tr>
140<tr class="separator:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memSeparator" colspan="2">&#160;</td></tr>
141<tr class="memitem:ga5c597f2841229d9626f0811cca41ceb3"><td class="memItemLeft" align="right" valign="top">struct wl_surface *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
142<tr class="memdesc:ga5c597f2841229d9626f0811cca41ceb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the main <code>struct wl_surface*</code> of the specified window. <a href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">More...</a><br /></td></tr>
143<tr class="separator:ga5c597f2841229d9626f0811cca41ceb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
144<tr class="memitem:ga1cd8d973f47aacb5532d368147cc3138"><td class="memItemLeft" align="right" valign="top">EGLDisplay&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a> (void)</td></tr>
145<tr class="memdesc:ga1cd8d973f47aacb5532d368147cc3138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLDisplay</code> used by GLFW. <a href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">More...</a><br /></td></tr>
146<tr class="separator:ga1cd8d973f47aacb5532d368147cc3138"><td class="memSeparator" colspan="2">&#160;</td></tr>
147<tr class="memitem:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memItemLeft" align="right" valign="top">EGLContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
148<tr class="memdesc:ga671c5072becd085f4ab5771a9c8efcf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLContext</code> of the specified window. <a href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">More...</a><br /></td></tr>
149<tr class="separator:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
150<tr class="memitem:ga2199b36117a6a695fec8441d8052eee6"><td class="memItemLeft" align="right" valign="top">EGLSurface&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
151<tr class="memdesc:ga2199b36117a6a695fec8441d8052eee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLSurface</code> of the specified window. <a href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">More...</a><br /></td></tr>
152<tr class="separator:ga2199b36117a6a695fec8441d8052eee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
153<tr class="memitem:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *format, void **buffer)</td></tr>
154<tr class="memdesc:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the color buffer associated with the specified window. <a href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">More...</a><br /></td></tr>
155<tr class="separator:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memSeparator" colspan="2">&#160;</td></tr>
156<tr class="memitem:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *bytesPerValue, void **buffer)</td></tr>
157<tr class="memdesc:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the depth buffer associated with the specified window. <a href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">More...</a><br /></td></tr>
158<tr class="separator:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memSeparator" colspan="2">&#160;</td></tr>
159<tr class="memitem:ga9e47700080094eb569cb053afaa88773"><td class="memItemLeft" align="right" valign="top">OSMesaContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
160<tr class="memdesc:ga9e47700080094eb569cb053afaa88773"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>OSMesaContext</code> of the specified window. <a href="group__native.html#ga9e47700080094eb569cb053afaa88773">More...</a><br /></td></tr>
161<tr class="separator:ga9e47700080094eb569cb053afaa88773"><td class="memSeparator" colspan="2">&#160;</td></tr>
162</table>
163<h2 class="groupheader">Function Documentation</h2>
164<a id="gad4d3e9242536c0ba6be88a98f4c73a41" name="gad4d3e9242536c0ba6be88a98f4c73a41"></a>
165<h2 class="memtitle"><span class="permalink"><a href="#gad4d3e9242536c0ba6be88a98f4c73a41">&#9670;&nbsp;</a></span>glfwGetWin32Adapter()</h2>
166
167<div class="memitem">
168<div class="memproto">
169 <table class="memname">
170 <tr>
171 <td class="memname">const char * glfwGetWin32Adapter </td>
172 <td>(</td>
173 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
174 <td class="paramname"><em>monitor</em></td><td>)</td>
175 <td></td>
176 </tr>
177 </table>
178</div><div class="memdoc">
179<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded adapter device name (for example <code>\\.\DISPLAY1</code>) of the specified monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
180<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
181<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
182<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
183
184</div>
185</div>
186<a id="gac845f7dbe4c1d7fdd682a3c6fdae6766" name="gac845f7dbe4c1d7fdd682a3c6fdae6766"></a>
187<h2 class="memtitle"><span class="permalink"><a href="#gac845f7dbe4c1d7fdd682a3c6fdae6766">&#9670;&nbsp;</a></span>glfwGetWin32Monitor()</h2>
188
189<div class="memitem">
190<div class="memproto">
191 <table class="memname">
192 <tr>
193 <td class="memname">const char * glfwGetWin32Monitor </td>
194 <td>(</td>
195 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
196 <td class="paramname"><em>monitor</em></td><td>)</td>
197 <td></td>
198 </tr>
199 </table>
200</div><div class="memdoc">
201<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded display device name (for example <code>\\.\DISPLAY1\Monitor0</code>) of the specified monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
202<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
203<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
204<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
205
206</div>
207</div>
208<a id="gafe5079aa79038b0079fc09d5f0a8e667" name="gafe5079aa79038b0079fc09d5f0a8e667"></a>
209<h2 class="memtitle"><span class="permalink"><a href="#gafe5079aa79038b0079fc09d5f0a8e667">&#9670;&nbsp;</a></span>glfwGetWin32Window()</h2>
210
211<div class="memitem">
212<div class="memproto">
213 <table class="memname">
214 <tr>
215 <td class="memname">HWND glfwGetWin32Window </td>
216 <td>(</td>
217 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
218 <td class="paramname"><em>window</em></td><td>)</td>
219 <td></td>
220 </tr>
221 </table>
222</div><div class="memdoc">
223<dl class="section return"><dt>Returns</dt><dd>The <code>HWND</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
224<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
225<dl class="section remark"><dt>Remarks</dt><dd>The <code>HDC</code> associated with the window can be queried with the <a href="https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc">GetDC</a> function. <div class="fragment"><div class="line">HDC dc = GetDC(<a class="code hl_function" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a>(window));</div>
226<div class="ttc" id="agroup__native_html_gafe5079aa79038b0079fc09d5f0a8e667"><div class="ttname"><a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a></div><div class="ttdeci">HWND glfwGetWin32Window(GLFWwindow *window)</div><div class="ttdoc">Returns the HWND of the specified window.</div></div>
227</div><!-- fragment --> This DC is private and does not need to be released.</dd></dl>
228<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
229<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
230
231</div>
232</div>
233<a id="gadc4010d91d9cc1134d040eeb1202a143" name="gadc4010d91d9cc1134d040eeb1202a143"></a>
234<h2 class="memtitle"><span class="permalink"><a href="#gadc4010d91d9cc1134d040eeb1202a143">&#9670;&nbsp;</a></span>glfwGetWGLContext()</h2>
235
236<div class="memitem">
237<div class="memproto">
238 <table class="memname">
239 <tr>
240 <td class="memname">HGLRC glfwGetWGLContext </td>
241 <td>(</td>
242 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
243 <td class="paramname"><em>window</em></td><td>)</td>
244 <td></td>
245 </tr>
246 </table>
247</div><div class="memdoc">
248<dl class="section return"><dt>Returns</dt><dd>The <code>HGLRC</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
249<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
250<dl class="section remark"><dt>Remarks</dt><dd>The <code>HDC</code> associated with the window can be queried with the <a href="https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc">GetDC</a> function. <div class="fragment"><div class="line">HDC dc = GetDC(<a class="code hl_function" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a>(window));</div>
251</div><!-- fragment --> This DC is private and does not need to be released.</dd></dl>
252<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
253<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
254
255</div>
256</div>
257<a id="gaf22f429aec4b1aab316142d66d9be3e6" name="gaf22f429aec4b1aab316142d66d9be3e6"></a>
258<h2 class="memtitle"><span class="permalink"><a href="#gaf22f429aec4b1aab316142d66d9be3e6">&#9670;&nbsp;</a></span>glfwGetCocoaMonitor()</h2>
259
260<div class="memitem">
261<div class="memproto">
262 <table class="memname">
263 <tr>
264 <td class="memname">CGDirectDisplayID glfwGetCocoaMonitor </td>
265 <td>(</td>
266 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
267 <td class="paramname"><em>monitor</em></td><td>)</td>
268 <td></td>
269 </tr>
270 </table>
271</div><div class="memdoc">
272<dl class="section return"><dt>Returns</dt><dd>The <code>CGDirectDisplayID</code> of the specified monitor, or <code>kCGNullDirectDisplay</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
273<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
274<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
275<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
276
277</div>
278</div>
279<a id="gac3ed9d495d0c2bb9652de5a50c648715" name="gac3ed9d495d0c2bb9652de5a50c648715"></a>
280<h2 class="memtitle"><span class="permalink"><a href="#gac3ed9d495d0c2bb9652de5a50c648715">&#9670;&nbsp;</a></span>glfwGetCocoaWindow()</h2>
281
282<div class="memitem">
283<div class="memproto">
284 <table class="memname">
285 <tr>
286 <td class="memname">id glfwGetCocoaWindow </td>
287 <td>(</td>
288 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
289 <td class="paramname"><em>window</em></td><td>)</td>
290 <td></td>
291 </tr>
292 </table>
293</div><div class="memdoc">
294<dl class="section return"><dt>Returns</dt><dd>The <code>NSWindow</code> of the specified window, or <code>nil</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
295<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
296<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
297<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
298
299</div>
300</div>
301<a id="ga559e002e3cd63c979881770cd4dc63bc" name="ga559e002e3cd63c979881770cd4dc63bc"></a>
302<h2 class="memtitle"><span class="permalink"><a href="#ga559e002e3cd63c979881770cd4dc63bc">&#9670;&nbsp;</a></span>glfwGetNSGLContext()</h2>
303
304<div class="memitem">
305<div class="memproto">
306 <table class="memname">
307 <tr>
308 <td class="memname">id glfwGetNSGLContext </td>
309 <td>(</td>
310 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
311 <td class="paramname"><em>window</em></td><td>)</td>
312 <td></td>
313 </tr>
314 </table>
315</div><div class="memdoc">
316<dl class="section return"><dt>Returns</dt><dd>The <code>NSOpenGLContext</code> of the specified window, or <code>nil</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
317<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
318<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
319<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
320
321</div>
322</div>
323<a id="ga6e7822385cc8a1cc3b18f60352830189" name="ga6e7822385cc8a1cc3b18f60352830189"></a>
324<h2 class="memtitle"><span class="permalink"><a href="#ga6e7822385cc8a1cc3b18f60352830189">&#9670;&nbsp;</a></span>glfwGetX11Display()</h2>
325
326<div class="memitem">
327<div class="memproto">
328 <table class="memname">
329 <tr>
330 <td class="memname">Display * glfwGetX11Display </td>
331 <td>(</td>
332 <td class="paramtype">void&#160;</td>
333 <td class="paramname"></td><td>)</td>
334 <td></td>
335 </tr>
336 </table>
337</div><div class="memdoc">
338<dl class="section return"><dt>Returns</dt><dd>The <code>Display</code> used by GLFW, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
339<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
340<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
341<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
342
343</div>
344</div>
345<a id="ga088fbfa80f50569402b41be71ad66e40" name="ga088fbfa80f50569402b41be71ad66e40"></a>
346<h2 class="memtitle"><span class="permalink"><a href="#ga088fbfa80f50569402b41be71ad66e40">&#9670;&nbsp;</a></span>glfwGetX11Adapter()</h2>
347
348<div class="memitem">
349<div class="memproto">
350 <table class="memname">
351 <tr>
352 <td class="memname">RRCrtc glfwGetX11Adapter </td>
353 <td>(</td>
354 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
355 <td class="paramname"><em>monitor</em></td><td>)</td>
356 <td></td>
357 </tr>
358 </table>
359</div><div class="memdoc">
360<dl class="section return"><dt>Returns</dt><dd>The <code>RRCrtc</code> of the specified monitor, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
361<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
362<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
363<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
364
365</div>
366</div>
367<a id="gab2f8cc043905e9fa9b12bfdbbcfe874c" name="gab2f8cc043905e9fa9b12bfdbbcfe874c"></a>
368<h2 class="memtitle"><span class="permalink"><a href="#gab2f8cc043905e9fa9b12bfdbbcfe874c">&#9670;&nbsp;</a></span>glfwGetX11Monitor()</h2>
369
370<div class="memitem">
371<div class="memproto">
372 <table class="memname">
373 <tr>
374 <td class="memname">RROutput glfwGetX11Monitor </td>
375 <td>(</td>
376 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
377 <td class="paramname"><em>monitor</em></td><td>)</td>
378 <td></td>
379 </tr>
380 </table>
381</div><div class="memdoc">
382<dl class="section return"><dt>Returns</dt><dd>The <code>RROutput</code> of the specified monitor, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
383<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
384<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
385<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
386
387</div>
388</div>
389<a id="ga90ca676322740842db446999a1b1f21d" name="ga90ca676322740842db446999a1b1f21d"></a>
390<h2 class="memtitle"><span class="permalink"><a href="#ga90ca676322740842db446999a1b1f21d">&#9670;&nbsp;</a></span>glfwGetX11Window()</h2>
391
392<div class="memitem">
393<div class="memproto">
394 <table class="memname">
395 <tr>
396 <td class="memname">Window glfwGetX11Window </td>
397 <td>(</td>
398 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
399 <td class="paramname"><em>window</em></td><td>)</td>
400 <td></td>
401 </tr>
402 </table>
403</div><div class="memdoc">
404<dl class="section return"><dt>Returns</dt><dd>The <code>Window</code> of the specified window, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
405<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
406<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
407<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
408
409</div>
410</div>
411<a id="ga55f879ab02d93367f966186b6f0133f7" name="ga55f879ab02d93367f966186b6f0133f7"></a>
412<h2 class="memtitle"><span class="permalink"><a href="#ga55f879ab02d93367f966186b6f0133f7">&#9670;&nbsp;</a></span>glfwSetX11SelectionString()</h2>
413
414<div class="memitem">
415<div class="memproto">
416 <table class="memname">
417 <tr>
418 <td class="memname">void glfwSetX11SelectionString </td>
419 <td>(</td>
420 <td class="paramtype">const char *&#160;</td>
421 <td class="paramname"><em>string</em></td><td>)</td>
422 <td></td>
423 </tr>
424 </table>
425</div><div class="memdoc">
426<dl class="params"><dt>Parameters</dt><dd>
427 <table class="params">
428 <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>A UTF-8 encoded string.</td></tr>
429 </table>
430 </dd>
431</dl>
432<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
433<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified string is copied before this function returns.</dd></dl>
434<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
435<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
436<dd>
437<a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7" title="Returns the contents of the current primary selection as a string.">glfwGetX11SelectionString</a> </dd>
438<dd>
439<a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd" title="Sets the clipboard to the specified string.">glfwSetClipboardString</a></dd></dl>
440<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
441
442</div>
443</div>
444<a id="gae084ef64dc0db140b455b1427256d3f7" name="gae084ef64dc0db140b455b1427256d3f7"></a>
445<h2 class="memtitle"><span class="permalink"><a href="#gae084ef64dc0db140b455b1427256d3f7">&#9670;&nbsp;</a></span>glfwGetX11SelectionString()</h2>
446
447<div class="memitem">
448<div class="memproto">
449 <table class="memname">
450 <tr>
451 <td class="memname">const char * glfwGetX11SelectionString </td>
452 <td>(</td>
453 <td class="paramtype">void&#160;</td>
454 <td class="paramname"></td><td>)</td>
455 <td></td>
456 </tr>
457 </table>
458</div><div class="memdoc">
459<p >If the selection is empty or if its contents cannot be converted, <code>NULL</code> is returned and a <a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a> error is generated.</p>
460<dl class="section return"><dt>Returns</dt><dd>The contents of the selection as a UTF-8 encoded string, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
461<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
462<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the next call to <a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a> or <a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a>, or until the library is terminated.</dd></dl>
463<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
464<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
465<dd>
466<a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7" title="Sets the current primary selection to the specified string.">glfwSetX11SelectionString</a> </dd>
467<dd>
468<a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355" title="Returns the contents of the clipboard as a string.">glfwGetClipboardString</a></dd></dl>
469<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
470
471</div>
472</div>
473<a id="ga62d884114b0abfcdc2930e89f20867e2" name="ga62d884114b0abfcdc2930e89f20867e2"></a>
474<h2 class="memtitle"><span class="permalink"><a href="#ga62d884114b0abfcdc2930e89f20867e2">&#9670;&nbsp;</a></span>glfwGetGLXContext()</h2>
475
476<div class="memitem">
477<div class="memproto">
478 <table class="memname">
479 <tr>
480 <td class="memname">GLXContext glfwGetGLXContext </td>
481 <td>(</td>
482 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
483 <td class="paramname"><em>window</em></td><td>)</td>
484 <td></td>
485 </tr>
486 </table>
487</div><div class="memdoc">
488<dl class="section return"><dt>Returns</dt><dd>The <code>GLXContext</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
489<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
490<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
491<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
492
493</div>
494</div>
495<a id="ga1ed27b8766e859a21381e8f8ce18d049" name="ga1ed27b8766e859a21381e8f8ce18d049"></a>
496<h2 class="memtitle"><span class="permalink"><a href="#ga1ed27b8766e859a21381e8f8ce18d049">&#9670;&nbsp;</a></span>glfwGetGLXWindow()</h2>
497
498<div class="memitem">
499<div class="memproto">
500 <table class="memname">
501 <tr>
502 <td class="memname">GLXWindow glfwGetGLXWindow </td>
503 <td>(</td>
504 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
505 <td class="paramname"><em>window</em></td><td>)</td>
506 <td></td>
507 </tr>
508 </table>
509</div><div class="memdoc">
510<dl class="section return"><dt>Returns</dt><dd>The <code>GLXWindow</code> of the specified window, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
511<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
512<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
513<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
514
515</div>
516</div>
517<a id="gacbe11f93ce20621de82989bbba94e62a" name="gacbe11f93ce20621de82989bbba94e62a"></a>
518<h2 class="memtitle"><span class="permalink"><a href="#gacbe11f93ce20621de82989bbba94e62a">&#9670;&nbsp;</a></span>glfwGetWaylandDisplay()</h2>
519
520<div class="memitem">
521<div class="memproto">
522 <table class="memname">
523 <tr>
524 <td class="memname">struct wl_display * glfwGetWaylandDisplay </td>
525 <td>(</td>
526 <td class="paramtype">void&#160;</td>
527 <td class="paramname"></td><td>)</td>
528 <td></td>
529 </tr>
530 </table>
531</div><div class="memdoc">
532<dl class="section return"><dt>Returns</dt><dd>The <code>struct wl_display*</code> used by GLFW, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
533<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
534<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
535<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
536
537</div>
538</div>
539<a id="ga4f16066bd4c59e2f99418adfcb43dd16" name="ga4f16066bd4c59e2f99418adfcb43dd16"></a>
540<h2 class="memtitle"><span class="permalink"><a href="#ga4f16066bd4c59e2f99418adfcb43dd16">&#9670;&nbsp;</a></span>glfwGetWaylandMonitor()</h2>
541
542<div class="memitem">
543<div class="memproto">
544 <table class="memname">
545 <tr>
546 <td class="memname">struct wl_output * glfwGetWaylandMonitor </td>
547 <td>(</td>
548 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
549 <td class="paramname"><em>monitor</em></td><td>)</td>
550 <td></td>
551 </tr>
552 </table>
553</div><div class="memdoc">
554<dl class="section return"><dt>Returns</dt><dd>The <code>struct wl_output*</code> of the specified monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
555<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
556<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
557<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
558
559</div>
560</div>
561<a id="ga5c597f2841229d9626f0811cca41ceb3" name="ga5c597f2841229d9626f0811cca41ceb3"></a>
562<h2 class="memtitle"><span class="permalink"><a href="#ga5c597f2841229d9626f0811cca41ceb3">&#9670;&nbsp;</a></span>glfwGetWaylandWindow()</h2>
563
564<div class="memitem">
565<div class="memproto">
566 <table class="memname">
567 <tr>
568 <td class="memname">struct wl_surface * glfwGetWaylandWindow </td>
569 <td>(</td>
570 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
571 <td class="paramname"><em>window</em></td><td>)</td>
572 <td></td>
573 </tr>
574 </table>
575</div><div class="memdoc">
576<dl class="section return"><dt>Returns</dt><dd>The main <code>struct wl_surface*</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
577<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
578<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
579<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
580
581</div>
582</div>
583<a id="ga1cd8d973f47aacb5532d368147cc3138" name="ga1cd8d973f47aacb5532d368147cc3138"></a>
584<h2 class="memtitle"><span class="permalink"><a href="#ga1cd8d973f47aacb5532d368147cc3138">&#9670;&nbsp;</a></span>glfwGetEGLDisplay()</h2>
585
586<div class="memitem">
587<div class="memproto">
588 <table class="memname">
589 <tr>
590 <td class="memname">EGLDisplay glfwGetEGLDisplay </td>
591 <td>(</td>
592 <td class="paramtype">void&#160;</td>
593 <td class="paramname"></td><td>)</td>
594 <td></td>
595 </tr>
596 </table>
597</div><div class="memdoc">
598<dl class="section return"><dt>Returns</dt><dd>The <code>EGLDisplay</code> used by GLFW, or <code>EGL_NO_DISPLAY</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
599<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
600<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
601<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
602
603</div>
604</div>
605<a id="ga671c5072becd085f4ab5771a9c8efcf1" name="ga671c5072becd085f4ab5771a9c8efcf1"></a>
606<h2 class="memtitle"><span class="permalink"><a href="#ga671c5072becd085f4ab5771a9c8efcf1">&#9670;&nbsp;</a></span>glfwGetEGLContext()</h2>
607
608<div class="memitem">
609<div class="memproto">
610 <table class="memname">
611 <tr>
612 <td class="memname">EGLContext glfwGetEGLContext </td>
613 <td>(</td>
614 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
615 <td class="paramname"><em>window</em></td><td>)</td>
616 <td></td>
617 </tr>
618 </table>
619</div><div class="memdoc">
620<dl class="section return"><dt>Returns</dt><dd>The <code>EGLContext</code> of the specified window, or <code>EGL_NO_CONTEXT</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
621<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
622<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
623<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
624
625</div>
626</div>
627<a id="ga2199b36117a6a695fec8441d8052eee6" name="ga2199b36117a6a695fec8441d8052eee6"></a>
628<h2 class="memtitle"><span class="permalink"><a href="#ga2199b36117a6a695fec8441d8052eee6">&#9670;&nbsp;</a></span>glfwGetEGLSurface()</h2>
629
630<div class="memitem">
631<div class="memproto">
632 <table class="memname">
633 <tr>
634 <td class="memname">EGLSurface glfwGetEGLSurface </td>
635 <td>(</td>
636 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
637 <td class="paramname"><em>window</em></td><td>)</td>
638 <td></td>
639 </tr>
640 </table>
641</div><div class="memdoc">
642<dl class="section return"><dt>Returns</dt><dd>The <code>EGLSurface</code> of the specified window, or <code>EGL_NO_SURFACE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
643<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
644<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
645<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
646
647</div>
648</div>
649<a id="ga3b36e3e3dcf308b776427b6bd73cc132" name="ga3b36e3e3dcf308b776427b6bd73cc132"></a>
650<h2 class="memtitle"><span class="permalink"><a href="#ga3b36e3e3dcf308b776427b6bd73cc132">&#9670;&nbsp;</a></span>glfwGetOSMesaColorBuffer()</h2>
651
652<div class="memitem">
653<div class="memproto">
654 <table class="memname">
655 <tr>
656 <td class="memname">int glfwGetOSMesaColorBuffer </td>
657 <td>(</td>
658 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
659 <td class="paramname"><em>window</em>, </td>
660 </tr>
661 <tr>
662 <td class="paramkey"></td>
663 <td></td>
664 <td class="paramtype">int *&#160;</td>
665 <td class="paramname"><em>width</em>, </td>
666 </tr>
667 <tr>
668 <td class="paramkey"></td>
669 <td></td>
670 <td class="paramtype">int *&#160;</td>
671 <td class="paramname"><em>height</em>, </td>
672 </tr>
673 <tr>
674 <td class="paramkey"></td>
675 <td></td>
676 <td class="paramtype">int *&#160;</td>
677 <td class="paramname"><em>format</em>, </td>
678 </tr>
679 <tr>
680 <td class="paramkey"></td>
681 <td></td>
682 <td class="paramtype">void **&#160;</td>
683 <td class="paramname"><em>buffer</em>&#160;</td>
684 </tr>
685 <tr>
686 <td></td>
687 <td>)</td>
688 <td></td><td></td>
689 </tr>
690 </table>
691</div><div class="memdoc">
692<dl class="params"><dt>Parameters</dt><dd>
693 <table class="params">
694 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose color buffer to retrieve. </td></tr>
695 <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width of the color buffer, or <code>NULL</code>. </td></tr>
696 <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height of the color buffer, or <code>NULL</code>. </td></tr>
697 <tr><td class="paramdir">[out]</td><td class="paramname">format</td><td>Where to store the OSMesa pixel format of the color buffer, or <code>NULL</code>. </td></tr>
698 <tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>Where to store the address of the color buffer, or <code>NULL</code>. </td></tr>
699 </table>
700 </dd>
701</dl>
702<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
703<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
704<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
705<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
706
707</div>
708</div>
709<a id="ga6b64039ffc88a7a2f57f0956c0c75d53" name="ga6b64039ffc88a7a2f57f0956c0c75d53"></a>
710<h2 class="memtitle"><span class="permalink"><a href="#ga6b64039ffc88a7a2f57f0956c0c75d53">&#9670;&nbsp;</a></span>glfwGetOSMesaDepthBuffer()</h2>
711
712<div class="memitem">
713<div class="memproto">
714 <table class="memname">
715 <tr>
716 <td class="memname">int glfwGetOSMesaDepthBuffer </td>
717 <td>(</td>
718 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
719 <td class="paramname"><em>window</em>, </td>
720 </tr>
721 <tr>
722 <td class="paramkey"></td>
723 <td></td>
724 <td class="paramtype">int *&#160;</td>
725 <td class="paramname"><em>width</em>, </td>
726 </tr>
727 <tr>
728 <td class="paramkey"></td>
729 <td></td>
730 <td class="paramtype">int *&#160;</td>
731 <td class="paramname"><em>height</em>, </td>
732 </tr>
733 <tr>
734 <td class="paramkey"></td>
735 <td></td>
736 <td class="paramtype">int *&#160;</td>
737 <td class="paramname"><em>bytesPerValue</em>, </td>
738 </tr>
739 <tr>
740 <td class="paramkey"></td>
741 <td></td>
742 <td class="paramtype">void **&#160;</td>
743 <td class="paramname"><em>buffer</em>&#160;</td>
744 </tr>
745 <tr>
746 <td></td>
747 <td>)</td>
748 <td></td><td></td>
749 </tr>
750 </table>
751</div><div class="memdoc">
752<dl class="params"><dt>Parameters</dt><dd>
753 <table class="params">
754 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose depth buffer to retrieve. </td></tr>
755 <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width of the depth buffer, or <code>NULL</code>. </td></tr>
756 <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height of the depth buffer, or <code>NULL</code>. </td></tr>
757 <tr><td class="paramdir">[out]</td><td class="paramname">bytesPerValue</td><td>Where to store the number of bytes per depth buffer element, or <code>NULL</code>. </td></tr>
758 <tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>Where to store the address of the depth buffer, or <code>NULL</code>. </td></tr>
759 </table>
760 </dd>
761</dl>
762<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
763<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
764<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
765<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
766
767</div>
768</div>
769<a id="ga9e47700080094eb569cb053afaa88773" name="ga9e47700080094eb569cb053afaa88773"></a>
770<h2 class="memtitle"><span class="permalink"><a href="#ga9e47700080094eb569cb053afaa88773">&#9670;&nbsp;</a></span>glfwGetOSMesaContext()</h2>
771
772<div class="memitem">
773<div class="memproto">
774 <table class="memname">
775 <tr>
776 <td class="memname">OSMesaContext glfwGetOSMesaContext </td>
777 <td>(</td>
778 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
779 <td class="paramname"><em>window</em></td><td>)</td>
780 <td></td>
781 </tr>
782 </table>
783</div><div class="memdoc">
784<dl class="section return"><dt>Returns</dt><dd>The <code>OSMesaContext</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
785<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
786<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
787<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
788
789</div>
790</div>
791</div><!-- contents -->
792<address class="footer">
793<p>
794Last update on Thu Oct 28 2021 for GLFW 3.3.5
795</p>
796</address>
797</body>
798</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__shapes.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__shapes.html
new file mode 100644
index 0000000..79c501b
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__shapes.html
@@ -0,0 +1,191 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Standard cursor shapes</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> </div>
66 <div class="headertitle"><div class="title">Standard cursor shapes<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
70<p >See <a class="el" href="input_guide.html#cursor_standard">standard cursor creation</a> for how these are used. </p>
71<table class="memberdecls">
72<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
73Macros</h2></td></tr>
74<tr class="memitem:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">GLFW_ARROW_CURSOR</a>&#160;&#160;&#160;0x00036001</td></tr>
75<tr class="memdesc:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The regular arrow cursor shape. <a href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">More...</a><br /></td></tr>
76<tr class="separator:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
77<tr class="memitem:ga36185f4375eaada1b04e431244774c86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">GLFW_IBEAM_CURSOR</a>&#160;&#160;&#160;0x00036002</td></tr>
78<tr class="memdesc:ga36185f4375eaada1b04e431244774c86"><td class="mdescLeft">&#160;</td><td class="mdescRight">The text input I-beam cursor shape. <a href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">More...</a><br /></td></tr>
79<tr class="separator:ga36185f4375eaada1b04e431244774c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
80<tr class="memitem:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">GLFW_CROSSHAIR_CURSOR</a>&#160;&#160;&#160;0x00036003</td></tr>
81<tr class="memdesc:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">The crosshair shape. <a href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">More...</a><br /></td></tr>
82<tr class="separator:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
83<tr class="memitem:ga1db35e20849e0837c82e3dc1fd797263"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">GLFW_HAND_CURSOR</a>&#160;&#160;&#160;0x00036004</td></tr>
84<tr class="memdesc:ga1db35e20849e0837c82e3dc1fd797263"><td class="mdescLeft">&#160;</td><td class="mdescRight">The hand shape. <a href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">More...</a><br /></td></tr>
85<tr class="separator:ga1db35e20849e0837c82e3dc1fd797263"><td class="memSeparator" colspan="2">&#160;</td></tr>
86<tr class="memitem:gabb3eb0109f11bb808fc34659177ca962"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036005</td></tr>
87<tr class="memdesc:gabb3eb0109f11bb808fc34659177ca962"><td class="mdescLeft">&#160;</td><td class="mdescRight">The horizontal resize arrow shape. <a href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">More...</a><br /></td></tr>
88<tr class="separator:gabb3eb0109f11bb808fc34659177ca962"><td class="memSeparator" colspan="2">&#160;</td></tr>
89<tr class="memitem:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">GLFW_VRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036006</td></tr>
90<tr class="memdesc:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The vertical resize arrow shape. <a href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">More...</a><br /></td></tr>
91<tr class="separator:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memSeparator" colspan="2">&#160;</td></tr>
92</table>
93<h2 class="groupheader">Macro Definition Documentation</h2>
94<a id="ga8ab0e717245b85506cb0eaefdea39d0a" name="ga8ab0e717245b85506cb0eaefdea39d0a"></a>
95<h2 class="memtitle"><span class="permalink"><a href="#ga8ab0e717245b85506cb0eaefdea39d0a">&#9670;&nbsp;</a></span>GLFW_ARROW_CURSOR</h2>
96
97<div class="memitem">
98<div class="memproto">
99 <table class="memname">
100 <tr>
101 <td class="memname">#define GLFW_ARROW_CURSOR&#160;&#160;&#160;0x00036001</td>
102 </tr>
103 </table>
104</div><div class="memdoc">
105<p >The regular arrow cursor. </p>
106
107</div>
108</div>
109<a id="ga36185f4375eaada1b04e431244774c86" name="ga36185f4375eaada1b04e431244774c86"></a>
110<h2 class="memtitle"><span class="permalink"><a href="#ga36185f4375eaada1b04e431244774c86">&#9670;&nbsp;</a></span>GLFW_IBEAM_CURSOR</h2>
111
112<div class="memitem">
113<div class="memproto">
114 <table class="memname">
115 <tr>
116 <td class="memname">#define GLFW_IBEAM_CURSOR&#160;&#160;&#160;0x00036002</td>
117 </tr>
118 </table>
119</div><div class="memdoc">
120<p >The text input I-beam cursor shape. </p>
121
122</div>
123</div>
124<a id="ga8af88c0ea05ab9e8f9ac1530e8873c22" name="ga8af88c0ea05ab9e8f9ac1530e8873c22"></a>
125<h2 class="memtitle"><span class="permalink"><a href="#ga8af88c0ea05ab9e8f9ac1530e8873c22">&#9670;&nbsp;</a></span>GLFW_CROSSHAIR_CURSOR</h2>
126
127<div class="memitem">
128<div class="memproto">
129 <table class="memname">
130 <tr>
131 <td class="memname">#define GLFW_CROSSHAIR_CURSOR&#160;&#160;&#160;0x00036003</td>
132 </tr>
133 </table>
134</div><div class="memdoc">
135<p >The crosshair shape. </p>
136
137</div>
138</div>
139<a id="ga1db35e20849e0837c82e3dc1fd797263" name="ga1db35e20849e0837c82e3dc1fd797263"></a>
140<h2 class="memtitle"><span class="permalink"><a href="#ga1db35e20849e0837c82e3dc1fd797263">&#9670;&nbsp;</a></span>GLFW_HAND_CURSOR</h2>
141
142<div class="memitem">
143<div class="memproto">
144 <table class="memname">
145 <tr>
146 <td class="memname">#define GLFW_HAND_CURSOR&#160;&#160;&#160;0x00036004</td>
147 </tr>
148 </table>
149</div><div class="memdoc">
150<p >The hand shape. </p>
151
152</div>
153</div>
154<a id="gabb3eb0109f11bb808fc34659177ca962" name="gabb3eb0109f11bb808fc34659177ca962"></a>
155<h2 class="memtitle"><span class="permalink"><a href="#gabb3eb0109f11bb808fc34659177ca962">&#9670;&nbsp;</a></span>GLFW_HRESIZE_CURSOR</h2>
156
157<div class="memitem">
158<div class="memproto">
159 <table class="memname">
160 <tr>
161 <td class="memname">#define GLFW_HRESIZE_CURSOR&#160;&#160;&#160;0x00036005</td>
162 </tr>
163 </table>
164</div><div class="memdoc">
165<p >The horizontal resize arrow shape. </p>
166
167</div>
168</div>
169<a id="gaf024f0e1ff8366fb2b5c260509a1fce5" name="gaf024f0e1ff8366fb2b5c260509a1fce5"></a>
170<h2 class="memtitle"><span class="permalink"><a href="#gaf024f0e1ff8366fb2b5c260509a1fce5">&#9670;&nbsp;</a></span>GLFW_VRESIZE_CURSOR</h2>
171
172<div class="memitem">
173<div class="memproto">
174 <table class="memname">
175 <tr>
176 <td class="memname">#define GLFW_VRESIZE_CURSOR&#160;&#160;&#160;0x00036006</td>
177 </tr>
178 </table>
179</div><div class="memdoc">
180<p >The vertical resize arrow shape. </p>
181
182</div>
183</div>
184</div><!-- contents -->
185<address class="footer">
186<p>
187Last update on Thu Oct 28 2021 for GLFW 3.3.5
188</p>
189</address>
190</body>
191</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__vulkan.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__vulkan.html
new file mode 100644
index 0000000..b0cb71a
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__vulkan.html
@@ -0,0 +1,354 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Vulkan support reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#typedef-members">Typedefs</a> &#124;
66<a href="#func-members">Functions</a> </div>
67 <div class="headertitle"><div class="title">Vulkan support reference</div></div>
68</div><!--header-->
69<div class="contents">
70<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
71<p >This is the reference documentation for Vulkan related functions and types. For more task-oriented information, see the <a class="el" href="vulkan_guide.html">Vulkan guide</a>. </p>
72<table class="memberdecls">
73<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
74Typedefs</h2></td></tr>
75<tr class="memitem:ga70c01918dc9d233a4fbe0681a43018af"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>) (void)</td></tr>
76<tr class="memdesc:ga70c01918dc9d233a4fbe0681a43018af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vulkan API function pointer type. <a href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">More...</a><br /></td></tr>
77<tr class="separator:ga70c01918dc9d233a4fbe0681a43018af"><td class="memSeparator" colspan="2">&#160;</td></tr>
78</table><table class="memberdecls">
79<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
80Functions</h2></td></tr>
81<tr class="memitem:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> (void)</td></tr>
82<tr class="memdesc:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the Vulkan loader and an ICD have been found. <a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">More...</a><br /></td></tr>
83<tr class="separator:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
84<tr class="memitem:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memItemLeft" align="right" valign="top">const char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> (uint32_t *count)</td></tr>
85<tr class="memdesc:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the Vulkan instance extensions required by GLFW. <a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">More...</a><br /></td></tr>
86<tr class="separator:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
87<tr class="memitem:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a> (VkInstance instance, const char *procname)</td></tr>
88<tr class="memdesc:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified Vulkan instance function. <a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">More...</a><br /></td></tr>
89<tr class="separator:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</td></tr>
91<tr class="memdesc:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified queue family can present images. <a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">More...</a><br /></td></tr>
92<tr class="separator:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
93<tr class="memitem:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a> (VkInstance instance, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</td></tr>
94<tr class="memdesc:ga1a24536bec3f80b08ead18e28e6ae965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a Vulkan surface for the specified window. <a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">More...</a><br /></td></tr>
95<tr class="separator:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memSeparator" colspan="2">&#160;</td></tr>
96</table>
97<h2 class="groupheader">Typedef Documentation</h2>
98<a id="ga70c01918dc9d233a4fbe0681a43018af" name="ga70c01918dc9d233a4fbe0681a43018af"></a>
99<h2 class="memtitle"><span class="permalink"><a href="#ga70c01918dc9d233a4fbe0681a43018af">&#9670;&nbsp;</a></span>GLFWvkproc</h2>
100
101<div class="memitem">
102<div class="memproto">
103 <table class="memname">
104 <tr>
105 <td class="memname">typedef void(* GLFWvkproc) (void)</td>
106 </tr>
107 </table>
108</div><div class="memdoc">
109<p >Generic function pointer used for returning Vulkan API function pointers without forcing a cast from a regular pointer.</p>
110<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_proc">Querying Vulkan function pointers</a> </dd>
111<dd>
112<a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></dd></dl>
113<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
114
115</div>
116</div>
117<h2 class="groupheader">Function Documentation</h2>
118<a id="ga2e7f30931e02464b5bc8d0d4b6f9fe2b" name="ga2e7f30931e02464b5bc8d0d4b6f9fe2b"></a>
119<h2 class="memtitle"><span class="permalink"><a href="#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">&#9670;&nbsp;</a></span>glfwVulkanSupported()</h2>
120
121<div class="memitem">
122<div class="memproto">
123 <table class="memname">
124 <tr>
125 <td class="memname">int glfwVulkanSupported </td>
126 <td>(</td>
127 <td class="paramtype">void&#160;</td>
128 <td class="paramname"></td><td>)</td>
129 <td></td>
130 </tr>
131 </table>
132</div><div class="memdoc">
133<p >This function returns whether the Vulkan loader and any minimally functional ICD have been found.</p>
134<p >The availability of a Vulkan loader and even an ICD does not by itself guarantee that surface creation or even instance creation is possible. Call <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> to check whether the extensions necessary for Vulkan surface creation are available and <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> to check whether a queue family of a physical device supports image presentation.</p>
135<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if Vulkan is minimally available, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
136<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
137<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
138<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_support">Querying for Vulkan support</a></dd></dl>
139<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
140
141</div>
142</div>
143<a id="ga99ad342d82f4a3421e2864978cb6d1d6" name="ga99ad342d82f4a3421e2864978cb6d1d6"></a>
144<h2 class="memtitle"><span class="permalink"><a href="#ga99ad342d82f4a3421e2864978cb6d1d6">&#9670;&nbsp;</a></span>glfwGetRequiredInstanceExtensions()</h2>
145
146<div class="memitem">
147<div class="memproto">
148 <table class="memname">
149 <tr>
150 <td class="memname">const char ** glfwGetRequiredInstanceExtensions </td>
151 <td>(</td>
152 <td class="paramtype">uint32_t *&#160;</td>
153 <td class="paramname"><em>count</em></td><td>)</td>
154 <td></td>
155 </tr>
156 </table>
157</div><div class="memdoc">
158<p >This function returns an array of names of Vulkan instance extensions required by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the list will always contain <code>VK_KHR_surface</code>, so if you don't require any additional extensions you can pass this list directly to the <code>VkInstanceCreateInfo</code> struct.</p>
159<p >If Vulkan is not available on the machine, this function returns <code>NULL</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available.</p>
160<p >If Vulkan is available but no set of extensions allowing window surface creation was found, this function returns <code>NULL</code>. You may still use Vulkan for off-screen rendering and compute work.</p>
161<dl class="params"><dt>Parameters</dt><dd>
162 <table class="params">
163 <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of extensions in the returned array. This is set to zero if an error occurred. </td></tr>
164 </table>
165 </dd>
166</dl>
167<dl class="section return"><dt>Returns</dt><dd>An array of ASCII encoded extension names, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
168<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>.</dd></dl>
169<dl class="section remark"><dt>Remarks</dt><dd>Additional extensions may be required by future versions of GLFW. You should check if any extensions you wish to enable are already in the returned array, as it is an error to specify an extension more than once in the <code>VkInstanceCreateInfo</code> struct.</dd>
170<dd>
171<b>macOS:</b> GLFW currently supports both the <code>VK_MVK_macos_surface</code> and the newer <code>VK_EXT_metal_surface</code> extensions.</dd></dl>
172<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the library is terminated.</dd></dl>
173<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
174<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_ext">Querying required Vulkan extensions</a> </dd>
175<dd>
176<a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></dd></dl>
177<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
178
179</div>
180</div>
181<a id="gadf228fac94c5fd8f12423ec9af9ff1e9" name="gadf228fac94c5fd8f12423ec9af9ff1e9"></a>
182<h2 class="memtitle"><span class="permalink"><a href="#gadf228fac94c5fd8f12423ec9af9ff1e9">&#9670;&nbsp;</a></span>glfwGetInstanceProcAddress()</h2>
183
184<div class="memitem">
185<div class="memproto">
186 <table class="memname">
187 <tr>
188 <td class="memname"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a> glfwGetInstanceProcAddress </td>
189 <td>(</td>
190 <td class="paramtype">VkInstance&#160;</td>
191 <td class="paramname"><em>instance</em>, </td>
192 </tr>
193 <tr>
194 <td class="paramkey"></td>
195 <td></td>
196 <td class="paramtype">const char *&#160;</td>
197 <td class="paramname"><em>procname</em>&#160;</td>
198 </tr>
199 <tr>
200 <td></td>
201 <td>)</td>
202 <td></td><td></td>
203 </tr>
204 </table>
205</div><div class="memdoc">
206<p >This function returns the address of the specified Vulkan core or extension function for the specified instance. If instance is set to <code>NULL</code> it can return any function exported from the Vulkan loader, including at least the following functions:</p>
207<ul>
208<li><code>vkEnumerateInstanceExtensionProperties</code></li>
209<li><code>vkEnumerateInstanceLayerProperties</code></li>
210<li><code>vkCreateInstance</code></li>
211<li><code>vkGetInstanceProcAddr</code></li>
212</ul>
213<p >If Vulkan is not available on the machine, this function returns <code>NULL</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available.</p>
214<p >This function is equivalent to calling <code>vkGetInstanceProcAddr</code> with a platform-specific query of the Vulkan loader as a fallback.</p>
215<dl class="params"><dt>Parameters</dt><dd>
216 <table class="params">
217 <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The Vulkan instance to query, or <code>NULL</code> to retrieve functions related to instance creation. </td></tr>
218 <tr><td class="paramdir">[in]</td><td class="paramname">procname</td><td>The ASCII encoded name of the function. </td></tr>
219 </table>
220 </dd>
221</dl>
222<dl class="section return"><dt>Returns</dt><dd>The address of the function, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
223<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>.</dd></dl>
224<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned function pointer is valid until the library is terminated.</dd></dl>
225<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
226<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_proc">Querying Vulkan function pointers</a></dd></dl>
227<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
228
229</div>
230</div>
231<a id="gaff3823355cdd7e2f3f9f4d9ea9518d92" name="gaff3823355cdd7e2f3f9f4d9ea9518d92"></a>
232<h2 class="memtitle"><span class="permalink"><a href="#gaff3823355cdd7e2f3f9f4d9ea9518d92">&#9670;&nbsp;</a></span>glfwGetPhysicalDevicePresentationSupport()</h2>
233
234<div class="memitem">
235<div class="memproto">
236 <table class="memname">
237 <tr>
238 <td class="memname">int glfwGetPhysicalDevicePresentationSupport </td>
239 <td>(</td>
240 <td class="paramtype">VkInstance&#160;</td>
241 <td class="paramname"><em>instance</em>, </td>
242 </tr>
243 <tr>
244 <td class="paramkey"></td>
245 <td></td>
246 <td class="paramtype">VkPhysicalDevice&#160;</td>
247 <td class="paramname"><em>device</em>, </td>
248 </tr>
249 <tr>
250 <td class="paramkey"></td>
251 <td></td>
252 <td class="paramtype">uint32_t&#160;</td>
253 <td class="paramname"><em>queuefamily</em>&#160;</td>
254 </tr>
255 <tr>
256 <td></td>
257 <td>)</td>
258 <td></td><td></td>
259 </tr>
260 </table>
261</div><div class="memdoc">
262<p >This function returns whether the specified queue family of the specified physical device supports presentation to the platform GLFW was built for.</p>
263<p >If Vulkan or the required window surface creation instance extensions are not available on the machine, or if the specified instance was not created with the required extensions, this function returns <code>GLFW_FALSE</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available and <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> to check what instance extensions are required.</p>
264<dl class="params"><dt>Parameters</dt><dd>
265 <table class="params">
266 <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The instance that the physical device belongs to. </td></tr>
267 <tr><td class="paramdir">[in]</td><td class="paramname">device</td><td>The physical device that the queue family belongs to. </td></tr>
268 <tr><td class="paramdir">[in]</td><td class="paramname">queuefamily</td><td>The index of the queue family to query. </td></tr>
269 </table>
270 </dd>
271</dl>
272<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if the queue family supports presentation, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
273<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
274<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> This function currently always returns <code>GLFW_TRUE</code>, as the <code>VK_MVK_macos_surface</code> and <code>VK_EXT_metal_surface</code> extensions do not provide a <code>vkGetPhysicalDevice*PresentationSupport</code> type function.</dd></dl>
275<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. For synchronization details of Vulkan objects, see the Vulkan specification.</dd></dl>
276<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_present">Querying for Vulkan presentation support</a></dd></dl>
277<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
278
279</div>
280</div>
281<a id="ga1a24536bec3f80b08ead18e28e6ae965" name="ga1a24536bec3f80b08ead18e28e6ae965"></a>
282<h2 class="memtitle"><span class="permalink"><a href="#ga1a24536bec3f80b08ead18e28e6ae965">&#9670;&nbsp;</a></span>glfwCreateWindowSurface()</h2>
283
284<div class="memitem">
285<div class="memproto">
286 <table class="memname">
287 <tr>
288 <td class="memname">VkResult glfwCreateWindowSurface </td>
289 <td>(</td>
290 <td class="paramtype">VkInstance&#160;</td>
291 <td class="paramname"><em>instance</em>, </td>
292 </tr>
293 <tr>
294 <td class="paramkey"></td>
295 <td></td>
296 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
297 <td class="paramname"><em>window</em>, </td>
298 </tr>
299 <tr>
300 <td class="paramkey"></td>
301 <td></td>
302 <td class="paramtype">const VkAllocationCallbacks *&#160;</td>
303 <td class="paramname"><em>allocator</em>, </td>
304 </tr>
305 <tr>
306 <td class="paramkey"></td>
307 <td></td>
308 <td class="paramtype">VkSurfaceKHR *&#160;</td>
309 <td class="paramname"><em>surface</em>&#160;</td>
310 </tr>
311 <tr>
312 <td></td>
313 <td>)</td>
314 <td></td><td></td>
315 </tr>
316 </table>
317</div><div class="memdoc">
318<p >This function creates a Vulkan surface for the specified window.</p>
319<p >If the Vulkan loader or at least one minimally functional ICD were not found, this function returns <code>VK_ERROR_INITIALIZATION_FAILED</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available.</p>
320<p >If the required window surface creation instance extensions are not available or if the specified instance was not created with these extensions enabled, this function returns <code>VK_ERROR_EXTENSION_NOT_PRESENT</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> to check what instance extensions are required.</p>
321<p >The window surface cannot be shared with another API so the window must have been created with the <a class="el" href="window_guide.html#GLFW_CLIENT_API_attrib">client api hint</a> set to <code>GLFW_NO_API</code> otherwise it generates a <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> error and returns <code>VK_ERROR_NATIVE_WINDOW_IN_USE_KHR</code>.</p>
322<p >The window surface must be destroyed before the specified Vulkan instance. It is the responsibility of the caller to destroy the window surface. GLFW does not destroy it for you. Call <code>vkDestroySurfaceKHR</code> to destroy the surface.</p>
323<dl class="params"><dt>Parameters</dt><dd>
324 <table class="params">
325 <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The Vulkan instance to create the surface in. </td></tr>
326 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to create the surface for. </td></tr>
327 <tr><td class="paramdir">[in]</td><td class="paramname">allocator</td><td>The allocator to use, or <code>NULL</code> to use the default allocator. </td></tr>
328 <tr><td class="paramdir">[out]</td><td class="paramname">surface</td><td>Where to store the handle of the surface. This is set to <code>VK_NULL_HANDLE</code> if an error occurred. </td></tr>
329 </table>
330 </dd>
331</dl>
332<dl class="section return"><dt>Returns</dt><dd><code>VK_SUCCESS</code> if successful, or a Vulkan error code if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
333<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>, <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a></dd></dl>
334<dl class="section remark"><dt>Remarks</dt><dd>If an error occurs before the creation call is made, GLFW returns the Vulkan error code most appropriate for the error. Appropriate use of <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> and <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> should eliminate almost all occurrences of these errors.</dd>
335<dd>
336<b>macOS:</b> This function currently only supports the <code>VK_MVK_macos_surface</code> extension from MoltenVK.</dd>
337<dd>
338<b>macOS:</b> This function creates and sets a <code>CAMetalLayer</code> instance for the window content view, which is required for MoltenVK to function.</dd></dl>
339<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. For synchronization details of Vulkan objects, see the Vulkan specification.</dd></dl>
340<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_surface">Creating a Vulkan window surface</a> </dd>
341<dd>
342<a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></dd></dl>
343<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
344
345</div>
346</div>
347</div><!-- contents -->
348<address class="footer">
349<p>
350Last update on Thu Oct 28 2021 for GLFW 3.3.5
351</p>
352</address>
353</body>
354</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__window.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__window.html
new file mode 100644
index 0000000..91ccfca
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/group__window.html
@@ -0,0 +1,3425 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Window reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="summary">
65<a href="#define-members">Macros</a> &#124;
66<a href="#typedef-members">Typedefs</a> &#124;
67<a href="#func-members">Functions</a> </div>
68 <div class="headertitle"><div class="title">Window reference</div></div>
69</div><!--header-->
70<div class="contents">
71<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
72<p >This is the reference documentation for window related functions and types, including creation, deletion and event polling. For more task-oriented information, see the <a class="el" href="window_guide.html">Window guide</a>. </p>
73<table class="memberdecls">
74<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
75Macros</h2></td></tr>
76<tr class="memitem:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>&#160;&#160;&#160;0x00020001</td></tr>
77<tr class="memdesc:ga54ddb14825a1541a56e22afb5f832a9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus window hint and attribute. <a href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">More...</a><br /></td></tr>
78<tr class="separator:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
79<tr class="memitem:ga39d44b7c056e55e581355a92d240b58a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a>&#160;&#160;&#160;0x00020002</td></tr>
80<tr class="memdesc:ga39d44b7c056e55e581355a92d240b58a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window iconification window attribute. <a href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">More...</a><br /></td></tr>
81<tr class="separator:ga39d44b7c056e55e581355a92d240b58a"><td class="memSeparator" colspan="2">&#160;</td></tr>
82<tr class="memitem:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a>&#160;&#160;&#160;0x00020003</td></tr>
83<tr class="memdesc:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window resize-ability window hint and attribute. <a href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">More...</a><br /></td></tr>
84<tr class="separator:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
85<tr class="memitem:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>&#160;&#160;&#160;0x00020004</td></tr>
86<tr class="memdesc:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window visibility window hint and attribute. <a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">More...</a><br /></td></tr>
87<tr class="separator:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
88<tr class="memitem:ga21b854d36314c94d65aed84405b2f25e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">GLFW_DECORATED</a>&#160;&#160;&#160;0x00020005</td></tr>
89<tr class="memdesc:ga21b854d36314c94d65aed84405b2f25e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">More...</a><br /></td></tr>
90<tr class="separator:ga21b854d36314c94d65aed84405b2f25e"><td class="memSeparator" colspan="2">&#160;</td></tr>
91<tr class="memitem:ga9d9874fc928200136a6dcdad726aa252"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">GLFW_AUTO_ICONIFY</a>&#160;&#160;&#160;0x00020006</td></tr>
92<tr class="memdesc:ga9d9874fc928200136a6dcdad726aa252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window auto-iconification window hint and attribute. <a href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">More...</a><br /></td></tr>
93<tr class="separator:ga9d9874fc928200136a6dcdad726aa252"><td class="memSeparator" colspan="2">&#160;</td></tr>
94<tr class="memitem:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">GLFW_FLOATING</a>&#160;&#160;&#160;0x00020007</td></tr>
95<tr class="memdesc:ga7fb0be51407783b41adbf5bec0b09d80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">More...</a><br /></td></tr>
96<tr class="separator:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
97<tr class="memitem:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>&#160;&#160;&#160;0x00020008</td></tr>
98<tr class="memdesc:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window maximization window hint and attribute. <a href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">More...</a><br /></td></tr>
99<tr class="separator:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memSeparator" colspan="2">&#160;</td></tr>
100<tr class="memitem:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">GLFW_CENTER_CURSOR</a>&#160;&#160;&#160;0x00020009</td></tr>
101<tr class="memdesc:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cursor centering window hint. <a href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">More...</a><br /></td></tr>
102<tr class="separator:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memSeparator" colspan="2">&#160;</td></tr>
103<tr class="memitem:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>&#160;&#160;&#160;0x0002000A</td></tr>
104<tr class="memdesc:ga60a0578c3b9449027d683a9c6abb9f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window framebuffer transparency hint and attribute. <a href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">More...</a><br /></td></tr>
105<tr class="separator:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
106<tr class="memitem:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a>&#160;&#160;&#160;0x0002000B</td></tr>
107<tr class="memdesc:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mouse cursor hover window attribute. <a href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">More...</a><br /></td></tr>
108<tr class="separator:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
109<tr class="memitem:gafa94b1da34bfd6488c0d709761504dfc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">GLFW_FOCUS_ON_SHOW</a>&#160;&#160;&#160;0x0002000C</td></tr>
110<tr class="memdesc:gafa94b1da34bfd6488c0d709761504dfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus on calling show window hint and attribute. <a href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">More...</a><br /></td></tr>
111<tr class="separator:gafa94b1da34bfd6488c0d709761504dfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
112<tr class="memitem:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a>&#160;&#160;&#160;0x00021001</td></tr>
113<tr class="memdesc:gaf78ed8e417dbcc1e354906cc2708c982"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">More...</a><br /></td></tr>
114<tr class="separator:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memSeparator" colspan="2">&#160;</td></tr>
115<tr class="memitem:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a>&#160;&#160;&#160;0x00021002</td></tr>
116<tr class="memdesc:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">More...</a><br /></td></tr>
117<tr class="separator:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:gab292ea403db6d514537b515311bf9ae3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a>&#160;&#160;&#160;0x00021003</td></tr>
119<tr class="memdesc:gab292ea403db6d514537b515311bf9ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gab292ea403db6d514537b515311bf9ae3">More...</a><br /></td></tr>
120<tr class="separator:gab292ea403db6d514537b515311bf9ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
121<tr class="memitem:gafed79a3f468997877da86c449bd43e8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafed79a3f468997877da86c449bd43e8c">GLFW_ALPHA_BITS</a>&#160;&#160;&#160;0x00021004</td></tr>
122<tr class="memdesc:gafed79a3f468997877da86c449bd43e8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafed79a3f468997877da86c449bd43e8c">More...</a><br /></td></tr>
123<tr class="separator:gafed79a3f468997877da86c449bd43e8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
124<tr class="memitem:ga318a55eac1fee57dfe593b6d38149d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">GLFW_DEPTH_BITS</a>&#160;&#160;&#160;0x00021005</td></tr>
125<tr class="memdesc:ga318a55eac1fee57dfe593b6d38149d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">More...</a><br /></td></tr>
126<tr class="separator:ga318a55eac1fee57dfe593b6d38149d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
127<tr class="memitem:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">GLFW_STENCIL_BITS</a>&#160;&#160;&#160;0x00021006</td></tr>
128<tr class="memdesc:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">More...</a><br /></td></tr>
129<tr class="separator:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memSeparator" colspan="2">&#160;</td></tr>
130<tr class="memitem:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">GLFW_ACCUM_RED_BITS</a>&#160;&#160;&#160;0x00021007</td></tr>
131<tr class="memdesc:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">More...</a><br /></td></tr>
132<tr class="separator:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
133<tr class="memitem:ga65713cee1326f8e9d806fdf93187b471"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">GLFW_ACCUM_GREEN_BITS</a>&#160;&#160;&#160;0x00021008</td></tr>
134<tr class="memdesc:ga65713cee1326f8e9d806fdf93187b471"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">More...</a><br /></td></tr>
135<tr class="separator:ga65713cee1326f8e9d806fdf93187b471"><td class="memSeparator" colspan="2">&#160;</td></tr>
136<tr class="memitem:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">GLFW_ACCUM_BLUE_BITS</a>&#160;&#160;&#160;0x00021009</td></tr>
137<tr class="memdesc:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">More...</a><br /></td></tr>
138<tr class="separator:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
139<tr class="memitem:gae829b55591c18169a40ab4067a041b1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae829b55591c18169a40ab4067a041b1f">GLFW_ACCUM_ALPHA_BITS</a>&#160;&#160;&#160;0x0002100A</td></tr>
140<tr class="memdesc:gae829b55591c18169a40ab4067a041b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gae829b55591c18169a40ab4067a041b1f">More...</a><br /></td></tr>
141<tr class="separator:gae829b55591c18169a40ab4067a041b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
142<tr class="memitem:gab05108c5029443b371112b031d1fa174"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab05108c5029443b371112b031d1fa174">GLFW_AUX_BUFFERS</a>&#160;&#160;&#160;0x0002100B</td></tr>
143<tr class="memdesc:gab05108c5029443b371112b031d1fa174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer auxiliary buffer hint. <a href="group__window.html#gab05108c5029443b371112b031d1fa174">More...</a><br /></td></tr>
144<tr class="separator:gab05108c5029443b371112b031d1fa174"><td class="memSeparator" colspan="2">&#160;</td></tr>
145<tr class="memitem:ga83d991efca02537e2d69969135b77b03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga83d991efca02537e2d69969135b77b03">GLFW_STEREO</a>&#160;&#160;&#160;0x0002100C</td></tr>
146<tr class="memdesc:ga83d991efca02537e2d69969135b77b03"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL stereoscopic rendering hint. <a href="group__window.html#ga83d991efca02537e2d69969135b77b03">More...</a><br /></td></tr>
147<tr class="separator:ga83d991efca02537e2d69969135b77b03"><td class="memSeparator" colspan="2">&#160;</td></tr>
148<tr class="memitem:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">GLFW_SAMPLES</a>&#160;&#160;&#160;0x0002100D</td></tr>
149<tr class="memdesc:ga2cdf86fdcb7722fb8829c4e201607535"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer MSAA samples hint. <a href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">More...</a><br /></td></tr>
150<tr class="separator:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memSeparator" colspan="2">&#160;</td></tr>
151<tr class="memitem:ga444a8f00414a63220591f9fdb7b5642b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">GLFW_SRGB_CAPABLE</a>&#160;&#160;&#160;0x0002100E</td></tr>
152<tr class="memdesc:ga444a8f00414a63220591f9fdb7b5642b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer sRGB hint. <a href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">More...</a><br /></td></tr>
153<tr class="separator:ga444a8f00414a63220591f9fdb7b5642b"><td class="memSeparator" colspan="2">&#160;</td></tr>
154<tr class="memitem:ga0f20825e6e47ee8ba389024519682212"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a>&#160;&#160;&#160;0x0002100F</td></tr>
155<tr class="memdesc:ga0f20825e6e47ee8ba389024519682212"><td class="mdescLeft">&#160;</td><td class="mdescRight">Monitor refresh rate hint. <a href="group__window.html#ga0f20825e6e47ee8ba389024519682212">More...</a><br /></td></tr>
156<tr class="separator:ga0f20825e6e47ee8ba389024519682212"><td class="memSeparator" colspan="2">&#160;</td></tr>
157<tr class="memitem:ga714a5d569e8a274ea58fdfa020955339"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">GLFW_DOUBLEBUFFER</a>&#160;&#160;&#160;0x00021010</td></tr>
158<tr class="memdesc:ga714a5d569e8a274ea58fdfa020955339"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer double buffering hint. <a href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">More...</a><br /></td></tr>
159<tr class="separator:ga714a5d569e8a274ea58fdfa020955339"><td class="memSeparator" colspan="2">&#160;</td></tr>
160<tr class="memitem:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a>&#160;&#160;&#160;0x00022001</td></tr>
161<tr class="memdesc:ga649309cf72a3d3de5b1348ca7936c95b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API hint and attribute. <a href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">More...</a><br /></td></tr>
162<tr class="separator:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memSeparator" colspan="2">&#160;</td></tr>
163<tr class="memitem:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>&#160;&#160;&#160;0x00022002</td></tr>
164<tr class="memdesc:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API major version hint and attribute. <a href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">More...</a><br /></td></tr>
165<tr class="separator:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
166<tr class="memitem:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>&#160;&#160;&#160;0x00022003</td></tr>
167<tr class="memdesc:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API minor version hint and attribute. <a href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">More...</a><br /></td></tr>
168<tr class="separator:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
169<tr class="memitem:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">GLFW_CONTEXT_REVISION</a>&#160;&#160;&#160;0x00022004</td></tr>
170<tr class="memdesc:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API revision number hint and attribute. <a href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">More...</a><br /></td></tr>
171<tr class="separator:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:gade3593916b4c507900aa2d6844810e00"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gade3593916b4c507900aa2d6844810e00">GLFW_CONTEXT_ROBUSTNESS</a>&#160;&#160;&#160;0x00022005</td></tr>
173<tr class="memdesc:gade3593916b4c507900aa2d6844810e00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context robustness hint and attribute. <a href="group__window.html#gade3593916b4c507900aa2d6844810e00">More...</a><br /></td></tr>
174<tr class="separator:gade3593916b4c507900aa2d6844810e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
175<tr class="memitem:ga13d24b12465da8b28985f46c8557925b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga13d24b12465da8b28985f46c8557925b">GLFW_OPENGL_FORWARD_COMPAT</a>&#160;&#160;&#160;0x00022006</td></tr>
176<tr class="memdesc:ga13d24b12465da8b28985f46c8557925b"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL forward-compatibility hint and attribute. <a href="group__window.html#ga13d24b12465da8b28985f46c8557925b">More...</a><br /></td></tr>
177<tr class="separator:ga13d24b12465da8b28985f46c8557925b"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">GLFW_OPENGL_DEBUG_CONTEXT</a>&#160;&#160;&#160;0x00022007</td></tr>
179<tr class="memdesc:ga87ec2df0b915201e950ca42d5d0831e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Debug mode context hint and attribute. <a href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">More...</a><br /></td></tr>
180<tr class="separator:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
181<tr class="memitem:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">GLFW_OPENGL_PROFILE</a>&#160;&#160;&#160;0x00022008</td></tr>
182<tr class="memdesc:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL profile hint and attribute. <a href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">More...</a><br /></td></tr>
183<tr class="separator:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
184<tr class="memitem:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a>&#160;&#160;&#160;0x00022009</td></tr>
185<tr class="memdesc:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context flush-on-release hint and attribute. <a href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">More...</a><br /></td></tr>
186<tr class="separator:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memSeparator" colspan="2">&#160;</td></tr>
187<tr class="memitem:ga5a52fdfd46d8249c211f923675728082"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a>&#160;&#160;&#160;0x0002200A</td></tr>
188<tr class="memdesc:ga5a52fdfd46d8249c211f923675728082"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context error suppression hint and attribute. <a href="group__window.html#ga5a52fdfd46d8249c211f923675728082">More...</a><br /></td></tr>
189<tr class="separator:ga5a52fdfd46d8249c211f923675728082"><td class="memSeparator" colspan="2">&#160;</td></tr>
190<tr class="memitem:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">GLFW_CONTEXT_CREATION_API</a>&#160;&#160;&#160;0x0002200B</td></tr>
191<tr class="memdesc:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context creation API hint and attribute. <a href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">More...</a><br /></td></tr>
192<tr class="separator:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memSeparator" colspan="2">&#160;</td></tr>
193<tr class="memitem:ga620bc4280c7eab81ac9f02204500ed47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">GLFW_SCALE_TO_MONITOR</a>&#160;&#160;&#160;0x0002200C</td></tr>
194<tr class="memdesc:ga620bc4280c7eab81ac9f02204500ed47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window content area scaling window <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">window hint</a>. <a href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">More...</a><br /></td></tr>
195<tr class="separator:ga620bc4280c7eab81ac9f02204500ed47"><td class="memSeparator" colspan="2">&#160;</td></tr>
196<tr class="memitem:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">GLFW_COCOA_RETINA_FRAMEBUFFER</a>&#160;&#160;&#160;0x00023001</td></tr>
197<tr class="memdesc:gab6ef2d02eb55800d249ccf1af253c35e"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">window hint</a>. <a href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">More...</a><br /></td></tr>
198<tr class="separator:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memSeparator" colspan="2">&#160;</td></tr>
199<tr class="memitem:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">GLFW_COCOA_FRAME_NAME</a>&#160;&#160;&#160;0x00023002</td></tr>
200<tr class="memdesc:ga70fa0fbc745de6aa824df79a580e84b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_FRAME_NAME_hint">window hint</a>. <a href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">More...</a><br /></td></tr>
201<tr class="separator:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
202<tr class="memitem:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">GLFW_COCOA_GRAPHICS_SWITCHING</a>&#160;&#160;&#160;0x00023003</td></tr>
203<tr class="memdesc:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_GRAPHICS_SWITCHING_hint">window hint</a>. <a href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">More...</a><br /></td></tr>
204<tr class="separator:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memSeparator" colspan="2">&#160;</td></tr>
205<tr class="memitem:gae5a9ea2fccccd92edbd343fc56461114"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">GLFW_X11_CLASS_NAME</a>&#160;&#160;&#160;0x00024001</td></tr>
206<tr class="memdesc:gae5a9ea2fccccd92edbd343fc56461114"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">More...</a><br /></td></tr>
207<tr class="separator:gae5a9ea2fccccd92edbd343fc56461114"><td class="memSeparator" colspan="2">&#160;</td></tr>
208<tr class="memitem:ga494c3c0d911e4b860b946530a3e389e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">GLFW_X11_INSTANCE_NAME</a>&#160;&#160;&#160;0x00024002</td></tr>
209<tr class="memdesc:ga494c3c0d911e4b860b946530a3e389e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">More...</a><br /></td></tr>
210<tr class="separator:ga494c3c0d911e4b860b946530a3e389e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
211</table><table class="memberdecls">
212<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
213Typedefs</h2></td></tr>
214<tr class="memitem:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></td></tr>
215<tr class="memdesc:ga3c96d80d363e67d13a41b5d1821f3242"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque window object. <a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">More...</a><br /></td></tr>
216<tr class="separator:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
218<tr class="memdesc:gabe287973a21a8f927cde4db06b8dcbe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window position callbacks. <a href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">More...</a><br /></td></tr>
219<tr class="separator:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
220<tr class="memitem:gaec0282944bb810f6f3163ec02da90350"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
221<tr class="memdesc:gaec0282944bb810f6f3163ec02da90350"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window size callbacks. <a href="group__window.html#gaec0282944bb810f6f3163ec02da90350">More...</a><br /></td></tr>
222<tr class="separator:gaec0282944bb810f6f3163ec02da90350"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="memitem:gabf859b936d80961b7d39013a9694cc3e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
224<tr class="memdesc:gabf859b936d80961b7d39013a9694cc3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window close callbacks. <a href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">More...</a><br /></td></tr>
225<tr class="separator:gabf859b936d80961b7d39013a9694cc3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
226<tr class="memitem:ga431663a1427d2eb3a273bc398b6737b5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
227<tr class="memdesc:ga431663a1427d2eb3a273bc398b6737b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content refresh callbacks. <a href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">More...</a><br /></td></tr>
228<tr class="separator:ga431663a1427d2eb3a273bc398b6737b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
229<tr class="memitem:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int focused)</td></tr>
230<tr class="memdesc:gabc58c47e9d93f6eb1862d615c3680f46"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window focus callbacks. <a href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">More...</a><br /></td></tr>
231<tr class="separator:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
232<tr class="memitem:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int iconified)</td></tr>
233<tr class="memdesc:ga35c658cccba236f26e7adee0e25f6a4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window iconify callbacks. <a href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">More...</a><br /></td></tr>
234<tr class="separator:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
235<tr class="memitem:ga3017196fdaec33ac3e095765176c2a90"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int maximized)</td></tr>
236<tr class="memdesc:ga3017196fdaec33ac3e095765176c2a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window maximize callbacks. <a href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">More...</a><br /></td></tr>
237<tr class="separator:ga3017196fdaec33ac3e095765176c2a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
238<tr class="memitem:gae18026e294dde685ed2e5f759533144d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
239<tr class="memdesc:gae18026e294dde685ed2e5f759533144d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for framebuffer size callbacks. <a href="group__window.html#gae18026e294dde685ed2e5f759533144d">More...</a><br /></td></tr>
240<tr class="separator:gae18026e294dde685ed2e5f759533144d"><td class="memSeparator" colspan="2">&#160;</td></tr>
241<tr class="memitem:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float xscale, float yscale)</td></tr>
242<tr class="memdesc:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content scale callbacks. <a href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">More...</a><br /></td></tr>
243<tr class="separator:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
244<tr class="memitem:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWimage.html">GLFWimage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a></td></tr>
245<tr class="memdesc:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Image data. <a href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">More...</a><br /></td></tr>
246<tr class="separator:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
247</table><table class="memberdecls">
248<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
249Functions</h2></td></tr>
250<tr class="memitem:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a> (void)</td></tr>
251<tr class="memdesc:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets all window hints to their default values. <a href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">More...</a><br /></td></tr>
252<tr class="separator:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
253<tr class="memitem:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> (int hint, int value)</td></tr>
254<tr class="memdesc:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">More...</a><br /></td></tr>
255<tr class="separator:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memSeparator" colspan="2">&#160;</td></tr>
256<tr class="memitem:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a> (int hint, const char *value)</td></tr>
257<tr class="memdesc:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">More...</a><br /></td></tr>
258<tr class="separator:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
259<tr class="memitem:ga3555a418df92ad53f917597fe2f64aeb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> (int width, int height, const char *title, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *share)</td></tr>
260<tr class="memdesc:ga3555a418df92ad53f917597fe2f64aeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a window and its associated context. <a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">More...</a><br /></td></tr>
261<tr class="separator:ga3555a418df92ad53f917597fe2f64aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
262<tr class="memitem:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
263<tr class="memdesc:gacdf43e51376051d2c091662e9fe3d7b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the specified window and its context. <a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">More...</a><br /></td></tr>
264<tr class="separator:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
265<tr class="memitem:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
266<tr class="memdesc:ga24e02fbfefbb81fc45320989f8140ab5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks the close flag of the specified window. <a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">More...</a><br /></td></tr>
267<tr class="separator:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
268<tr class="memitem:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int value)</td></tr>
269<tr class="memdesc:ga49c449dde2a6f87d996f4daaa09d6708"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close flag of the specified window. <a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">More...</a><br /></td></tr>
270<tr class="separator:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memSeparator" colspan="2">&#160;</td></tr>
271<tr class="memitem:ga5d877f09e968cef7a360b513306f17ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *title)</td></tr>
272<tr class="memdesc:ga5d877f09e968cef7a360b513306f17ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the title of the specified window. <a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">More...</a><br /></td></tr>
273<tr class="separator:ga5d877f09e968cef7a360b513306f17ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
274<tr class="memitem:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int count, const <a class="el" href="structGLFWimage.html">GLFWimage</a> *images)</td></tr>
275<tr class="memdesc:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the icon for the specified window. <a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">More...</a><br /></td></tr>
276<tr class="separator:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
277<tr class="memitem:ga73cb526c000876fd8ddf571570fdb634"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *xpos, int *ypos)</td></tr>
278<tr class="memdesc:ga73cb526c000876fd8ddf571570fdb634"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the content area of the specified window. <a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">More...</a><br /></td></tr>
279<tr class="separator:ga73cb526c000876fd8ddf571570fdb634"><td class="memSeparator" colspan="2">&#160;</td></tr>
280<tr class="memitem:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
281<tr class="memdesc:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the content area of the specified window. <a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">More...</a><br /></td></tr>
282<tr class="separator:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
283<tr class="memitem:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
284<tr class="memdesc:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the content area of the specified window. <a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">More...</a><br /></td></tr>
285<tr class="separator:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
286<tr class="memitem:gac314fa6cec7d2d307be9963e2709cc90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int minwidth, int minheight, int maxwidth, int maxheight)</td></tr>
287<tr class="memdesc:gac314fa6cec7d2d307be9963e2709cc90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size limits of the specified window. <a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">More...</a><br /></td></tr>
288<tr class="separator:gac314fa6cec7d2d307be9963e2709cc90"><td class="memSeparator" colspan="2">&#160;</td></tr>
289<tr class="memitem:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int numer, int denom)</td></tr>
290<tr class="memdesc:ga72ac8cb1ee2e312a878b55153d81b937"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the aspect ratio of the specified window. <a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">More...</a><br /></td></tr>
291<tr class="separator:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memSeparator" colspan="2">&#160;</td></tr>
292<tr class="memitem:ga371911f12c74c504dd8d47d832d095cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
293<tr class="memdesc:ga371911f12c74c504dd8d47d832d095cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size of the content area of the specified window. <a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">More...</a><br /></td></tr>
294<tr class="separator:ga371911f12c74c504dd8d47d832d095cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
295<tr class="memitem:ga0e2637a4161afb283f5300c7f94785c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
296<tr class="memdesc:ga0e2637a4161afb283f5300c7f94785c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the framebuffer of the specified window. <a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">More...</a><br /></td></tr>
297<tr class="separator:ga0e2637a4161afb283f5300c7f94785c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
298<tr class="memitem:ga1a9fd382058c53101b21cf211898f1f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *left, int *top, int *right, int *bottom)</td></tr>
299<tr class="memdesc:ga1a9fd382058c53101b21cf211898f1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the frame of the window. <a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">More...</a><br /></td></tr>
300<tr class="separator:ga1a9fd382058c53101b21cf211898f1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
301<tr class="memitem:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float *xscale, float *yscale)</td></tr>
302<tr class="memdesc:gaf5d31de9c19c4f994facea64d2b3106c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified window. <a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">More...</a><br /></td></tr>
303<tr class="separator:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memSeparator" colspan="2">&#160;</td></tr>
304<tr class="memitem:gad09f0bd7a6307c4533b7061828480a84"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
305<tr class="memdesc:gad09f0bd7a6307c4533b7061828480a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the opacity of the whole window. <a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">More...</a><br /></td></tr>
306<tr class="separator:gad09f0bd7a6307c4533b7061828480a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
307<tr class="memitem:gac31caeb3d1088831b13d2c8a156802e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float opacity)</td></tr>
308<tr class="memdesc:gac31caeb3d1088831b13d2c8a156802e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the opacity of the whole window. <a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">More...</a><br /></td></tr>
309<tr class="separator:gac31caeb3d1088831b13d2c8a156802e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
310<tr class="memitem:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
311<tr class="memdesc:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iconifies the specified window. <a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">More...</a><br /></td></tr>
312<tr class="separator:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
313<tr class="memitem:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
314<tr class="memdesc:ga52527a5904b47d802b6b4bb519cdebc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores the specified window. <a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">More...</a><br /></td></tr>
315<tr class="separator:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
316<tr class="memitem:ga3f541387449d911274324ae7f17ec56b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
317<tr class="memdesc:ga3f541387449d911274324ae7f17ec56b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximizes the specified window. <a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">More...</a><br /></td></tr>
318<tr class="separator:ga3f541387449d911274324ae7f17ec56b"><td class="memSeparator" colspan="2">&#160;</td></tr>
319<tr class="memitem:ga61be47917b72536a148300f46494fc66"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
320<tr class="memdesc:ga61be47917b72536a148300f46494fc66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the specified window visible. <a href="group__window.html#ga61be47917b72536a148300f46494fc66">More...</a><br /></td></tr>
321<tr class="separator:ga61be47917b72536a148300f46494fc66"><td class="memSeparator" colspan="2">&#160;</td></tr>
322<tr class="memitem:ga49401f82a1ba5f15db5590728314d47c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
323<tr class="memdesc:ga49401f82a1ba5f15db5590728314d47c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hides the specified window. <a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">More...</a><br /></td></tr>
324<tr class="separator:ga49401f82a1ba5f15db5590728314d47c"><td class="memSeparator" colspan="2">&#160;</td></tr>
325<tr class="memitem:ga873780357abd3f3a081d71a40aae45a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
326<tr class="memdesc:ga873780357abd3f3a081d71a40aae45a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Brings the specified window to front and sets input focus. <a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">More...</a><br /></td></tr>
327<tr class="separator:ga873780357abd3f3a081d71a40aae45a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
328<tr class="memitem:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
329<tr class="memdesc:ga2f8d59323fc4692c1d54ba08c863a703"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests user attention to the specified window. <a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">More...</a><br /></td></tr>
330<tr class="separator:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memSeparator" colspan="2">&#160;</td></tr>
331<tr class="memitem:ga4d766499ac02c60f02221a9dfab87299"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
332<tr class="memdesc:ga4d766499ac02c60f02221a9dfab87299"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the monitor that the window uses for full screen mode. <a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">More...</a><br /></td></tr>
333<tr class="separator:ga4d766499ac02c60f02221a9dfab87299"><td class="memSeparator" colspan="2">&#160;</td></tr>
334<tr class="memitem:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int xpos, int ypos, int width, int height, int refreshRate)</td></tr>
335<tr class="memdesc:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mode, monitor, video mode and placement of a window. <a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">More...</a><br /></td></tr>
336<tr class="separator:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
337<tr class="memitem:gacccb29947ea4b16860ebef42c2cb9337"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib)</td></tr>
338<tr class="memdesc:gacccb29947ea4b16860ebef42c2cb9337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an attribute of the specified window. <a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">More...</a><br /></td></tr>
339<tr class="separator:gacccb29947ea4b16860ebef42c2cb9337"><td class="memSeparator" colspan="2">&#160;</td></tr>
340<tr class="memitem:gace2afda29b4116ec012e410a6819033e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib, int value)</td></tr>
341<tr class="memdesc:gace2afda29b4116ec012e410a6819033e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an attribute of the specified window. <a href="group__window.html#gace2afda29b4116ec012e410a6819033e">More...</a><br /></td></tr>
342<tr class="separator:gace2afda29b4116ec012e410a6819033e"><td class="memSeparator" colspan="2">&#160;</td></tr>
343<tr class="memitem:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, void *pointer)</td></tr>
344<tr class="memdesc:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified window. <a href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">More...</a><br /></td></tr>
345<tr class="separator:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memSeparator" colspan="2">&#160;</td></tr>
346<tr class="memitem:gae77a4add0d2023ca21ff1443ced01653"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
347<tr class="memdesc:gae77a4add0d2023ca21ff1443ced01653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified window. <a href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">More...</a><br /></td></tr>
348<tr class="separator:gae77a4add0d2023ca21ff1443ced01653"><td class="memSeparator" colspan="2">&#160;</td></tr>
349<tr class="memitem:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> callback)</td></tr>
350<tr class="memdesc:ga08bdfbba88934f9c4f92fd757979ac74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position callback for the specified window. <a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">More...</a><br /></td></tr>
351<tr class="separator:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memSeparator" colspan="2">&#160;</td></tr>
352<tr class="memitem:gad91b8b047a0c4c6033c38853864c34f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> callback)</td></tr>
353<tr class="memdesc:gad91b8b047a0c4c6033c38853864c34f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size callback for the specified window. <a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">More...</a><br /></td></tr>
354<tr class="separator:gad91b8b047a0c4c6033c38853864c34f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
355<tr class="memitem:gada646d775a7776a95ac000cfc1885331"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> callback)</td></tr>
356<tr class="memdesc:gada646d775a7776a95ac000cfc1885331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close callback for the specified window. <a href="group__window.html#gada646d775a7776a95ac000cfc1885331">More...</a><br /></td></tr>
357<tr class="separator:gada646d775a7776a95ac000cfc1885331"><td class="memSeparator" colspan="2">&#160;</td></tr>
358<tr class="memitem:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> callback)</td></tr>
359<tr class="memdesc:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the refresh callback for the specified window. <a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">More...</a><br /></td></tr>
360<tr class="separator:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memSeparator" colspan="2">&#160;</td></tr>
361<tr class="memitem:gac2d83c4a10f071baf841f6730528e66c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> callback)</td></tr>
362<tr class="memdesc:gac2d83c4a10f071baf841f6730528e66c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the focus callback for the specified window. <a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">More...</a><br /></td></tr>
363<tr class="separator:gac2d83c4a10f071baf841f6730528e66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
364<tr class="memitem:gac793e9efd255567b5fb8b445052cfd3e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> callback)</td></tr>
365<tr class="memdesc:gac793e9efd255567b5fb8b445052cfd3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the iconify callback for the specified window. <a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">More...</a><br /></td></tr>
366<tr class="separator:gac793e9efd255567b5fb8b445052cfd3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
367<tr class="memitem:gacbe64c339fbd94885e62145563b6dc93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> callback)</td></tr>
368<tr class="memdesc:gacbe64c339fbd94885e62145563b6dc93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximize callback for the specified window. <a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">More...</a><br /></td></tr>
369<tr class="separator:gacbe64c339fbd94885e62145563b6dc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
370<tr class="memitem:gab3fb7c3366577daef18c0023e2a8591f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> callback)</td></tr>
371<tr class="memdesc:gab3fb7c3366577daef18c0023e2a8591f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the framebuffer resize callback for the specified window. <a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">More...</a><br /></td></tr>
372<tr class="separator:gab3fb7c3366577daef18c0023e2a8591f"><td class="memSeparator" colspan="2">&#160;</td></tr>
373<tr class="memitem:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> callback)</td></tr>
374<tr class="memdesc:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the window content scale callback for the specified window. <a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">More...</a><br /></td></tr>
375<tr class="separator:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
376<tr class="memitem:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> (void)</td></tr>
377<tr class="memdesc:ga37bd57223967b4211d60ca1a0bf3c832"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processes all pending events. <a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">More...</a><br /></td></tr>
378<tr class="separator:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memSeparator" colspan="2">&#160;</td></tr>
379<tr class="memitem:ga554e37d781f0a997656c26b2c56c835e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> (void)</td></tr>
380<tr class="memdesc:ga554e37d781f0a997656c26b2c56c835e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits until events are queued and processes them. <a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">More...</a><br /></td></tr>
381<tr class="separator:ga554e37d781f0a997656c26b2c56c835e"><td class="memSeparator" colspan="2">&#160;</td></tr>
382<tr class="memitem:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> (double timeout)</td></tr>
383<tr class="memdesc:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits with timeout until events are queued and processes them. <a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">More...</a><br /></td></tr>
384<tr class="separator:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
385<tr class="memitem:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> (void)</td></tr>
386<tr class="memdesc:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Posts an empty event to the event queue. <a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">More...</a><br /></td></tr>
387<tr class="separator:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
388<tr class="memitem:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
389<tr class="memdesc:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the front and back buffers of the specified window. <a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">More...</a><br /></td></tr>
390<tr class="separator:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memSeparator" colspan="2">&#160;</td></tr>
391</table>
392<h2 class="groupheader">Macro Definition Documentation</h2>
393<a id="ga54ddb14825a1541a56e22afb5f832a9e" name="ga54ddb14825a1541a56e22afb5f832a9e"></a>
394<h2 class="memtitle"><span class="permalink"><a href="#ga54ddb14825a1541a56e22afb5f832a9e">&#9670;&nbsp;</a></span>GLFW_FOCUSED</h2>
395
396<div class="memitem">
397<div class="memproto">
398 <table class="memname">
399 <tr>
400 <td class="memname">#define GLFW_FOCUSED&#160;&#160;&#160;0x00020001</td>
401 </tr>
402 </table>
403</div><div class="memdoc">
404<p >Input focus <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">window hint</a> or <a class="el" href="window_guide.html#GLFW_FOCUSED_attrib">window attribute</a>. </p>
405
406</div>
407</div>
408<a id="ga39d44b7c056e55e581355a92d240b58a" name="ga39d44b7c056e55e581355a92d240b58a"></a>
409<h2 class="memtitle"><span class="permalink"><a href="#ga39d44b7c056e55e581355a92d240b58a">&#9670;&nbsp;</a></span>GLFW_ICONIFIED</h2>
410
411<div class="memitem">
412<div class="memproto">
413 <table class="memname">
414 <tr>
415 <td class="memname">#define GLFW_ICONIFIED&#160;&#160;&#160;0x00020002</td>
416 </tr>
417 </table>
418</div><div class="memdoc">
419<p >Window iconification <a class="el" href="window_guide.html#GLFW_ICONIFIED_attrib">window attribute</a>. </p>
420
421</div>
422</div>
423<a id="gadba13c7a1b3aa40831eb2beedbd5bd1d" name="gadba13c7a1b3aa40831eb2beedbd5bd1d"></a>
424<h2 class="memtitle"><span class="permalink"><a href="#gadba13c7a1b3aa40831eb2beedbd5bd1d">&#9670;&nbsp;</a></span>GLFW_RESIZABLE</h2>
425
426<div class="memitem">
427<div class="memproto">
428 <table class="memname">
429 <tr>
430 <td class="memname">#define GLFW_RESIZABLE&#160;&#160;&#160;0x00020003</td>
431 </tr>
432 </table>
433</div><div class="memdoc">
434<p >Window resize-ability <a class="el" href="window_guide.html#GLFW_RESIZABLE_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">window attribute</a>. </p>
435
436</div>
437</div>
438<a id="gafb3cdc45297e06d8f1eb13adc69ca6c4" name="gafb3cdc45297e06d8f1eb13adc69ca6c4"></a>
439<h2 class="memtitle"><span class="permalink"><a href="#gafb3cdc45297e06d8f1eb13adc69ca6c4">&#9670;&nbsp;</a></span>GLFW_VISIBLE</h2>
440
441<div class="memitem">
442<div class="memproto">
443 <table class="memname">
444 <tr>
445 <td class="memname">#define GLFW_VISIBLE&#160;&#160;&#160;0x00020004</td>
446 </tr>
447 </table>
448</div><div class="memdoc">
449<p >Window visibility <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_VISIBLE_attrib">window attribute</a>. </p>
450
451</div>
452</div>
453<a id="ga21b854d36314c94d65aed84405b2f25e" name="ga21b854d36314c94d65aed84405b2f25e"></a>
454<h2 class="memtitle"><span class="permalink"><a href="#ga21b854d36314c94d65aed84405b2f25e">&#9670;&nbsp;</a></span>GLFW_DECORATED</h2>
455
456<div class="memitem">
457<div class="memproto">
458 <table class="memname">
459 <tr>
460 <td class="memname">#define GLFW_DECORATED&#160;&#160;&#160;0x00020005</td>
461 </tr>
462 </table>
463</div><div class="memdoc">
464<p >Window decoration <a class="el" href="window_guide.html#GLFW_DECORATED_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">window attribute</a>. </p>
465
466</div>
467</div>
468<a id="ga9d9874fc928200136a6dcdad726aa252" name="ga9d9874fc928200136a6dcdad726aa252"></a>
469<h2 class="memtitle"><span class="permalink"><a href="#ga9d9874fc928200136a6dcdad726aa252">&#9670;&nbsp;</a></span>GLFW_AUTO_ICONIFY</h2>
470
471<div class="memitem">
472<div class="memproto">
473 <table class="memname">
474 <tr>
475 <td class="memname">#define GLFW_AUTO_ICONIFY&#160;&#160;&#160;0x00020006</td>
476 </tr>
477 </table>
478</div><div class="memdoc">
479<p >Window auto-iconification <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">window attribute</a>. </p>
480
481</div>
482</div>
483<a id="ga7fb0be51407783b41adbf5bec0b09d80" name="ga7fb0be51407783b41adbf5bec0b09d80"></a>
484<h2 class="memtitle"><span class="permalink"><a href="#ga7fb0be51407783b41adbf5bec0b09d80">&#9670;&nbsp;</a></span>GLFW_FLOATING</h2>
485
486<div class="memitem">
487<div class="memproto">
488 <table class="memname">
489 <tr>
490 <td class="memname">#define GLFW_FLOATING&#160;&#160;&#160;0x00020007</td>
491 </tr>
492 </table>
493</div><div class="memdoc">
494<p >Window decoration <a class="el" href="window_guide.html#GLFW_FLOATING_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">window attribute</a>. </p>
495
496</div>
497</div>
498<a id="gad8ccb396253ad0b72c6d4c917eb38a03" name="gad8ccb396253ad0b72c6d4c917eb38a03"></a>
499<h2 class="memtitle"><span class="permalink"><a href="#gad8ccb396253ad0b72c6d4c917eb38a03">&#9670;&nbsp;</a></span>GLFW_MAXIMIZED</h2>
500
501<div class="memitem">
502<div class="memproto">
503 <table class="memname">
504 <tr>
505 <td class="memname">#define GLFW_MAXIMIZED&#160;&#160;&#160;0x00020008</td>
506 </tr>
507 </table>
508</div><div class="memdoc">
509<p >Window maximization <a class="el" href="window_guide.html#GLFW_MAXIMIZED_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_MAXIMIZED_attrib">window attribute</a>. </p>
510
511</div>
512</div>
513<a id="ga5ac0847c0aa0b3619f2855707b8a7a77" name="ga5ac0847c0aa0b3619f2855707b8a7a77"></a>
514<h2 class="memtitle"><span class="permalink"><a href="#ga5ac0847c0aa0b3619f2855707b8a7a77">&#9670;&nbsp;</a></span>GLFW_CENTER_CURSOR</h2>
515
516<div class="memitem">
517<div class="memproto">
518 <table class="memname">
519 <tr>
520 <td class="memname">#define GLFW_CENTER_CURSOR&#160;&#160;&#160;0x00020009</td>
521 </tr>
522 </table>
523</div><div class="memdoc">
524<p >Cursor centering <a class="el" href="window_guide.html#GLFW_CENTER_CURSOR_hint">window hint</a>. </p>
525
526</div>
527</div>
528<a id="ga60a0578c3b9449027d683a9c6abb9f14" name="ga60a0578c3b9449027d683a9c6abb9f14"></a>
529<h2 class="memtitle"><span class="permalink"><a href="#ga60a0578c3b9449027d683a9c6abb9f14">&#9670;&nbsp;</a></span>GLFW_TRANSPARENT_FRAMEBUFFER</h2>
530
531<div class="memitem">
532<div class="memproto">
533 <table class="memname">
534 <tr>
535 <td class="memname">#define GLFW_TRANSPARENT_FRAMEBUFFER&#160;&#160;&#160;0x0002000A</td>
536 </tr>
537 </table>
538</div><div class="memdoc">
539<p >Window framebuffer transparency <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_attrib">window attribute</a>. </p>
540
541</div>
542</div>
543<a id="ga8665c71c6fa3d22425c6a0e8a3f89d8a" name="ga8665c71c6fa3d22425c6a0e8a3f89d8a"></a>
544<h2 class="memtitle"><span class="permalink"><a href="#ga8665c71c6fa3d22425c6a0e8a3f89d8a">&#9670;&nbsp;</a></span>GLFW_HOVERED</h2>
545
546<div class="memitem">
547<div class="memproto">
548 <table class="memname">
549 <tr>
550 <td class="memname">#define GLFW_HOVERED&#160;&#160;&#160;0x0002000B</td>
551 </tr>
552 </table>
553</div><div class="memdoc">
554<p >Mouse cursor hover <a class="el" href="window_guide.html#GLFW_HOVERED_attrib">window attribute</a>. </p>
555
556</div>
557</div>
558<a id="gafa94b1da34bfd6488c0d709761504dfc" name="gafa94b1da34bfd6488c0d709761504dfc"></a>
559<h2 class="memtitle"><span class="permalink"><a href="#gafa94b1da34bfd6488c0d709761504dfc">&#9670;&nbsp;</a></span>GLFW_FOCUS_ON_SHOW</h2>
560
561<div class="memitem">
562<div class="memproto">
563 <table class="memname">
564 <tr>
565 <td class="memname">#define GLFW_FOCUS_ON_SHOW&#160;&#160;&#160;0x0002000C</td>
566 </tr>
567 </table>
568</div><div class="memdoc">
569<p >Input focus <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">window hint</a> or <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">window attribute</a>. </p>
570
571</div>
572</div>
573<a id="gaf78ed8e417dbcc1e354906cc2708c982" name="gaf78ed8e417dbcc1e354906cc2708c982"></a>
574<h2 class="memtitle"><span class="permalink"><a href="#gaf78ed8e417dbcc1e354906cc2708c982">&#9670;&nbsp;</a></span>GLFW_RED_BITS</h2>
575
576<div class="memitem">
577<div class="memproto">
578 <table class="memname">
579 <tr>
580 <td class="memname">#define GLFW_RED_BITS&#160;&#160;&#160;0x00021001</td>
581 </tr>
582 </table>
583</div><div class="memdoc">
584<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_RED_BITS">hint</a>. </p>
585
586</div>
587</div>
588<a id="gafba3b72638c914e5fb8a237dd4c50d4d" name="gafba3b72638c914e5fb8a237dd4c50d4d"></a>
589<h2 class="memtitle"><span class="permalink"><a href="#gafba3b72638c914e5fb8a237dd4c50d4d">&#9670;&nbsp;</a></span>GLFW_GREEN_BITS</h2>
590
591<div class="memitem">
592<div class="memproto">
593 <table class="memname">
594 <tr>
595 <td class="memname">#define GLFW_GREEN_BITS&#160;&#160;&#160;0x00021002</td>
596 </tr>
597 </table>
598</div><div class="memdoc">
599<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_GREEN_BITS">hint</a>. </p>
600
601</div>
602</div>
603<a id="gab292ea403db6d514537b515311bf9ae3" name="gab292ea403db6d514537b515311bf9ae3"></a>
604<h2 class="memtitle"><span class="permalink"><a href="#gab292ea403db6d514537b515311bf9ae3">&#9670;&nbsp;</a></span>GLFW_BLUE_BITS</h2>
605
606<div class="memitem">
607<div class="memproto">
608 <table class="memname">
609 <tr>
610 <td class="memname">#define GLFW_BLUE_BITS&#160;&#160;&#160;0x00021003</td>
611 </tr>
612 </table>
613</div><div class="memdoc">
614<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_BLUE_BITS">hint</a>. </p>
615
616</div>
617</div>
618<a id="gafed79a3f468997877da86c449bd43e8c" name="gafed79a3f468997877da86c449bd43e8c"></a>
619<h2 class="memtitle"><span class="permalink"><a href="#gafed79a3f468997877da86c449bd43e8c">&#9670;&nbsp;</a></span>GLFW_ALPHA_BITS</h2>
620
621<div class="memitem">
622<div class="memproto">
623 <table class="memname">
624 <tr>
625 <td class="memname">#define GLFW_ALPHA_BITS&#160;&#160;&#160;0x00021004</td>
626 </tr>
627 </table>
628</div><div class="memdoc">
629<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ALPHA_BITS">hint</a>. </p>
630
631</div>
632</div>
633<a id="ga318a55eac1fee57dfe593b6d38149d07" name="ga318a55eac1fee57dfe593b6d38149d07"></a>
634<h2 class="memtitle"><span class="permalink"><a href="#ga318a55eac1fee57dfe593b6d38149d07">&#9670;&nbsp;</a></span>GLFW_DEPTH_BITS</h2>
635
636<div class="memitem">
637<div class="memproto">
638 <table class="memname">
639 <tr>
640 <td class="memname">#define GLFW_DEPTH_BITS&#160;&#160;&#160;0x00021005</td>
641 </tr>
642 </table>
643</div><div class="memdoc">
644<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_DEPTH_BITS">hint</a>. </p>
645
646</div>
647</div>
648<a id="ga5339890a45a1fb38e93cb9fcc5fd069d" name="ga5339890a45a1fb38e93cb9fcc5fd069d"></a>
649<h2 class="memtitle"><span class="permalink"><a href="#ga5339890a45a1fb38e93cb9fcc5fd069d">&#9670;&nbsp;</a></span>GLFW_STENCIL_BITS</h2>
650
651<div class="memitem">
652<div class="memproto">
653 <table class="memname">
654 <tr>
655 <td class="memname">#define GLFW_STENCIL_BITS&#160;&#160;&#160;0x00021006</td>
656 </tr>
657 </table>
658</div><div class="memdoc">
659<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_STENCIL_BITS">hint</a>. </p>
660
661</div>
662</div>
663<a id="gaead34a9a683b2bc20eecf30ba738bfc6" name="gaead34a9a683b2bc20eecf30ba738bfc6"></a>
664<h2 class="memtitle"><span class="permalink"><a href="#gaead34a9a683b2bc20eecf30ba738bfc6">&#9670;&nbsp;</a></span>GLFW_ACCUM_RED_BITS</h2>
665
666<div class="memitem">
667<div class="memproto">
668 <table class="memname">
669 <tr>
670 <td class="memname">#define GLFW_ACCUM_RED_BITS&#160;&#160;&#160;0x00021007</td>
671 </tr>
672 </table>
673</div><div class="memdoc">
674<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_RED_BITS">hint</a>. </p>
675
676</div>
677</div>
678<a id="ga65713cee1326f8e9d806fdf93187b471" name="ga65713cee1326f8e9d806fdf93187b471"></a>
679<h2 class="memtitle"><span class="permalink"><a href="#ga65713cee1326f8e9d806fdf93187b471">&#9670;&nbsp;</a></span>GLFW_ACCUM_GREEN_BITS</h2>
680
681<div class="memitem">
682<div class="memproto">
683 <table class="memname">
684 <tr>
685 <td class="memname">#define GLFW_ACCUM_GREEN_BITS&#160;&#160;&#160;0x00021008</td>
686 </tr>
687 </table>
688</div><div class="memdoc">
689<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_GREEN_BITS">hint</a>. </p>
690
691</div>
692</div>
693<a id="ga22bbe9104a8ce1f8b88fb4f186aa36ce" name="ga22bbe9104a8ce1f8b88fb4f186aa36ce"></a>
694<h2 class="memtitle"><span class="permalink"><a href="#ga22bbe9104a8ce1f8b88fb4f186aa36ce">&#9670;&nbsp;</a></span>GLFW_ACCUM_BLUE_BITS</h2>
695
696<div class="memitem">
697<div class="memproto">
698 <table class="memname">
699 <tr>
700 <td class="memname">#define GLFW_ACCUM_BLUE_BITS&#160;&#160;&#160;0x00021009</td>
701 </tr>
702 </table>
703</div><div class="memdoc">
704<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_BLUE_BITS">hint</a>. </p>
705
706</div>
707</div>
708<a id="gae829b55591c18169a40ab4067a041b1f" name="gae829b55591c18169a40ab4067a041b1f"></a>
709<h2 class="memtitle"><span class="permalink"><a href="#gae829b55591c18169a40ab4067a041b1f">&#9670;&nbsp;</a></span>GLFW_ACCUM_ALPHA_BITS</h2>
710
711<div class="memitem">
712<div class="memproto">
713 <table class="memname">
714 <tr>
715 <td class="memname">#define GLFW_ACCUM_ALPHA_BITS&#160;&#160;&#160;0x0002100A</td>
716 </tr>
717 </table>
718</div><div class="memdoc">
719<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_ALPHA_BITS">hint</a>. </p>
720
721</div>
722</div>
723<a id="gab05108c5029443b371112b031d1fa174" name="gab05108c5029443b371112b031d1fa174"></a>
724<h2 class="memtitle"><span class="permalink"><a href="#gab05108c5029443b371112b031d1fa174">&#9670;&nbsp;</a></span>GLFW_AUX_BUFFERS</h2>
725
726<div class="memitem">
727<div class="memproto">
728 <table class="memname">
729 <tr>
730 <td class="memname">#define GLFW_AUX_BUFFERS&#160;&#160;&#160;0x0002100B</td>
731 </tr>
732 </table>
733</div><div class="memdoc">
734<p >Framebuffer auxiliary buffer <a class="el" href="window_guide.html#GLFW_AUX_BUFFERS">hint</a>. </p>
735
736</div>
737</div>
738<a id="ga83d991efca02537e2d69969135b77b03" name="ga83d991efca02537e2d69969135b77b03"></a>
739<h2 class="memtitle"><span class="permalink"><a href="#ga83d991efca02537e2d69969135b77b03">&#9670;&nbsp;</a></span>GLFW_STEREO</h2>
740
741<div class="memitem">
742<div class="memproto">
743 <table class="memname">
744 <tr>
745 <td class="memname">#define GLFW_STEREO&#160;&#160;&#160;0x0002100C</td>
746 </tr>
747 </table>
748</div><div class="memdoc">
749<p >OpenGL stereoscopic rendering <a class="el" href="window_guide.html#GLFW_STEREO">hint</a>. </p>
750
751</div>
752</div>
753<a id="ga2cdf86fdcb7722fb8829c4e201607535" name="ga2cdf86fdcb7722fb8829c4e201607535"></a>
754<h2 class="memtitle"><span class="permalink"><a href="#ga2cdf86fdcb7722fb8829c4e201607535">&#9670;&nbsp;</a></span>GLFW_SAMPLES</h2>
755
756<div class="memitem">
757<div class="memproto">
758 <table class="memname">
759 <tr>
760 <td class="memname">#define GLFW_SAMPLES&#160;&#160;&#160;0x0002100D</td>
761 </tr>
762 </table>
763</div><div class="memdoc">
764<p >Framebuffer MSAA samples <a class="el" href="window_guide.html#GLFW_SAMPLES">hint</a>. </p>
765
766</div>
767</div>
768<a id="ga444a8f00414a63220591f9fdb7b5642b" name="ga444a8f00414a63220591f9fdb7b5642b"></a>
769<h2 class="memtitle"><span class="permalink"><a href="#ga444a8f00414a63220591f9fdb7b5642b">&#9670;&nbsp;</a></span>GLFW_SRGB_CAPABLE</h2>
770
771<div class="memitem">
772<div class="memproto">
773 <table class="memname">
774 <tr>
775 <td class="memname">#define GLFW_SRGB_CAPABLE&#160;&#160;&#160;0x0002100E</td>
776 </tr>
777 </table>
778</div><div class="memdoc">
779<p >Framebuffer sRGB <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">hint</a>. </p>
780
781</div>
782</div>
783<a id="ga0f20825e6e47ee8ba389024519682212" name="ga0f20825e6e47ee8ba389024519682212"></a>
784<h2 class="memtitle"><span class="permalink"><a href="#ga0f20825e6e47ee8ba389024519682212">&#9670;&nbsp;</a></span>GLFW_REFRESH_RATE</h2>
785
786<div class="memitem">
787<div class="memproto">
788 <table class="memname">
789 <tr>
790 <td class="memname">#define GLFW_REFRESH_RATE&#160;&#160;&#160;0x0002100F</td>
791 </tr>
792 </table>
793</div><div class="memdoc">
794<p >Monitor refresh rate <a class="el" href="window_guide.html#GLFW_REFRESH_RATE">hint</a>. </p>
795
796</div>
797</div>
798<a id="ga714a5d569e8a274ea58fdfa020955339" name="ga714a5d569e8a274ea58fdfa020955339"></a>
799<h2 class="memtitle"><span class="permalink"><a href="#ga714a5d569e8a274ea58fdfa020955339">&#9670;&nbsp;</a></span>GLFW_DOUBLEBUFFER</h2>
800
801<div class="memitem">
802<div class="memproto">
803 <table class="memname">
804 <tr>
805 <td class="memname">#define GLFW_DOUBLEBUFFER&#160;&#160;&#160;0x00021010</td>
806 </tr>
807 </table>
808</div><div class="memdoc">
809<p >Framebuffer double buffering <a class="el" href="window_guide.html#GLFW_DOUBLEBUFFER">hint</a>. </p>
810
811</div>
812</div>
813<a id="ga649309cf72a3d3de5b1348ca7936c95b" name="ga649309cf72a3d3de5b1348ca7936c95b"></a>
814<h2 class="memtitle"><span class="permalink"><a href="#ga649309cf72a3d3de5b1348ca7936c95b">&#9670;&nbsp;</a></span>GLFW_CLIENT_API</h2>
815
816<div class="memitem">
817<div class="memproto">
818 <table class="memname">
819 <tr>
820 <td class="memname">#define GLFW_CLIENT_API&#160;&#160;&#160;0x00022001</td>
821 </tr>
822 </table>
823</div><div class="memdoc">
824<p >Context client API <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CLIENT_API_attrib">attribute</a>. </p>
825
826</div>
827</div>
828<a id="gafe5e4922de1f9932d7e9849bb053b0c0" name="gafe5e4922de1f9932d7e9849bb053b0c0"></a>
829<h2 class="memtitle"><span class="permalink"><a href="#gafe5e4922de1f9932d7e9849bb053b0c0">&#9670;&nbsp;</a></span>GLFW_CONTEXT_VERSION_MAJOR</h2>
830
831<div class="memitem">
832<div class="memproto">
833 <table class="memname">
834 <tr>
835 <td class="memname">#define GLFW_CONTEXT_VERSION_MAJOR&#160;&#160;&#160;0x00022002</td>
836 </tr>
837 </table>
838</div><div class="memdoc">
839<p >Context client API major version <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MAJOR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MAJOR_attrib">attribute</a>. </p>
840
841</div>
842</div>
843<a id="ga31aca791e4b538c4e4a771eb95cc2d07" name="ga31aca791e4b538c4e4a771eb95cc2d07"></a>
844<h2 class="memtitle"><span class="permalink"><a href="#ga31aca791e4b538c4e4a771eb95cc2d07">&#9670;&nbsp;</a></span>GLFW_CONTEXT_VERSION_MINOR</h2>
845
846<div class="memitem">
847<div class="memproto">
848 <table class="memname">
849 <tr>
850 <td class="memname">#define GLFW_CONTEXT_VERSION_MINOR&#160;&#160;&#160;0x00022003</td>
851 </tr>
852 </table>
853</div><div class="memdoc">
854<p >Context client API minor version <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MINOR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MINOR_attrib">attribute</a>. </p>
855
856</div>
857</div>
858<a id="gafb9475071aa77c6fb05ca5a5c8678a08" name="gafb9475071aa77c6fb05ca5a5c8678a08"></a>
859<h2 class="memtitle"><span class="permalink"><a href="#gafb9475071aa77c6fb05ca5a5c8678a08">&#9670;&nbsp;</a></span>GLFW_CONTEXT_REVISION</h2>
860
861<div class="memitem">
862<div class="memproto">
863 <table class="memname">
864 <tr>
865 <td class="memname">#define GLFW_CONTEXT_REVISION&#160;&#160;&#160;0x00022004</td>
866 </tr>
867 </table>
868</div><div class="memdoc">
869<p >Context client API revision number <a class="el" href="window_guide.html#GLFW_CONTEXT_REVISION_attrib">attribute</a>. </p>
870
871</div>
872</div>
873<a id="gade3593916b4c507900aa2d6844810e00" name="gade3593916b4c507900aa2d6844810e00"></a>
874<h2 class="memtitle"><span class="permalink"><a href="#gade3593916b4c507900aa2d6844810e00">&#9670;&nbsp;</a></span>GLFW_CONTEXT_ROBUSTNESS</h2>
875
876<div class="memitem">
877<div class="memproto">
878 <table class="memname">
879 <tr>
880 <td class="memname">#define GLFW_CONTEXT_ROBUSTNESS&#160;&#160;&#160;0x00022005</td>
881 </tr>
882 </table>
883</div><div class="memdoc">
884<p >Context client API revision number <a class="el" href="window_guide.html#GLFW_CONTEXT_ROBUSTNESS_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_ROBUSTNESS_attrib">attribute</a>. </p>
885
886</div>
887</div>
888<a id="ga13d24b12465da8b28985f46c8557925b" name="ga13d24b12465da8b28985f46c8557925b"></a>
889<h2 class="memtitle"><span class="permalink"><a href="#ga13d24b12465da8b28985f46c8557925b">&#9670;&nbsp;</a></span>GLFW_OPENGL_FORWARD_COMPAT</h2>
890
891<div class="memitem">
892<div class="memproto">
893 <table class="memname">
894 <tr>
895 <td class="memname">#define GLFW_OPENGL_FORWARD_COMPAT&#160;&#160;&#160;0x00022006</td>
896 </tr>
897 </table>
898</div><div class="memdoc">
899<p >OpenGL forward-compatibility <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_attrib">attribute</a>. </p>
900
901</div>
902</div>
903<a id="ga87ec2df0b915201e950ca42d5d0831e1" name="ga87ec2df0b915201e950ca42d5d0831e1"></a>
904<h2 class="memtitle"><span class="permalink"><a href="#ga87ec2df0b915201e950ca42d5d0831e1">&#9670;&nbsp;</a></span>GLFW_OPENGL_DEBUG_CONTEXT</h2>
905
906<div class="memitem">
907<div class="memproto">
908 <table class="memname">
909 <tr>
910 <td class="memname">#define GLFW_OPENGL_DEBUG_CONTEXT&#160;&#160;&#160;0x00022007</td>
911 </tr>
912 </table>
913</div><div class="memdoc">
914<p >Debug mode context <a class="el" href="window_guide.html#GLFW_OPENGL_DEBUG_CONTEXT_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_DEBUG_CONTEXT_attrib">attribute</a>. </p>
915
916</div>
917</div>
918<a id="ga44f3a6b4261fbe351e0b950b0f372e12" name="ga44f3a6b4261fbe351e0b950b0f372e12"></a>
919<h2 class="memtitle"><span class="permalink"><a href="#ga44f3a6b4261fbe351e0b950b0f372e12">&#9670;&nbsp;</a></span>GLFW_OPENGL_PROFILE</h2>
920
921<div class="memitem">
922<div class="memproto">
923 <table class="memname">
924 <tr>
925 <td class="memname">#define GLFW_OPENGL_PROFILE&#160;&#160;&#160;0x00022008</td>
926 </tr>
927 </table>
928</div><div class="memdoc">
929<p >OpenGL profile <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_attrib">attribute</a>. </p>
930
931</div>
932</div>
933<a id="ga72b648a8378fe3310c7c7bbecc0f7be6" name="ga72b648a8378fe3310c7c7bbecc0f7be6"></a>
934<h2 class="memtitle"><span class="permalink"><a href="#ga72b648a8378fe3310c7c7bbecc0f7be6">&#9670;&nbsp;</a></span>GLFW_CONTEXT_RELEASE_BEHAVIOR</h2>
935
936<div class="memitem">
937<div class="memproto">
938 <table class="memname">
939 <tr>
940 <td class="memname">#define GLFW_CONTEXT_RELEASE_BEHAVIOR&#160;&#160;&#160;0x00022009</td>
941 </tr>
942 </table>
943</div><div class="memdoc">
944<p >Context flush-on-release <a class="el" href="window_guide.html#GLFW_CONTEXT_RELEASE_BEHAVIOR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib">attribute</a>. </p>
945
946</div>
947</div>
948<a id="ga5a52fdfd46d8249c211f923675728082" name="ga5a52fdfd46d8249c211f923675728082"></a>
949<h2 class="memtitle"><span class="permalink"><a href="#ga5a52fdfd46d8249c211f923675728082">&#9670;&nbsp;</a></span>GLFW_CONTEXT_NO_ERROR</h2>
950
951<div class="memitem">
952<div class="memproto">
953 <table class="memname">
954 <tr>
955 <td class="memname">#define GLFW_CONTEXT_NO_ERROR&#160;&#160;&#160;0x0002200A</td>
956 </tr>
957 </table>
958</div><div class="memdoc">
959<p >Context error suppression <a class="el" href="window_guide.html#GLFW_CONTEXT_NO_ERROR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_NO_ERROR_attrib">attribute</a>. </p>
960
961</div>
962</div>
963<a id="ga5154cebfcd831c1cc63a4d5ac9bb4486" name="ga5154cebfcd831c1cc63a4d5ac9bb4486"></a>
964<h2 class="memtitle"><span class="permalink"><a href="#ga5154cebfcd831c1cc63a4d5ac9bb4486">&#9670;&nbsp;</a></span>GLFW_CONTEXT_CREATION_API</h2>
965
966<div class="memitem">
967<div class="memproto">
968 <table class="memname">
969 <tr>
970 <td class="memname">#define GLFW_CONTEXT_CREATION_API&#160;&#160;&#160;0x0002200B</td>
971 </tr>
972 </table>
973</div><div class="memdoc">
974<p >Context creation API <a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_attrib">attribute</a>. </p>
975
976</div>
977</div>
978<a id="ga620bc4280c7eab81ac9f02204500ed47" name="ga620bc4280c7eab81ac9f02204500ed47"></a>
979<h2 class="memtitle"><span class="permalink"><a href="#ga620bc4280c7eab81ac9f02204500ed47">&#9670;&nbsp;</a></span>GLFW_SCALE_TO_MONITOR</h2>
980
981<div class="memitem">
982<div class="memproto">
983 <table class="memname">
984 <tr>
985 <td class="memname">#define GLFW_SCALE_TO_MONITOR&#160;&#160;&#160;0x0002200C</td>
986 </tr>
987 </table>
988</div><div class="memdoc">
989
990</div>
991</div>
992<a id="gab6ef2d02eb55800d249ccf1af253c35e" name="gab6ef2d02eb55800d249ccf1af253c35e"></a>
993<h2 class="memtitle"><span class="permalink"><a href="#gab6ef2d02eb55800d249ccf1af253c35e">&#9670;&nbsp;</a></span>GLFW_COCOA_RETINA_FRAMEBUFFER</h2>
994
995<div class="memitem">
996<div class="memproto">
997 <table class="memname">
998 <tr>
999 <td class="memname">#define GLFW_COCOA_RETINA_FRAMEBUFFER&#160;&#160;&#160;0x00023001</td>
1000 </tr>
1001 </table>
1002</div><div class="memdoc">
1003
1004</div>
1005</div>
1006<a id="ga70fa0fbc745de6aa824df79a580e84b5" name="ga70fa0fbc745de6aa824df79a580e84b5"></a>
1007<h2 class="memtitle"><span class="permalink"><a href="#ga70fa0fbc745de6aa824df79a580e84b5">&#9670;&nbsp;</a></span>GLFW_COCOA_FRAME_NAME</h2>
1008
1009<div class="memitem">
1010<div class="memproto">
1011 <table class="memname">
1012 <tr>
1013 <td class="memname">#define GLFW_COCOA_FRAME_NAME&#160;&#160;&#160;0x00023002</td>
1014 </tr>
1015 </table>
1016</div><div class="memdoc">
1017
1018</div>
1019</div>
1020<a id="ga53c84ed2ddd94e15bbd44b1f6f7feafc" name="ga53c84ed2ddd94e15bbd44b1f6f7feafc"></a>
1021<h2 class="memtitle"><span class="permalink"><a href="#ga53c84ed2ddd94e15bbd44b1f6f7feafc">&#9670;&nbsp;</a></span>GLFW_COCOA_GRAPHICS_SWITCHING</h2>
1022
1023<div class="memitem">
1024<div class="memproto">
1025 <table class="memname">
1026 <tr>
1027 <td class="memname">#define GLFW_COCOA_GRAPHICS_SWITCHING&#160;&#160;&#160;0x00023003</td>
1028 </tr>
1029 </table>
1030</div><div class="memdoc">
1031
1032</div>
1033</div>
1034<a id="gae5a9ea2fccccd92edbd343fc56461114" name="gae5a9ea2fccccd92edbd343fc56461114"></a>
1035<h2 class="memtitle"><span class="permalink"><a href="#gae5a9ea2fccccd92edbd343fc56461114">&#9670;&nbsp;</a></span>GLFW_X11_CLASS_NAME</h2>
1036
1037<div class="memitem">
1038<div class="memproto">
1039 <table class="memname">
1040 <tr>
1041 <td class="memname">#define GLFW_X11_CLASS_NAME&#160;&#160;&#160;0x00024001</td>
1042 </tr>
1043 </table>
1044</div><div class="memdoc">
1045
1046</div>
1047</div>
1048<a id="ga494c3c0d911e4b860b946530a3e389e8" name="ga494c3c0d911e4b860b946530a3e389e8"></a>
1049<h2 class="memtitle"><span class="permalink"><a href="#ga494c3c0d911e4b860b946530a3e389e8">&#9670;&nbsp;</a></span>GLFW_X11_INSTANCE_NAME</h2>
1050
1051<div class="memitem">
1052<div class="memproto">
1053 <table class="memname">
1054 <tr>
1055 <td class="memname">#define GLFW_X11_INSTANCE_NAME&#160;&#160;&#160;0x00024002</td>
1056 </tr>
1057 </table>
1058</div><div class="memdoc">
1059
1060</div>
1061</div>
1062<h2 class="groupheader">Typedef Documentation</h2>
1063<a id="ga3c96d80d363e67d13a41b5d1821f3242" name="ga3c96d80d363e67d13a41b5d1821f3242"></a>
1064<h2 class="memtitle"><span class="permalink"><a href="#ga3c96d80d363e67d13a41b5d1821f3242">&#9670;&nbsp;</a></span>GLFWwindow</h2>
1065
1066<div class="memitem">
1067<div class="memproto">
1068 <table class="memname">
1069 <tr>
1070 <td class="memname">typedef struct <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></td>
1071 </tr>
1072 </table>
1073</div><div class="memdoc">
1074<p >Opaque window object.</p>
1075<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_object">Window objects</a></dd></dl>
1076<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1077
1078</div>
1079</div>
1080<a id="gabe287973a21a8f927cde4db06b8dcbe9" name="gabe287973a21a8f927cde4db06b8dcbe9"></a>
1081<h2 class="memtitle"><span class="permalink"><a href="#gabe287973a21a8f927cde4db06b8dcbe9">&#9670;&nbsp;</a></span>GLFWwindowposfun</h2>
1082
1083<div class="memitem">
1084<div class="memproto">
1085 <table class="memname">
1086 <tr>
1087 <td class="memname">typedef void(* GLFWwindowposfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td>
1088 </tr>
1089 </table>
1090</div><div class="memdoc">
1091<p >This is the function pointer type for window position callbacks. A window position callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos)</div>
1092<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
1093</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1094 <table class="params">
1095 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was moved. </td></tr>
1096 <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The new x-coordinate, in screen coordinates, of the upper-left corner of the content area of the window. </td></tr>
1097 <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The new y-coordinate, in screen coordinates, of the upper-left corner of the content area of the window.</td></tr>
1098 </table>
1099 </dd>
1100</dl>
1101<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a> </dd>
1102<dd>
1103<a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a></dd></dl>
1104<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1105
1106</div>
1107</div>
1108<a id="gaec0282944bb810f6f3163ec02da90350" name="gaec0282944bb810f6f3163ec02da90350"></a>
1109<h2 class="memtitle"><span class="permalink"><a href="#gaec0282944bb810f6f3163ec02da90350">&#9670;&nbsp;</a></span>GLFWwindowsizefun</h2>
1110
1111<div class="memitem">
1112<div class="memproto">
1113 <table class="memname">
1114 <tr>
1115 <td class="memname">typedef void(* GLFWwindowsizefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td>
1116 </tr>
1117 </table>
1118</div><div class="memdoc">
1119<p >This is the function pointer type for window size callbacks. A window size callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
1120</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1121 <table class="params">
1122 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was resized. </td></tr>
1123 <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The new width, in screen coordinates, of the window. </td></tr>
1124 <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The new height, in screen coordinates, of the window.</td></tr>
1125 </table>
1126 </dd>
1127</dl>
1128<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a> </dd>
1129<dd>
1130<a class="el" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a></dd></dl>
1131<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
1132
1133</div>
1134</div>
1135<a id="gabf859b936d80961b7d39013a9694cc3e" name="gabf859b936d80961b7d39013a9694cc3e"></a>
1136<h2 class="memtitle"><span class="permalink"><a href="#gabf859b936d80961b7d39013a9694cc3e">&#9670;&nbsp;</a></span>GLFWwindowclosefun</h2>
1137
1138<div class="memitem">
1139<div class="memproto">
1140 <table class="memname">
1141 <tr>
1142 <td class="memname">typedef void(* GLFWwindowclosefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td>
1143 </tr>
1144 </table>
1145</div><div class="memdoc">
1146<p >This is the function pointer type for window close callbacks. A window close callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
1147</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1148 <table class="params">
1149 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that the user attempted to close.</td></tr>
1150 </table>
1151 </dd>
1152</dl>
1153<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a> </dd>
1154<dd>
1155<a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a></dd></dl>
1156<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
1157
1158</div>
1159</div>
1160<a id="ga431663a1427d2eb3a273bc398b6737b5" name="ga431663a1427d2eb3a273bc398b6737b5"></a>
1161<h2 class="memtitle"><span class="permalink"><a href="#ga431663a1427d2eb3a273bc398b6737b5">&#9670;&nbsp;</a></span>GLFWwindowrefreshfun</h2>
1162
1163<div class="memitem">
1164<div class="memproto">
1165 <table class="memname">
1166 <tr>
1167 <td class="memname">typedef void(* GLFWwindowrefreshfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td>
1168 </tr>
1169 </table>
1170</div><div class="memdoc">
1171<p >This is the function pointer type for window content refresh callbacks. A window content refresh callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
1172</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1173 <table class="params">
1174 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose content needs to be refreshed.</td></tr>
1175 </table>
1176 </dd>
1177</dl>
1178<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_refresh">Window damage and refresh</a> </dd>
1179<dd>
1180<a class="el" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a></dd></dl>
1181<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
1182
1183</div>
1184</div>
1185<a id="gabc58c47e9d93f6eb1862d615c3680f46" name="gabc58c47e9d93f6eb1862d615c3680f46"></a>
1186<h2 class="memtitle"><span class="permalink"><a href="#gabc58c47e9d93f6eb1862d615c3680f46">&#9670;&nbsp;</a></span>GLFWwindowfocusfun</h2>
1187
1188<div class="memitem">
1189<div class="memproto">
1190 <table class="memname">
1191 <tr>
1192 <td class="memname">typedef void(* GLFWwindowfocusfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int focused)</td>
1193 </tr>
1194 </table>
1195</div><div class="memdoc">
1196<p >This is the function pointer type for window focus callbacks. A window focus callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused)</div>
1197</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1198 <table class="params">
1199 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that gained or lost input focus. </td></tr>
1200 <tr><td class="paramdir">[in]</td><td class="paramname">focused</td><td><code>GLFW_TRUE</code> if the window was given input focus, or <code>GLFW_FALSE</code> if it lost it.</td></tr>
1201 </table>
1202 </dd>
1203</dl>
1204<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_focus">Window input focus</a> </dd>
1205<dd>
1206<a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a></dd></dl>
1207<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1208
1209</div>
1210</div>
1211<a id="ga35c658cccba236f26e7adee0e25f6a4f" name="ga35c658cccba236f26e7adee0e25f6a4f"></a>
1212<h2 class="memtitle"><span class="permalink"><a href="#ga35c658cccba236f26e7adee0e25f6a4f">&#9670;&nbsp;</a></span>GLFWwindowiconifyfun</h2>
1213
1214<div class="memitem">
1215<div class="memproto">
1216 <table class="memname">
1217 <tr>
1218 <td class="memname">typedef void(* GLFWwindowiconifyfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int iconified)</td>
1219 </tr>
1220 </table>
1221</div><div class="memdoc">
1222<p >This is the function pointer type for window iconify callbacks. A window iconify callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified)</div>
1223</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1224 <table class="params">
1225 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was iconified or restored. </td></tr>
1226 <tr><td class="paramdir">[in]</td><td class="paramname">iconified</td><td><code>GLFW_TRUE</code> if the window was iconified, or <code>GLFW_FALSE</code> if it was restored.</td></tr>
1227 </table>
1228 </dd>
1229</dl>
1230<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
1231<dd>
1232<a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a></dd></dl>
1233<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1234
1235</div>
1236</div>
1237<a id="ga3017196fdaec33ac3e095765176c2a90" name="ga3017196fdaec33ac3e095765176c2a90"></a>
1238<h2 class="memtitle"><span class="permalink"><a href="#ga3017196fdaec33ac3e095765176c2a90">&#9670;&nbsp;</a></span>GLFWwindowmaximizefun</h2>
1239
1240<div class="memitem">
1241<div class="memproto">
1242 <table class="memname">
1243 <tr>
1244 <td class="memname">typedef void(* GLFWwindowmaximizefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int maximized)</td>
1245 </tr>
1246 </table>
1247</div><div class="memdoc">
1248<p >This is the function pointer type for window maximize callbacks. A window maximize callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized)</div>
1249</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1250 <table class="params">
1251 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was maximized or restored. </td></tr>
1252 <tr><td class="paramdir">[in]</td><td class="paramname">maximized</td><td><code>GLFW_TRUE</code> if the window was maximized, or <code>GLFW_FALSE</code> if it was restored.</td></tr>
1253 </table>
1254 </dd>
1255</dl>
1256<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_maximize">Window maximization</a> </dd>
1257<dd>
1258<a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93" title="Sets the maximize callback for the specified window.">glfwSetWindowMaximizeCallback</a></dd></dl>
1259<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1260
1261</div>
1262</div>
1263<a id="gae18026e294dde685ed2e5f759533144d" name="gae18026e294dde685ed2e5f759533144d"></a>
1264<h2 class="memtitle"><span class="permalink"><a href="#gae18026e294dde685ed2e5f759533144d">&#9670;&nbsp;</a></span>GLFWframebuffersizefun</h2>
1265
1266<div class="memitem">
1267<div class="memproto">
1268 <table class="memname">
1269 <tr>
1270 <td class="memname">typedef void(* GLFWframebuffersizefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td>
1271 </tr>
1272 </table>
1273</div><div class="memdoc">
1274<p >This is the function pointer type for framebuffer size callbacks. A framebuffer size callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
1275</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1276 <table class="params">
1277 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose framebuffer was resized. </td></tr>
1278 <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The new width, in pixels, of the framebuffer. </td></tr>
1279 <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The new height, in pixels, of the framebuffer.</td></tr>
1280 </table>
1281 </dd>
1282</dl>
1283<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_fbsize">Framebuffer size</a> </dd>
1284<dd>
1285<a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></dd></dl>
1286<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1287
1288</div>
1289</div>
1290<a id="ga77f288a2d04bb3c77c7d9615d08cf70e" name="ga77f288a2d04bb3c77c7d9615d08cf70e"></a>
1291<h2 class="memtitle"><span class="permalink"><a href="#ga77f288a2d04bb3c77c7d9615d08cf70e">&#9670;&nbsp;</a></span>GLFWwindowcontentscalefun</h2>
1292
1293<div class="memitem">
1294<div class="memproto">
1295 <table class="memname">
1296 <tr>
1297 <td class="memname">typedef void(* GLFWwindowcontentscalefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float xscale, float yscale)</td>
1298 </tr>
1299 </table>
1300</div><div class="memdoc">
1301<p >This is the function pointer type for window content scale callbacks. A window content scale callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale)</div>
1302</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
1303 <table class="params">
1304 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose content scale changed. </td></tr>
1305 <tr><td class="paramdir">[in]</td><td class="paramname">xscale</td><td>The new x-axis content scale of the window. </td></tr>
1306 <tr><td class="paramdir">[in]</td><td class="paramname">yscale</td><td>The new y-axis content scale of the window.</td></tr>
1307 </table>
1308 </dd>
1309</dl>
1310<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_scale">Window content scale</a> </dd>
1311<dd>
1312<a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></dd></dl>
1313<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1314
1315</div>
1316</div>
1317<a id="ga7cc0a09de172fa7250872046f8c4d2ca" name="ga7cc0a09de172fa7250872046f8c4d2ca"></a>
1318<h2 class="memtitle"><span class="permalink"><a href="#ga7cc0a09de172fa7250872046f8c4d2ca">&#9670;&nbsp;</a></span>GLFWimage</h2>
1319
1320<div class="memitem">
1321<div class="memproto">
1322 <table class="memname">
1323 <tr>
1324 <td class="memname">typedef struct <a class="el" href="structGLFWimage.html">GLFWimage</a> <a class="el" href="structGLFWimage.html">GLFWimage</a></td>
1325 </tr>
1326 </table>
1327</div><div class="memdoc">
1328<p >This describes a single 2D image. See the documentation for each related function what the expected pixel format is.</p>
1329<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_custom">Custom cursor creation</a> </dd>
1330<dd>
1331<a class="el" href="window_guide.html#window_icon">Window icon</a></dd></dl>
1332<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Removed format and bytes-per-pixel members. </dd></dl>
1333
1334</div>
1335</div>
1336<h2 class="groupheader">Function Documentation</h2>
1337<a id="gaa77c4898dfb83344a6b4f76aa16b9a4a" name="gaa77c4898dfb83344a6b4f76aa16b9a4a"></a>
1338<h2 class="memtitle"><span class="permalink"><a href="#gaa77c4898dfb83344a6b4f76aa16b9a4a">&#9670;&nbsp;</a></span>glfwDefaultWindowHints()</h2>
1339
1340<div class="memitem">
1341<div class="memproto">
1342 <table class="memname">
1343 <tr>
1344 <td class="memname">void glfwDefaultWindowHints </td>
1345 <td>(</td>
1346 <td class="paramtype">void&#160;</td>
1347 <td class="paramname"></td><td>)</td>
1348 <td></td>
1349 </tr>
1350 </table>
1351</div><div class="memdoc">
1352<p >This function resets all window hints to their <a class="el" href="window_guide.html#window_hints_values">default values</a>.</p>
1353<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1354<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1355<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hints">Window creation hints</a> </dd>
1356<dd>
1357<a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> </dd>
1358<dd>
1359<a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a></dd></dl>
1360<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1361
1362</div>
1363</div>
1364<a id="ga7d9c8c62384b1e2821c4dc48952d2033" name="ga7d9c8c62384b1e2821c4dc48952d2033"></a>
1365<h2 class="memtitle"><span class="permalink"><a href="#ga7d9c8c62384b1e2821c4dc48952d2033">&#9670;&nbsp;</a></span>glfwWindowHint()</h2>
1366
1367<div class="memitem">
1368<div class="memproto">
1369 <table class="memname">
1370 <tr>
1371 <td class="memname">void glfwWindowHint </td>
1372 <td>(</td>
1373 <td class="paramtype">int&#160;</td>
1374 <td class="paramname"><em>hint</em>, </td>
1375 </tr>
1376 <tr>
1377 <td class="paramkey"></td>
1378 <td></td>
1379 <td class="paramtype">int&#160;</td>
1380 <td class="paramname"><em>value</em>&#160;</td>
1381 </tr>
1382 <tr>
1383 <td></td>
1384 <td>)</td>
1385 <td></td><td></td>
1386 </tr>
1387 </table>
1388</div><div class="memdoc">
1389<p >This function sets hints for the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>. The hints, once set, retain their values until changed by a call to this function or <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>, or until the library is terminated.</p>
1390<p >Only integer value hints can be set with this function. String value hints are set with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>.</p>
1391<p >This function does not check whether the specified hint values are valid. If you set hints to invalid values this will instead be reported by the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</p>
1392<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
1393<dl class="params"><dt>Parameters</dt><dd>
1394 <table class="params">
1395 <tr><td class="paramdir">[in]</td><td class="paramname">hint</td><td>The <a class="el" href="window_guide.html#window_hints">window hint</a> to set. </td></tr>
1396 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the window hint.</td></tr>
1397 </table>
1398 </dd>
1399</dl>
1400<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
1401<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1402<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hints">Window creation hints</a> </dd>
1403<dd>
1404<a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a> </dd>
1405<dd>
1406<a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a></dd></dl>
1407<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwOpenWindowHint</code>. </dd></dl>
1408
1409</div>
1410</div>
1411<a id="ga8cb2782861c9d997bcf2dea97f363e5f" name="ga8cb2782861c9d997bcf2dea97f363e5f"></a>
1412<h2 class="memtitle"><span class="permalink"><a href="#ga8cb2782861c9d997bcf2dea97f363e5f">&#9670;&nbsp;</a></span>glfwWindowHintString()</h2>
1413
1414<div class="memitem">
1415<div class="memproto">
1416 <table class="memname">
1417 <tr>
1418 <td class="memname">void glfwWindowHintString </td>
1419 <td>(</td>
1420 <td class="paramtype">int&#160;</td>
1421 <td class="paramname"><em>hint</em>, </td>
1422 </tr>
1423 <tr>
1424 <td class="paramkey"></td>
1425 <td></td>
1426 <td class="paramtype">const char *&#160;</td>
1427 <td class="paramname"><em>value</em>&#160;</td>
1428 </tr>
1429 <tr>
1430 <td></td>
1431 <td>)</td>
1432 <td></td><td></td>
1433 </tr>
1434 </table>
1435</div><div class="memdoc">
1436<p >This function sets hints for the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>. The hints, once set, retain their values until changed by a call to this function or <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>, or until the library is terminated.</p>
1437<p >Only string type hints can be set with this function. Integer value hints are set with <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>.</p>
1438<p >This function does not check whether the specified hint values are valid. If you set hints to invalid values this will instead be reported by the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</p>
1439<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
1440<dl class="params"><dt>Parameters</dt><dd>
1441 <table class="params">
1442 <tr><td class="paramdir">[in]</td><td class="paramname">hint</td><td>The <a class="el" href="window_guide.html#window_hints">window hint</a> to set. </td></tr>
1443 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the window hint.</td></tr>
1444 </table>
1445 </dd>
1446</dl>
1447<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
1448<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified string is copied before this function returns.</dd></dl>
1449<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1450<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hints">Window creation hints</a> </dd>
1451<dd>
1452<a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> </dd>
1453<dd>
1454<a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a></dd></dl>
1455<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
1456
1457</div>
1458</div>
1459<a id="ga3555a418df92ad53f917597fe2f64aeb" name="ga3555a418df92ad53f917597fe2f64aeb"></a>
1460<h2 class="memtitle"><span class="permalink"><a href="#ga3555a418df92ad53f917597fe2f64aeb">&#9670;&nbsp;</a></span>glfwCreateWindow()</h2>
1461
1462<div class="memitem">
1463<div class="memproto">
1464 <table class="memname">
1465 <tr>
1466 <td class="memname"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> * glfwCreateWindow </td>
1467 <td>(</td>
1468 <td class="paramtype">int&#160;</td>
1469 <td class="paramname"><em>width</em>, </td>
1470 </tr>
1471 <tr>
1472 <td class="paramkey"></td>
1473 <td></td>
1474 <td class="paramtype">int&#160;</td>
1475 <td class="paramname"><em>height</em>, </td>
1476 </tr>
1477 <tr>
1478 <td class="paramkey"></td>
1479 <td></td>
1480 <td class="paramtype">const char *&#160;</td>
1481 <td class="paramname"><em>title</em>, </td>
1482 </tr>
1483 <tr>
1484 <td class="paramkey"></td>
1485 <td></td>
1486 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
1487 <td class="paramname"><em>monitor</em>, </td>
1488 </tr>
1489 <tr>
1490 <td class="paramkey"></td>
1491 <td></td>
1492 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1493 <td class="paramname"><em>share</em>&#160;</td>
1494 </tr>
1495 <tr>
1496 <td></td>
1497 <td>)</td>
1498 <td></td><td></td>
1499 </tr>
1500 </table>
1501</div><div class="memdoc">
1502<p >This function creates a window and its associated OpenGL or OpenGL ES context. Most of the options controlling how the window and its context should be created are specified with <a class="el" href="window_guide.html#window_hints">window hints</a>.</p>
1503<p >Successful creation does not change which context is current. Before you can use the newly created context, you need to <a class="el" href="context_guide.html#context_current">make it current</a>. For information about the <code>share</code> parameter, see <a class="el" href="context_guide.html#context_sharing">Context object sharing</a>.</p>
1504<p >The created window, framebuffer and context may differ from what you requested, as not all parameters and hints are <a class="el" href="window_guide.html#window_hints_hard">hard constraints</a>. This includes the size of the window, especially for full screen windows. To query the actual attributes of the created window, framebuffer and context, see <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>, <a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> and <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>.</p>
1505<p >To create a full screen window, you need to specify the monitor the window will cover. If no monitor is specified, the window will be windowed mode. Unless you have a way for the user to choose a specific monitor, it is recommended that you pick the primary monitor. For more information on how to query connected monitors, see <a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a>.</p>
1506<p >For full screen windows, the specified size becomes the resolution of the window's <em>desired video mode</em>. As long as a full screen window is not iconified, the supported video mode most closely matching the desired video mode is set for the specified monitor. For more information about full screen windows, including the creation of so called <em>windowed full screen</em> or <em>borderless full screen</em> windows, see <a class="el" href="window_guide.html#window_windowed_full_screen">"Windowed full screen" windows</a>.</p>
1507<p >Once you have created the window, you can switch it between windowed and full screen mode with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>. This will not affect its OpenGL or OpenGL ES context.</p>
1508<p >By default, newly created windows use the placement recommended by the window system. To create the window at a specific position, make it initially invisible using the <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">GLFW_VISIBLE</a> window hint, set its <a class="el" href="window_guide.html#window_pos">position</a> and then <a class="el" href="window_guide.html#window_hide">show</a> it.</p>
1509<p >As long as at least one full screen window is not iconified, the screensaver is prohibited from starting.</p>
1510<p >Window systems put limits on window sizes. Very large or very small window dimensions may be overridden by the window system on creation. Check the actual <a class="el" href="window_guide.html#window_size">size</a> after creation.</p>
1511<p >The <a class="el" href="window_guide.html#buffer_swap">swap interval</a> is not set during window creation and the initial value may vary depending on driver settings and defaults.</p>
1512<dl class="params"><dt>Parameters</dt><dd>
1513 <table class="params">
1514 <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The desired width, in screen coordinates, of the window. This must be greater than zero. </td></tr>
1515 <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The desired height, in screen coordinates, of the window. This must be greater than zero. </td></tr>
1516 <tr><td class="paramdir">[in]</td><td class="paramname">title</td><td>The initial, UTF-8 encoded window title. </td></tr>
1517 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to use for full screen mode, or <code>NULL</code> for windowed mode. </td></tr>
1518 <tr><td class="paramdir">[in]</td><td class="paramname">share</td><td>The window whose context to share resources with, or <code>NULL</code> to not share resources. </td></tr>
1519 </table>
1520 </dd>
1521</dl>
1522<dl class="section return"><dt>Returns</dt><dd>The handle of the created window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
1523<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>, <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>, <a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a>, <a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1524<dl class="section remark"><dt>Remarks</dt><dd><b>Windows:</b> Window creation will fail if the Microsoft GDI software OpenGL implementation is the only one available.</dd>
1525<dd>
1526<b>Windows:</b> If the executable has an icon resource named <code>GLFW_ICON,</code> it will be set as the initial icon for the window. If no such icon is present, the <code>IDI_APPLICATION</code> icon will be used instead. To set a different icon, see <a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>.</dd>
1527<dd>
1528<b>Windows:</b> The context to share resources with must not be current on any other thread.</dd>
1529<dd>
1530<b>macOS:</b> The OS only supports forward-compatible core profile contexts for OpenGL versions 3.2 and later. Before creating an OpenGL context of version 3.2 or later you must set the <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">GLFW_OPENGL_FORWARD_COMPAT</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">GLFW_OPENGL_PROFILE</a> hints accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.</dd>
1531<dd>
1532<b>macOS:</b> The GLFW window has no icon, as it is not a document window, but the dock icon will be the same as the application bundle's icon. For more information on bundles, see the <a href="https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/">Bundle Programming Guide</a> in the Mac Developer Library.</dd>
1533<dd>
1534<b>macOS:</b> The first time a window is created the menu bar is created. If GLFW finds a <code>MainMenu.nib</code> it is loaded and assumed to contain a menu bar. Otherwise a minimal menu bar is created manually with common commands like Hide, Quit and About. The About entry opens a minimal about dialog with information from the application's bundle. Menu bar creation can be disabled entirely with the <a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a> init hint.</dd>
1535<dd>
1536<b>macOS:</b> On OS X 10.10 and later the window frame will not be rendered at full resolution on Retina displays unless the <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">GLFW_COCOA_RETINA_FRAMEBUFFER</a> hint is <code>GLFW_TRUE</code> and the <code>NSHighResolutionCapable</code> key is enabled in the application bundle's <code>Info.plist</code>. For more information, see <a href="https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html">High Resolution Guidelines for OS X</a> in the Mac Developer Library. The GLFW test and example programs use a custom <code>Info.plist</code> template for this, which can be found as <code>CMake/MacOSXBundleInfo.plist.in</code> in the source tree.</dd>
1537<dd>
1538<b>macOS:</b> When activating frame autosaving with <a class="el" href="window_guide.html#GLFW_COCOA_FRAME_NAME_hint">GLFW_COCOA_FRAME_NAME</a>, the specified window size and position may be overridden by previously saved values.</dd>
1539<dd>
1540<b>X11:</b> Some window managers will not respect the placement of initially hidden windows.</dd>
1541<dd>
1542<b>X11:</b> Due to the asynchronous nature of X11, it may take a moment for a window to reach its requested state. This means you may not be able to query the final size, position or other attributes directly after window creation.</dd>
1543<dd>
1544<b>X11:</b> The class part of the <code>WM_CLASS</code> window property will by default be set to the window title passed to this function. The instance part will use the contents of the <code>RESOURCE_NAME</code> environment variable, if present and not empty, or fall back to the window title. Set the <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">GLFW_X11_CLASS_NAME</a> and <a class="el" href="window_guide.html#GLFW_X11_INSTANCE_NAME_hint">GLFW_X11_INSTANCE_NAME</a> window hints to override this.</dd>
1545<dd>
1546<b>Wayland:</b> Compositors should implement the xdg-decoration protocol for GLFW to decorate the window properly. If this protocol isn't supported, or if the compositor prefers client-side decorations, a very simple fallback frame will be drawn using the wp_viewporter protocol. A compositor can still emit close, maximize or fullscreen events, using for instance a keybind mechanism. If neither of these protocols is supported, the window won't be decorated.</dd>
1547<dd>
1548<b>Wayland:</b> A full screen window will not attempt to change the mode, no matter what the requested size or refresh rate.</dd>
1549<dd>
1550<b>Wayland:</b> Screensaver inhibition requires the idle-inhibit protocol to be implemented in the user's compositor.</dd></dl>
1551<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1552<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_creation">Window creation</a> </dd>
1553<dd>
1554<a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></dd></dl>
1555<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwOpenWindow</code>. </dd></dl>
1556
1557</div>
1558</div>
1559<a id="gacdf43e51376051d2c091662e9fe3d7b2" name="gacdf43e51376051d2c091662e9fe3d7b2"></a>
1560<h2 class="memtitle"><span class="permalink"><a href="#gacdf43e51376051d2c091662e9fe3d7b2">&#9670;&nbsp;</a></span>glfwDestroyWindow()</h2>
1561
1562<div class="memitem">
1563<div class="memproto">
1564 <table class="memname">
1565 <tr>
1566 <td class="memname">void glfwDestroyWindow </td>
1567 <td>(</td>
1568 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1569 <td class="paramname"><em>window</em></td><td>)</td>
1570 <td></td>
1571 </tr>
1572 </table>
1573</div><div class="memdoc">
1574<p >This function destroys the specified window and its context. On calling this function, no further callbacks will be called for that window.</p>
1575<p >If the context of the specified window is current on the main thread, it is detached before being destroyed.</p>
1576<dl class="params"><dt>Parameters</dt><dd>
1577 <table class="params">
1578 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to destroy.</td></tr>
1579 </table>
1580 </dd>
1581</dl>
1582<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1583<dl class="section note"><dt>Note</dt><dd>The context of the specified window must not be current on any other thread when this function is called.</dd></dl>
1584<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
1585<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1586<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_creation">Window creation</a> </dd>
1587<dd>
1588<a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></dd></dl>
1589<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwCloseWindow</code>. </dd></dl>
1590
1591</div>
1592</div>
1593<a id="ga24e02fbfefbb81fc45320989f8140ab5" name="ga24e02fbfefbb81fc45320989f8140ab5"></a>
1594<h2 class="memtitle"><span class="permalink"><a href="#ga24e02fbfefbb81fc45320989f8140ab5">&#9670;&nbsp;</a></span>glfwWindowShouldClose()</h2>
1595
1596<div class="memitem">
1597<div class="memproto">
1598 <table class="memname">
1599 <tr>
1600 <td class="memname">int glfwWindowShouldClose </td>
1601 <td>(</td>
1602 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1603 <td class="paramname"><em>window</em></td><td>)</td>
1604 <td></td>
1605 </tr>
1606 </table>
1607</div><div class="memdoc">
1608<p >This function returns the value of the close flag of the specified window.</p>
1609<dl class="params"><dt>Parameters</dt><dd>
1610 <table class="params">
1611 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
1612 </table>
1613 </dd>
1614</dl>
1615<dl class="section return"><dt>Returns</dt><dd>The value of the close flag.</dd></dl>
1616<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1617<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
1618<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a></dd></dl>
1619<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1620
1621</div>
1622</div>
1623<a id="ga49c449dde2a6f87d996f4daaa09d6708" name="ga49c449dde2a6f87d996f4daaa09d6708"></a>
1624<h2 class="memtitle"><span class="permalink"><a href="#ga49c449dde2a6f87d996f4daaa09d6708">&#9670;&nbsp;</a></span>glfwSetWindowShouldClose()</h2>
1625
1626<div class="memitem">
1627<div class="memproto">
1628 <table class="memname">
1629 <tr>
1630 <td class="memname">void glfwSetWindowShouldClose </td>
1631 <td>(</td>
1632 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1633 <td class="paramname"><em>window</em>, </td>
1634 </tr>
1635 <tr>
1636 <td class="paramkey"></td>
1637 <td></td>
1638 <td class="paramtype">int&#160;</td>
1639 <td class="paramname"><em>value</em>&#160;</td>
1640 </tr>
1641 <tr>
1642 <td></td>
1643 <td>)</td>
1644 <td></td><td></td>
1645 </tr>
1646 </table>
1647</div><div class="memdoc">
1648<p >This function sets the value of the close flag of the specified window. This can be used to override the user's attempt to close the window, or to signal that it should be closed.</p>
1649<dl class="params"><dt>Parameters</dt><dd>
1650 <table class="params">
1651 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose flag to change. </td></tr>
1652 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value.</td></tr>
1653 </table>
1654 </dd>
1655</dl>
1656<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
1657<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
1658<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a></dd></dl>
1659<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1660
1661</div>
1662</div>
1663<a id="ga5d877f09e968cef7a360b513306f17ff" name="ga5d877f09e968cef7a360b513306f17ff"></a>
1664<h2 class="memtitle"><span class="permalink"><a href="#ga5d877f09e968cef7a360b513306f17ff">&#9670;&nbsp;</a></span>glfwSetWindowTitle()</h2>
1665
1666<div class="memitem">
1667<div class="memproto">
1668 <table class="memname">
1669 <tr>
1670 <td class="memname">void glfwSetWindowTitle </td>
1671 <td>(</td>
1672 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1673 <td class="paramname"><em>window</em>, </td>
1674 </tr>
1675 <tr>
1676 <td class="paramkey"></td>
1677 <td></td>
1678 <td class="paramtype">const char *&#160;</td>
1679 <td class="paramname"><em>title</em>&#160;</td>
1680 </tr>
1681 <tr>
1682 <td></td>
1683 <td>)</td>
1684 <td></td><td></td>
1685 </tr>
1686 </table>
1687</div><div class="memdoc">
1688<p >This function sets the window title, encoded as UTF-8, of the specified window.</p>
1689<dl class="params"><dt>Parameters</dt><dd>
1690 <table class="params">
1691 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose title to change. </td></tr>
1692 <tr><td class="paramdir">[in]</td><td class="paramname">title</td><td>The UTF-8 encoded window title.</td></tr>
1693 </table>
1694 </dd>
1695</dl>
1696<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1697<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> The window title will not be updated until the next time you process events.</dd></dl>
1698<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1699<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_title">Window title</a></dd></dl>
1700<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
1701
1702</div>
1703</div>
1704<a id="gadd7ccd39fe7a7d1f0904666ae5932dc5" name="gadd7ccd39fe7a7d1f0904666ae5932dc5"></a>
1705<h2 class="memtitle"><span class="permalink"><a href="#gadd7ccd39fe7a7d1f0904666ae5932dc5">&#9670;&nbsp;</a></span>glfwSetWindowIcon()</h2>
1706
1707<div class="memitem">
1708<div class="memproto">
1709 <table class="memname">
1710 <tr>
1711 <td class="memname">void glfwSetWindowIcon </td>
1712 <td>(</td>
1713 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1714 <td class="paramname"><em>window</em>, </td>
1715 </tr>
1716 <tr>
1717 <td class="paramkey"></td>
1718 <td></td>
1719 <td class="paramtype">int&#160;</td>
1720 <td class="paramname"><em>count</em>, </td>
1721 </tr>
1722 <tr>
1723 <td class="paramkey"></td>
1724 <td></td>
1725 <td class="paramtype">const <a class="el" href="structGLFWimage.html">GLFWimage</a> *&#160;</td>
1726 <td class="paramname"><em>images</em>&#160;</td>
1727 </tr>
1728 <tr>
1729 <td></td>
1730 <td>)</td>
1731 <td></td><td></td>
1732 </tr>
1733 </table>
1734</div><div class="memdoc">
1735<p >This function sets the icon of the specified window. If passed an array of candidate images, those of or closest to the sizes desired by the system are selected. If no images are specified, the window reverts to its default icon.</p>
1736<p >The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. They are arranged canonically as packed sequential rows, starting from the top-left corner.</p>
1737<p >The desired image sizes varies depending on platform and system settings. The selected images will be rescaled as needed. Good sizes include 16x16, 32x32 and 48x48.</p>
1738<dl class="params"><dt>Parameters</dt><dd>
1739 <table class="params">
1740 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose icon to set. </td></tr>
1741 <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The number of images in the specified array, or zero to revert to the default window icon. </td></tr>
1742 <tr><td class="paramdir">[in]</td><td class="paramname">images</td><td>The images to create the icon from. This is ignored if count is zero.</td></tr>
1743 </table>
1744 </dd>
1745</dl>
1746<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1747<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified image data is copied before this function returns.</dd></dl>
1748<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> The GLFW window has no icon, as it is not a document window, so this function does nothing. The dock icon will be the same as the application bundle's icon. For more information on bundles, see the <a href="https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/">Bundle Programming Guide</a> in the Mac Developer Library.</dd>
1749<dd>
1750<b>Wayland:</b> There is no existing protocol to change an icon, the window will thus inherit the one defined in the application's desktop file. This function always emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1751<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1752<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_icon">Window icon</a></dd></dl>
1753<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
1754
1755</div>
1756</div>
1757<a id="ga73cb526c000876fd8ddf571570fdb634" name="ga73cb526c000876fd8ddf571570fdb634"></a>
1758<h2 class="memtitle"><span class="permalink"><a href="#ga73cb526c000876fd8ddf571570fdb634">&#9670;&nbsp;</a></span>glfwGetWindowPos()</h2>
1759
1760<div class="memitem">
1761<div class="memproto">
1762 <table class="memname">
1763 <tr>
1764 <td class="memname">void glfwGetWindowPos </td>
1765 <td>(</td>
1766 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1767 <td class="paramname"><em>window</em>, </td>
1768 </tr>
1769 <tr>
1770 <td class="paramkey"></td>
1771 <td></td>
1772 <td class="paramtype">int *&#160;</td>
1773 <td class="paramname"><em>xpos</em>, </td>
1774 </tr>
1775 <tr>
1776 <td class="paramkey"></td>
1777 <td></td>
1778 <td class="paramtype">int *&#160;</td>
1779 <td class="paramname"><em>ypos</em>&#160;</td>
1780 </tr>
1781 <tr>
1782 <td></td>
1783 <td>)</td>
1784 <td></td><td></td>
1785 </tr>
1786 </table>
1787</div><div class="memdoc">
1788<p >This function retrieves the position, in screen coordinates, of the upper-left corner of the content area of the specified window.</p>
1789<p >Any or all of the position arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position arguments will be set to zero.</p>
1790<dl class="params"><dt>Parameters</dt><dd>
1791 <table class="params">
1792 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
1793 <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the x-coordinate of the upper-left corner of the content area, or <code>NULL</code>. </td></tr>
1794 <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the y-coordinate of the upper-left corner of the content area, or <code>NULL</code>.</td></tr>
1795 </table>
1796 </dd>
1797</dl>
1798<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1799<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> There is no way for an application to retrieve the global position of its windows, this function will always emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1800<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1801<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a> </dd>
1802<dd>
1803<a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a></dd></dl>
1804<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
1805
1806</div>
1807</div>
1808<a id="ga1abb6d690e8c88e0c8cd1751356dbca8" name="ga1abb6d690e8c88e0c8cd1751356dbca8"></a>
1809<h2 class="memtitle"><span class="permalink"><a href="#ga1abb6d690e8c88e0c8cd1751356dbca8">&#9670;&nbsp;</a></span>glfwSetWindowPos()</h2>
1810
1811<div class="memitem">
1812<div class="memproto">
1813 <table class="memname">
1814 <tr>
1815 <td class="memname">void glfwSetWindowPos </td>
1816 <td>(</td>
1817 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1818 <td class="paramname"><em>window</em>, </td>
1819 </tr>
1820 <tr>
1821 <td class="paramkey"></td>
1822 <td></td>
1823 <td class="paramtype">int&#160;</td>
1824 <td class="paramname"><em>xpos</em>, </td>
1825 </tr>
1826 <tr>
1827 <td class="paramkey"></td>
1828 <td></td>
1829 <td class="paramtype">int&#160;</td>
1830 <td class="paramname"><em>ypos</em>&#160;</td>
1831 </tr>
1832 <tr>
1833 <td></td>
1834 <td>)</td>
1835 <td></td><td></td>
1836 </tr>
1837 </table>
1838</div><div class="memdoc">
1839<p >This function sets the position, in screen coordinates, of the upper-left corner of the content area of the specified windowed mode window. If the window is a full screen window, this function does nothing.</p>
1840<p ><b>Do not use this function</b> to move an already visible window unless you have very good reasons for doing so, as it will confuse and annoy the user.</p>
1841<p >The window manager may put limits on what positions are allowed. GLFW cannot and should not override these limits.</p>
1842<dl class="params"><dt>Parameters</dt><dd>
1843 <table class="params">
1844 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
1845 <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The x-coordinate of the upper-left corner of the content area. </td></tr>
1846 <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The y-coordinate of the upper-left corner of the content area.</td></tr>
1847 </table>
1848 </dd>
1849</dl>
1850<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1851<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> There is no way for an application to set the global position of its windows, this function will always emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1852<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1853<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a> </dd>
1854<dd>
1855<a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a></dd></dl>
1856<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
1857
1858</div>
1859</div>
1860<a id="gaeea7cbc03373a41fb51cfbf9f2a5d4c6" name="gaeea7cbc03373a41fb51cfbf9f2a5d4c6"></a>
1861<h2 class="memtitle"><span class="permalink"><a href="#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">&#9670;&nbsp;</a></span>glfwGetWindowSize()</h2>
1862
1863<div class="memitem">
1864<div class="memproto">
1865 <table class="memname">
1866 <tr>
1867 <td class="memname">void glfwGetWindowSize </td>
1868 <td>(</td>
1869 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1870 <td class="paramname"><em>window</em>, </td>
1871 </tr>
1872 <tr>
1873 <td class="paramkey"></td>
1874 <td></td>
1875 <td class="paramtype">int *&#160;</td>
1876 <td class="paramname"><em>width</em>, </td>
1877 </tr>
1878 <tr>
1879 <td class="paramkey"></td>
1880 <td></td>
1881 <td class="paramtype">int *&#160;</td>
1882 <td class="paramname"><em>height</em>&#160;</td>
1883 </tr>
1884 <tr>
1885 <td></td>
1886 <td>)</td>
1887 <td></td><td></td>
1888 </tr>
1889 </table>
1890</div><div class="memdoc">
1891<p >This function retrieves the size, in screen coordinates, of the content area of the specified window. If you wish to retrieve the size of the framebuffer of the window in pixels, see <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>.</p>
1892<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
1893<dl class="params"><dt>Parameters</dt><dd>
1894 <table class="params">
1895 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose size to retrieve. </td></tr>
1896 <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width, in screen coordinates, of the content area, or <code>NULL</code>. </td></tr>
1897 <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height, in screen coordinates, of the content area, or <code>NULL</code>.</td></tr>
1898 </table>
1899 </dd>
1900</dl>
1901<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1902<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1903<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a> </dd>
1904<dd>
1905<a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></dd></dl>
1906<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
1907
1908</div>
1909</div>
1910<a id="gac314fa6cec7d2d307be9963e2709cc90" name="gac314fa6cec7d2d307be9963e2709cc90"></a>
1911<h2 class="memtitle"><span class="permalink"><a href="#gac314fa6cec7d2d307be9963e2709cc90">&#9670;&nbsp;</a></span>glfwSetWindowSizeLimits()</h2>
1912
1913<div class="memitem">
1914<div class="memproto">
1915 <table class="memname">
1916 <tr>
1917 <td class="memname">void glfwSetWindowSizeLimits </td>
1918 <td>(</td>
1919 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1920 <td class="paramname"><em>window</em>, </td>
1921 </tr>
1922 <tr>
1923 <td class="paramkey"></td>
1924 <td></td>
1925 <td class="paramtype">int&#160;</td>
1926 <td class="paramname"><em>minwidth</em>, </td>
1927 </tr>
1928 <tr>
1929 <td class="paramkey"></td>
1930 <td></td>
1931 <td class="paramtype">int&#160;</td>
1932 <td class="paramname"><em>minheight</em>, </td>
1933 </tr>
1934 <tr>
1935 <td class="paramkey"></td>
1936 <td></td>
1937 <td class="paramtype">int&#160;</td>
1938 <td class="paramname"><em>maxwidth</em>, </td>
1939 </tr>
1940 <tr>
1941 <td class="paramkey"></td>
1942 <td></td>
1943 <td class="paramtype">int&#160;</td>
1944 <td class="paramname"><em>maxheight</em>&#160;</td>
1945 </tr>
1946 <tr>
1947 <td></td>
1948 <td>)</td>
1949 <td></td><td></td>
1950 </tr>
1951 </table>
1952</div><div class="memdoc">
1953<p >This function sets the size limits of the content area of the specified window. If the window is full screen, the size limits only take effect once it is made windowed. If the window is not resizable, this function does nothing.</p>
1954<p >The size limits are applied immediately to a windowed mode window and may cause it to be resized.</p>
1955<p >The maximum dimensions must be greater than or equal to the minimum dimensions and all must be greater than or equal to zero.</p>
1956<dl class="params"><dt>Parameters</dt><dd>
1957 <table class="params">
1958 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set limits for. </td></tr>
1959 <tr><td class="paramdir">[in]</td><td class="paramname">minwidth</td><td>The minimum width, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>. </td></tr>
1960 <tr><td class="paramdir">[in]</td><td class="paramname">minheight</td><td>The minimum height, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>. </td></tr>
1961 <tr><td class="paramdir">[in]</td><td class="paramname">maxwidth</td><td>The maximum width, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>. </td></tr>
1962 <tr><td class="paramdir">[in]</td><td class="paramname">maxheight</td><td>The maximum height, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>.</td></tr>
1963 </table>
1964 </dd>
1965</dl>
1966<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
1967<dl class="section remark"><dt>Remarks</dt><dd>If you set size limits and an aspect ratio that conflict, the results are undefined.</dd>
1968<dd>
1969<b>Wayland:</b> The size limits will not be applied until the window is actually resized, either by the user or by the compositor.</dd></dl>
1970<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
1971<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_sizelimits">Window size limits</a> </dd>
1972<dd>
1973<a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a></dd></dl>
1974<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
1975
1976</div>
1977</div>
1978<a id="ga72ac8cb1ee2e312a878b55153d81b937" name="ga72ac8cb1ee2e312a878b55153d81b937"></a>
1979<h2 class="memtitle"><span class="permalink"><a href="#ga72ac8cb1ee2e312a878b55153d81b937">&#9670;&nbsp;</a></span>glfwSetWindowAspectRatio()</h2>
1980
1981<div class="memitem">
1982<div class="memproto">
1983 <table class="memname">
1984 <tr>
1985 <td class="memname">void glfwSetWindowAspectRatio </td>
1986 <td>(</td>
1987 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
1988 <td class="paramname"><em>window</em>, </td>
1989 </tr>
1990 <tr>
1991 <td class="paramkey"></td>
1992 <td></td>
1993 <td class="paramtype">int&#160;</td>
1994 <td class="paramname"><em>numer</em>, </td>
1995 </tr>
1996 <tr>
1997 <td class="paramkey"></td>
1998 <td></td>
1999 <td class="paramtype">int&#160;</td>
2000 <td class="paramname"><em>denom</em>&#160;</td>
2001 </tr>
2002 <tr>
2003 <td></td>
2004 <td>)</td>
2005 <td></td><td></td>
2006 </tr>
2007 </table>
2008</div><div class="memdoc">
2009<p >This function sets the required aspect ratio of the content area of the specified window. If the window is full screen, the aspect ratio only takes effect once it is made windowed. If the window is not resizable, this function does nothing.</p>
2010<p >The aspect ratio is specified as a numerator and a denominator and both values must be greater than zero. For example, the common 16:9 aspect ratio is specified as 16 and 9, respectively.</p>
2011<p >If the numerator and denominator is set to <code>GLFW_DONT_CARE</code> then the aspect ratio limit is disabled.</p>
2012<p >The aspect ratio is applied immediately to a windowed mode window and may cause it to be resized.</p>
2013<dl class="params"><dt>Parameters</dt><dd>
2014 <table class="params">
2015 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set limits for. </td></tr>
2016 <tr><td class="paramdir">[in]</td><td class="paramname">numer</td><td>The numerator of the desired aspect ratio, or <code>GLFW_DONT_CARE</code>. </td></tr>
2017 <tr><td class="paramdir">[in]</td><td class="paramname">denom</td><td>The denominator of the desired aspect ratio, or <code>GLFW_DONT_CARE</code>.</td></tr>
2018 </table>
2019 </dd>
2020</dl>
2021<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2022<dl class="section remark"><dt>Remarks</dt><dd>If you set size limits and an aspect ratio that conflict, the results are undefined.</dd>
2023<dd>
2024<b>Wayland:</b> The aspect ratio will not be applied until the window is actually resized, either by the user or by the compositor.</dd></dl>
2025<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2026<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_sizelimits">Window size limits</a> </dd>
2027<dd>
2028<a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a></dd></dl>
2029<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
2030
2031</div>
2032</div>
2033<a id="ga371911f12c74c504dd8d47d832d095cb" name="ga371911f12c74c504dd8d47d832d095cb"></a>
2034<h2 class="memtitle"><span class="permalink"><a href="#ga371911f12c74c504dd8d47d832d095cb">&#9670;&nbsp;</a></span>glfwSetWindowSize()</h2>
2035
2036<div class="memitem">
2037<div class="memproto">
2038 <table class="memname">
2039 <tr>
2040 <td class="memname">void glfwSetWindowSize </td>
2041 <td>(</td>
2042 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2043 <td class="paramname"><em>window</em>, </td>
2044 </tr>
2045 <tr>
2046 <td class="paramkey"></td>
2047 <td></td>
2048 <td class="paramtype">int&#160;</td>
2049 <td class="paramname"><em>width</em>, </td>
2050 </tr>
2051 <tr>
2052 <td class="paramkey"></td>
2053 <td></td>
2054 <td class="paramtype">int&#160;</td>
2055 <td class="paramname"><em>height</em>&#160;</td>
2056 </tr>
2057 <tr>
2058 <td></td>
2059 <td>)</td>
2060 <td></td><td></td>
2061 </tr>
2062 </table>
2063</div><div class="memdoc">
2064<p >This function sets the size, in screen coordinates, of the content area of the specified window.</p>
2065<p >For full screen windows, this function updates the resolution of its desired video mode and switches to the video mode closest to it, without affecting the window's context. As the context is unaffected, the bit depths of the framebuffer remain unchanged.</p>
2066<p >If you wish to update the refresh rate of the desired video mode in addition to its resolution, see <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>.</p>
2067<p >The window manager may put limits on what sizes are allowed. GLFW cannot and should not override these limits.</p>
2068<dl class="params"><dt>Parameters</dt><dd>
2069 <table class="params">
2070 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to resize. </td></tr>
2071 <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The desired width, in screen coordinates, of the window content area. </td></tr>
2072 <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The desired height, in screen coordinates, of the window content area.</td></tr>
2073 </table>
2074 </dd>
2075</dl>
2076<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2077<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> A full screen window will not attempt to change the mode, no matter what the requested size.</dd></dl>
2078<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2079<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a> </dd>
2080<dd>
2081<a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> </dd>
2082<dd>
2083<a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></dd></dl>
2084<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
2085
2086</div>
2087</div>
2088<a id="ga0e2637a4161afb283f5300c7f94785c9" name="ga0e2637a4161afb283f5300c7f94785c9"></a>
2089<h2 class="memtitle"><span class="permalink"><a href="#ga0e2637a4161afb283f5300c7f94785c9">&#9670;&nbsp;</a></span>glfwGetFramebufferSize()</h2>
2090
2091<div class="memitem">
2092<div class="memproto">
2093 <table class="memname">
2094 <tr>
2095 <td class="memname">void glfwGetFramebufferSize </td>
2096 <td>(</td>
2097 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2098 <td class="paramname"><em>window</em>, </td>
2099 </tr>
2100 <tr>
2101 <td class="paramkey"></td>
2102 <td></td>
2103 <td class="paramtype">int *&#160;</td>
2104 <td class="paramname"><em>width</em>, </td>
2105 </tr>
2106 <tr>
2107 <td class="paramkey"></td>
2108 <td></td>
2109 <td class="paramtype">int *&#160;</td>
2110 <td class="paramname"><em>height</em>&#160;</td>
2111 </tr>
2112 <tr>
2113 <td></td>
2114 <td>)</td>
2115 <td></td><td></td>
2116 </tr>
2117 </table>
2118</div><div class="memdoc">
2119<p >This function retrieves the size, in pixels, of the framebuffer of the specified window. If you wish to retrieve the size of the window in screen coordinates, see <a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>.</p>
2120<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
2121<dl class="params"><dt>Parameters</dt><dd>
2122 <table class="params">
2123 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose framebuffer to query. </td></tr>
2124 <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width, in pixels, of the framebuffer, or <code>NULL</code>. </td></tr>
2125 <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height, in pixels, of the framebuffer, or <code>NULL</code>.</td></tr>
2126 </table>
2127 </dd>
2128</dl>
2129<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2130<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2131<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_fbsize">Framebuffer size</a> </dd>
2132<dd>
2133<a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></dd></dl>
2134<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2135
2136</div>
2137</div>
2138<a id="ga1a9fd382058c53101b21cf211898f1f1" name="ga1a9fd382058c53101b21cf211898f1f1"></a>
2139<h2 class="memtitle"><span class="permalink"><a href="#ga1a9fd382058c53101b21cf211898f1f1">&#9670;&nbsp;</a></span>glfwGetWindowFrameSize()</h2>
2140
2141<div class="memitem">
2142<div class="memproto">
2143 <table class="memname">
2144 <tr>
2145 <td class="memname">void glfwGetWindowFrameSize </td>
2146 <td>(</td>
2147 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2148 <td class="paramname"><em>window</em>, </td>
2149 </tr>
2150 <tr>
2151 <td class="paramkey"></td>
2152 <td></td>
2153 <td class="paramtype">int *&#160;</td>
2154 <td class="paramname"><em>left</em>, </td>
2155 </tr>
2156 <tr>
2157 <td class="paramkey"></td>
2158 <td></td>
2159 <td class="paramtype">int *&#160;</td>
2160 <td class="paramname"><em>top</em>, </td>
2161 </tr>
2162 <tr>
2163 <td class="paramkey"></td>
2164 <td></td>
2165 <td class="paramtype">int *&#160;</td>
2166 <td class="paramname"><em>right</em>, </td>
2167 </tr>
2168 <tr>
2169 <td class="paramkey"></td>
2170 <td></td>
2171 <td class="paramtype">int *&#160;</td>
2172 <td class="paramname"><em>bottom</em>&#160;</td>
2173 </tr>
2174 <tr>
2175 <td></td>
2176 <td>)</td>
2177 <td></td><td></td>
2178 </tr>
2179 </table>
2180</div><div class="memdoc">
2181<p >This function retrieves the size, in screen coordinates, of each edge of the frame of the specified window. This size includes the title bar, if the window has one. The size of the frame may vary depending on the <a class="el" href="window_guide.html#window_hints_wnd">window-related hints</a> used to create it.</p>
2182<p >Because this function retrieves the size of each window frame edge and not the offset along a particular coordinate axis, the retrieved values will always be zero or positive.</p>
2183<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
2184<dl class="params"><dt>Parameters</dt><dd>
2185 <table class="params">
2186 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose frame size to query. </td></tr>
2187 <tr><td class="paramdir">[out]</td><td class="paramname">left</td><td>Where to store the size, in screen coordinates, of the left edge of the window frame, or <code>NULL</code>. </td></tr>
2188 <tr><td class="paramdir">[out]</td><td class="paramname">top</td><td>Where to store the size, in screen coordinates, of the top edge of the window frame, or <code>NULL</code>. </td></tr>
2189 <tr><td class="paramdir">[out]</td><td class="paramname">right</td><td>Where to store the size, in screen coordinates, of the right edge of the window frame, or <code>NULL</code>. </td></tr>
2190 <tr><td class="paramdir">[out]</td><td class="paramname">bottom</td><td>Where to store the size, in screen coordinates, of the bottom edge of the window frame, or <code>NULL</code>.</td></tr>
2191 </table>
2192 </dd>
2193</dl>
2194<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2195<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2196<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a></dd></dl>
2197<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
2198
2199</div>
2200</div>
2201<a id="gaf5d31de9c19c4f994facea64d2b3106c" name="gaf5d31de9c19c4f994facea64d2b3106c"></a>
2202<h2 class="memtitle"><span class="permalink"><a href="#gaf5d31de9c19c4f994facea64d2b3106c">&#9670;&nbsp;</a></span>glfwGetWindowContentScale()</h2>
2203
2204<div class="memitem">
2205<div class="memproto">
2206 <table class="memname">
2207 <tr>
2208 <td class="memname">void glfwGetWindowContentScale </td>
2209 <td>(</td>
2210 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2211 <td class="paramname"><em>window</em>, </td>
2212 </tr>
2213 <tr>
2214 <td class="paramkey"></td>
2215 <td></td>
2216 <td class="paramtype">float *&#160;</td>
2217 <td class="paramname"><em>xscale</em>, </td>
2218 </tr>
2219 <tr>
2220 <td class="paramkey"></td>
2221 <td></td>
2222 <td class="paramtype">float *&#160;</td>
2223 <td class="paramname"><em>yscale</em>&#160;</td>
2224 </tr>
2225 <tr>
2226 <td></td>
2227 <td>)</td>
2228 <td></td><td></td>
2229 </tr>
2230 </table>
2231</div><div class="memdoc">
2232<p >This function retrieves the content scale for the specified window. The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
2233<p >On systems where each monitors can have its own content scale, the window content scale will depend on which monitor the system considers the window to be on.</p>
2234<dl class="params"><dt>Parameters</dt><dd>
2235 <table class="params">
2236 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
2237 <tr><td class="paramdir">[out]</td><td class="paramname">xscale</td><td>Where to store the x-axis content scale, or <code>NULL</code>. </td></tr>
2238 <tr><td class="paramdir">[out]</td><td class="paramname">yscale</td><td>Where to store the y-axis content scale, or <code>NULL</code>.</td></tr>
2239 </table>
2240 </dd>
2241</dl>
2242<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2243<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2244<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_scale">Window content scale</a> </dd>
2245<dd>
2246<a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a> </dd>
2247<dd>
2248<a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></dd></dl>
2249<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
2250
2251</div>
2252</div>
2253<a id="gad09f0bd7a6307c4533b7061828480a84" name="gad09f0bd7a6307c4533b7061828480a84"></a>
2254<h2 class="memtitle"><span class="permalink"><a href="#gad09f0bd7a6307c4533b7061828480a84">&#9670;&nbsp;</a></span>glfwGetWindowOpacity()</h2>
2255
2256<div class="memitem">
2257<div class="memproto">
2258 <table class="memname">
2259 <tr>
2260 <td class="memname">float glfwGetWindowOpacity </td>
2261 <td>(</td>
2262 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2263 <td class="paramname"><em>window</em></td><td>)</td>
2264 <td></td>
2265 </tr>
2266 </table>
2267</div><div class="memdoc">
2268<p >This function returns the opacity of the window, including any decorations.</p>
2269<p >The opacity (or alpha) value is a positive finite number between zero and one, where zero is fully transparent and one is fully opaque. If the system does not support whole window transparency, this function always returns one.</p>
2270<p >The initial opacity value for newly created windows is one.</p>
2271<dl class="params"><dt>Parameters</dt><dd>
2272 <table class="params">
2273 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
2274 </table>
2275 </dd>
2276</dl>
2277<dl class="section return"><dt>Returns</dt><dd>The opacity value of the specified window.</dd></dl>
2278<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2279<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2280<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_transparency">Window transparency</a> </dd>
2281<dd>
2282<a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></dd></dl>
2283<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
2284
2285</div>
2286</div>
2287<a id="gac31caeb3d1088831b13d2c8a156802e9" name="gac31caeb3d1088831b13d2c8a156802e9"></a>
2288<h2 class="memtitle"><span class="permalink"><a href="#gac31caeb3d1088831b13d2c8a156802e9">&#9670;&nbsp;</a></span>glfwSetWindowOpacity()</h2>
2289
2290<div class="memitem">
2291<div class="memproto">
2292 <table class="memname">
2293 <tr>
2294 <td class="memname">void glfwSetWindowOpacity </td>
2295 <td>(</td>
2296 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2297 <td class="paramname"><em>window</em>, </td>
2298 </tr>
2299 <tr>
2300 <td class="paramkey"></td>
2301 <td></td>
2302 <td class="paramtype">float&#160;</td>
2303 <td class="paramname"><em>opacity</em>&#160;</td>
2304 </tr>
2305 <tr>
2306 <td></td>
2307 <td>)</td>
2308 <td></td><td></td>
2309 </tr>
2310 </table>
2311</div><div class="memdoc">
2312<p >This function sets the opacity of the window, including any decorations.</p>
2313<p >The opacity (or alpha) value is a positive finite number between zero and one, where zero is fully transparent and one is fully opaque.</p>
2314<p >The initial opacity value for newly created windows is one.</p>
2315<p >A window created with framebuffer transparency may not use whole window transparency. The results of doing this are undefined.</p>
2316<dl class="params"><dt>Parameters</dt><dd>
2317 <table class="params">
2318 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set the opacity for. </td></tr>
2319 <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>The desired opacity of the specified window.</td></tr>
2320 </table>
2321 </dd>
2322</dl>
2323<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2324<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2325<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_transparency">Window transparency</a> </dd>
2326<dd>
2327<a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></dd></dl>
2328<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
2329
2330</div>
2331</div>
2332<a id="ga1bb559c0ebaad63c5c05ad2a066779c4" name="ga1bb559c0ebaad63c5c05ad2a066779c4"></a>
2333<h2 class="memtitle"><span class="permalink"><a href="#ga1bb559c0ebaad63c5c05ad2a066779c4">&#9670;&nbsp;</a></span>glfwIconifyWindow()</h2>
2334
2335<div class="memitem">
2336<div class="memproto">
2337 <table class="memname">
2338 <tr>
2339 <td class="memname">void glfwIconifyWindow </td>
2340 <td>(</td>
2341 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2342 <td class="paramname"><em>window</em></td><td>)</td>
2343 <td></td>
2344 </tr>
2345 </table>
2346</div><div class="memdoc">
2347<p >This function iconifies (minimizes) the specified window if it was previously restored. If the window is already iconified, this function does nothing.</p>
2348<p >If the specified window is a full screen window, the original monitor resolution is restored until the window is restored.</p>
2349<dl class="params"><dt>Parameters</dt><dd>
2350 <table class="params">
2351 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to iconify.</td></tr>
2352 </table>
2353 </dd>
2354</dl>
2355<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2356<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> There is no concept of iconification in wl_shell, this function will emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> when using this deprecated protocol.</dd></dl>
2357<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2358<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
2359<dd>
2360<a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a> </dd>
2361<dd>
2362<a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></dd></dl>
2363<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
2364
2365</div>
2366</div>
2367<a id="ga52527a5904b47d802b6b4bb519cdebc7" name="ga52527a5904b47d802b6b4bb519cdebc7"></a>
2368<h2 class="memtitle"><span class="permalink"><a href="#ga52527a5904b47d802b6b4bb519cdebc7">&#9670;&nbsp;</a></span>glfwRestoreWindow()</h2>
2369
2370<div class="memitem">
2371<div class="memproto">
2372 <table class="memname">
2373 <tr>
2374 <td class="memname">void glfwRestoreWindow </td>
2375 <td>(</td>
2376 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2377 <td class="paramname"><em>window</em></td><td>)</td>
2378 <td></td>
2379 </tr>
2380 </table>
2381</div><div class="memdoc">
2382<p >This function restores the specified window if it was previously iconified (minimized) or maximized. If the window is already restored, this function does nothing.</p>
2383<p >If the specified window is a full screen window, the resolution chosen for the window is restored on the selected monitor.</p>
2384<dl class="params"><dt>Parameters</dt><dd>
2385 <table class="params">
2386 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to restore.</td></tr>
2387 </table>
2388 </dd>
2389</dl>
2390<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2391<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2392<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
2393<dd>
2394<a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> </dd>
2395<dd>
2396<a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></dd></dl>
2397<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
2398
2399</div>
2400</div>
2401<a id="ga3f541387449d911274324ae7f17ec56b" name="ga3f541387449d911274324ae7f17ec56b"></a>
2402<h2 class="memtitle"><span class="permalink"><a href="#ga3f541387449d911274324ae7f17ec56b">&#9670;&nbsp;</a></span>glfwMaximizeWindow()</h2>
2403
2404<div class="memitem">
2405<div class="memproto">
2406 <table class="memname">
2407 <tr>
2408 <td class="memname">void glfwMaximizeWindow </td>
2409 <td>(</td>
2410 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2411 <td class="paramname"><em>window</em></td><td>)</td>
2412 <td></td>
2413 </tr>
2414 </table>
2415</div><div class="memdoc">
2416<p >This function maximizes the specified window if it was previously not maximized. If the window is already maximized, this function does nothing.</p>
2417<p >If the specified window is a full screen window, this function does nothing.</p>
2418<dl class="params"><dt>Parameters</dt><dd>
2419 <table class="params">
2420 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to maximize.</td></tr>
2421 </table>
2422 </dd>
2423</dl>
2424<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2425<dl class="section user"><dt>Thread Safety</dt><dd>This function may only be called from the main thread.</dd></dl>
2426<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
2427<dd>
2428<a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> </dd>
2429<dd>
2430<a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a></dd></dl>
2431<dl class="section since"><dt>Since</dt><dd>Added in GLFW 3.2. </dd></dl>
2432
2433</div>
2434</div>
2435<a id="ga61be47917b72536a148300f46494fc66" name="ga61be47917b72536a148300f46494fc66"></a>
2436<h2 class="memtitle"><span class="permalink"><a href="#ga61be47917b72536a148300f46494fc66">&#9670;&nbsp;</a></span>glfwShowWindow()</h2>
2437
2438<div class="memitem">
2439<div class="memproto">
2440 <table class="memname">
2441 <tr>
2442 <td class="memname">void glfwShowWindow </td>
2443 <td>(</td>
2444 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2445 <td class="paramname"><em>window</em></td><td>)</td>
2446 <td></td>
2447 </tr>
2448 </table>
2449</div><div class="memdoc">
2450<p >This function makes the specified window visible if it was previously hidden. If the window is already visible or is in full screen mode, this function does nothing.</p>
2451<p >By default, windowed mode windows are focused when shown Set the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> window hint to change this behavior for all newly created windows, or change the behavior for an existing window with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
2452<dl class="params"><dt>Parameters</dt><dd>
2453 <table class="params">
2454 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to make visible.</td></tr>
2455 </table>
2456 </dd>
2457</dl>
2458<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2459<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2460<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hide">Window visibility</a> </dd>
2461<dd>
2462<a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a></dd></dl>
2463<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2464
2465</div>
2466</div>
2467<a id="ga49401f82a1ba5f15db5590728314d47c" name="ga49401f82a1ba5f15db5590728314d47c"></a>
2468<h2 class="memtitle"><span class="permalink"><a href="#ga49401f82a1ba5f15db5590728314d47c">&#9670;&nbsp;</a></span>glfwHideWindow()</h2>
2469
2470<div class="memitem">
2471<div class="memproto">
2472 <table class="memname">
2473 <tr>
2474 <td class="memname">void glfwHideWindow </td>
2475 <td>(</td>
2476 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2477 <td class="paramname"><em>window</em></td><td>)</td>
2478 <td></td>
2479 </tr>
2480 </table>
2481</div><div class="memdoc">
2482<p >This function hides the specified window if it was previously visible. If the window is already hidden or is in full screen mode, this function does nothing.</p>
2483<dl class="params"><dt>Parameters</dt><dd>
2484 <table class="params">
2485 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to hide.</td></tr>
2486 </table>
2487 </dd>
2488</dl>
2489<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2490<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2491<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hide">Window visibility</a> </dd>
2492<dd>
2493<a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a></dd></dl>
2494<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2495
2496</div>
2497</div>
2498<a id="ga873780357abd3f3a081d71a40aae45a1" name="ga873780357abd3f3a081d71a40aae45a1"></a>
2499<h2 class="memtitle"><span class="permalink"><a href="#ga873780357abd3f3a081d71a40aae45a1">&#9670;&nbsp;</a></span>glfwFocusWindow()</h2>
2500
2501<div class="memitem">
2502<div class="memproto">
2503 <table class="memname">
2504 <tr>
2505 <td class="memname">void glfwFocusWindow </td>
2506 <td>(</td>
2507 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2508 <td class="paramname"><em>window</em></td><td>)</td>
2509 <td></td>
2510 </tr>
2511 </table>
2512</div><div class="memdoc">
2513<p >This function brings the specified window to front and sets input focus. The window should already be visible and not iconified.</p>
2514<p >By default, both windowed and full screen mode windows are focused when initially created. Set the <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">GLFW_FOCUSED</a> to disable this behavior.</p>
2515<p >Also by default, windowed mode windows are focused when shown with <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>. Set the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> to disable this behavior.</p>
2516<p ><b>Do not use this function</b> to steal focus from other applications unless you are certain that is what the user wants. Focus stealing can be extremely disruptive.</p>
2517<p >For a less disruptive way of getting the user's attention, see <a class="el" href="window_guide.html#window_attention">attention requests</a>.</p>
2518<dl class="params"><dt>Parameters</dt><dd>
2519 <table class="params">
2520 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to give input focus.</td></tr>
2521 </table>
2522 </dd>
2523</dl>
2524<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2525<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> It is not possible for an application to bring its windows to front, this function will always emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2526<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2527<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_focus">Window input focus</a> </dd>
2528<dd>
2529<a class="el" href="window_guide.html#window_attention">Window attention request</a></dd></dl>
2530<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
2531
2532</div>
2533</div>
2534<a id="ga2f8d59323fc4692c1d54ba08c863a703" name="ga2f8d59323fc4692c1d54ba08c863a703"></a>
2535<h2 class="memtitle"><span class="permalink"><a href="#ga2f8d59323fc4692c1d54ba08c863a703">&#9670;&nbsp;</a></span>glfwRequestWindowAttention()</h2>
2536
2537<div class="memitem">
2538<div class="memproto">
2539 <table class="memname">
2540 <tr>
2541 <td class="memname">void glfwRequestWindowAttention </td>
2542 <td>(</td>
2543 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2544 <td class="paramname"><em>window</em></td><td>)</td>
2545 <td></td>
2546 </tr>
2547 </table>
2548</div><div class="memdoc">
2549<p >This function requests user attention to the specified window. On platforms where this is not supported, attention is requested to the application as a whole.</p>
2550<p >Once the user has given attention, usually by focusing the window or application, the system will end the request automatically.</p>
2551<dl class="params"><dt>Parameters</dt><dd>
2552 <table class="params">
2553 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to request attention to.</td></tr>
2554 </table>
2555 </dd>
2556</dl>
2557<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2558<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> Attention is requested to the application as a whole, not the specific window.</dd></dl>
2559<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2560<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_attention">Window attention request</a></dd></dl>
2561<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
2562
2563</div>
2564</div>
2565<a id="ga4d766499ac02c60f02221a9dfab87299" name="ga4d766499ac02c60f02221a9dfab87299"></a>
2566<h2 class="memtitle"><span class="permalink"><a href="#ga4d766499ac02c60f02221a9dfab87299">&#9670;&nbsp;</a></span>glfwGetWindowMonitor()</h2>
2567
2568<div class="memitem">
2569<div class="memproto">
2570 <table class="memname">
2571 <tr>
2572 <td class="memname"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> * glfwGetWindowMonitor </td>
2573 <td>(</td>
2574 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2575 <td class="paramname"><em>window</em></td><td>)</td>
2576 <td></td>
2577 </tr>
2578 </table>
2579</div><div class="memdoc">
2580<p >This function returns the handle of the monitor that the specified window is in full screen on.</p>
2581<dl class="params"><dt>Parameters</dt><dd>
2582 <table class="params">
2583 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
2584 </table>
2585 </dd>
2586</dl>
2587<dl class="section return"><dt>Returns</dt><dd>The monitor, or <code>NULL</code> if the window is in windowed mode or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
2588<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2589<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2590<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_monitor">Window monitor</a> </dd>
2591<dd>
2592<a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></dd></dl>
2593<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2594
2595</div>
2596</div>
2597<a id="ga81c76c418af80a1cce7055bccb0ae0a7" name="ga81c76c418af80a1cce7055bccb0ae0a7"></a>
2598<h2 class="memtitle"><span class="permalink"><a href="#ga81c76c418af80a1cce7055bccb0ae0a7">&#9670;&nbsp;</a></span>glfwSetWindowMonitor()</h2>
2599
2600<div class="memitem">
2601<div class="memproto">
2602 <table class="memname">
2603 <tr>
2604 <td class="memname">void glfwSetWindowMonitor </td>
2605 <td>(</td>
2606 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2607 <td class="paramname"><em>window</em>, </td>
2608 </tr>
2609 <tr>
2610 <td class="paramkey"></td>
2611 <td></td>
2612 <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
2613 <td class="paramname"><em>monitor</em>, </td>
2614 </tr>
2615 <tr>
2616 <td class="paramkey"></td>
2617 <td></td>
2618 <td class="paramtype">int&#160;</td>
2619 <td class="paramname"><em>xpos</em>, </td>
2620 </tr>
2621 <tr>
2622 <td class="paramkey"></td>
2623 <td></td>
2624 <td class="paramtype">int&#160;</td>
2625 <td class="paramname"><em>ypos</em>, </td>
2626 </tr>
2627 <tr>
2628 <td class="paramkey"></td>
2629 <td></td>
2630 <td class="paramtype">int&#160;</td>
2631 <td class="paramname"><em>width</em>, </td>
2632 </tr>
2633 <tr>
2634 <td class="paramkey"></td>
2635 <td></td>
2636 <td class="paramtype">int&#160;</td>
2637 <td class="paramname"><em>height</em>, </td>
2638 </tr>
2639 <tr>
2640 <td class="paramkey"></td>
2641 <td></td>
2642 <td class="paramtype">int&#160;</td>
2643 <td class="paramname"><em>refreshRate</em>&#160;</td>
2644 </tr>
2645 <tr>
2646 <td></td>
2647 <td>)</td>
2648 <td></td><td></td>
2649 </tr>
2650 </table>
2651</div><div class="memdoc">
2652<p >This function sets the monitor that the window uses for full screen mode or, if the monitor is <code>NULL</code>, makes it windowed mode.</p>
2653<p >When setting a monitor, this function updates the width, height and refresh rate of the desired video mode and switches to the video mode closest to it. The window position is ignored when setting a monitor.</p>
2654<p >When the monitor is <code>NULL</code>, the position, width and height are used to place the window content area. The refresh rate is ignored when no monitor is specified.</p>
2655<p >If you only wish to update the resolution of a full screen window or the size of a windowed mode window, see <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>.</p>
2656<p >When a window transitions from full screen to windowed mode, this function restores any previous window settings such as whether it is decorated, floating, resizable, has size or aspect ratio limits, etc.</p>
2657<dl class="params"><dt>Parameters</dt><dd>
2658 <table class="params">
2659 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose monitor, size or video mode to set. </td></tr>
2660 <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The desired monitor, or <code>NULL</code> to set windowed mode. </td></tr>
2661 <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The desired x-coordinate of the upper-left corner of the content area. </td></tr>
2662 <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The desired y-coordinate of the upper-left corner of the content area. </td></tr>
2663 <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The desired with, in screen coordinates, of the content area or video mode. </td></tr>
2664 <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The desired height, in screen coordinates, of the content area or video mode. </td></tr>
2665 <tr><td class="paramdir">[in]</td><td class="paramname">refreshRate</td><td>The desired refresh rate, in Hz, of the video mode, or <code>GLFW_DONT_CARE</code>.</td></tr>
2666 </table>
2667 </dd>
2668</dl>
2669<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2670<dl class="section remark"><dt>Remarks</dt><dd>The OpenGL or OpenGL ES context will not be destroyed or otherwise affected by any resizing or mode switching, although you may need to update your viewport if the framebuffer size has changed.</dd>
2671<dd>
2672<b>Wayland:</b> The desired window position is ignored, as there is no way for an application to set this property.</dd>
2673<dd>
2674<b>Wayland:</b> Setting the window to full screen will not attempt to change the mode, no matter what the requested size or refresh rate.</dd></dl>
2675<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2676<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_monitor">Window monitor</a> </dd>
2677<dd>
2678<a class="el" href="window_guide.html#window_full_screen">Full screen windows</a> </dd>
2679<dd>
2680<a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a> </dd>
2681<dd>
2682<a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></dd></dl>
2683<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
2684
2685</div>
2686</div>
2687<a id="gacccb29947ea4b16860ebef42c2cb9337" name="gacccb29947ea4b16860ebef42c2cb9337"></a>
2688<h2 class="memtitle"><span class="permalink"><a href="#gacccb29947ea4b16860ebef42c2cb9337">&#9670;&nbsp;</a></span>glfwGetWindowAttrib()</h2>
2689
2690<div class="memitem">
2691<div class="memproto">
2692 <table class="memname">
2693 <tr>
2694 <td class="memname">int glfwGetWindowAttrib </td>
2695 <td>(</td>
2696 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2697 <td class="paramname"><em>window</em>, </td>
2698 </tr>
2699 <tr>
2700 <td class="paramkey"></td>
2701 <td></td>
2702 <td class="paramtype">int&#160;</td>
2703 <td class="paramname"><em>attrib</em>&#160;</td>
2704 </tr>
2705 <tr>
2706 <td></td>
2707 <td>)</td>
2708 <td></td><td></td>
2709 </tr>
2710 </table>
2711</div><div class="memdoc">
2712<p >This function returns the value of an attribute of the specified window or its OpenGL or OpenGL ES context.</p>
2713<dl class="params"><dt>Parameters</dt><dd>
2714 <table class="params">
2715 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
2716 <tr><td class="paramdir">[in]</td><td class="paramname">attrib</td><td>The <a class="el" href="window_guide.html#window_attribs">window attribute</a> whose value to return. </td></tr>
2717 </table>
2718 </dd>
2719</dl>
2720<dl class="section return"><dt>Returns</dt><dd>The value of the attribute, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
2721<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2722<dl class="section remark"><dt>Remarks</dt><dd>Framebuffer related hints are not window attributes. See <a class="el" href="window_guide.html#window_attribs_fb">Framebuffer related attributes</a> for more information.</dd>
2723<dd>
2724Zero is a valid value for many window and context related attributes so you cannot use a return value of zero as an indication of errors. However, this function should not fail as long as it is passed valid arguments and the library has been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
2725<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2726<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_attribs">Window attributes</a> </dd>
2727<dd>
2728<a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></dd></dl>
2729<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetWindowParam</code> and <code>glfwGetGLVersion</code>. </dd></dl>
2730
2731</div>
2732</div>
2733<a id="gace2afda29b4116ec012e410a6819033e" name="gace2afda29b4116ec012e410a6819033e"></a>
2734<h2 class="memtitle"><span class="permalink"><a href="#gace2afda29b4116ec012e410a6819033e">&#9670;&nbsp;</a></span>glfwSetWindowAttrib()</h2>
2735
2736<div class="memitem">
2737<div class="memproto">
2738 <table class="memname">
2739 <tr>
2740 <td class="memname">void glfwSetWindowAttrib </td>
2741 <td>(</td>
2742 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2743 <td class="paramname"><em>window</em>, </td>
2744 </tr>
2745 <tr>
2746 <td class="paramkey"></td>
2747 <td></td>
2748 <td class="paramtype">int&#160;</td>
2749 <td class="paramname"><em>attrib</em>, </td>
2750 </tr>
2751 <tr>
2752 <td class="paramkey"></td>
2753 <td></td>
2754 <td class="paramtype">int&#160;</td>
2755 <td class="paramname"><em>value</em>&#160;</td>
2756 </tr>
2757 <tr>
2758 <td></td>
2759 <td>)</td>
2760 <td></td><td></td>
2761 </tr>
2762 </table>
2763</div><div class="memdoc">
2764<p >This function sets the value of an attribute of the specified window.</p>
2765<p >The supported attributes are <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">GLFW_DECORATED</a>, <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">GLFW_RESIZABLE</a>, <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">GLFW_FLOATING</a>, <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">GLFW_AUTO_ICONIFY</a> and <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">GLFW_FOCUS_ON_SHOW</a>.</p>
2766<p >Some of these attributes are ignored for full screen windows. The new value will take effect if the window is later made windowed.</p>
2767<p >Some of these attributes are ignored for windowed mode windows. The new value will take effect if the window is later made full screen.</p>
2768<dl class="params"><dt>Parameters</dt><dd>
2769 <table class="params">
2770 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set the attribute for. </td></tr>
2771 <tr><td class="paramdir">[in]</td><td class="paramname">attrib</td><td>A supported window attribute. </td></tr>
2772 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code>.</td></tr>
2773 </table>
2774 </dd>
2775</dl>
2776<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
2777<dl class="section remark"><dt>Remarks</dt><dd>Calling <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> will always return the latest value, even if that value is ignored by the current mode of the window.</dd></dl>
2778<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2779<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_attribs">Window attributes</a> </dd>
2780<dd>
2781<a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></dd></dl>
2782<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
2783
2784</div>
2785</div>
2786<a id="ga3d2fc6026e690ab31a13f78bc9fd3651" name="ga3d2fc6026e690ab31a13f78bc9fd3651"></a>
2787<h2 class="memtitle"><span class="permalink"><a href="#ga3d2fc6026e690ab31a13f78bc9fd3651">&#9670;&nbsp;</a></span>glfwSetWindowUserPointer()</h2>
2788
2789<div class="memitem">
2790<div class="memproto">
2791 <table class="memname">
2792 <tr>
2793 <td class="memname">void glfwSetWindowUserPointer </td>
2794 <td>(</td>
2795 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2796 <td class="paramname"><em>window</em>, </td>
2797 </tr>
2798 <tr>
2799 <td class="paramkey"></td>
2800 <td></td>
2801 <td class="paramtype">void *&#160;</td>
2802 <td class="paramname"><em>pointer</em>&#160;</td>
2803 </tr>
2804 <tr>
2805 <td></td>
2806 <td>)</td>
2807 <td></td><td></td>
2808 </tr>
2809 </table>
2810</div><div class="memdoc">
2811<p >This function sets the user-defined pointer of the specified window. The current value is retained until the window is destroyed. The initial value is <code>NULL</code>.</p>
2812<dl class="params"><dt>Parameters</dt><dd>
2813 <table class="params">
2814 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose pointer to set. </td></tr>
2815 <tr><td class="paramdir">[in]</td><td class="paramname">pointer</td><td>The new value.</td></tr>
2816 </table>
2817 </dd>
2818</dl>
2819<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2820<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
2821<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_userptr">User pointer</a> </dd>
2822<dd>
2823<a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a></dd></dl>
2824<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2825
2826</div>
2827</div>
2828<a id="gae77a4add0d2023ca21ff1443ced01653" name="gae77a4add0d2023ca21ff1443ced01653"></a>
2829<h2 class="memtitle"><span class="permalink"><a href="#gae77a4add0d2023ca21ff1443ced01653">&#9670;&nbsp;</a></span>glfwGetWindowUserPointer()</h2>
2830
2831<div class="memitem">
2832<div class="memproto">
2833 <table class="memname">
2834 <tr>
2835 <td class="memname">void * glfwGetWindowUserPointer </td>
2836 <td>(</td>
2837 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2838 <td class="paramname"><em>window</em></td><td>)</td>
2839 <td></td>
2840 </tr>
2841 </table>
2842</div><div class="memdoc">
2843<p >This function returns the current value of the user-defined pointer of the specified window. The initial value is <code>NULL</code>.</p>
2844<dl class="params"><dt>Parameters</dt><dd>
2845 <table class="params">
2846 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose pointer to return.</td></tr>
2847 </table>
2848 </dd>
2849</dl>
2850<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2851<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
2852<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_userptr">User pointer</a> </dd>
2853<dd>
2854<a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a></dd></dl>
2855<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2856
2857</div>
2858</div>
2859<a id="ga08bdfbba88934f9c4f92fd757979ac74" name="ga08bdfbba88934f9c4f92fd757979ac74"></a>
2860<h2 class="memtitle"><span class="permalink"><a href="#ga08bdfbba88934f9c4f92fd757979ac74">&#9670;&nbsp;</a></span>glfwSetWindowPosCallback()</h2>
2861
2862<div class="memitem">
2863<div class="memproto">
2864 <table class="memname">
2865 <tr>
2866 <td class="memname"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> glfwSetWindowPosCallback </td>
2867 <td>(</td>
2868 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2869 <td class="paramname"><em>window</em>, </td>
2870 </tr>
2871 <tr>
2872 <td class="paramkey"></td>
2873 <td></td>
2874 <td class="paramtype"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>&#160;</td>
2875 <td class="paramname"><em>callback</em>&#160;</td>
2876 </tr>
2877 <tr>
2878 <td></td>
2879 <td>)</td>
2880 <td></td><td></td>
2881 </tr>
2882 </table>
2883</div><div class="memdoc">
2884<p >This function sets the position callback of the specified window, which is called when the window is moved. The callback is provided with the position, in screen coordinates, of the upper-left corner of the content area of the window.</p>
2885<dl class="params"><dt>Parameters</dt><dd>
2886 <table class="params">
2887 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
2888 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
2889 </table>
2890 </dd>
2891</dl>
2892<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
2893<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos)</div>
2894</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">function pointer type</a>.</dd></dl>
2895<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2896<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> This callback will never be called, as there is no way for an application to know its global position.</dd></dl>
2897<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2898<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a></dd></dl>
2899<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
2900
2901</div>
2902</div>
2903<a id="gad91b8b047a0c4c6033c38853864c34f8" name="gad91b8b047a0c4c6033c38853864c34f8"></a>
2904<h2 class="memtitle"><span class="permalink"><a href="#gad91b8b047a0c4c6033c38853864c34f8">&#9670;&nbsp;</a></span>glfwSetWindowSizeCallback()</h2>
2905
2906<div class="memitem">
2907<div class="memproto">
2908 <table class="memname">
2909 <tr>
2910 <td class="memname"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> glfwSetWindowSizeCallback </td>
2911 <td>(</td>
2912 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2913 <td class="paramname"><em>window</em>, </td>
2914 </tr>
2915 <tr>
2916 <td class="paramkey"></td>
2917 <td></td>
2918 <td class="paramtype"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>&#160;</td>
2919 <td class="paramname"><em>callback</em>&#160;</td>
2920 </tr>
2921 <tr>
2922 <td></td>
2923 <td>)</td>
2924 <td></td><td></td>
2925 </tr>
2926 </table>
2927</div><div class="memdoc">
2928<p >This function sets the size callback of the specified window, which is called when the window is resized. The callback is provided with the size, in screen coordinates, of the content area of the window.</p>
2929<dl class="params"><dt>Parameters</dt><dd>
2930 <table class="params">
2931 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
2932 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
2933 </table>
2934 </dd>
2935</dl>
2936<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
2937<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
2938</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">function pointer type</a>.</dd></dl>
2939<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2940<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2941<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a></dd></dl>
2942<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
2943
2944</div>
2945</div>
2946<a id="gada646d775a7776a95ac000cfc1885331" name="gada646d775a7776a95ac000cfc1885331"></a>
2947<h2 class="memtitle"><span class="permalink"><a href="#gada646d775a7776a95ac000cfc1885331">&#9670;&nbsp;</a></span>glfwSetWindowCloseCallback()</h2>
2948
2949<div class="memitem">
2950<div class="memproto">
2951 <table class="memname">
2952 <tr>
2953 <td class="memname"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> glfwSetWindowCloseCallback </td>
2954 <td>(</td>
2955 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
2956 <td class="paramname"><em>window</em>, </td>
2957 </tr>
2958 <tr>
2959 <td class="paramkey"></td>
2960 <td></td>
2961 <td class="paramtype"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>&#160;</td>
2962 <td class="paramname"><em>callback</em>&#160;</td>
2963 </tr>
2964 <tr>
2965 <td></td>
2966 <td>)</td>
2967 <td></td><td></td>
2968 </tr>
2969 </table>
2970</div><div class="memdoc">
2971<p >This function sets the close callback of the specified window, which is called when the user attempts to close the window, for example by clicking the close widget in the title bar.</p>
2972<p >The close flag is set before this callback is called, but you can modify it at any time with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>.</p>
2973<p >The close callback is not triggered by <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>.</p>
2974<dl class="params"><dt>Parameters</dt><dd>
2975 <table class="params">
2976 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
2977 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
2978 </table>
2979 </dd>
2980</dl>
2981<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
2982<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
2983</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">function pointer type</a>.</dd></dl>
2984<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
2985<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> Selecting Quit from the application menu will trigger the close callback for all windows.</dd></dl>
2986<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
2987<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a></dd></dl>
2988<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
2989
2990</div>
2991</div>
2992<a id="ga1c5c7eb889c33c7f4d10dd35b327654e" name="ga1c5c7eb889c33c7f4d10dd35b327654e"></a>
2993<h2 class="memtitle"><span class="permalink"><a href="#ga1c5c7eb889c33c7f4d10dd35b327654e">&#9670;&nbsp;</a></span>glfwSetWindowRefreshCallback()</h2>
2994
2995<div class="memitem">
2996<div class="memproto">
2997 <table class="memname">
2998 <tr>
2999 <td class="memname"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> glfwSetWindowRefreshCallback </td>
3000 <td>(</td>
3001 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
3002 <td class="paramname"><em>window</em>, </td>
3003 </tr>
3004 <tr>
3005 <td class="paramkey"></td>
3006 <td></td>
3007 <td class="paramtype"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>&#160;</td>
3008 <td class="paramname"><em>callback</em>&#160;</td>
3009 </tr>
3010 <tr>
3011 <td></td>
3012 <td>)</td>
3013 <td></td><td></td>
3014 </tr>
3015 </table>
3016</div><div class="memdoc">
3017<p >This function sets the refresh callback of the specified window, which is called when the content area of the window needs to be redrawn, for example if the window has been exposed after having been covered by another window.</p>
3018<p >On compositing window systems such as Aero, Compiz, Aqua or Wayland, where the window contents are saved off-screen, this callback may be called only very infrequently or never at all.</p>
3019<dl class="params"><dt>Parameters</dt><dd>
3020 <table class="params">
3021 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
3022 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
3023 </table>
3024 </dd>
3025</dl>
3026<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
3027<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
3028</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">function pointer type</a>.</dd></dl>
3029<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
3030<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3031<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_refresh">Window damage and refresh</a></dd></dl>
3032<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
3033
3034</div>
3035</div>
3036<a id="gac2d83c4a10f071baf841f6730528e66c" name="gac2d83c4a10f071baf841f6730528e66c"></a>
3037<h2 class="memtitle"><span class="permalink"><a href="#gac2d83c4a10f071baf841f6730528e66c">&#9670;&nbsp;</a></span>glfwSetWindowFocusCallback()</h2>
3038
3039<div class="memitem">
3040<div class="memproto">
3041 <table class="memname">
3042 <tr>
3043 <td class="memname"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> glfwSetWindowFocusCallback </td>
3044 <td>(</td>
3045 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
3046 <td class="paramname"><em>window</em>, </td>
3047 </tr>
3048 <tr>
3049 <td class="paramkey"></td>
3050 <td></td>
3051 <td class="paramtype"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>&#160;</td>
3052 <td class="paramname"><em>callback</em>&#160;</td>
3053 </tr>
3054 <tr>
3055 <td></td>
3056 <td>)</td>
3057 <td></td><td></td>
3058 </tr>
3059 </table>
3060</div><div class="memdoc">
3061<p >This function sets the focus callback of the specified window, which is called when the window gains or loses input focus.</p>
3062<p >After the focus callback is called for a window that lost input focus, synthetic key and mouse button release events will be generated for all such that had been pressed. For more information, see <a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a> and <a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a>.</p>
3063<dl class="params"><dt>Parameters</dt><dd>
3064 <table class="params">
3065 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
3066 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
3067 </table>
3068 </dd>
3069</dl>
3070<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
3071<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused)</div>
3072</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">function pointer type</a>.</dd></dl>
3073<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
3074<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3075<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_focus">Window input focus</a></dd></dl>
3076<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
3077
3078</div>
3079</div>
3080<a id="gac793e9efd255567b5fb8b445052cfd3e" name="gac793e9efd255567b5fb8b445052cfd3e"></a>
3081<h2 class="memtitle"><span class="permalink"><a href="#gac793e9efd255567b5fb8b445052cfd3e">&#9670;&nbsp;</a></span>glfwSetWindowIconifyCallback()</h2>
3082
3083<div class="memitem">
3084<div class="memproto">
3085 <table class="memname">
3086 <tr>
3087 <td class="memname"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> glfwSetWindowIconifyCallback </td>
3088 <td>(</td>
3089 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
3090 <td class="paramname"><em>window</em>, </td>
3091 </tr>
3092 <tr>
3093 <td class="paramkey"></td>
3094 <td></td>
3095 <td class="paramtype"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>&#160;</td>
3096 <td class="paramname"><em>callback</em>&#160;</td>
3097 </tr>
3098 <tr>
3099 <td></td>
3100 <td>)</td>
3101 <td></td><td></td>
3102 </tr>
3103 </table>
3104</div><div class="memdoc">
3105<p >This function sets the iconification callback of the specified window, which is called when the window is iconified or restored.</p>
3106<dl class="params"><dt>Parameters</dt><dd>
3107 <table class="params">
3108 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
3109 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
3110 </table>
3111 </dd>
3112</dl>
3113<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
3114<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified)</div>
3115</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">function pointer type</a>.</dd></dl>
3116<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
3117<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> The wl_shell protocol has no concept of iconification, this callback will never be called when using this deprecated protocol.</dd></dl>
3118<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3119<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a></dd></dl>
3120<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
3121
3122</div>
3123</div>
3124<a id="gacbe64c339fbd94885e62145563b6dc93" name="gacbe64c339fbd94885e62145563b6dc93"></a>
3125<h2 class="memtitle"><span class="permalink"><a href="#gacbe64c339fbd94885e62145563b6dc93">&#9670;&nbsp;</a></span>glfwSetWindowMaximizeCallback()</h2>
3126
3127<div class="memitem">
3128<div class="memproto">
3129 <table class="memname">
3130 <tr>
3131 <td class="memname"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> glfwSetWindowMaximizeCallback </td>
3132 <td>(</td>
3133 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
3134 <td class="paramname"><em>window</em>, </td>
3135 </tr>
3136 <tr>
3137 <td class="paramkey"></td>
3138 <td></td>
3139 <td class="paramtype"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>&#160;</td>
3140 <td class="paramname"><em>callback</em>&#160;</td>
3141 </tr>
3142 <tr>
3143 <td></td>
3144 <td>)</td>
3145 <td></td><td></td>
3146 </tr>
3147 </table>
3148</div><div class="memdoc">
3149<p >This function sets the maximization callback of the specified window, which is called when the window is maximized or restored.</p>
3150<dl class="params"><dt>Parameters</dt><dd>
3151 <table class="params">
3152 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
3153 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
3154 </table>
3155 </dd>
3156</dl>
3157<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
3158<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized)</div>
3159</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">function pointer type</a>.</dd></dl>
3160<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
3161<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3162<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_maximize">Window maximization</a></dd></dl>
3163<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
3164
3165</div>
3166</div>
3167<a id="gab3fb7c3366577daef18c0023e2a8591f" name="gab3fb7c3366577daef18c0023e2a8591f"></a>
3168<h2 class="memtitle"><span class="permalink"><a href="#gab3fb7c3366577daef18c0023e2a8591f">&#9670;&nbsp;</a></span>glfwSetFramebufferSizeCallback()</h2>
3169
3170<div class="memitem">
3171<div class="memproto">
3172 <table class="memname">
3173 <tr>
3174 <td class="memname"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> glfwSetFramebufferSizeCallback </td>
3175 <td>(</td>
3176 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
3177 <td class="paramname"><em>window</em>, </td>
3178 </tr>
3179 <tr>
3180 <td class="paramkey"></td>
3181 <td></td>
3182 <td class="paramtype"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>&#160;</td>
3183 <td class="paramname"><em>callback</em>&#160;</td>
3184 </tr>
3185 <tr>
3186 <td></td>
3187 <td>)</td>
3188 <td></td><td></td>
3189 </tr>
3190 </table>
3191</div><div class="memdoc">
3192<p >This function sets the framebuffer resize callback of the specified window, which is called when the framebuffer of the specified window is resized.</p>
3193<dl class="params"><dt>Parameters</dt><dd>
3194 <table class="params">
3195 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
3196 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
3197 </table>
3198 </dd>
3199</dl>
3200<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
3201<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
3202</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">function pointer type</a>.</dd></dl>
3203<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
3204<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3205<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_fbsize">Framebuffer size</a></dd></dl>
3206<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
3207
3208</div>
3209</div>
3210<a id="gaf2832ebb5aa6c252a2d261de002c92d6" name="gaf2832ebb5aa6c252a2d261de002c92d6"></a>
3211<h2 class="memtitle"><span class="permalink"><a href="#gaf2832ebb5aa6c252a2d261de002c92d6">&#9670;&nbsp;</a></span>glfwSetWindowContentScaleCallback()</h2>
3212
3213<div class="memitem">
3214<div class="memproto">
3215 <table class="memname">
3216 <tr>
3217 <td class="memname"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> glfwSetWindowContentScaleCallback </td>
3218 <td>(</td>
3219 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
3220 <td class="paramname"><em>window</em>, </td>
3221 </tr>
3222 <tr>
3223 <td class="paramkey"></td>
3224 <td></td>
3225 <td class="paramtype"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>&#160;</td>
3226 <td class="paramname"><em>callback</em>&#160;</td>
3227 </tr>
3228 <tr>
3229 <td></td>
3230 <td>)</td>
3231 <td></td><td></td>
3232 </tr>
3233 </table>
3234</div><div class="memdoc">
3235<p >This function sets the window content scale callback of the specified window, which is called when the content scale of the specified window changes.</p>
3236<dl class="params"><dt>Parameters</dt><dd>
3237 <table class="params">
3238 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
3239 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
3240 </table>
3241 </dd>
3242</dl>
3243<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
3244<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale)</div>
3245</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">function pointer type</a>.</dd></dl>
3246<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
3247<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3248<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_scale">Window content scale</a> </dd>
3249<dd>
3250<a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></dd></dl>
3251<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
3252
3253</div>
3254</div>
3255<a id="ga37bd57223967b4211d60ca1a0bf3c832" name="ga37bd57223967b4211d60ca1a0bf3c832"></a>
3256<h2 class="memtitle"><span class="permalink"><a href="#ga37bd57223967b4211d60ca1a0bf3c832">&#9670;&nbsp;</a></span>glfwPollEvents()</h2>
3257
3258<div class="memitem">
3259<div class="memproto">
3260 <table class="memname">
3261 <tr>
3262 <td class="memname">void glfwPollEvents </td>
3263 <td>(</td>
3264 <td class="paramtype">void&#160;</td>
3265 <td class="paramname"></td><td>)</td>
3266 <td></td>
3267 </tr>
3268 </table>
3269</div><div class="memdoc">
3270<p >This function processes only those events that are already in the event queue and then returns immediately. Processing events will cause the window and input callbacks associated with those events to be called.</p>
3271<p >On some platforms, a window move, resize or menu operation will cause event processing to block. This is due to how event processing is designed on those platforms. You can use the <a class="el" href="window_guide.html#window_refresh">window refresh callback</a> to redraw the contents of your window when necessary during such operations.</p>
3272<p >Do not assume that callbacks you set will <em>only</em> be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
3273<p >Event processing is not required for joystick input to work.</p>
3274<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
3275<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
3276<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3277<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
3278<dd>
3279<a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> </dd>
3280<dd>
3281<a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></dd></dl>
3282<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
3283
3284</div>
3285</div>
3286<a id="ga554e37d781f0a997656c26b2c56c835e" name="ga554e37d781f0a997656c26b2c56c835e"></a>
3287<h2 class="memtitle"><span class="permalink"><a href="#ga554e37d781f0a997656c26b2c56c835e">&#9670;&nbsp;</a></span>glfwWaitEvents()</h2>
3288
3289<div class="memitem">
3290<div class="memproto">
3291 <table class="memname">
3292 <tr>
3293 <td class="memname">void glfwWaitEvents </td>
3294 <td>(</td>
3295 <td class="paramtype">void&#160;</td>
3296 <td class="paramname"></td><td>)</td>
3297 <td></td>
3298 </tr>
3299 </table>
3300</div><div class="memdoc">
3301<p >This function puts the calling thread to sleep until at least one event is available in the event queue. Once one or more events are available, it behaves exactly like <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>, i.e. the events in the queue are processed and the function then returns immediately. Processing events will cause the window and input callbacks associated with those events to be called.</p>
3302<p >Since not all events are associated with callbacks, this function may return without a callback having been called even if you are monitoring all callbacks.</p>
3303<p >On some platforms, a window move, resize or menu operation will cause event processing to block. This is due to how event processing is designed on those platforms. You can use the <a class="el" href="window_guide.html#window_refresh">window refresh callback</a> to redraw the contents of your window when necessary during such operations.</p>
3304<p >Do not assume that callbacks you set will <em>only</em> be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
3305<p >Event processing is not required for joystick input to work.</p>
3306<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
3307<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
3308<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3309<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
3310<dd>
3311<a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> </dd>
3312<dd>
3313<a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></dd></dl>
3314<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. </dd></dl>
3315
3316</div>
3317</div>
3318<a id="ga605a178db92f1a7f1a925563ef3ea2cf" name="ga605a178db92f1a7f1a925563ef3ea2cf"></a>
3319<h2 class="memtitle"><span class="permalink"><a href="#ga605a178db92f1a7f1a925563ef3ea2cf">&#9670;&nbsp;</a></span>glfwWaitEventsTimeout()</h2>
3320
3321<div class="memitem">
3322<div class="memproto">
3323 <table class="memname">
3324 <tr>
3325 <td class="memname">void glfwWaitEventsTimeout </td>
3326 <td>(</td>
3327 <td class="paramtype">double&#160;</td>
3328 <td class="paramname"><em>timeout</em></td><td>)</td>
3329 <td></td>
3330 </tr>
3331 </table>
3332</div><div class="memdoc">
3333<p >This function puts the calling thread to sleep until at least one event is available in the event queue, or until the specified timeout is reached. If one or more events are available, it behaves exactly like <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>, i.e. the events in the queue are processed and the function then returns immediately. Processing events will cause the window and input callbacks associated with those events to be called.</p>
3334<p >The timeout value must be a positive finite number.</p>
3335<p >Since not all events are associated with callbacks, this function may return without a callback having been called even if you are monitoring all callbacks.</p>
3336<p >On some platforms, a window move, resize or menu operation will cause event processing to block. This is due to how event processing is designed on those platforms. You can use the <a class="el" href="window_guide.html#window_refresh">window refresh callback</a> to redraw the contents of your window when necessary during such operations.</p>
3337<p >Do not assume that callbacks you set will <em>only</em> be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
3338<p >Event processing is not required for joystick input to work.</p>
3339<dl class="params"><dt>Parameters</dt><dd>
3340 <table class="params">
3341 <tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>The maximum amount of time, in seconds, to wait.</td></tr>
3342 </table>
3343 </dd>
3344</dl>
3345<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
3346<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
3347<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
3348<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
3349<dd>
3350<a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> </dd>
3351<dd>
3352<a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></dd></dl>
3353<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
3354
3355</div>
3356</div>
3357<a id="gab5997a25187e9fd5c6f2ecbbc8dfd7e9" name="gab5997a25187e9fd5c6f2ecbbc8dfd7e9"></a>
3358<h2 class="memtitle"><span class="permalink"><a href="#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">&#9670;&nbsp;</a></span>glfwPostEmptyEvent()</h2>
3359
3360<div class="memitem">
3361<div class="memproto">
3362 <table class="memname">
3363 <tr>
3364 <td class="memname">void glfwPostEmptyEvent </td>
3365 <td>(</td>
3366 <td class="paramtype">void&#160;</td>
3367 <td class="paramname"></td><td>)</td>
3368 <td></td>
3369 </tr>
3370 </table>
3371</div><div class="memdoc">
3372<p >This function posts an empty event from the current thread to the event queue, causing <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> or <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> to return.</p>
3373<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
3374<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
3375<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
3376<dd>
3377<a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> </dd>
3378<dd>
3379<a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></dd></dl>
3380<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
3381
3382</div>
3383</div>
3384<a id="ga15a5a1ee5b3c2ca6b15ca209a12efd14" name="ga15a5a1ee5b3c2ca6b15ca209a12efd14"></a>
3385<h2 class="memtitle"><span class="permalink"><a href="#ga15a5a1ee5b3c2ca6b15ca209a12efd14">&#9670;&nbsp;</a></span>glfwSwapBuffers()</h2>
3386
3387<div class="memitem">
3388<div class="memproto">
3389 <table class="memname">
3390 <tr>
3391 <td class="memname">void glfwSwapBuffers </td>
3392 <td>(</td>
3393 <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
3394 <td class="paramname"><em>window</em></td><td>)</td>
3395 <td></td>
3396 </tr>
3397 </table>
3398</div><div class="memdoc">
3399<p >This function swaps the front and back buffers of the specified window when rendering with OpenGL or OpenGL ES. If the swap interval is greater than zero, the GPU driver waits the specified number of screen updates before swapping the buffers.</p>
3400<p >The specified window must have an OpenGL or OpenGL ES context. Specifying a window without a context will generate a <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> error.</p>
3401<p >This function does not apply to Vulkan. If you are rendering with Vulkan, see <code>vkQueuePresentKHR</code> instead.</p>
3402<dl class="params"><dt>Parameters</dt><dd>
3403 <table class="params">
3404 <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose buffers to swap.</td></tr>
3405 </table>
3406 </dd>
3407</dl>
3408<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
3409<dl class="section remark"><dt>Remarks</dt><dd><b>EGL:</b> The context of the specified window must be current on the calling thread.</dd></dl>
3410<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
3411<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#buffer_swap">Buffer swapping</a> </dd>
3412<dd>
3413<a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></dd></dl>
3414<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
3415
3416</div>
3417</div>
3418</div><!-- contents -->
3419<address class="footer">
3420<p>
3421Last update on Thu Oct 28 2021 for GLFW 3.3.5
3422</p>
3423</address>
3424</body>
3425</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/index.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/index.html
new file mode 100644
index 0000000..c9958c8
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/index.html
@@ -0,0 +1,93 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Main Page</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div><div class="contents">
64<div class="textblock"><h1><a class="anchor" id="main_intro"></a>
65Introduction</h1>
66<p >GLFW is a free, Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan application development. It provides a simple, platform-independent API for creating windows, contexts and surfaces, reading input, handling events, etc.</p>
67<p ><a class="el" href="news.html#news_33">Release notes for version 3.3</a> list new features, caveats and deprecations.</p>
68<p ><a class="el" href="quick_guide.html">Getting started</a> is a guide for users new to GLFW. It takes you through how to write a small but complete program.</p>
69<p >There are guides for each section of the API:</p>
70<ul>
71<li><a class="el" href="intro_guide.html">Introduction to the API</a> – initialization, error handling and high-level design</li>
72<li><a class="el" href="window_guide.html">Window guide</a> – creating and working with windows and framebuffers</li>
73<li><a class="el" href="context_guide.html">Context guide</a> – working with OpenGL and OpenGL ES contexts</li>
74<li><a class="el" href="vulkan_guide.html">Vulkan guide</a> - working with Vulkan objects and extensions</li>
75<li><a class="el" href="monitor_guide.html">Monitor guide</a> – enumerating and working with monitors and video modes</li>
76<li><a class="el" href="input_guide.html">Input guide</a> – receiving events, polling and processing input</li>
77</ul>
78<p >Once you have written a program, see <a class="el" href="compile_guide.html">Compiling GLFW</a> and <a class="el" href="build_guide.html">Building applications</a>.</p>
79<p >The <a href="modules.html">reference documentation</a> provides more detailed information about specific functions.</p>
80<p ><a class="el" href="moving_guide.html">Moving from GLFW 2 to 3</a> explains what has changed and how to update existing code to use the new API.</p>
81<p >There is a section on <a class="el" href="intro_guide.html#guarantees_limitations">Guarantees and limitations</a> for pointer lifetimes, reentrancy, thread safety, event order and backward and forward compatibility.</p>
82<p >The <a href="https://www.glfw.org/faq.html">FAQ</a> answers many common questions about the design, implementation and use of GLFW.</p>
83<p >Finally, <a class="el" href="compat_guide.html">Standards conformance</a> explains what APIs, standards and protocols GLFW uses and what happens when they are not present on a given machine.</p>
84<p >This documentation was generated with Doxygen. The sources for it are available in both the <a href="https://www.glfw.org/download.html">source distribution</a> and <a href="https://github.com/glfw/glfw">GitHub repository</a>. </p>
85</div></div><!-- PageDoc -->
86</div><!-- contents -->
87<address class="footer">
88<p>
89Last update on Thu Oct 28 2021 for GLFW 3.3.5
90</p>
91</address>
92</body>
93</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_8dox.html
new file mode 100644
index 0000000..7205cc9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: input.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">input.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_guide.html
new file mode 100644
index 0000000..81d3518
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/input_guide.html
@@ -0,0 +1,560 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Input guide</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Input guide </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#events">Event processing</a></li>
69<li class="level1"><a href="#input_keyboard">Keyboard input</a><ul><li class="level2"><a href="#input_key">Key input</a></li>
70<li class="level2"><a href="#input_char">Text input</a></li>
71<li class="level2"><a href="#input_key_name">Key names</a></li>
72</ul>
73</li>
74<li class="level1"><a href="#input_mouse">Mouse input</a><ul><li class="level2"><a href="#cursor_pos">Cursor position</a></li>
75<li class="level2"><a href="#cursor_mode">Cursor mode</a></li>
76<li class="level2"><a href="#raw_mouse_motion">Raw mouse motion</a></li>
77<li class="level2"><a href="#cursor_object">Cursor objects</a><ul><li class="level3"><a href="#cursor_custom">Custom cursor creation</a></li>
78<li class="level3"><a href="#cursor_standard">Standard cursor creation</a></li>
79<li class="level3"><a href="#cursor_destruction">Cursor destruction</a></li>
80<li class="level3"><a href="#cursor_set">Cursor setting</a></li>
81</ul>
82</li>
83<li class="level2"><a href="#cursor_enter">Cursor enter/leave events</a></li>
84<li class="level2"><a href="#input_mouse_button">Mouse button input</a></li>
85<li class="level2"><a href="#scrolling">Scroll input</a></li>
86</ul>
87</li>
88<li class="level1"><a href="#joystick">Joystick input</a><ul><li class="level2"><a href="#joystick_axis">Joystick axis states</a></li>
89<li class="level2"><a href="#joystick_button">Joystick button states</a></li>
90<li class="level2"><a href="#joystick_hat">Joystick hat states</a></li>
91<li class="level2"><a href="#joystick_name">Joystick name</a></li>
92<li class="level2"><a href="#joystick_userptr">Joystick user pointer</a></li>
93<li class="level2"><a href="#joystick_event">Joystick configuration changes</a></li>
94<li class="level2"><a href="#gamepad">Gamepad input</a></li>
95<li class="level2"><a href="#gamepad_mapping">Gamepad mappings</a></li>
96</ul>
97</li>
98<li class="level1"><a href="#time">Time input</a></li>
99<li class="level1"><a href="#clipboard">Clipboard input and output</a></li>
100<li class="level1"><a href="#path_drop">Path drop input</a></li>
101</ul>
102</div>
103<div class="textblock"><p >This guide introduces the input related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__input.html">Input reference</a>. There are also guides for the other areas of GLFW.</p>
104<ul>
105<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
106<li><a class="el" href="window_guide.html">Window guide</a></li>
107<li><a class="el" href="context_guide.html">Context guide</a></li>
108<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
109<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
110</ul>
111<p >GLFW provides many kinds of input. While some can only be polled, like time, or only received via callbacks, like scrolling, many provide both callbacks and polling. Callbacks are more work to use than polling but is less CPU intensive and guarantees that you do not miss state changes.</p>
112<p >All input callbacks receive a window handle. By using the <a class="el" href="window_guide.html#window_userptr">window user pointer</a>, you can access non-global structures or objects from your callbacks.</p>
113<p >To get a better feel for how the various events callbacks behave, run the <code>events</code> test program. It register every callback supported by GLFW and prints out all arguments provided for every event, along with time and sequence information.</p>
114<h1><a class="anchor" id="events"></a>
115Event processing</h1>
116<p >GLFW needs to poll the window system for events both to provide input to the application and to prove to the window system that the application hasn't locked up. Event processing is normally done each frame after <a class="el" href="window_guide.html#buffer_swap">buffer swapping</a>. Even when you have no windows, event polling needs to be done in order to receive monitor and joystick connection events.</p>
117<p >There are three functions for processing pending events. <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>, processes only those events that have already been received and then returns immediately.</p>
118<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
119<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
120</div><!-- fragment --><p >This is the best choice when rendering continuously, like most games do.</p>
121<p >If you only need to update the contents of the window when you receive new input, <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> is a better choice.</p>
122<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a>();</div>
123<div class="ttc" id="agroup__window_html_ga554e37d781f0a997656c26b2c56c835e"><div class="ttname"><a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></div><div class="ttdeci">void glfwWaitEvents(void)</div><div class="ttdoc">Waits until events are queued and processes them.</div></div>
124</div><!-- fragment --><p >It puts the thread to sleep until at least one event has been received and then processes all received events. This saves a great deal of CPU cycles and is useful for, for example, editing tools.</p>
125<p >If you want to wait for events but have UI elements or other tasks that need periodic updates, <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> lets you specify a timeout.</p>
126<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a>(0.7);</div>
127<div class="ttc" id="agroup__window_html_ga605a178db92f1a7f1a925563ef3ea2cf"><div class="ttname"><a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></div><div class="ttdeci">void glfwWaitEventsTimeout(double timeout)</div><div class="ttdoc">Waits with timeout until events are queued and processes them.</div></div>
128</div><!-- fragment --><p >It puts the thread to sleep until at least one event has been received, or until the specified number of seconds have elapsed. It then processes any received events.</p>
129<p >If the main thread is sleeping in <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a>, you can wake it from another thread by posting an empty event to the event queue with <a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a>.</p>
130<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a>();</div>
131<div class="ttc" id="agroup__window_html_gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><div class="ttname"><a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a></div><div class="ttdeci">void glfwPostEmptyEvent(void)</div><div class="ttdoc">Posts an empty event to the event queue.</div></div>
132</div><!-- fragment --><p >Do not assume that callbacks will <em>only</em> be called in response to the above functions. While it is necessary to process events in one or more of the ways above, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
133<p >For example, on Windows the system function that <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> is implemented with will send window size events directly to the event callback that every window has and that GLFW implements for its windows. If you have set a <a class="el" href="window_guide.html#window_size">window size callback</a> GLFW will call it in turn with the new size before everything returns back out of the <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> call.</p>
134<h1><a class="anchor" id="input_keyboard"></a>
135Keyboard input</h1>
136<p >GLFW divides keyboard input into two categories; key events and character events. Key events relate to actual physical keyboard keys, whereas character events relate to the Unicode code points generated by pressing some of them.</p>
137<p >Keys and characters do not map 1:1. A single key press may produce several characters, and a single character may require several keys to produce. This may not be the case on your machine, but your users are likely not all using the same keyboard layout, input method or even operating system as you.</p>
138<h2><a class="anchor" id="input_key"></a>
139Key input</h2>
140<p >If you wish to be notified when a physical key is pressed or released or when it repeats, set a key callback.</p>
141<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(window, key_callback);</div>
142<div class="ttc" id="agroup__input_html_ga1caf18159767e761185e49a3be019f8d"><div class="ttname"><a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></div><div class="ttdeci">GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)</div><div class="ttdoc">Sets the key callback.</div></div>
143</div><!-- fragment --><p >The callback function receives the <a class="el" href="group__keys.html">keyboard key</a>, platform-specific scancode, key action and <a class="el" href="group__mods.html">modifier bits</a>.</p>
144<div class="fragment"><div class="line"><span class="keywordtype">void</span> key_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
145<div class="line">{</div>
146<div class="line"> <span class="keywordflow">if</span> (key == <a class="code hl_define" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
147<div class="line"> activate_airship();</div>
148<div class="line">}</div>
149<div class="ttc" id="agroup__input_html_ga2485743d0b59df3791c45951c4195265"><div class="ttname"><a href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a></div><div class="ttdeci">#define GLFW_PRESS</div><div class="ttdoc">The key or mouse button was pressed.</div><div class="ttdef"><b>Definition:</b> glfw3.h:339</div></div>
150<div class="ttc" id="agroup__keys_html_gabf48fcc3afbe69349df432b470c96ef2"><div class="ttname"><a href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a></div><div class="ttdeci">#define GLFW_KEY_E</div><div class="ttdef"><b>Definition:</b> glfw3.h:417</div></div>
151<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
152</div><!-- fragment --><p >The action is one of <code>GLFW_PRESS</code>, <code>GLFW_REPEAT</code> or <code>GLFW_RELEASE</code>. The key will be <code>GLFW_KEY_UNKNOWN</code> if GLFW lacks a key token for it, for example <em>E-mail</em> and <em>Play</em> keys.</p>
153<p >The scancode is unique for every key, regardless of whether it has a key token. Scancodes are platform-specific but consistent over time, so keys will have different scancodes depending on the platform but they are safe to save to disk. You can query the scancode for any <a class="el" href="group__keys.html">named key</a> on the current platform with <a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>.</p>
154<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">int</span> scancode = <a class="code hl_function" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>(<a class="code hl_define" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a>);</div>
155<div class="line">set_key_mapping(scancode, swap_weapons);</div>
156<div class="ttc" id="agroup__input_html_ga67ddd1b7dcbbaff03e4a76c0ea67103a"><div class="ttname"><a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a></div><div class="ttdeci">int glfwGetKeyScancode(int key)</div><div class="ttdoc">Returns the platform-specific scancode of the specified key.</div></div>
157<div class="ttc" id="agroup__keys_html_gac1c42c0bf4192cea713c55598b06b744"><div class="ttname"><a href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a></div><div class="ttdeci">#define GLFW_KEY_X</div><div class="ttdef"><b>Definition:</b> glfw3.h:436</div></div>
158</div><!-- fragment --><p >The last reported state for every <a class="el" href="group__keys.html">named key</a> is also saved in per-window state arrays that can be polled with <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>.</p>
159<div class="fragment"><div class="line"><span class="keywordtype">int</span> state = <a class="code hl_function" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>(window, <a class="code hl_define" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a>);</div>
160<div class="line"><span class="keywordflow">if</span> (state == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
161<div class="line">{</div>
162<div class="line"> activate_airship();</div>
163<div class="line">}</div>
164<div class="ttc" id="agroup__input_html_gadd341da06bc8d418b4dc3a3518af9ad2"><div class="ttname"><a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a></div><div class="ttdeci">int glfwGetKey(GLFWwindow *window, int key)</div><div class="ttdoc">Returns the last reported state of a keyboard key for the specified window.</div></div>
165</div><!-- fragment --><p >The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
166<p >This function only returns cached key event state. It does not poll the system for the current physical state of the key.</p>
167<p ><a class="anchor" id="GLFW_STICKY_KEYS"></a>Whenever you poll state, you risk missing the state change you are looking for. If a pressed key is released again before you poll its state, you will have missed the key press. The recommended solution for this is to use a key callback, but there is also the <code>GLFW_STICKY_KEYS</code> input mode.</p>
168<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc">GLFW_STICKY_KEYS</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
169<div class="ttc" id="aglfw3_8h_html_ae3bbe2315b7691ab088159eb6c9110fc"><div class="ttname"><a href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc">GLFW_STICKY_KEYS</a></div><div class="ttdeci">#define GLFW_STICKY_KEYS</div><div class="ttdef"><b>Definition:</b> glfw3.h:1050</div></div>
170<div class="ttc" id="agroup__init_html_ga2744fbb29b5631bb28802dbe0cf36eba"><div class="ttname"><a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a></div><div class="ttdeci">#define GLFW_TRUE</div><div class="ttdoc">One.</div><div class="ttdef"><b>Definition:</b> glfw3.h:313</div></div>
171<div class="ttc" id="agroup__input_html_gaa92336e173da9c8834558b54ee80563b"><div class="ttname"><a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></div><div class="ttdeci">void glfwSetInputMode(GLFWwindow *window, int mode, int value)</div><div class="ttdoc">Sets an input option for the specified window.</div></div>
172</div><!-- fragment --><p >When sticky keys mode is enabled, the pollable state of a key will remain <code>GLFW_PRESS</code> until the state of that key is polled with <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>. Once it has been polled, if a key release event had been processed in the meantime, the state will reset to <code>GLFW_RELEASE</code>, otherwise it will remain <code>GLFW_PRESS</code>.</p>
173<p ><a class="anchor" id="GLFW_LOCK_KEY_MODS"></a>If you wish to know what the state of the Caps Lock and Num Lock keys was when input events were generated, set the <code>GLFW_LOCK_KEY_MODS</code> input mode.</p>
174<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947">GLFW_LOCK_KEY_MODS</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
175<div class="ttc" id="aglfw3_8h_html_a07b84de0b52143e1958f88a7d9105947"><div class="ttname"><a href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947">GLFW_LOCK_KEY_MODS</a></div><div class="ttdeci">#define GLFW_LOCK_KEY_MODS</div><div class="ttdef"><b>Definition:</b> glfw3.h:1052</div></div>
176</div><!-- fragment --><p >When this input mode is enabled, any callback that receives <a class="el" href="group__mods.html">modifier bits</a> will have the <a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a> bit set if Caps Lock was on when the event occurred and the <a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a> bit set if Num Lock was on.</p>
177<p >The <code>GLFW_KEY_LAST</code> constant holds the highest value of any <a class="el" href="group__keys.html">named key</a>.</p>
178<h2><a class="anchor" id="input_char"></a>
179Text input</h2>
180<p >GLFW supports text input in the form of a stream of <a href="https://en.wikipedia.org/wiki/Unicode">Unicode code points</a>, as produced by the operating system text input system. Unlike key input, text input obeys keyboard layouts and modifier keys and supports composing characters using <a href="https://en.wikipedia.org/wiki/Dead_key">dead keys</a>. Once received, you can encode the code points into UTF-8 or any other encoding you prefer.</p>
181<p >Because an <code>unsigned int</code> is 32 bits long on all platforms supported by GLFW, you can treat the code point argument as native endian UTF-32.</p>
182<p >If you wish to offer regular text input, set a character callback.</p>
183<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a>(window, character_callback);</div>
184<div class="ttc" id="agroup__input_html_gab25c4a220fd8f5717718dbc487828996"><div class="ttname"><a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a></div><div class="ttdeci">GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun callback)</div><div class="ttdoc">Sets the Unicode character callback.</div></div>
185</div><!-- fragment --><p >The callback function receives Unicode code points for key events that would have led to regular text input and generally behaves as a standard text field on that platform.</p>
186<div class="fragment"><div class="line"><span class="keywordtype">void</span> character_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint)</div>
187<div class="line">{</div>
188<div class="line">}</div>
189</div><!-- fragment --><h2><a class="anchor" id="input_key_name"></a>
190Key names</h2>
191<p >If you wish to refer to keys by name, you can query the keyboard layout dependent name of printable keys with <a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>.</p>
192<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* key_name = <a class="code hl_function" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>(<a class="code hl_define" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a>, 0);</div>
193<div class="line">show_tutorial_hint(<span class="stringliteral">&quot;Press %s to move forward&quot;</span>, key_name);</div>
194<div class="ttc" id="agroup__input_html_gaeaed62e69c3bd62b7ff8f7b19913ce4f"><div class="ttname"><a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a></div><div class="ttdeci">const char * glfwGetKeyName(int key, int scancode)</div><div class="ttdoc">Returns the layout-specific name of the specified printable key.</div></div>
195<div class="ttc" id="agroup__keys_html_gaa06a712e6202661fc03da5bdb7b6e545"><div class="ttname"><a href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a></div><div class="ttdeci">#define GLFW_KEY_W</div><div class="ttdef"><b>Definition:</b> glfw3.h:435</div></div>
196</div><!-- fragment --><p >This function can handle both <a class="el" href="input_guide.html#input_key">keys and scancodes</a>. If the specified key is <code>GLFW_KEY_UNKNOWN</code> then the scancode is used, otherwise it is ignored. This matches the behavior of the key callback, meaning the callback arguments can always be passed unmodified to this function.</p>
197<h1><a class="anchor" id="input_mouse"></a>
198Mouse input</h1>
199<p >Mouse input comes in many forms, including mouse motion, button presses and scrolling offsets. The cursor appearance can also be changed, either to a custom image or a standard cursor shape from the system theme.</p>
200<h2><a class="anchor" id="cursor_pos"></a>
201Cursor position</h2>
202<p >If you wish to be notified when the cursor moves over the window, set a cursor position callback.</p>
203<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a>(window, cursor_position_callback);</div>
204<div class="ttc" id="agroup__input_html_gac1f879ab7435d54d4d79bb469fe225d7"><div class="ttname"><a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a></div><div class="ttdeci">GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun callback)</div><div class="ttdoc">Sets the cursor position callback.</div></div>
205</div><!-- fragment --><p >The callback functions receives the cursor position, measured in screen coordinates but relative to the top-left corner of the window content area. On platforms that provide it, the full sub-pixel cursor position is passed on.</p>
206<div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> cursor_position_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos)</div>
207<div class="line">{</div>
208<div class="line">}</div>
209</div><!-- fragment --><p >The cursor position is also saved per-window and can be polled with <a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>.</p>
210<div class="fragment"><div class="line"><span class="keywordtype">double</span> xpos, ypos;</div>
211<div class="line"><a class="code hl_function" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>(window, &amp;xpos, &amp;ypos);</div>
212<div class="ttc" id="agroup__input_html_ga01d37b6c40133676b9cea60ca1d7c0cc"><div class="ttname"><a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a></div><div class="ttdeci">void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)</div><div class="ttdoc">Retrieves the position of the cursor relative to the content area of the window.</div></div>
213</div><!-- fragment --><h2><a class="anchor" id="cursor_mode"></a>
214Cursor mode</h2>
215<p ><a class="anchor" id="GLFW_CURSOR"></a>The <code>GLFW_CURSOR</code> input mode provides several cursor modes for special forms of mouse motion input. By default, the cursor mode is <code>GLFW_CURSOR_NORMAL</code>, meaning the regular arrow cursor (or another cursor set with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>) is used and cursor motion is not limited.</p>
216<p >If you wish to implement mouse motion based camera controls or other input schemes that require unlimited mouse movement, set the cursor mode to <code>GLFW_CURSOR_DISABLED</code>.</p>
217<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>, <a class="code hl_define" href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88">GLFW_CURSOR_DISABLED</a>);</div>
218<div class="ttc" id="aglfw3_8h_html_a2315b99a329ce53e6a13a9d46fd5ca88"><div class="ttname"><a href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88">GLFW_CURSOR_DISABLED</a></div><div class="ttdeci">#define GLFW_CURSOR_DISABLED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1057</div></div>
219<div class="ttc" id="aglfw3_8h_html_aade31da5b884a84a7625c6b059b9132c"><div class="ttname"><a href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a></div><div class="ttdeci">#define GLFW_CURSOR</div><div class="ttdef"><b>Definition:</b> glfw3.h:1049</div></div>
220</div><!-- fragment --><p >This will hide the cursor and lock it to the specified window. GLFW will then take care of all the details of cursor re-centering and offset calculation and providing the application with a virtual cursor position. This virtual position is provided normally via both the cursor position callback and through polling.</p>
221<dl class="section note"><dt>Note</dt><dd>You should not implement your own version of this functionality using other features of GLFW. It is not supported and will not work as robustly as <code>GLFW_CURSOR_DISABLED</code>.</dd></dl>
222<p>If you only wish the cursor to become hidden when it is over a window but still want it to behave normally, set the cursor mode to <code>GLFW_CURSOR_HIDDEN</code>.</p>
223<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>, <a class="code hl_define" href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11">GLFW_CURSOR_HIDDEN</a>);</div>
224<div class="ttc" id="aglfw3_8h_html_ac4d5cb9d78de8573349c58763d53bf11"><div class="ttname"><a href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11">GLFW_CURSOR_HIDDEN</a></div><div class="ttdeci">#define GLFW_CURSOR_HIDDEN</div><div class="ttdef"><b>Definition:</b> glfw3.h:1056</div></div>
225</div><!-- fragment --><p >This mode puts no limit on the motion of the cursor.</p>
226<p >To exit out of either of these special modes, restore the <code>GLFW_CURSOR_NORMAL</code> cursor mode.</p>
227<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>, <a class="code hl_define" href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68">GLFW_CURSOR_NORMAL</a>);</div>
228<div class="ttc" id="aglfw3_8h_html_ae04dd25c8577e19fa8c97368561f6c68"><div class="ttname"><a href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68">GLFW_CURSOR_NORMAL</a></div><div class="ttdeci">#define GLFW_CURSOR_NORMAL</div><div class="ttdef"><b>Definition:</b> glfw3.h:1055</div></div>
229</div><!-- fragment --><p ><a class="anchor" id="GLFW_RAW_MOUSE_MOTION"></a></p>
230<h2><a class="anchor" id="raw_mouse_motion"></a>
231Raw mouse motion</h2>
232<p >When the cursor is disabled, raw (unscaled and unaccelerated) mouse motion can be enabled if available.</p>
233<p >Raw mouse motion is closer to the actual motion of the mouse across a surface. It is not affected by the scaling and acceleration applied to the motion of the desktop cursor. That processing is suitable for a cursor while raw motion is better for controlling for example a 3D camera. Because of this, raw mouse motion is only provided when the cursor is disabled.</p>
234<p >Call <a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> to check if the current machine provides raw motion and set the <code>GLFW_RAW_MOUSE_MOTION</code> input mode to enable it. It is disabled by default.</p>
235<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a>())</div>
236<div class="line"> <a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb">GLFW_RAW_MOUSE_MOTION</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
237<div class="ttc" id="aglfw3_8h_html_aeeda1be76a44a1fc97c1282e06281fbb"><div class="ttname"><a href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb">GLFW_RAW_MOUSE_MOTION</a></div><div class="ttdeci">#define GLFW_RAW_MOUSE_MOTION</div><div class="ttdef"><b>Definition:</b> glfw3.h:1053</div></div>
238<div class="ttc" id="agroup__input_html_gae4ee0dbd0d256183e1ea4026d897e1c2"><div class="ttname"><a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a></div><div class="ttdeci">int glfwRawMouseMotionSupported(void)</div><div class="ttdoc">Returns whether raw mouse motion is supported.</div></div>
239</div><!-- fragment --><p >If supported, raw mouse motion can be enabled or disabled per-window and at any time but it will only be provided when the cursor is disabled.</p>
240<h2><a class="anchor" id="cursor_object"></a>
241Cursor objects</h2>
242<p >GLFW supports creating both custom and system theme cursor images, encapsulated as <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> objects. They are created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> or <a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a> and destroyed with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>, or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>, if any remain.</p>
243<h3><a class="anchor" id="cursor_custom"></a>
244Custom cursor creation</h3>
245<p >A custom cursor is created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>, which returns a handle to the created cursor object. For example, this creates a 16x16 white square cursor with the hot-spot in the upper-left corner:</p>
246<div class="fragment"><div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> pixels[16 * 16 * 4];</div>
247<div class="line">memset(pixels, 0xff, <span class="keyword">sizeof</span>(pixels));</div>
248<div class="line"> </div>
249<div class="line"><a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a> image;</div>
250<div class="line">image.<a class="code hl_variable" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">width</a> = 16;</div>
251<div class="line">image.<a class="code hl_variable" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">height</a> = 16;</div>
252<div class="line">image.<a class="code hl_variable" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">pixels</a> = pixels;</div>
253<div class="line"> </div>
254<div class="line"><a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor = <a class="code hl_function" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>(&amp;image, 0, 0);</div>
255<div class="ttc" id="agroup__input_html_ga556f604f73af156c0db0e97c081373c3"><div class="ttname"><a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)</div><div class="ttdoc">Creates a custom cursor.</div></div>
256<div class="ttc" id="agroup__input_html_ga89261ae18c75e863aaf2656ecdd238f4"><div class="ttname"><a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></div><div class="ttdeci">struct GLFWcursor GLFWcursor</div><div class="ttdoc">Opaque cursor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1198</div></div>
257<div class="ttc" id="astructGLFWimage_html"><div class="ttname"><a href="structGLFWimage.html">GLFWimage</a></div><div class="ttdoc">Image data.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1722</div></div>
258<div class="ttc" id="astructGLFWimage_html_a0b7d95368f0c80d5e5c9875057c7dbec"><div class="ttname"><a href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">GLFWimage::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1728</div></div>
259<div class="ttc" id="astructGLFWimage_html_a0c532a5c2bb715555279b7817daba0fb"><div class="ttname"><a href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">GLFWimage::pixels</a></div><div class="ttdeci">unsigned char * pixels</div><div class="ttdef"><b>Definition:</b> glfw3.h:1731</div></div>
260<div class="ttc" id="astructGLFWimage_html_af6a71cc999fe6d3aea31dd7e9687d835"><div class="ttname"><a href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">GLFWimage::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1725</div></div>
261</div><!-- fragment --><p >If cursor creation fails, <code>NULL</code> will be returned, so it is necessary to check the return value.</p>
262<p >The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. The pixels are arranged canonically as sequential rows, starting from the top-left corner.</p>
263<h3><a class="anchor" id="cursor_standard"></a>
264Standard cursor creation</h3>
265<p >A cursor with a <a class="el" href="group__shapes.html">standard shape</a> from the current system cursor theme can be can be created with <a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>.</p>
266<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor = <a class="code hl_function" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>(<a class="code hl_define" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a>);</div>
267<div class="ttc" id="agroup__input_html_gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><div class="ttname"><a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateStandardCursor(int shape)</div><div class="ttdoc">Creates a cursor with a standard shape.</div></div>
268<div class="ttc" id="agroup__shapes_html_gabb3eb0109f11bb808fc34659177ca962"><div class="ttname"><a href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a></div><div class="ttdeci">#define GLFW_HRESIZE_CURSOR</div><div class="ttdoc">The horizontal resize arrow shape.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1099</div></div>
269</div><!-- fragment --><p >These cursor objects behave in the exact same way as those created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> except that the system cursor theme provides the actual image.</p>
270<h3><a class="anchor" id="cursor_destruction"></a>
271Cursor destruction</h3>
272<p >When a cursor is no longer needed, destroy it with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>.</p>
273<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>(cursor);</div>
274<div class="ttc" id="agroup__input_html_ga81b952cd1764274d0db7fb3c5a79ba6a"><div class="ttname"><a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a></div><div class="ttdeci">void glfwDestroyCursor(GLFWcursor *cursor)</div><div class="ttdoc">Destroys a cursor.</div></div>
275</div><!-- fragment --><p >Cursor destruction always succeeds. If the cursor is current for any window, that window will revert to the default cursor. This does not affect the cursor mode. All remaining cursors are destroyed when <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> is called.</p>
276<h3><a class="anchor" id="cursor_set"></a>
277Cursor setting</h3>
278<p >A cursor can be set as current for a window with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>.</p>
279<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>(window, cursor);</div>
280<div class="ttc" id="agroup__input_html_gad3b4f38c8d5dae036bc8fa959e18343e"><div class="ttname"><a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a></div><div class="ttdeci">void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)</div><div class="ttdoc">Sets the cursor for the window.</div></div>
281</div><!-- fragment --><p >Once set, the cursor image will be used as long as the system cursor is over the content area of the window and the <a class="el" href="input_guide.html#cursor_mode">cursor mode</a> is set to <code>GLFW_CURSOR_NORMAL</code>.</p>
282<p >A single cursor may be set for any number of windows.</p>
283<p >To revert to the default cursor, set the cursor of that window to <code>NULL</code>.</p>
284<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>(window, NULL);</div>
285</div><!-- fragment --><p >When a cursor is destroyed, any window that has it set will revert to the default cursor. This does not affect the cursor mode.</p>
286<h2><a class="anchor" id="cursor_enter"></a>
287Cursor enter/leave events</h2>
288<p >If you wish to be notified when the cursor enters or leaves the content area of a window, set a cursor enter/leave callback.</p>
289<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a>(window, cursor_enter_callback);</div>
290<div class="ttc" id="agroup__input_html_gad27f8ad0142c038a281466c0966817d8"><div class="ttname"><a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a></div><div class="ttdeci">GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun callback)</div><div class="ttdoc">Sets the cursor enter/leave callback.</div></div>
291</div><!-- fragment --><p >The callback function receives the new classification of the cursor.</p>
292<div class="fragment"><div class="line"><span class="keywordtype">void</span> cursor_enter_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered)</div>
293<div class="line">{</div>
294<div class="line"> <span class="keywordflow">if</span> (entered)</div>
295<div class="line"> {</div>
296<div class="line"> <span class="comment">// The cursor entered the content area of the window</span></div>
297<div class="line"> }</div>
298<div class="line"> <span class="keywordflow">else</span></div>
299<div class="line"> {</div>
300<div class="line"> <span class="comment">// The cursor left the content area of the window</span></div>
301<div class="line"> }</div>
302<div class="line">}</div>
303</div><!-- fragment --><p >You can query whether the cursor is currently inside the content area of the window with the <a class="el" href="window_guide.html#GLFW_HOVERED_attrib">GLFW_HOVERED</a> window attribute.</p>
304<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a>))</div>
305<div class="line">{</div>
306<div class="line"> highlight_interface();</div>
307<div class="line">}</div>
308<div class="ttc" id="agroup__window_html_ga8665c71c6fa3d22425c6a0e8a3f89d8a"><div class="ttname"><a href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a></div><div class="ttdeci">#define GLFW_HOVERED</div><div class="ttdoc">Mouse cursor hover window attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:856</div></div>
309<div class="ttc" id="agroup__window_html_gacccb29947ea4b16860ebef42c2cb9337"><div class="ttname"><a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></div><div class="ttdeci">int glfwGetWindowAttrib(GLFWwindow *window, int attrib)</div><div class="ttdoc">Returns an attribute of the specified window.</div></div>
310</div><!-- fragment --><h2><a class="anchor" id="input_mouse_button"></a>
311Mouse button input</h2>
312<p >If you wish to be notified when a mouse button is pressed or released, set a mouse button callback.</p>
313<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a>(window, mouse_button_callback);</div>
314<div class="ttc" id="agroup__input_html_ga6ab84420974d812bee700e45284a723c"><div class="ttname"><a href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a></div><div class="ttdeci">GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun callback)</div><div class="ttdoc">Sets the mouse button callback.</div></div>
315</div><!-- fragment --><p >The callback function receives the <a class="el" href="group__buttons.html">mouse button</a>, button action and <a class="el" href="group__mods.html">modifier bits</a>.</p>
316<div class="fragment"><div class="line"><span class="keywordtype">void</span> mouse_button_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
317<div class="line">{</div>
318<div class="line"> <span class="keywordflow">if</span> (button == <a class="code hl_define" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
319<div class="line"> popup_menu();</div>
320<div class="line">}</div>
321<div class="ttc" id="agroup__buttons_html_ga3e2f2cf3c4942df73cc094247d275e74"><div class="ttname"><a href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a></div><div class="ttdeci">#define GLFW_MOUSE_BUTTON_RIGHT</div><div class="ttdef"><b>Definition:</b> glfw3.h:582</div></div>
322</div><!-- fragment --><p >The action is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
323<p >Mouse button states for <a class="el" href="group__buttons.html">named buttons</a> are also saved in per-window state arrays that can be polled with <a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>.</p>
324<div class="fragment"><div class="line"><span class="keywordtype">int</span> state = <a class="code hl_function" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>(window, <a class="code hl_define" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a>);</div>
325<div class="line"><span class="keywordflow">if</span> (state == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
326<div class="line">{</div>
327<div class="line"> upgrade_cow();</div>
328<div class="line">}</div>
329<div class="ttc" id="agroup__buttons_html_gaf37100431dcd5082d48f95ee8bc8cd56"><div class="ttname"><a href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a></div><div class="ttdeci">#define GLFW_MOUSE_BUTTON_LEFT</div><div class="ttdef"><b>Definition:</b> glfw3.h:581</div></div>
330<div class="ttc" id="agroup__input_html_gac1473feacb5996c01a7a5a33b5066704"><div class="ttname"><a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a></div><div class="ttdeci">int glfwGetMouseButton(GLFWwindow *window, int button)</div><div class="ttdoc">Returns the last reported state of a mouse button for the specified window.</div></div>
331</div><!-- fragment --><p >The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
332<p >This function only returns cached mouse button event state. It does not poll the system for the current state of the mouse button.</p>
333<p ><a class="anchor" id="GLFW_STICKY_MOUSE_BUTTONS"></a>Whenever you poll state, you risk missing the state change you are looking for. If a pressed mouse button is released again before you poll its state, you will have missed the button press. The recommended solution for this is to use a mouse button callback, but there is also the <code>GLFW_STICKY_MOUSE_BUTTONS</code> input mode.</p>
334<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1">GLFW_STICKY_MOUSE_BUTTONS</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
335<div class="ttc" id="aglfw3_8h_html_a4d7ce8ce71030c3b04e2b78145bc59d1"><div class="ttname"><a href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1">GLFW_STICKY_MOUSE_BUTTONS</a></div><div class="ttdeci">#define GLFW_STICKY_MOUSE_BUTTONS</div><div class="ttdef"><b>Definition:</b> glfw3.h:1051</div></div>
336</div><!-- fragment --><p >When sticky mouse buttons mode is enabled, the pollable state of a mouse button will remain <code>GLFW_PRESS</code> until the state of that button is polled with <a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>. Once it has been polled, if a mouse button release event had been processed in the meantime, the state will reset to <code>GLFW_RELEASE</code>, otherwise it will remain <code>GLFW_PRESS</code>.</p>
337<p >The <code>GLFW_MOUSE_BUTTON_LAST</code> constant holds the highest value of any <a class="el" href="group__buttons.html">named button</a>.</p>
338<h2><a class="anchor" id="scrolling"></a>
339Scroll input</h2>
340<p >If you wish to be notified when the user scrolls, whether with a mouse wheel or touchpad gesture, set a scroll callback.</p>
341<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a>(window, scroll_callback);</div>
342<div class="ttc" id="agroup__input_html_ga571e45a030ae4061f746ed56cb76aede"><div class="ttname"><a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a></div><div class="ttdeci">GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun callback)</div><div class="ttdoc">Sets the scroll callback.</div></div>
343</div><!-- fragment --><p >The callback function receives two-dimensional scroll offsets.</p>
344<div class="fragment"><div class="line"><span class="keywordtype">void</span> scroll_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset)</div>
345<div class="line">{</div>
346<div class="line">}</div>
347</div><!-- fragment --><p >A normal mouse wheel, being vertical, provides offsets along the Y-axis.</p>
348<h1><a class="anchor" id="joystick"></a>
349Joystick input</h1>
350<p >The joystick functions expose connected joysticks and controllers, with both referred to as joysticks. It supports up to sixteen joysticks, ranging from <code>GLFW_JOYSTICK_1</code>, <code>GLFW_JOYSTICK_2</code> up to and including <code>GLFW_JOYSTICK_16</code> or <code>GLFW_JOYSTICK_LAST</code>. You can test whether a <a class="el" href="group__joysticks.html">joystick</a> is present with <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
351<div class="fragment"><div class="line"><span class="keywordtype">int</span> present = <a class="code hl_function" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>(<a class="code hl_define" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a>);</div>
352<div class="ttc" id="agroup__input_html_gaed0966cee139d815317f9ffcba64c9f1"><div class="ttname"><a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a></div><div class="ttdeci">int glfwJoystickPresent(int jid)</div><div class="ttdoc">Returns whether the specified joystick is present.</div></div>
353<div class="ttc" id="agroup__joysticks_html_ga34a0443d059e9f22272cd4669073f73d"><div class="ttname"><a href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a></div><div class="ttdeci">#define GLFW_JOYSTICK_1</div><div class="ttdef"><b>Definition:</b> glfw3.h:593</div></div>
354</div><!-- fragment --><p >Each joystick has zero or more axes, zero or more buttons, zero or more hats, a human-readable name, a user pointer and an SDL compatible GUID.</p>
355<p >When GLFW is initialized, detected joysticks are added to the beginning of the array. Once a joystick is detected, it keeps its assigned ID until it is disconnected or the library is terminated, so as joysticks are connected and disconnected, there may appear gaps in the IDs.</p>
356<p >Joystick axis, button and hat state is updated when polled and does not require a window to be created or events to be processed. However, if you want joystick connection and disconnection events reliably delivered to the <a class="el" href="input_guide.html#joystick_event">joystick callback</a> then you must <a class="el" href="input_guide.html#events">process events</a>.</p>
357<p >To see all the properties of all connected joysticks in real-time, run the <code>joysticks</code> test program.</p>
358<h2><a class="anchor" id="joystick_axis"></a>
359Joystick axis states</h2>
360<p >The positions of all axes of a joystick are returned by <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>. See the reference documentation for the lifetime of the returned array.</p>
361<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
362<div class="line"><span class="keyword">const</span> <span class="keywordtype">float</span>* axes = <a class="code hl_function" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>(<a class="code hl_define" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a>, &amp;count);</div>
363<div class="ttc" id="agroup__input_html_gaeb1c0191d3140a233a682987c61eb408"><div class="ttname"><a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a></div><div class="ttdeci">const float * glfwGetJoystickAxes(int jid, int *count)</div><div class="ttdoc">Returns the values of all axes of the specified joystick.</div></div>
364<div class="ttc" id="agroup__joysticks_html_gae43281bc66d3fa5089fb50c3e7a28695"><div class="ttname"><a href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a></div><div class="ttdeci">#define GLFW_JOYSTICK_5</div><div class="ttdef"><b>Definition:</b> glfw3.h:597</div></div>
365</div><!-- fragment --><p >Each element in the returned array is a value between -1.0 and 1.0.</p>
366<h2><a class="anchor" id="joystick_button"></a>
367Joystick button states</h2>
368<p >The states of all buttons of a joystick are returned by <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a>. See the reference documentation for the lifetime of the returned array.</p>
369<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
370<div class="line"><span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buttons = <a class="code hl_function" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a>(<a class="code hl_define" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>, &amp;count);</div>
371<div class="ttc" id="agroup__input_html_ga5ffe34739d3dc97efe432ed2d81d9938"><div class="ttname"><a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickButtons(int jid, int *count)</div><div class="ttdoc">Returns the state of all buttons of the specified joystick.</div></div>
372<div class="ttc" id="agroup__joysticks_html_gae6f3eedfeb42424c2f5e3161efb0b654"><div class="ttname"><a href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a></div><div class="ttdeci">#define GLFW_JOYSTICK_3</div><div class="ttdef"><b>Definition:</b> glfw3.h:595</div></div>
373</div><!-- fragment --><p >Each element in the returned array is either <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
374<p >For backward compatibility with earlier versions that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>, the button array by default also includes all hats. See the reference documentation for <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> for details.</p>
375<h2><a class="anchor" id="joystick_hat"></a>
376Joystick hat states</h2>
377<p >The states of all hats are returned by <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>. See the reference documentation for the lifetime of the returned array.</p>
378<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
379<div class="line"><span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* hats = <a class="code hl_function" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>(<a class="code hl_define" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>, &amp;count);</div>
380<div class="ttc" id="agroup__input_html_ga06e660841b3e79c54da4f54a932c5a2c"><div class="ttname"><a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickHats(int jid, int *count)</div><div class="ttdoc">Returns the state of all hats of the specified joystick.</div></div>
381<div class="ttc" id="agroup__joysticks_html_ga20a9f4f3aaefed9ea5e66072fc588b87"><div class="ttname"><a href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a></div><div class="ttdeci">#define GLFW_JOYSTICK_7</div><div class="ttdef"><b>Definition:</b> glfw3.h:599</div></div>
382</div><!-- fragment --><p >Each element in the returned array is one of the following:</p>
383<table class="markdownTable">
384<tr class="markdownTableHead">
385<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Value </th></tr>
386<tr class="markdownTableRowOdd">
387<td class="markdownTableBodyNone"><code>GLFW_HAT_CENTERED</code> </td><td class="markdownTableBodyNone">0 </td></tr>
388<tr class="markdownTableRowEven">
389<td class="markdownTableBodyNone"><code>GLFW_HAT_UP</code> </td><td class="markdownTableBodyNone">1 </td></tr>
390<tr class="markdownTableRowOdd">
391<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> </td><td class="markdownTableBodyNone">2 </td></tr>
392<tr class="markdownTableRowEven">
393<td class="markdownTableBodyNone"><code>GLFW_HAT_DOWN</code> </td><td class="markdownTableBodyNone">4 </td></tr>
394<tr class="markdownTableRowOdd">
395<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> </td><td class="markdownTableBodyNone">8 </td></tr>
396<tr class="markdownTableRowEven">
397<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_UP</code> </td></tr>
398<tr class="markdownTableRowOdd">
399<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
400<tr class="markdownTableRowEven">
401<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_UP</code> </td></tr>
402<tr class="markdownTableRowOdd">
403<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
404</table>
405<p >The diagonal directions are bitwise combinations of the primary (up, right, down and left) directions and you can test for these individually by ANDing it with the corresponding direction.</p>
406<div class="fragment"><div class="line"><span class="keywordflow">if</span> (hats[2] &amp; <a class="code hl_define" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>)</div>
407<div class="line">{</div>
408<div class="line"> <span class="comment">// State of hat 2 could be right-up, right or right-down</span></div>
409<div class="line">}</div>
410<div class="ttc" id="agroup__hat__state_html_ga252586e3bbde75f4b0e07ad3124867f5"><div class="ttname"><a href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a></div><div class="ttdeci">#define GLFW_HAT_RIGHT</div><div class="ttdef"><b>Definition:</b> glfw3.h:358</div></div>
411</div><!-- fragment --><p >For backward compatibility with earlier versions that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>, all hats are by default also included in the button array. See the reference documentation for <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> for details.</p>
412<h2><a class="anchor" id="joystick_name"></a>
413Joystick name</h2>
414<p >The human-readable, UTF-8 encoded name of a joystick is returned by <a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>. See the reference documentation for the lifetime of the returned string.</p>
415<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a class="code hl_function" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>(<a class="code hl_define" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a>);</div>
416<div class="ttc" id="agroup__input_html_gac6a8e769e18e0bcfa9097793fc2c3978"><div class="ttname"><a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a></div><div class="ttdeci">const char * glfwGetJoystickName(int jid)</div><div class="ttdoc">Returns the name of the specified joystick.</div></div>
417<div class="ttc" id="agroup__joysticks_html_ga97ddbcad02b7f48d74fad4ddb08fff59"><div class="ttname"><a href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a></div><div class="ttdeci">#define GLFW_JOYSTICK_4</div><div class="ttdef"><b>Definition:</b> glfw3.h:596</div></div>
418</div><!-- fragment --><p >Joystick names are not guaranteed to be unique. Two joysticks of the same model and make may have the same name. Only the <a class="el" href="group__joysticks.html">joystick ID</a> is guaranteed to be unique, and only until that joystick is disconnected.</p>
419<h2><a class="anchor" id="joystick_userptr"></a>
420Joystick user pointer</h2>
421<p >Each joystick has a user pointer that can be set with <a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> and queried with <a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a>. This can be used for any purpose you need and will not be modified by GLFW. The value will be kept until the joystick is disconnected or until the library is terminated.</p>
422<p >The initial value of the pointer is <code>NULL</code>.</p>
423<h2><a class="anchor" id="joystick_event"></a>
424Joystick configuration changes</h2>
425<p >If you wish to be notified when a joystick is connected or disconnected, set a joystick callback.</p>
426<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a>(joystick_callback);</div>
427<div class="ttc" id="agroup__input_html_ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><div class="ttname"><a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a></div><div class="ttdeci">GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback)</div><div class="ttdoc">Sets the joystick configuration callback.</div></div>
428</div><!-- fragment --><p >The callback function receives the ID of the joystick that has been connected and disconnected and the event that occurred.</p>
429<div class="fragment"><div class="line"><span class="keywordtype">void</span> joystick_callback(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event)</div>
430<div class="line">{</div>
431<div class="line"> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a>)</div>
432<div class="line"> {</div>
433<div class="line"> <span class="comment">// The joystick was connected</span></div>
434<div class="line"> }</div>
435<div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a>)</div>
436<div class="line"> {</div>
437<div class="line"> <span class="comment">// The joystick was disconnected</span></div>
438<div class="line"> }</div>
439<div class="line">}</div>
440<div class="ttc" id="aglfw3_8h_html_aab64b25921ef21d89252d6f0a71bfc32"><div class="ttname"><a href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a></div><div class="ttdeci">#define GLFW_DISCONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1108</div></div>
441<div class="ttc" id="aglfw3_8h_html_abe11513fd1ffbee5bb9b173f06028b9e"><div class="ttname"><a href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a></div><div class="ttdeci">#define GLFW_CONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1107</div></div>
442</div><!-- fragment --><p >For joystick connection and disconnection events to be delivered on all platforms, you need to call one of the <a class="el" href="input_guide.html#events">event processing</a> functions. Joystick disconnection may also be detected and the callback called by joystick functions. The function will then return whatever it returns for a disconnected joystick.</p>
443<p >Only <a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a> and <a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a> will return useful values for a disconnected joystick and only before the monitor callback returns.</p>
444<h2><a class="anchor" id="gamepad"></a>
445Gamepad input</h2>
446<p >The joystick functions provide unlabeled axes, buttons and hats, with no indication of where they are located on the device. Their order may also vary between platforms even with the same device.</p>
447<p >To solve this problem the SDL community crowdsourced the <a href="https://github.com/gabomdq/SDL_GameControllerDB">SDL_GameControllerDB</a> project, a database of mappings from many different devices to an Xbox-like gamepad.</p>
448<p >GLFW supports this mapping format and contains a copy of the mappings available at the time of release. See <a class="el" href="input_guide.html#gamepad_mapping">Gamepad mappings</a> for how to update this at runtime. Mappings will be assigned to joysticks automatically any time a joystick is connected or the mappings are updated.</p>
449<p >You can check whether a joystick is both present and has a gamepad mapping with <a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a>.</p>
450<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a>(<a class="code hl_define" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a>))</div>
451<div class="line">{</div>
452<div class="line"> <span class="comment">// Use as gamepad</span></div>
453<div class="line">}</div>
454<div class="ttc" id="agroup__input_html_gad0f676860f329d80f7e47e9f06a96f00"><div class="ttname"><a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></div><div class="ttdeci">int glfwJoystickIsGamepad(int jid)</div><div class="ttdoc">Returns whether the specified joystick has a gamepad mapping.</div></div>
455<div class="ttc" id="agroup__joysticks_html_ga6eab65ec88e65e0850ef8413504cb50c"><div class="ttname"><a href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a></div><div class="ttdeci">#define GLFW_JOYSTICK_2</div><div class="ttdef"><b>Definition:</b> glfw3.h:594</div></div>
456</div><!-- fragment --><p >If you are only interested in gamepad input you can use this function instead of <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
457<p >You can query the human-readable name provided by the gamepad mapping with <a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a>. This may or may not be the same as the <a class="el" href="input_guide.html#joystick_name">joystick name</a>.</p>
458<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a class="code hl_function" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a>(<a class="code hl_define" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>);</div>
459<div class="ttc" id="agroup__input_html_ga8aea73a1a25cc6c0486a617019f56728"><div class="ttname"><a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></div><div class="ttdeci">const char * glfwGetGamepadName(int jid)</div><div class="ttdoc">Returns the human-readable gamepad name for the specified joystick.</div></div>
460</div><!-- fragment --><p >To retrieve the gamepad state of a joystick, call <a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a>.</p>
461<div class="fragment"><div class="line"><a class="code hl_struct" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> state;</div>
462<div class="line"> </div>
463<div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a>(<a class="code hl_define" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>, &amp;state))</div>
464<div class="line">{</div>
465<div class="line"> <span class="keywordflow">if</span> (state.<a class="code hl_variable" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">buttons</a>[<a class="code hl_define" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a>])</div>
466<div class="line"> {</div>
467<div class="line"> input_jump();</div>
468<div class="line"> }</div>
469<div class="line"> </div>
470<div class="line"> input_speed(state.<a class="code hl_variable" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">axes</a>[<a class="code hl_define" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a>]);</div>
471<div class="line">}</div>
472<div class="ttc" id="agroup__gamepad__axes_html_ga121a7d5d20589a423cd1634dd6ee6eab"><div class="ttname"><a href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></div><div class="ttdeci">#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</div><div class="ttdef"><b>Definition:</b> glfw3.h:654</div></div>
473<div class="ttc" id="agroup__gamepad__buttons_html_gae055a12fbf4b48b5954c8e1cd129b810"><div class="ttname"><a href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></div><div class="ttdeci">#define GLFW_GAMEPAD_BUTTON_A</div><div class="ttdef"><b>Definition:</b> glfw3.h:619</div></div>
474<div class="ttc" id="agroup__input_html_gadccddea8bce6113fa459de379ddaf051"><div class="ttname"><a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></div><div class="ttdeci">int glfwGetGamepadState(int jid, GLFWgamepadstate *state)</div><div class="ttdoc">Retrieves the state of the specified joystick remapped as a gamepad.</div></div>
475<div class="ttc" id="astructGLFWgamepadstate_html"><div class="ttname"><a href="structGLFWgamepadstate.html">GLFWgamepadstate</a></div><div class="ttdoc">Gamepad input state.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1746</div></div>
476<div class="ttc" id="astructGLFWgamepadstate_html_a27e9896b51c65df15fba2c7139bfdb9a"><div class="ttname"><a href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">GLFWgamepadstate::buttons</a></div><div class="ttdeci">unsigned char buttons[15]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1750</div></div>
477<div class="ttc" id="astructGLFWgamepadstate_html_a8b2c8939b1d31458de5359998375c189"><div class="ttname"><a href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">GLFWgamepadstate::axes</a></div><div class="ttdeci">float axes[6]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1754</div></div>
478</div><!-- fragment --><p >The <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> struct has two arrays; one for button states and one for axis states. The values for each button and axis are the same as for the <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> and <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> functions, i.e. <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code> for buttons and -1.0 to 1.0 inclusive for axes.</p>
479<p >The sizes of the arrays and the positions within each array are fixed.</p>
480<p >The <a class="el" href="group__gamepad__buttons.html">button indices</a> are <code>GLFW_GAMEPAD_BUTTON_A</code>, <code>GLFW_GAMEPAD_BUTTON_B</code>, <code>GLFW_GAMEPAD_BUTTON_X</code>, <code>GLFW_GAMEPAD_BUTTON_Y</code>, <code>GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</code>, <code>GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</code>, <code>GLFW_GAMEPAD_BUTTON_BACK</code>, <code>GLFW_GAMEPAD_BUTTON_START</code>, <code>GLFW_GAMEPAD_BUTTON_GUIDE</code>, <code>GLFW_GAMEPAD_BUTTON_LEFT_THUMB</code>, <code>GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</code>, <code>GLFW_GAMEPAD_BUTTON_DPAD_UP</code>, <code>GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</code>, <code>GLFW_GAMEPAD_BUTTON_DPAD_DOWN</code> and <code>GLFW_GAMEPAD_BUTTON_DPAD_LEFT</code>.</p>
481<p >For those who prefer, there are also the <code>GLFW_GAMEPAD_BUTTON_CROSS</code>, <code>GLFW_GAMEPAD_BUTTON_CIRCLE</code>, <code>GLFW_GAMEPAD_BUTTON_SQUARE</code> and <code>GLFW_GAMEPAD_BUTTON_TRIANGLE</code> aliases for the A, B, X and Y button indices.</p>
482<p >The <a class="el" href="group__gamepad__axes.html">axis indices</a> are <code>GLFW_GAMEPAD_AXIS_LEFT_X</code>, <code>GLFW_GAMEPAD_AXIS_LEFT_Y</code>, <code>GLFW_GAMEPAD_AXIS_RIGHT_X</code>, <code>GLFW_GAMEPAD_AXIS_RIGHT_Y</code>, <code>GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</code> and <code>GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</code>.</p>
483<p >The <code>GLFW_GAMEPAD_BUTTON_LAST</code> and <code>GLFW_GAMEPAD_AXIS_LAST</code> constants equal the largest available index for each array.</p>
484<h2><a class="anchor" id="gamepad_mapping"></a>
485Gamepad mappings</h2>
486<p >GLFW contains a copy of the mappings available in <a href="https://github.com/gabomdq/SDL_GameControllerDB">SDL_GameControllerDB</a> at the time of release. Newer ones can be added at runtime with <a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a>.</p>
487<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* mappings = load_file_contents(<span class="stringliteral">&quot;game/data/gamecontrollerdb.txt&quot;</span>);</div>
488<div class="line"> </div>
489<div class="line"><a class="code hl_function" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a>(mappings);</div>
490<div class="ttc" id="agroup__input_html_gaed5104612f2fa8e66aa6e846652ad00f"><div class="ttname"><a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a></div><div class="ttdeci">int glfwUpdateGamepadMappings(const char *string)</div><div class="ttdoc">Adds the specified SDL_GameControllerDB gamepad mappings.</div></div>
491</div><!-- fragment --><p >This function supports everything from single lines up to and including the unmodified contents of the whole <code>gamecontrollerdb.txt</code> file.</p>
492<p >If you are compiling GLFW from source with CMake you can update the built-in mappings by building the <em>update_mappings</em> target. This runs the <code>GenerateMappings.cmake</code> CMake script, which downloads <code>gamecontrollerdb.txt</code> and regenerates the <code>mappings.h</code> header file.</p>
493<p >Below is a description of the mapping format. Please keep in mind that <b>this description is not authoritative</b>. The format is defined by the SDL and SDL_GameControllerDB projects and their documentation and code takes precedence.</p>
494<p >Each mapping is a single line of comma-separated values describing the GUID, name and layout of the gamepad. Lines that do not begin with a hexadecimal digit are ignored.</p>
495<p >The first value is always the gamepad GUID, a 32 character long hexadecimal string that typically identifies its make, model, revision and the type of connection to the computer. When this information is not available, the GUID is generated using the gamepad name. GLFW uses the SDL 2.0.5+ GUID format but can convert from the older formats.</p>
496<p >The second value is always the human-readable name of the gamepad.</p>
497<p >All subsequent values are in the form <code>&lt;field&gt;:&lt;value&gt;</code> and describe the layout of the mapping. These fields may not all be present and may occur in any order.</p>
498<p >The button fields are <code>a</code>, <code>b</code>, <code>c</code>, <code>d</code>, <code>back</code>, <code>start</code>, <code>guide</code>, <code>dpup</code>, <code>dpright</code>, <code>dpdown</code>, <code>dpleft</code>, <code>leftshoulder</code>, <code>rightshoulder</code>, <code>leftstick</code> and <code>rightstick</code>.</p>
499<p >The axis fields are <code>leftx</code>, <code>lefty</code>, <code>rightx</code>, <code>righty</code>, <code>lefttrigger</code> and <code>righttrigger</code>.</p>
500<p >The value of an axis or button field can be a joystick button, a joystick axis, a hat bitmask or empty. Joystick buttons are specified as <code>bN</code>, for example <code>b2</code> for the third button. Joystick axes are specified as <code>aN</code>, for example <code>a7</code> for the eighth button. Joystick hat bit masks are specified as <code>hN.N</code>, for example <code>h0.8</code> for left on the first hat. More than one bit may be set in the mask.</p>
501<p >Before an axis there may be a <code>+</code> or <code>-</code> range modifier, for example <code>+a3</code> for the positive half of the fourth axis. This restricts input to only the positive or negative halves of the joystick axis. After an axis or half-axis there may be the <code>~</code> inversion modifier, for example <code>a2~</code> or <code>-a7~</code>. This negates the values of the gamepad axis.</p>
502<p >The hat bit mask match the <a class="el" href="group__hat__state.html">hat states</a> in the joystick functions.</p>
503<p >There is also the special <code>platform</code> field that specifies which platform the mapping is valid for. Possible values are <code>Windows</code>, <code>Mac OS X</code> and <code>Linux</code>.</p>
504<p >Below is an example of what a gamepad mapping might look like. It is the one built into GLFW for Xbox controllers accessed via the XInput API on Windows. This example has been broken into several lines to fit on the page, but real gamepad mappings must be a single line.</p>
505<div class="fragment"><div class="line">78696e70757401000000000000000000,XInput Gamepad (GLFW),platform:Windows,a:b0,</div>
506<div class="line">b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,</div>
507<div class="line">rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,</div>
508<div class="line">righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,</div>
509</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>GLFW does not yet support the output range and modifiers <code>+</code> and <code>-</code> that were recently added to SDL. The input modifiers <code>+</code>, <code>-</code> and <code>~</code> are supported and described above.</dd></dl>
510<h1><a class="anchor" id="time"></a>
511Time input</h1>
512<p >GLFW provides high-resolution time input, in seconds, with <a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>.</p>
513<div class="fragment"><div class="line"><span class="keywordtype">double</span> seconds = <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>();</div>
514<div class="ttc" id="agroup__input_html_gaa6cf4e7a77158a3b8fd00328b1720a4a"><div class="ttname"><a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></div><div class="ttdeci">double glfwGetTime(void)</div><div class="ttdoc">Returns the GLFW time.</div></div>
515</div><!-- fragment --><p >It returns the number of seconds since the library was initialized with <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>. The platform-specific time sources used typically have micro- or nanosecond resolution.</p>
516<p >You can modify the base time with <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>.</p>
517<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>(4.0);</div>
518<div class="ttc" id="agroup__input_html_gaf59589ef6e8b8c8b5ad184b25afd4dc0"><div class="ttname"><a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a></div><div class="ttdeci">void glfwSetTime(double time)</div><div class="ttdoc">Sets the GLFW time.</div></div>
519</div><!-- fragment --><p >This sets the time to the specified time, in seconds, and it continues to count from there.</p>
520<p >You can also access the raw timer used to implement the functions above, with <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>.</p>
521<div class="fragment"><div class="line">uint64_t value = <a class="code hl_function" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>();</div>
522<div class="ttc" id="agroup__input_html_ga09b2bd37d328e0b9456c7ec575cc26aa"><div class="ttname"><a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></div><div class="ttdeci">uint64_t glfwGetTimerValue(void)</div><div class="ttdoc">Returns the current value of the raw timer.</div></div>
523</div><!-- fragment --><p >This value is in 1&#160;/&#160;frequency seconds. The frequency of the raw timer varies depending on the operating system and hardware. You can query the frequency, in Hz, with <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>.</p>
524<div class="fragment"><div class="line">uint64_t frequency = <a class="code hl_function" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>();</div>
525<div class="ttc" id="agroup__input_html_ga3289ee876572f6e91f06df3a24824443"><div class="ttname"><a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></div><div class="ttdeci">uint64_t glfwGetTimerFrequency(void)</div><div class="ttdoc">Returns the frequency, in Hz, of the raw timer.</div></div>
526</div><!-- fragment --><h1><a class="anchor" id="clipboard"></a>
527Clipboard input and output</h1>
528<p >If the system clipboard contains a UTF-8 encoded string or if it can be converted to one, you can retrieve it with <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>. See the reference documentation for the lifetime of the returned string.</p>
529<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* text = <a class="code hl_function" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>(NULL);</div>
530<div class="line"><span class="keywordflow">if</span> (text)</div>
531<div class="line">{</div>
532<div class="line"> insert_text(text);</div>
533<div class="line">}</div>
534<div class="ttc" id="agroup__input_html_ga71a5b20808ea92193d65c21b82580355"><div class="ttname"><a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a></div><div class="ttdeci">const char * glfwGetClipboardString(GLFWwindow *window)</div><div class="ttdoc">Returns the contents of the clipboard as a string.</div></div>
535</div><!-- fragment --><p >If the clipboard is empty or if its contents could not be converted, <code>NULL</code> is returned.</p>
536<p >The contents of the system clipboard can be set to a UTF-8 encoded string with <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>.</p>
537<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>(NULL, <span class="stringliteral">&quot;A string with words in it&quot;</span>);</div>
538<div class="ttc" id="agroup__input_html_gaba1f022c5eb07dfac421df34cdcd31dd"><div class="ttname"><a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a></div><div class="ttdeci">void glfwSetClipboardString(GLFWwindow *window, const char *string)</div><div class="ttdoc">Sets the clipboard to the specified string.</div></div>
539</div><!-- fragment --><h1><a class="anchor" id="path_drop"></a>
540Path drop input</h1>
541<p >If you wish to receive the paths of files and/or directories dropped on a window, set a file drop callback.</p>
542<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a>(window, drop_callback);</div>
543<div class="ttc" id="agroup__input_html_gab773f0ee0a07cff77a210cea40bc1f6b"><div class="ttname"><a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a></div><div class="ttdeci">GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun callback)</div><div class="ttdoc">Sets the path drop callback.</div></div>
544</div><!-- fragment --><p >The callback function receives an array of paths encoded as UTF-8.</p>
545<div class="fragment"><div class="line"><span class="keywordtype">void</span> drop_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> count, <span class="keyword">const</span> <span class="keywordtype">char</span>** paths)</div>
546<div class="line">{</div>
547<div class="line"> <span class="keywordtype">int</span> i;</div>
548<div class="line"> <span class="keywordflow">for</span> (i = 0; i &lt; count; i++)</div>
549<div class="line"> handle_dropped_file(paths[i]);</div>
550<div class="line">}</div>
551</div><!-- fragment --><p >The path array and its strings are only valid until the file drop callback returns, as they may have been generated specifically for that event. You need to make a deep copy of the array if you want to keep the paths. </p>
552</div></div><!-- contents -->
553</div><!-- PageDoc -->
554<address class="footer">
555<p>
556Last update on Thu Oct 28 2021 for GLFW 3.3.5
557</p>
558</address>
559</body>
560</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internal_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internal_8dox.html
new file mode 100644
index 0000000..dc2a99f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internal_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: internal.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">internal.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internals_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internals_guide.html
new file mode 100644
index 0000000..2a4d56f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/internals_guide.html
@@ -0,0 +1,125 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Internal structure</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Internal structure </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#internals_public">Public interface</a></li>
69<li class="level1"><a href="#internals_native">Native interface</a></li>
70<li class="level1"><a href="#internals_internal">Internal interface</a></li>
71<li class="level1"><a href="#internals_platform">Platform interface</a></li>
72<li class="level1"><a href="#internals_event">Event interface</a></li>
73<li class="level1"><a href="#internals_static">Static functions</a></li>
74<li class="level1"><a href="#internals_config">Configuration macros</a></li>
75</ul>
76</div>
77<div class="textblock"><p >There are several interfaces inside GLFW. Each interface has its own area of responsibility and its own naming conventions.</p>
78<h1><a class="anchor" id="internals_public"></a>
79Public interface</h1>
80<p >The most well-known is the public interface, described in the <a class="el" href="glfw3_8h.html" title="The header of the GLFW 3 API.">glfw3.h</a> header file. This is implemented in source files shared by all platforms and these files contain no platform-specific code. This code usually ends up calling the platform and internal interfaces to do the actual work.</p>
81<p >The public interface uses the OpenGL naming conventions except with GLFW and glfw instead of GL and gl. For struct members, where OpenGL sets no precedent, it use headless camel case.</p>
82<p >Examples: <code>glfwCreateWindow</code>, <code>GLFWwindow</code>, <code>GLFW_RED_BITS</code></p>
83<h1><a class="anchor" id="internals_native"></a>
84Native interface</h1>
85<p >The <a class="el" href="group__native.html">native interface</a> is a small set of publicly available but platform-specific functions, described in the <a class="el" href="glfw3native_8h.html" title="The header of the native access functions.">glfw3native.h</a> header file and used to gain access to the underlying window, context and (on some platforms) display handles used by the platform interface.</p>
86<p >The function names of the native interface are similar to those of the public interface, but embeds the name of the interface that the returned handle is from.</p>
87<p >Examples: <code>glfwGetX11Window</code>, <code>glfwGetWGLContext</code></p>
88<h1><a class="anchor" id="internals_internal"></a>
89Internal interface</h1>
90<p >The internal interface consists of utility functions used by all other interfaces. It is shared code implemented in the same shared source files as the public and event interfaces. The internal interface is described in the internal.h header file.</p>
91<p >The internal interface is in charge of GLFW's global data, which it stores in a <code>_GLFWlibrary</code> struct named <code>_glfw</code>.</p>
92<p >The internal interface uses the same style as the public interface, except all global names have a leading underscore.</p>
93<p >Examples: <code>_glfwIsValidContextConfig</code>, <code>_GLFWwindow</code>, <code>_glfw.monitorCount</code></p>
94<h1><a class="anchor" id="internals_platform"></a>
95Platform interface</h1>
96<p >The platform interface implements all platform-specific operations as a service to the public interface. This includes event processing. The platform interface is never directly called by application code and never directly calls application-provided callbacks. It is also prohibited from modifying the platform-independent part of the internal structs. Instead, it calls the event interface when events interesting to GLFW are received.</p>
97<p >The platform interface mirrors those parts of the public interface that needs to perform platform-specific operations on some or all platforms. The are also named the same except that the glfw function prefix is replaced by _glfwPlatform.</p>
98<p >Examples: <code>_glfwPlatformCreateWindow</code></p>
99<p >The platform interface also defines structs that contain platform-specific global and per-object state. Their names mirror those of the internal interface, except that an interface-specific suffix is added.</p>
100<p >Examples: <code>_GLFWwindowX11</code>, <code>_GLFWcontextWGL</code></p>
101<p >These structs are incorporated as members into the internal interface structs using special macros that name them after the specific interface used. This prevents shared code from accidentally using these members.</p>
102<p >Examples: <code>window-&gt;win32.handle</code>, <code>_glfw.x11.display</code></p>
103<h1><a class="anchor" id="internals_event"></a>
104Event interface</h1>
105<p >The event interface is implemented in the same shared source files as the public interface and is responsible for delivering the events it receives to the application, either via callbacks, via window state changes or both.</p>
106<p >The function names of the event interface use a <code>_glfwInput</code> prefix and the ObjectEvent pattern.</p>
107<p >Examples: <code>_glfwInputWindowFocus</code>, <code>_glfwInputCursorPos</code></p>
108<h1><a class="anchor" id="internals_static"></a>
109Static functions</h1>
110<p >Static functions may be used by any interface and have no prefixes or suffixes. These use headless camel case.</p>
111<p >Examples: <code>isValidElementForJoystick</code></p>
112<h1><a class="anchor" id="internals_config"></a>
113Configuration macros</h1>
114<p >GLFW uses a number of configuration macros to select at compile time which interfaces and code paths to use. They are defined in the glfw_config.h header file, which is generated from the <code>glfw_config.h.in</code> file by CMake.</p>
115<p >Configuration macros the same style as tokens in the public interface, except with a leading underscore.</p>
116<p >Examples: <code>_GLFW_WIN32</code>, <code>_GLFW_BUILD_DLL</code> </p>
117</div></div><!-- contents -->
118</div><!-- PageDoc -->
119<address class="footer">
120<p>
121Last update on Thu Oct 28 2021 for GLFW 3.3.5
122</p>
123</address>
124</body>
125</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_8dox.html
new file mode 100644
index 0000000..89f0276
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: intro.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">intro.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_guide.html
new file mode 100644
index 0000000..710a4b8
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/intro_guide.html
@@ -0,0 +1,329 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Introduction to the API</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Introduction to the API </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#intro_init">Initialization and termination</a><ul><li class="level2"><a href="#intro_init_init">Initializing GLFW</a></li>
69<li class="level2"><a href="#init_hints">Initialization hints</a><ul><li class="level3"><a href="#init_hints_shared">Shared init hints</a></li>
70<li class="level3"><a href="#init_hints_osx">macOS specific init hints</a></li>
71<li class="level3"><a href="#init_hints_values">Supported and default values</a></li>
72</ul>
73</li>
74<li class="level2"><a href="#intro_init_terminate">Terminating GLFW</a></li>
75</ul>
76</li>
77<li class="level1"><a href="#error_handling">Error handling</a></li>
78<li class="level1"><a href="#coordinate_systems">Coordinate systems</a></li>
79<li class="level1"><a href="#guarantees_limitations">Guarantees and limitations</a><ul><li class="level2"><a href="#lifetime">Pointer lifetimes</a></li>
80<li class="level2"><a href="#reentrancy">Reentrancy</a></li>
81<li class="level2"><a href="#thread_safety">Thread safety</a></li>
82<li class="level2"><a href="#compatibility">Version compatibility</a></li>
83<li class="level2"><a href="#event_order">Event order</a></li>
84</ul>
85</li>
86<li class="level1"><a href="#intro_version">Version management</a><ul><li class="level2"><a href="#intro_version_compile">Compile-time version</a></li>
87<li class="level2"><a href="#intro_version_runtime">Run-time version</a></li>
88<li class="level2"><a href="#intro_version_string">Version string</a></li>
89</ul>
90</li>
91</ul>
92</div>
93<div class="textblock"><p >This guide introduces the basic concepts of GLFW and describes initialization, error handling and API guarantees and limitations. For a broad but shallow tutorial, see <a class="el" href="quick_guide.html">Getting started</a> instead. For details on a specific function in this category, see the <a class="el" href="group__init.html">Initialization, version and error reference</a>.</p>
94<p >There are also guides for the other areas of GLFW.</p>
95<ul>
96<li><a class="el" href="window_guide.html">Window guide</a></li>
97<li><a class="el" href="context_guide.html">Context guide</a></li>
98<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
99<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
100<li><a class="el" href="input_guide.html">Input guide</a></li>
101</ul>
102<h1><a class="anchor" id="intro_init"></a>
103Initialization and termination</h1>
104<p >Before most GLFW functions may be called, the library must be initialized. This initialization checks what features are available on the machine, enumerates monitors and joysticks, initializes the timer and performs any required platform-specific initialization.</p>
105<p >Only the following functions may be called before the library has been successfully initialized, and only from the main thread.</p>
106<ul>
107<li><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></li>
108<li><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></li>
109<li><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></li>
110<li><a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></li>
111<li><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></li>
112<li><a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></li>
113<li><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></li>
114</ul>
115<p >Calling any other function before successful initialization will cause a <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> error.</p>
116<h2><a class="anchor" id="intro_init_init"></a>
117Initializing GLFW</h2>
118<p >The library is initialized with <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>, which returns <code>GLFW_FALSE</code> if an error occurred.</p>
119<div class="fragment"><div class="line"><span class="keywordflow">if</span> (!<a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>())</div>
120<div class="line">{</div>
121<div class="line"> <span class="comment">// Handle initialization failure</span></div>
122<div class="line">}</div>
123<div class="ttc" id="agroup__init_html_ga317aac130a235ab08c6db0834907d85e"><div class="ttname"><a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></div><div class="ttdeci">int glfwInit(void)</div><div class="ttdoc">Initializes the GLFW library.</div></div>
124</div><!-- fragment --><p >If any part of initialization fails, any parts that succeeded are terminated as if <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> had been called. The library only needs to be initialized once and additional calls to an already initialized library will return <code>GLFW_TRUE</code> immediately.</p>
125<p >Once the library has been successfully initialized, it should be terminated before the application exits. Modern systems are very good at freeing resources allocated by programs that exit, but GLFW sometimes has to change global system settings and these might not be restored without termination.</p>
126<h2><a class="anchor" id="init_hints"></a>
127Initialization hints</h2>
128<p >Initialization hints are set before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> and affect how the library behaves until termination. Hints are set with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>.</p>
129<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>(<a class="code hl_define" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
130<div class="ttc" id="agroup__init_html_ga110fd1d3f0412822b4f1908c026f724a"><div class="ttname"><a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></div><div class="ttdeci">void glfwInitHint(int hint, int value)</div><div class="ttdoc">Sets the specified init hint to the desired value.</div></div>
131<div class="ttc" id="agroup__init_html_gab9c0534709fda03ec8959201da3a9a18"><div class="ttname"><a href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a></div><div class="ttdeci">#define GLFW_JOYSTICK_HAT_BUTTONS</div><div class="ttdoc">Joystick hat buttons init hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1116</div></div>
132<div class="ttc" id="agroup__init_html_gac877fe3b627d21ef3a0a23e0a73ba8c5"><div class="ttname"><a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a></div><div class="ttdeci">#define GLFW_FALSE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> glfw3.h:322</div></div>
133</div><!-- fragment --><p >The values you set hints to are never reset by GLFW, but they only take effect during initialization. Once GLFW has been initialized, any values you set will be ignored until the library is terminated and initialized again.</p>
134<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
135<h3><a class="anchor" id="init_hints_shared"></a>
136Shared init hints</h3>
137<p ><a class="anchor" id="GLFW_JOYSTICK_HAT_BUTTONS"></a><b>GLFW_JOYSTICK_HAT_BUTTONS</b> specifies whether to also expose joystick hats as buttons, for compatibility with earlier versions of GLFW that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
138<h3><a class="anchor" id="init_hints_osx"></a>
139macOS specific init hints</h3>
140<p ><a class="anchor" id="GLFW_COCOA_CHDIR_RESOURCES_hint"></a><b>GLFW_COCOA_CHDIR_RESOURCES</b> specifies whether to set the current directory to the application to the <code>Contents/Resources</code> subdirectory of the application's bundle, if present. Set this with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>.</p>
141<p ><a class="anchor" id="GLFW_COCOA_MENUBAR_hint"></a><b>GLFW_COCOA_MENUBAR</b> specifies whether to create a basic menu bar, either from a nib or manually, when the first window is created, which is when AppKit is initialized. Set this with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>.</p>
142<h3><a class="anchor" id="init_hints_values"></a>
143Supported and default values</h3>
144<table class="markdownTable">
145<tr class="markdownTableHead">
146<th class="markdownTableHeadNone">Initialization hint </th><th class="markdownTableHeadNone">Default value </th><th class="markdownTableHeadNone">Supported values </th></tr>
147<tr class="markdownTableRowOdd">
148<td class="markdownTableBodyNone"><a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
149<tr class="markdownTableRowEven">
150<td class="markdownTableBodyNone"><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
151<tr class="markdownTableRowOdd">
152<td class="markdownTableBodyNone"><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
153</table>
154<h2><a class="anchor" id="intro_init_terminate"></a>
155Terminating GLFW</h2>
156<p >Before your application exits, you should terminate the GLFW library if it has been initialized. This is done with <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
157<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
158<div class="ttc" id="agroup__init_html_gaaae48c0a18607ea4a4ba951d939f0901"><div class="ttname"><a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></div><div class="ttdeci">void glfwTerminate(void)</div><div class="ttdoc">Terminates the GLFW library.</div></div>
159</div><!-- fragment --><p >This will destroy any remaining window, monitor and cursor objects, restore any modified gamma ramps, re-enable the screensaver if it had been disabled and free any other resources allocated by GLFW.</p>
160<p >Once the library is terminated, it is as if it had never been initialized and you will need to initialize it again before being able to use GLFW. If the library was not initialized or had already been terminated, it return immediately.</p>
161<h1><a class="anchor" id="error_handling"></a>
162Error handling</h1>
163<p >Some GLFW functions have return values that indicate an error, but this is often not very helpful when trying to figure out what happened or why it occurred. Other functions have no return value reserved for errors, so error notification needs a separate channel. Finally, far from all GLFW functions have return values.</p>
164<p >The last <a class="el" href="group__errors.html">error code</a> for the calling thread can be queried at any time with <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>.</p>
165<div class="fragment"><div class="line"><span class="keywordtype">int</span> code = <a class="code hl_function" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>(NULL);</div>
166<div class="line"> </div>
167<div class="line"><span class="keywordflow">if</span> (code != <a class="code hl_define" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a>)</div>
168<div class="line"> handle_error(code);</div>
169<div class="ttc" id="agroup__errors_html_gafa30deee5db4d69c4c93d116ed87dbf4"><div class="ttname"><a href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a></div><div class="ttdeci">#define GLFW_NO_ERROR</div><div class="ttdoc">No error has occurred.</div><div class="ttdef"><b>Definition:</b> glfw3.h:671</div></div>
170<div class="ttc" id="agroup__init_html_ga944986b4ec0b928d488141f92982aa18"><div class="ttname"><a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></div><div class="ttdeci">int glfwGetError(const char **description)</div><div class="ttdoc">Returns and clears the last error for the calling thread.</div></div>
171</div><!-- fragment --><p >If no error has occurred since the last call, <a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a> (zero) is returned. The error is cleared before the function returns.</p>
172<p >The error code indicates the general category of the error. Some error codes, such as <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> has only a single meaning, whereas others like <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> are used for many different errors.</p>
173<p >GLFW often has more information about an error than its general category. You can retrieve a UTF-8 encoded human-readable description along with the error code. If no error has occurred since the last call, the description is set to <code>NULL</code>.</p>
174<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* description;</div>
175<div class="line"><span class="keywordtype">int</span> code = <a class="code hl_function" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>(&amp;description);</div>
176<div class="line"> </div>
177<div class="line"><span class="keywordflow">if</span> (description)</div>
178<div class="line"> display_error_message(code, description);</div>
179</div><!-- fragment --><p >The retrieved description string is only valid until the next error occurs. This means you must make a copy of it if you want to keep it.</p>
180<p >You can also set an error callback, which will be called each time an error occurs. It is set with <a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>.</p>
181<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(error_callback);</div>
182<div class="ttc" id="agroup__init_html_gaff45816610d53f0b83656092a4034f40"><div class="ttname"><a href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></div><div class="ttdeci">GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)</div><div class="ttdoc">Sets the error callback.</div></div>
183</div><!-- fragment --><p >The error callback receives the same error code and human-readable description returned by <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>.</p>
184<div class="fragment"><div class="line"><span class="keywordtype">void</span> error_callback(<span class="keywordtype">int</span> code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
185<div class="line">{</div>
186<div class="line"> display_error_message(code, description);</div>
187<div class="line">}</div>
188</div><!-- fragment --><p >The error callback is called after the error is stored, so calling <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> from within the error callback returns the same values as the callback argument.</p>
189<p >The description string passed to the callback is only valid until the error callback returns. This means you must make a copy of it if you want to keep it.</p>
190<p ><b>Reported errors are never fatal.</b> As long as GLFW was successfully initialized, it will remain initialized and in a safe state until terminated regardless of how many errors occur. If an error occurs during initialization that causes <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> to fail, any part of the library that was initialized will be safely terminated.</p>
191<p >Do not rely on a currently invalid call to generate a specific error, as in the future that same call may generate a different error or become valid.</p>
192<h1><a class="anchor" id="coordinate_systems"></a>
193Coordinate systems</h1>
194<p >GLFW has two primary coordinate systems: the <em>virtual screen</em> and the window <em>content area</em> or <em>content area</em>. Both use the same unit: <em>virtual screen coordinates</em>, or just <em>screen coordinates</em>, which don't necessarily correspond to pixels.</p>
195<p ><img src="spaces.svg" alt="" style="pointer-events: none;" width="90%" class="inline"/></p>
196<p >Both the virtual screen and the content area coordinate systems have the X-axis pointing to the right and the Y-axis pointing down.</p>
197<p >Window and monitor positions are specified as the position of the upper-left corners of their content areas relative to the virtual screen, while cursor positions are specified relative to a window's content area.</p>
198<p >Because the origin of the window's content area coordinate system is also the point from which the window position is specified, you can translate content area coordinates to the virtual screen by adding the window position. The window frame, when present, extends out from the content area but does not affect the window position.</p>
199<p >Almost all positions and sizes in GLFW are measured in screen coordinates relative to one of the two origins above. This includes cursor positions, window positions and sizes, window frame sizes, monitor positions and video mode resolutions.</p>
200<p >Two exceptions are the <a class="el" href="monitor_guide.html#monitor_size">monitor physical size</a>, which is measured in millimetres, and <a class="el" href="window_guide.html#window_fbsize">framebuffer size</a>, which is measured in pixels.</p>
201<p >Pixels and screen coordinates may map 1:1 on your machine, but they won't on every other machine, for example on a Mac with a Retina display. The ratio between screen coordinates and pixels may also change at run-time depending on which monitor the window is currently considered to be on.</p>
202<h1><a class="anchor" id="guarantees_limitations"></a>
203Guarantees and limitations</h1>
204<p >This section describes the conditions under which GLFW can be expected to function, barring bugs in the operating system or drivers. Use of GLFW outside of these limits may work on some platforms, or on some machines, or some of the time, or on some versions of GLFW, but it may break at any time and this will not be considered a bug.</p>
205<h2><a class="anchor" id="lifetime"></a>
206Pointer lifetimes</h2>
207<p >GLFW will never free any pointer you provide to it and you must never free any pointer it provides to you.</p>
208<p >Many GLFW functions return pointers to dynamically allocated structures, strings or arrays, and some callbacks are provided with strings or arrays. These are always managed by GLFW and should never be freed by the application. The lifetime of these pointers is documented for each GLFW function and callback. If you need to keep this data, you must copy it before its lifetime expires.</p>
209<p >Many GLFW functions accept pointers to structures or strings allocated by the application. These are never freed by GLFW and are always the responsibility of the application. If GLFW needs to keep the data in these structures or strings, it is copied before the function returns.</p>
210<p >Pointer lifetimes are guaranteed not to be shortened in future minor or patch releases.</p>
211<h2><a class="anchor" id="reentrancy"></a>
212Reentrancy</h2>
213<p >GLFW event processing and object destruction are not reentrant. This means that the following functions must not be called from any callback function:</p>
214<ul>
215<li><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></li>
216<li><a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a></li>
217<li><a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></li>
218<li><a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></li>
219<li><a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></li>
220<li><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></li>
221</ul>
222<p >These functions may be made reentrant in future minor or patch releases, but functions not on this list will not be made non-reentrant.</p>
223<h2><a class="anchor" id="thread_safety"></a>
224Thread safety</h2>
225<p >Most GLFW functions must only be called from the main thread (the thread that calls main), but some may be called from any thread once the library has been initialized. Before initialization the whole library is thread-unsafe.</p>
226<p >The reference documentation for every GLFW function states whether it is limited to the main thread.</p>
227<p >Initialization, termination, event processing and the creation and destruction of windows, cursors and OpenGL and OpenGL ES contexts are all restricted to the main thread due to limitations of one or several platforms.</p>
228<p >Because event processing must be performed on the main thread, all callbacks except for the error callback will only be called on that thread. The error callback may be called on any thread, as any GLFW function may generate errors.</p>
229<p >The error code and description may be queried from any thread.</p>
230<ul>
231<li><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></li>
232</ul>
233<p >Empty events may be posted from any thread.</p>
234<ul>
235<li><a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a></li>
236</ul>
237<p >The window user pointer and close flag may be read and written from any thread, but this is not synchronized by GLFW.</p>
238<ul>
239<li><a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a></li>
240<li><a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a></li>
241<li><a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></li>
242<li><a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></li>
243</ul>
244<p >These functions for working with OpenGL and OpenGL ES contexts may be called from any thread, but the window object is not synchronized by GLFW.</p>
245<ul>
246<li><a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></li>
247<li><a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></li>
248<li><a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></li>
249<li><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></li>
250<li><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></li>
251<li><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></li>
252</ul>
253<p >The raw timer functions may be called from any thread.</p>
254<ul>
255<li><a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></li>
256<li><a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></li>
257</ul>
258<p >The regular timer may be used from any thread, but reading and writing the timer offset is not synchronized by GLFW.</p>
259<ul>
260<li><a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></li>
261<li><a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a></li>
262</ul>
263<p >Library version information may be queried from any thread.</p>
264<ul>
265<li><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></li>
266<li><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></li>
267</ul>
268<p >All Vulkan related functions may be called from any thread.</p>
269<ul>
270<li><a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a></li>
271<li><a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></li>
272<li><a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></li>
273<li><a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a></li>
274<li><a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></li>
275</ul>
276<p >GLFW uses synchronization objects internally only to manage the per-thread context and error states. Additional synchronization is left to the application.</p>
277<p >Functions that may currently be called from any thread will always remain so, but functions that are currently limited to the main thread may be updated to allow calls from any thread in future releases.</p>
278<h2><a class="anchor" id="compatibility"></a>
279Version compatibility</h2>
280<p >GLFW uses <a href="https://semver.org/">Semantic Versioning</a>. This guarantees source and binary backward compatibility with earlier minor versions of the API. This means that you can drop in a newer version of the library and existing programs will continue to compile and existing binaries will continue to run.</p>
281<p >Once a function or constant has been added, the signature of that function or value of that constant will remain unchanged until the next major version of GLFW. No compatibility of any kind is guaranteed between major versions.</p>
282<p >Undocumented behavior, i.e. behavior that is not described in the documentation, may change at any time until it is documented.</p>
283<p >If the reference documentation and the implementation differ, the reference documentation will almost always take precedence and the implementation will be fixed in the next release. The reference documentation will also take precedence over anything stated in a guide.</p>
284<h2><a class="anchor" id="event_order"></a>
285Event order</h2>
286<p >The order of arrival of related events is not guaranteed to be consistent across platforms. The exception is synthetic key and mouse button release events, which are always delivered after the window defocus event.</p>
287<h1><a class="anchor" id="intro_version"></a>
288Version management</h1>
289<p >GLFW provides mechanisms for identifying what version of GLFW your application was compiled against as well as what version it is currently running against. If you are loading GLFW dynamically (not just linking dynamically), you can use this to verify that the library binary is compatible with your application.</p>
290<h2><a class="anchor" id="intro_version_compile"></a>
291Compile-time version</h2>
292<p >The compile-time version of GLFW is provided by the GLFW header with the <code>GLFW_VERSION_MAJOR</code>, <code>GLFW_VERSION_MINOR</code> and <code>GLFW_VERSION_REVISION</code> macros.</p>
293<div class="fragment"><div class="line">printf(<span class="stringliteral">&quot;Compiled against GLFW %i.%i.%i\n&quot;</span>,</div>
294<div class="line"> <a class="code hl_define" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a>,</div>
295<div class="line"> <a class="code hl_define" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a>,</div>
296<div class="line"> <a class="code hl_define" href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">GLFW_VERSION_REVISION</a>);</div>
297<div class="ttc" id="agroup__init_html_ga6337d9ea43b22fc529b2bba066b4a576"><div class="ttname"><a href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a></div><div class="ttdeci">#define GLFW_VERSION_MAJOR</div><div class="ttdoc">The major version number of the GLFW header.</div><div class="ttdef"><b>Definition:</b> glfw3.h:288</div></div>
298<div class="ttc" id="agroup__init_html_gab72ae2e2035d9ea461abc3495eac0502"><div class="ttname"><a href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">GLFW_VERSION_REVISION</a></div><div class="ttdeci">#define GLFW_VERSION_REVISION</div><div class="ttdoc">The revision number of the GLFW header.</div><div class="ttdef"><b>Definition:</b> glfw3.h:302</div></div>
299<div class="ttc" id="agroup__init_html_gaf80d40f0aea7088ff337606e9c48f7a3"><div class="ttname"><a href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a></div><div class="ttdeci">#define GLFW_VERSION_MINOR</div><div class="ttdoc">The minor version number of the GLFW header.</div><div class="ttdef"><b>Definition:</b> glfw3.h:295</div></div>
300</div><!-- fragment --><h2><a class="anchor" id="intro_version_runtime"></a>
301Run-time version</h2>
302<p >The run-time version can be retrieved with <a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a>, a function that may be called regardless of whether GLFW is initialized.</p>
303<div class="fragment"><div class="line"><span class="keywordtype">int</span> major, minor, revision;</div>
304<div class="line"><a class="code hl_function" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a>(&amp;major, &amp;minor, &amp;revision);</div>
305<div class="line"> </div>
306<div class="line">printf(<span class="stringliteral">&quot;Running against GLFW %i.%i.%i\n&quot;</span>, major, minor, revision);</div>
307<div class="ttc" id="agroup__init_html_ga9f8ffaacf3c269cc48eafbf8b9b71197"><div class="ttname"><a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></div><div class="ttdeci">void glfwGetVersion(int *major, int *minor, int *rev)</div><div class="ttdoc">Retrieves the version of the GLFW library.</div></div>
308</div><!-- fragment --><h2><a class="anchor" id="intro_version_string"></a>
309Version string</h2>
310<p >GLFW 3 also provides a compile-time generated version string that describes the version, platform, compiler and any platform-specific compile-time options. This is primarily intended for submitting bug reports, to allow developers to see which code paths are enabled in a binary.</p>
311<p >The version string is returned by <a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a>, a function that may be called regardless of whether GLFW is initialized.</p>
312<p ><b>Do not use the version string</b> to parse the GLFW library version. The <a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> function already provides the version of the running library binary.</p>
313<p >The format of the string is as follows:</p><ul>
314<li>The version of GLFW</li>
315<li>The name of the window system API</li>
316<li>The name of the context creation API</li>
317<li>Any additional options or APIs</li>
318</ul>
319<p >For example, when compiling GLFW 3.0 with MinGW using the Win32 and WGL back ends, the version string may look something like this:</p>
320<div class="fragment"><div class="line">3.0.0 Win32 WGL MinGW</div>
321</div><!-- fragment --> </div></div><!-- contents -->
322</div><!-- PageDoc -->
323<address class="footer">
324<p>
325Last update on Thu Oct 28 2021 for GLFW 3.3.5
326</p>
327</address>
328</body>
329</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/jquery.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/jquery.js
new file mode 100644
index 0000000..c9ed3d9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/jquery.js
@@ -0,0 +1,35 @@
1/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
3/*! jQuery UI - v1.12.1 - 2019-01-27
4* http://jqueryui.com
5* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
6* Copyright jQuery Foundation and other contributors; Licensed MIT */
7
8(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
9},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
10 * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
11 * Licensed under MIT
12 * @author Ariel Flesler
13 * @version 2.1.2
14 */
15;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
16/*!
17 PowerTip v1.3.1 (2018-04-15)
18 https://stevenbenner.github.io/jquery-powertip/
19 Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
20 Released under MIT license.
21 https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
22*/
23(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
24 * jQuery UI Touch Punch 0.2.3
25 *
26 * Copyright 2011–2014, Dave Furfero
27 * Dual licensed under the MIT or GPL Version 2 licenses.
28 *
29 * Depends:
30 * jquery.ui.widget.js
31 * jquery.ui.mouse.js
32 */
33!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
34 * http://www.smartmenus.org/
35 * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/main_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/main_8dox.html
new file mode 100644
index 0000000..94fe88f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/main_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: main.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">main.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menu.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menu.js
new file mode 100644
index 0000000..54e81cf
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menu.js
@@ -0,0 +1,127 @@
1/*
2 @licstart The following is the entire license notice for the JavaScript code in this file.
3
4 The MIT License (MIT)
5
6 Copyright (C) 1997-2020 by Dimitri van Heesch
7
8 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9 and associated documentation files (the "Software"), to deal in the Software without restriction,
10 including without limitation the rights to use, copy, modify, merge, publish, distribute,
11 sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in all copies or
15 substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18 BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23 @licend The above is the entire license notice for the JavaScript code in this file
24 */
25function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
26 function makeTree(data,relPath) {
27 var result='';
28 if ('children' in data) {
29 result+='<ul>';
30 for (var i in data.children) {
31 result+='<li><a href="'+relPath+data.children[i].url+'">'+
32 data.children[i].text+'</a>'+
33 makeTree(data.children[i],relPath)+'</li>';
34 }
35 result+='</ul>';
36 }
37 return result;
38 }
39 var searchBox;
40 if (searchEnabled) {
41 if (serverSide) {
42 searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
43 '<div class="left">'+
44 '<form id="FSearchBox" action="'+relPath+searchPage+
45 '" method="get"><img id="MSearchSelect" src="'+
46 relPath+'search/mag.svg" alt=""/>'+
47 '<input type="text" id="MSearchField" name="query" value="'+search+
48 '" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)"'+
49 ' onblur="searchBox.OnSearchFieldFocus(false)">'+
50 '</form>'+
51 '</div>'+
52 '<div class="right"></div>'+
53 '</div>';
54 } else {
55 searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
56 '<span class="left">'+
57 '<img id="MSearchSelect" src="'+relPath+
58 'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()"'+
59 ' onmouseout="return searchBox.OnSearchSelectHide()" alt=""/>'+
60 '<input type="text" id="MSearchField" value="'+search+
61 '" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" '+
62 'onblur="searchBox.OnSearchFieldFocus(false)" '+
63 'onkeyup="searchBox.OnSearchFieldChange(event)"/>'+
64 '</span>'+
65 '<span class="right"><a id="MSearchClose" '+
66 'href="javascript:searchBox.CloseResultsWindow()">'+
67 '<img id="MSearchCloseImg" border="0" src="'+relPath+
68 'search/close.svg" alt=""/></a>'
69 '</span>'
70 '</div>';
71 }
72 }
73
74 $('#main-nav').before('<div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>'+
75 '<label class="main-menu-btn" for="main-menu-state">'+
76 '<span class="main-menu-btn-icon"></span> '+
77 'Toggle main menu visibility</label>'+
78 '<span id="searchBoxPos1" style="position:absolute;right:8px;top:8px;height:36px;"></span>'+
79 '</div>');
80 $('#main-nav').append(makeTree(menudata,relPath));
81 $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
82 if (searchBox) {
83 $('#main-menu').append('<li id="searchBoxPos2" style="float:right"></li>');
84 }
85 var $mainMenuState = $('#main-menu-state');
86 var prevWidth = 0;
87 if ($mainMenuState.length) {
88 function initResizableIfExists() {
89 if (typeof initResizable==='function') initResizable();
90 }
91 // animate mobile menu
92 $mainMenuState.change(function(e) {
93 var $menu = $('#main-menu');
94 var options = { duration: 250, step: initResizableIfExists };
95 if (this.checked) {
96 options['complete'] = function() { $menu.css('display', 'block') };
97 $menu.hide().slideDown(options);
98 } else {
99 options['complete'] = function() { $menu.css('display', 'none') };
100 $menu.show().slideUp(options);
101 }
102 });
103 // set default menu visibility
104 function resetState() {
105 var $menu = $('#main-menu');
106 var $mainMenuState = $('#main-menu-state');
107 var newWidth = $(window).outerWidth();
108 if (newWidth!=prevWidth) {
109 if ($(window).outerWidth()<768) {
110 $mainMenuState.prop('checked',false); $menu.hide();
111 $('#searchBoxPos1').html(searchBox);
112 $('#searchBoxPos2').hide();
113 } else {
114 $menu.show();
115 $('#searchBoxPos1').empty();
116 $('#searchBoxPos2').html(searchBox);
117 $('#searchBoxPos2').show();
118 }
119 prevWidth = newWidth;
120 }
121 }
122 $(window).ready(function() { resetState(); initResizableIfExists(); });
123 $(window).resize(resetState);
124 }
125 $('#main-menu').smartmenus();
126}
127/* @license-end */
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menudata.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menudata.js
new file mode 100644
index 0000000..082dbe1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/menudata.js
@@ -0,0 +1,30 @@
1/*
2 @licstart The following is the entire license notice for the JavaScript code in this file.
3
4 The MIT License (MIT)
5
6 Copyright (C) 1997-2020 by Dimitri van Heesch
7
8 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9 and associated documentation files (the "Software"), to deal in the Software without restriction,
10 including without limitation the rights to use, copy, modify, merge, publish, distribute,
11 sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in all copies or
15 substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18 BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23 @licend The above is the entire license notice for the JavaScript code in this file
24*/
25var menudata={children:[
26{text:"Introduction",url:"index.html"},
27{text:"Tutorial",url:"quick_guide.html"},
28{text:"Guides",url:"pages.html"},
29{text:"Reference",url:"modules.html"},
30{text:"Files",url:"files.html"}]}
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/modules.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/modules.html
new file mode 100644
index 0000000..937c349
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/modules.html
@@ -0,0 +1,94 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="headertitle"><div class="title">Reference</div></div>
65</div><!--header-->
66<div class="contents">
67<div class="textblock">Here is a list of all modules:</div><div class="directory">
68<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
69<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__context.html" target="_self">Context reference</a></td><td class="desc">Functions and types related to OpenGL and OpenGL ES contexts </td></tr>
70<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><a class="el" href="group__init.html" target="_self">Initialization, version and error reference</a></td><td class="desc">Functions and types related to initialization and error handling </td></tr>
71<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__errors.html" target="_self">Error codes</a></td><td class="desc">Error codes </td></tr>
72<tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><a class="el" href="group__input.html" target="_self">Input reference</a></td><td class="desc">Functions and types related to input handling </td></tr>
73<tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__gamepad__axes.html" target="_self">Gamepad axes</a></td><td class="desc">Gamepad axes </td></tr>
74<tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__gamepad__buttons.html" target="_self">Gamepad buttons</a></td><td class="desc">Gamepad buttons </td></tr>
75<tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__hat__state.html" target="_self">Joystick hat states</a></td><td class="desc">Joystick hat states </td></tr>
76<tr id="row_2_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__joysticks.html" target="_self">Joysticks</a></td><td class="desc">Joystick IDs </td></tr>
77<tr id="row_2_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__keys.html" target="_self">Keyboard keys</a></td><td class="desc">Keyboard key IDs </td></tr>
78<tr id="row_2_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__mods.html" target="_self">Modifier key flags</a></td><td class="desc">Modifier key flags </td></tr>
79<tr id="row_2_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__buttons.html" target="_self">Mouse buttons</a></td><td class="desc">Mouse button IDs </td></tr>
80<tr id="row_2_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__shapes.html" target="_self">Standard cursor shapes</a></td><td class="desc">Standard system cursor shapes </td></tr>
81<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__monitor.html" target="_self">Monitor reference</a></td><td class="desc">Functions and types related to monitors </td></tr>
82<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__native.html" target="_self">Native access</a></td><td class="desc">Functions related to accessing native handles </td></tr>
83<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__vulkan.html" target="_self">Vulkan support reference</a></td><td class="desc">Functions and types related to Vulkan </td></tr>
84<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__window.html" target="_self">Window reference</a></td><td class="desc">Functions and types related to windows </td></tr>
85</table>
86</div><!-- directory -->
87</div><!-- contents -->
88<address class="footer">
89<p>
90Last update on Thu Oct 28 2021 for GLFW 3.3.5
91</p>
92</address>
93</body>
94</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_8dox.html
new file mode 100644
index 0000000..9ff3301
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: monitor.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">monitor.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_guide.html
new file mode 100644
index 0000000..3eb7c44
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/monitor_guide.html
@@ -0,0 +1,222 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Monitor guide</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Monitor guide </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#monitor_object">Monitor objects</a><ul><li class="level2"><a href="#monitor_monitors">Retrieving monitors</a></li>
69<li class="level2"><a href="#monitor_event">Monitor configuration changes</a></li>
70</ul>
71</li>
72<li class="level1"><a href="#monitor_properties">Monitor properties</a><ul><li class="level2"><a href="#monitor_modes">Video modes</a></li>
73<li class="level2"><a href="#monitor_size">Physical size</a></li>
74<li class="level2"><a href="#monitor_scale">Content scale</a></li>
75<li class="level2"><a href="#monitor_pos">Virtual position</a></li>
76<li class="level2"><a href="#monitor_workarea">Work area</a></li>
77<li class="level2"><a href="#monitor_name">Human-readable name</a></li>
78<li class="level2"><a href="#monitor_userptr">User pointer</a></li>
79<li class="level2"><a href="#monitor_gamma">Gamma ramp</a></li>
80</ul>
81</li>
82</ul>
83</div>
84<div class="textblock"><p >This guide introduces the monitor related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__monitor.html">Monitor reference</a>. There are also guides for the other areas of GLFW.</p>
85<ul>
86<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
87<li><a class="el" href="window_guide.html">Window guide</a></li>
88<li><a class="el" href="context_guide.html">Context guide</a></li>
89<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
90<li><a class="el" href="input_guide.html">Input guide</a></li>
91</ul>
92<h1><a class="anchor" id="monitor_object"></a>
93Monitor objects</h1>
94<p >A monitor object represents a currently connected monitor and is represented as a pointer to the <a href="https://en.wikipedia.org/wiki/Opaque_data_type">opaque</a> type <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>. Monitor objects cannot be created or destroyed by the application and retain their addresses until the monitors they represent are disconnected or until the library is <a class="el" href="intro_guide.html#intro_init_terminate">terminated</a>.</p>
95<p >Each monitor has a current video mode, a list of supported video modes, a virtual position, a human-readable name, an estimated physical size and a gamma ramp. One of the monitors is the primary monitor.</p>
96<p >The virtual position of a monitor is in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a> and, together with the current video mode, describes the viewports that the connected monitors provide into the virtual desktop that spans them.</p>
97<p >To see how GLFW views your monitor setup and its available video modes, run the <code>monitors</code> test program.</p>
98<h2><a class="anchor" id="monitor_monitors"></a>
99Retrieving monitors</h2>
100<p >The primary monitor is returned by <a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>. It is the user's preferred monitor and is usually the one with global UI elements like task bar or menu bar.</p>
101<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* primary = <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>();</div>
102<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1174</div></div>
103<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
104</div><!-- fragment --><p >You can retrieve all currently connected monitors with <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>. See the reference documentation for the lifetime of the returned array.</p>
105<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
106<div class="line"><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>** monitors = <a class="code hl_function" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>(&amp;count);</div>
107<div class="ttc" id="agroup__monitor_html_ga70b1156d5d24e9928f145d6c864369d2"><div class="ttname"><a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a></div><div class="ttdeci">GLFWmonitor ** glfwGetMonitors(int *count)</div><div class="ttdoc">Returns the currently connected monitors.</div></div>
108</div><!-- fragment --><p >The primary monitor is always the first monitor in the returned array, but other monitors may be moved to a different index when a monitor is connected or disconnected.</p>
109<h2><a class="anchor" id="monitor_event"></a>
110Monitor configuration changes</h2>
111<p >If you wish to be notified when a monitor is connected or disconnected, set a monitor callback.</p>
112<div class="fragment"><div class="line"><a class="code hl_function" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a>(monitor_callback);</div>
113<div class="ttc" id="agroup__monitor_html_gab39df645587c8518192aa746c2fb06c3"><div class="ttname"><a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a></div><div class="ttdeci">GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback)</div><div class="ttdoc">Sets the monitor configuration callback.</div></div>
114</div><!-- fragment --><p >The callback function receives the handle for the monitor that has been connected or disconnected and the event that occurred.</p>
115<div class="fragment"><div class="line"><span class="keywordtype">void</span> monitor_callback(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event)</div>
116<div class="line">{</div>
117<div class="line"> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a>)</div>
118<div class="line"> {</div>
119<div class="line"> <span class="comment">// The monitor was connected</span></div>
120<div class="line"> }</div>
121<div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a>)</div>
122<div class="line"> {</div>
123<div class="line"> <span class="comment">// The monitor was disconnected</span></div>
124<div class="line"> }</div>
125<div class="line">}</div>
126<div class="ttc" id="aglfw3_8h_html_aab64b25921ef21d89252d6f0a71bfc32"><div class="ttname"><a href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a></div><div class="ttdeci">#define GLFW_DISCONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1108</div></div>
127<div class="ttc" id="aglfw3_8h_html_abe11513fd1ffbee5bb9b173f06028b9e"><div class="ttname"><a href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a></div><div class="ttdeci">#define GLFW_CONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1107</div></div>
128</div><!-- fragment --><p >If a monitor is disconnected, all windows that are full screen on it will be switched to windowed mode before the callback is called. Only <a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> and <a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a> will return useful values for a disconnected monitor and only before the monitor callback returns.</p>
129<h1><a class="anchor" id="monitor_properties"></a>
130Monitor properties</h1>
131<p >Each monitor has a current video mode, a list of supported video modes, a virtual position, a content scale, a human-readable name, a user pointer, an estimated physical size and a gamma ramp.</p>
132<h2><a class="anchor" id="monitor_modes"></a>
133Video modes</h2>
134<p >GLFW generally does a good job selecting a suitable video mode when you create a full screen window, change its video mode or make a windowed one full screen, but it is sometimes useful to know exactly which video modes are supported.</p>
135<p >Video modes are represented as <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> structures. You can get an array of the video modes supported by a monitor with <a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>. See the reference documentation for the lifetime of the returned array.</p>
136<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
137<div class="line"><a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* modes = <a class="code hl_function" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>(monitor, &amp;count);</div>
138<div class="ttc" id="agroup__monitor_html_gad2e24d2843cb7d6c26202cddd530fc1b"><div class="ttname"><a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)</div><div class="ttdoc">Returns the available video modes for the specified monitor.</div></div>
139<div class="ttc" id="astructGLFWvidmode_html"><div class="ttname"><a href="structGLFWvidmode.html">GLFWvidmode</a></div><div class="ttdoc">Video mode type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1659</div></div>
140</div><!-- fragment --><p >To get the current video mode of a monitor call <a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>. See the reference documentation for the lifetime of the returned pointer.</p>
141<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
142<div class="ttc" id="agroup__monitor_html_gaba376fa7e76634b4788bddc505d6c9d5"><div class="ttname"><a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current mode of the specified monitor.</div></div>
143</div><!-- fragment --><p >The resolution of a video mode is specified in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a>, not pixels.</p>
144<h2><a class="anchor" id="monitor_size"></a>
145Physical size</h2>
146<p >The physical size of a monitor in millimetres, or an estimation of it, can be retrieved with <a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>. This has no relation to its current <em>resolution</em>, i.e. the width and height of its current <a class="el" href="monitor_guide.html#monitor_modes">video mode</a>.</p>
147<div class="fragment"><div class="line"><span class="keywordtype">int</span> width_mm, height_mm;</div>
148<div class="line"><a class="code hl_function" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>(monitor, &amp;width_mm, &amp;height_mm);</div>
149<div class="ttc" id="agroup__monitor_html_ga7d8bffc6c55539286a6bd20d32a8d7ea"><div class="ttname"><a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a></div><div class="ttdeci">void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)</div><div class="ttdoc">Returns the physical size of the monitor.</div></div>
150</div><!-- fragment --><p >While this can be used to calculate the raw DPI of a monitor, this is often not useful. Instead use the <a class="el" href="monitor_guide.html#monitor_scale">monitor content scale</a> and <a class="el" href="window_guide.html#window_scale">window content scale</a> to scale your content.</p>
151<h2><a class="anchor" id="monitor_scale"></a>
152Content scale</h2>
153<p >The content scale for a monitor can be retrieved with <a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>.</p>
154<div class="fragment"><div class="line"><span class="keywordtype">float</span> xscale, yscale;</div>
155<div class="line"><a class="code hl_function" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>(monitor, &amp;xscale, &amp;yscale);</div>
156<div class="ttc" id="agroup__monitor_html_gad3152e84465fa620b601265ebfcdb21b"><div class="ttname"><a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></div><div class="ttdeci">void glfwGetMonitorContentScale(GLFWmonitor *monitor, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified monitor.</div></div>
157</div><!-- fragment --><p >The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
158<p >The content scale may depend on both the monitor resolution and pixel density and on user settings. It may be very different from the raw DPI calculated from the physical size and current resolution.</p>
159<h2><a class="anchor" id="monitor_pos"></a>
160Virtual position</h2>
161<p >The position of the monitor on the virtual desktop, in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a>, can be retrieved with <a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>.</p>
162<div class="fragment"><div class="line"><span class="keywordtype">int</span> xpos, ypos;</div>
163<div class="line"><a class="code hl_function" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>(monitor, &amp;xpos, &amp;ypos);</div>
164<div class="ttc" id="agroup__monitor_html_ga102f54e7acc9149edbcf0997152df8c9"><div class="ttname"><a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a></div><div class="ttdeci">void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)</div><div class="ttdoc">Returns the position of the monitor's viewport on the virtual screen.</div></div>
165</div><!-- fragment --><h2><a class="anchor" id="monitor_workarea"></a>
166Work area</h2>
167<p >The area of a monitor not occupied by global task bars or menu bars is the work area. This is specified in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a> and can be retrieved with <a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>.</p>
168<div class="fragment"><div class="line"><span class="keywordtype">int</span> xpos, ypos, width, height;</div>
169<div class="line"><a class="code hl_function" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>(monitor, &amp;xpos, &amp;ypos, &amp;width, &amp;height);</div>
170<div class="ttc" id="agroup__monitor_html_ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><div class="ttname"><a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a></div><div class="ttdeci">void glfwGetMonitorWorkarea(GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)</div><div class="ttdoc">Retrieves the work area of the monitor.</div></div>
171</div><!-- fragment --><h2><a class="anchor" id="monitor_name"></a>
172Human-readable name</h2>
173<p >The human-readable, UTF-8 encoded name of a monitor is returned by <a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a>. See the reference documentation for the lifetime of the returned string.</p>
174<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a class="code hl_function" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a>(monitor);</div>
175<div class="ttc" id="agroup__monitor_html_ga7af83e13489d90379588fb331b9e4b68"><div class="ttname"><a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a></div><div class="ttdeci">const char * glfwGetMonitorName(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the name of the specified monitor.</div></div>
176</div><!-- fragment --><p >Monitor names are not guaranteed to be unique. Two monitors of the same model and make may have the same name. Only the monitor handle is guaranteed to be unique, and only until that monitor is disconnected.</p>
177<h2><a class="anchor" id="monitor_userptr"></a>
178User pointer</h2>
179<p >Each monitor has a user pointer that can be set with <a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a> and queried with <a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a>. This can be used for any purpose you need and will not be modified by GLFW. The value will be kept until the monitor is disconnected or until the library is terminated.</p>
180<p >The initial value of the pointer is <code>NULL</code>.</p>
181<h2><a class="anchor" id="monitor_gamma"></a>
182Gamma ramp</h2>
183<p >The gamma ramp of a monitor can be set with <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a>, which accepts a monitor handle and a pointer to a <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> structure.</p>
184<div class="fragment"><div class="line"><a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a> ramp;</div>
185<div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> red[256], green[256], blue[256];</div>
186<div class="line"> </div>
187<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a> = 256;</div>
188<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">red</a> = red;</div>
189<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">green</a> = green;</div>
190<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">blue</a> = blue;</div>
191<div class="line"> </div>
192<div class="line"><span class="keywordflow">for</span> (i = 0; i &lt; ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a>; i++)</div>
193<div class="line">{</div>
194<div class="line"> <span class="comment">// Fill out gamma ramp arrays as desired</span></div>
195<div class="line">}</div>
196<div class="line"> </div>
197<div class="line"><a class="code hl_function" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a>(monitor, &amp;ramp);</div>
198<div class="ttc" id="agroup__monitor_html_ga583f0ffd0d29613d8cd172b996bbf0dd"><div class="ttname"><a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></div><div class="ttdeci">void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)</div><div class="ttdoc">Sets the current gamma ramp for the specified monitor.</div></div>
199<div class="ttc" id="astructGLFWgammaramp_html"><div class="ttname"><a href="structGLFWgammaramp.html">GLFWgammaramp</a></div><div class="ttdoc">Gamma ramp.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1693</div></div>
200<div class="ttc" id="astructGLFWgammaramp_html_a2cce5d968734b685623eef913e635138"><div class="ttname"><a href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">GLFWgammaramp::red</a></div><div class="ttdeci">unsigned short * red</div><div class="ttdef"><b>Definition:</b> glfw3.h:1696</div></div>
201<div class="ttc" id="astructGLFWgammaramp_html_acf0c836d0efe29c392fe8d1a1042744b"><div class="ttname"><a href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">GLFWgammaramp::blue</a></div><div class="ttdeci">unsigned short * blue</div><div class="ttdef"><b>Definition:</b> glfw3.h:1702</div></div>
202<div class="ttc" id="astructGLFWgammaramp_html_ad620e1cffbff9a32c51bca46301b59a5"><div class="ttname"><a href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">GLFWgammaramp::size</a></div><div class="ttdeci">unsigned int size</div><div class="ttdef"><b>Definition:</b> glfw3.h:1705</div></div>
203<div class="ttc" id="astructGLFWgammaramp_html_affccc6f5df47820b6562d709da3a5a3a"><div class="ttname"><a href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">GLFWgammaramp::green</a></div><div class="ttdeci">unsigned short * green</div><div class="ttdef"><b>Definition:</b> glfw3.h:1699</div></div>
204</div><!-- fragment --><p >The gamma ramp data is copied before the function returns, so there is no need to keep it around once the ramp has been set.</p>
205<p >It is recommended that your gamma ramp have the same size as the current gamma ramp for that monitor.</p>
206<p >The current gamma ramp for a monitor is returned by <a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a>. See the reference documentation for the lifetime of the returned structure.</p>
207<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a>* ramp = <a class="code hl_function" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a>(monitor);</div>
208<div class="ttc" id="agroup__monitor_html_ga76ba90debcf0062b5c4b73052b24f96f"><div class="ttname"><a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a></div><div class="ttdeci">const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current gamma ramp for the specified monitor.</div></div>
209</div><!-- fragment --><p >If you wish to set a regular gamma ramp, you can have GLFW calculate it for you from the desired exponent with <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>, which in turn calls <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> with the resulting ramp.</p>
210<div class="fragment"><div class="line"><a class="code hl_function" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>(monitor, 1.0);</div>
211<div class="ttc" id="agroup__monitor_html_ga6ac582625c990220785ddd34efa3169a"><div class="ttname"><a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a></div><div class="ttdeci">void glfwSetGamma(GLFWmonitor *monitor, float gamma)</div><div class="ttdoc">Generates a gamma ramp and sets it for the specified monitor.</div></div>
212</div><!-- fragment --><p >To experiment with gamma correction via the <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> function, run the <code>gamma</code> test program.</p>
213<dl class="section note"><dt>Note</dt><dd>The software controlled gamma ramp is applied <em>in addition</em> to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior. </dd></dl>
214</div></div><!-- contents -->
215</div><!-- PageDoc -->
216<address class="footer">
217<p>
218Last update on Thu Oct 28 2021 for GLFW 3.3.5
219</p>
220</address>
221</body>
222</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_8dox.html
new file mode 100644
index 0000000..9918b32
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: moving.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">moving.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_guide.html
new file mode 100644
index 0000000..b234332
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/moving_guide.html
@@ -0,0 +1,367 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Moving from GLFW 2 to 3</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Moving from GLFW 2 to 3 </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#moving_removed">Changed and removed features</a><ul><li class="level2"><a href="#moving_renamed_files">Renamed library and header file</a></li>
69<li class="level2"><a href="#moving_threads">Removal of threading functions</a></li>
70<li class="level2"><a href="#moving_image">Removal of image and texture loading</a></li>
71<li class="level2"><a href="#moving_stdcall">Removal of GLFWCALL macro</a></li>
72<li class="level2"><a href="#moving_window_handles">Window handle parameters</a></li>
73<li class="level2"><a href="#moving_monitor">Explicit monitor selection</a></li>
74<li class="level2"><a href="#moving_autopoll">Removal of automatic event polling</a></li>
75<li class="level2"><a href="#moving_context">Explicit context management</a></li>
76<li class="level2"><a href="#moving_hidpi">Separation of window and framebuffer sizes</a></li>
77<li class="level2"><a href="#moving_window_close">Window closing changes</a></li>
78<li class="level2"><a href="#moving_hints">Persistent window hints</a></li>
79<li class="level2"><a href="#moving_video_modes">Video mode enumeration</a></li>
80<li class="level2"><a href="#moving_char_up">Removal of character actions</a></li>
81<li class="level2"><a href="#moving_cursorpos">Cursor position changes</a></li>
82<li class="level2"><a href="#moving_wheel">Wheel position replaced by scroll offsets</a></li>
83<li class="level2"><a href="#moving_repeat">Key repeat action</a></li>
84<li class="level2"><a href="#moving_keys">Physical key input</a></li>
85<li class="level2"><a href="#moving_joystick">Joystick function changes</a></li>
86<li class="level2"><a href="#moving_mbcs">Win32 MBCS support</a></li>
87<li class="level2"><a href="#moving_windows">Support for versions of Windows older than XP</a></li>
88<li class="level2"><a href="#moving_syskeys">Capture of system-wide hotkeys</a></li>
89<li class="level2"><a href="#moving_terminate">Automatic termination</a></li>
90<li class="level2"><a href="#moving_glu">GLU header inclusion</a></li>
91</ul>
92</li>
93<li class="level1"><a href="#moving_tables">Name change tables</a><ul><li class="level2"><a href="#moving_renamed_functions">Renamed functions</a></li>
94<li class="level2"><a href="#moving_renamed_types">Renamed types</a></li>
95<li class="level2"><a href="#moving_renamed_tokens">Renamed tokens</a></li>
96</ul>
97</li>
98</ul>
99</div>
100<div class="textblock"><p >This is a transition guide for moving from GLFW 2 to 3. It describes what has changed or been removed, but does <em>not</em> include <a class="el" href="news.html">new features</a> unless they are required when moving an existing code base onto the new API. For example, the new multi-monitor functions are required to create full screen windows with GLFW 3.</p>
101<h1><a class="anchor" id="moving_removed"></a>
102Changed and removed features</h1>
103<h2><a class="anchor" id="moving_renamed_files"></a>
104Renamed library and header file</h2>
105<p >The GLFW 3 header is named <a class="el" href="glfw3_8h.html">glfw3.h</a> and moved to the <code>GLFW</code> directory, to avoid collisions with the headers of other major versions. Similarly, the GLFW 3 library is named <code>glfw3,</code> except when it's installed as a shared library on Unix-like systems, where it uses the <a href="https://en.wikipedia.org/wiki/soname">soname</a> <code>libglfw.so.3</code>.</p>
106<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;GL/glfw.h&gt;</span></div>
107</div><!-- fragment --></dd></dl>
108<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
109<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
110</div><!-- fragment --></dd></dl>
111<h2><a class="anchor" id="moving_threads"></a>
112Removal of threading functions</h2>
113<p >The threading functions have been removed, including the per-thread sleep function. They were fairly primitive, under-used, poorly integrated and took time away from the focus of GLFW (i.e. context, input and window). There are better threading libraries available and native threading support is available in both <a href="https://en.cppreference.com/w/cpp/thread">C++11</a> and <a href="https://en.cppreference.com/w/c/thread">C11</a>, both of which are gaining traction.</p>
114<p >If you wish to use the C++11 or C11 facilities but your compiler doesn't yet support them, see the <a href="https://gitorious.org/tinythread/tinythreadpp">TinyThread++</a> and <a href="https://github.com/tinycthread/tinycthread">TinyCThread</a> projects created by the original author of GLFW. These libraries implement a usable subset of the threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use TinyCThread.</p>
115<p >However, GLFW 3 has better support for <em>use from multiple threads</em> than GLFW 2 had. Contexts can be made current on any thread, although only a single thread at a time, and the documentation explicitly states which functions may be used from any thread and which must only be used from the main thread.</p>
116<dl class="section user"><dt>Removed functions</dt><dd><code>glfwSleep</code>, <code>glfwCreateThread</code>, <code>glfwDestroyThread</code>, <code>glfwWaitThread</code>, <code>glfwGetThreadID</code>, <code>glfwCreateMutex</code>, <code>glfwDestroyMutex</code>, <code>glfwLockMutex</code>, <code>glfwUnlockMutex</code>, <code>glfwCreateCond</code>, <code>glfwDestroyCond</code>, <code>glfwWaitCond</code>, <code>glfwSignalCond</code>, <code>glfwBroadcastCond</code> and <code>glfwGetNumberOfProcessors</code>.</dd></dl>
117<dl class="section user"><dt>Removed types</dt><dd><code>GLFWthreadfun</code></dd></dl>
118<h2><a class="anchor" id="moving_image"></a>
119Removal of image and texture loading</h2>
120<p >The image and texture loading functions have been removed. They only supported the Targa image format, making them mostly useful for beginner level examples. To become of sufficiently high quality to warrant keeping them in GLFW 3, they would need not only to support other formats, but also modern extensions to OpenGL texturing. This would either add a number of external dependencies (libjpeg, libpng, etc.), or force GLFW to ship with inline versions of these libraries.</p>
121<p >As there already are libraries doing this, it is unnecessary both to duplicate the work and to tie the duplicate to GLFW. The resulting library would also be platform-independent, as both OpenGL and stdio are available wherever GLFW is.</p>
122<dl class="section user"><dt>Removed functions</dt><dd><code>glfwReadImage</code>, <code>glfwReadMemoryImage</code>, <code>glfwFreeImage</code>, <code>glfwLoadTexture2D</code>, <code>glfwLoadMemoryTexture2D</code> and <code>glfwLoadTextureImage2D</code>.</dd></dl>
123<h2><a class="anchor" id="moving_stdcall"></a>
124Removal of GLFWCALL macro</h2>
125<p >The <code>GLFWCALL</code> macro, which made callback functions use <a href="https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx">__stdcall</a> on Windows, has been removed. GLFW is written in C, not Pascal. Removing this macro means there's one less thing for application programmers to remember, i.e. the requirement to mark all callback functions with <code>GLFWCALL</code>. It also simplifies the creation of DLLs and DLL link libraries, as there's no need to explicitly disable <code>@n</code> entry point suffixes.</p>
126<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> GLFWCALL callback_function(...);</div>
127</div><!-- fragment --></dd></dl>
128<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_function(...);</div>
129</div><!-- fragment --></dd></dl>
130<h2><a class="anchor" id="moving_window_handles"></a>
131Window handle parameters</h2>
132<p >Because GLFW 3 supports multiple windows, window handle parameters have been added to all window-related GLFW functions and callbacks. The handle of a newly created window is returned by <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> (formerly <code>glfwOpenWindow</code>). Window handles are pointers to the <a href="https://en.wikipedia.org/wiki/Opaque_data_type">opaque</a> type <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>.</p>
133<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(<span class="stringliteral">&quot;New Window Title&quot;</span>);</div>
134<div class="ttc" id="agroup__window_html_ga5d877f09e968cef7a360b513306f17ff"><div class="ttname"><a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a></div><div class="ttdeci">void glfwSetWindowTitle(GLFWwindow *window, const char *title)</div><div class="ttdoc">Sets the title of the specified window.</div></div>
135</div><!-- fragment --></dd></dl>
136<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, <span class="stringliteral">&quot;New Window Title&quot;</span>);</div>
137</div><!-- fragment --></dd></dl>
138<h2><a class="anchor" id="moving_monitor"></a>
139Explicit monitor selection</h2>
140<p >GLFW 3 provides support for multiple monitors. To request a full screen mode window, instead of passing <code>GLFW_FULLSCREEN</code> you specify which monitor you wish the window to use. The <a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a> function returns the monitor that GLFW 2 would have selected, but there are many other <a class="el" href="monitor_guide.html">monitor functions</a>. Monitor handles are pointers to the <a href="https://en.wikipedia.org/wiki/Opaque_data_type">opaque</a> type <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>.</p>
141<dl class="section user"><dt>Old basic full screen</dt><dd><div class="fragment"><div class="line">glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_FULLSCREEN);</div>
142</div><!-- fragment --></dd></dl>
143<dl class="section user"><dt>New basic full screen</dt><dd><div class="fragment"><div class="line">window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Window&quot;</span>, <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>(), NULL);</div>
144<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
145<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
146</div><!-- fragment --></dd></dl>
147<dl class="section note"><dt>Note</dt><dd>The framebuffer bit depth parameters of <code>glfwOpenWindow</code> have been turned into <a class="el" href="window_guide.html#window_hints">window hints</a>, but as they have been given <a class="el" href="window_guide.html#window_hints_values">sane defaults</a> you rarely need to set these hints.</dd></dl>
148<h2><a class="anchor" id="moving_autopoll"></a>
149Removal of automatic event polling</h2>
150<p >GLFW 3 does not automatically poll for events in <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>, meaning you need to call <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> or <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> yourself. Unlike buffer swap, which acts on a single window, the event processing functions act on all windows at once.</p>
151<dl class="section user"><dt>Old basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (...)</div>
152<div class="line">{</div>
153<div class="line"> <span class="comment">// Process input</span></div>
154<div class="line"> <span class="comment">// Render output</span></div>
155<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>();</div>
156<div class="line">}</div>
157<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
158</div><!-- fragment --></dd></dl>
159<dl class="section user"><dt>New basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (...)</div>
160<div class="line">{</div>
161<div class="line"> <span class="comment">// Process input</span></div>
162<div class="line"> <span class="comment">// Render output</span></div>
163<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
164<div class="line"> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
165<div class="line">}</div>
166<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
167</div><!-- fragment --></dd></dl>
168<h2><a class="anchor" id="moving_context"></a>
169Explicit context management</h2>
170<p >Each GLFW 3 window has its own OpenGL context and only you, the application programmer, can know which context should be current on which thread at any given time. Therefore, GLFW 3 leaves that decision to you.</p>
171<p >This means that you need to call <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> after creating a window before you can call any OpenGL functions.</p>
172<h2><a class="anchor" id="moving_hidpi"></a>
173Separation of window and framebuffer sizes</h2>
174<p >Window positions and sizes now use screen coordinates, which may not be the same as pixels on machines with high-DPI monitors. This is important as OpenGL uses pixels, not screen coordinates. For example, the rectangle specified with <code>glViewport</code> needs to use pixels. Therefore, framebuffer size functions have been added. You can retrieve the size of the framebuffer of a window with <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> function. A framebuffer size callback has also been added, which can be set with <a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a>.</p>
175<dl class="section user"><dt>Old basic viewport setup</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(&amp;width, &amp;height);</div>
176<div class="line">glViewport(0, 0, width, height);</div>
177<div class="ttc" id="agroup__window_html_gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><div class="ttname"><a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a></div><div class="ttdeci">void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the content area of the specified window.</div></div>
178</div><!-- fragment --></dd></dl>
179<dl class="section user"><dt>New basic viewport setup</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
180<div class="line">glViewport(0, 0, width, height);</div>
181<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
182</div><!-- fragment --></dd></dl>
183<h2><a class="anchor" id="moving_window_close"></a>
184Window closing changes</h2>
185<p >The <code>GLFW_OPENED</code> window parameter has been removed. As long as the window has not been destroyed, whether through <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>, the window is "open".</p>
186<p >A user attempting to close a window is now just an event like any other. Unlike GLFW 2, windows and contexts created with GLFW 3 will never be destroyed unless you choose them to be. Each window now has a close flag that is set to <code>GLFW_TRUE</code> when the user attempts to close that window. By default, nothing else happens and the window stays visible. It is then up to you to either destroy the window, take some other action or ignore the request.</p>
187<p >You can query the close flag at any time with <a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> and set it at any time with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>.</p>
188<dl class="section user"><dt>Old basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (glfwGetWindowParam(GLFW_OPENED))</div>
189<div class="line">{</div>
190<div class="line"> ...</div>
191<div class="line">}</div>
192</div><!-- fragment --></dd></dl>
193<dl class="section user"><dt>New basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
194<div class="line">{</div>
195<div class="line"> ...</div>
196<div class="line">}</div>
197<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
198</div><!-- fragment --></dd></dl>
199<p>The close callback no longer returns a value. Instead, it is called after the close flag has been set so it can override its value, if it chooses to, before event processing completes. You may however not call <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> from the close callback (or any other window related callback).</p>
200<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">int</span> GLFWCALL window_close_callback(<span class="keywordtype">void</span>);</div>
201</div><!-- fragment --></dd></dl>
202<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> window_close_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
203<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
204</div><!-- fragment --></dd></dl>
205<dl class="section note"><dt>Note</dt><dd>GLFW never clears the close flag to <code>GLFW_FALSE</code>, meaning you can use it for other reasons to close the window as well, for example the user choosing Quit from an in-game menu.</dd></dl>
206<h2><a class="anchor" id="moving_hints"></a>
207Persistent window hints</h2>
208<p >The <code>glfwOpenWindowHint</code> function has been renamed to <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>.</p>
209<p >Window hints are no longer reset to their default values on window creation, but instead retain their values until modified by <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> or <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>, or until the library is terminated and re-initialized.</p>
210<h2><a class="anchor" id="moving_video_modes"></a>
211Video mode enumeration</h2>
212<p >Video mode enumeration is now per-monitor. The <a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a> function now returns all available modes for a specific monitor instead of requiring you to guess how large an array you need. The <code>glfwGetDesktopMode</code> function, which had poorly defined behavior, has been replaced by <a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>, which returns the current mode of a monitor.</p>
213<h2><a class="anchor" id="moving_char_up"></a>
214Removal of character actions</h2>
215<p >The action parameter of the <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">character callback</a> has been removed. This was an artefact of the origin of GLFW, i.e. being developed in English by a Swede. However, many keyboard layouts require more than one key to produce characters with diacritical marks. Even the Swedish keyboard layout requires this for uncommon cases like ü.</p>
216<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> GLFWCALL character_callback(<span class="keywordtype">int</span> character, <span class="keywordtype">int</span> action);</div>
217</div><!-- fragment --></dd></dl>
218<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> character_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> character);</div>
219</div><!-- fragment --></dd></dl>
220<h2><a class="anchor" id="moving_cursorpos"></a>
221Cursor position changes</h2>
222<p >The <code>glfwGetMousePos</code> function has been renamed to <a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>, <code>glfwSetMousePos</code> to <a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> and <code>glfwSetMousePosCallback</code> to <a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a>.</p>
223<p >The cursor position is now <code>double</code> instead of <code>int</code>, both for the direct functions and for the callback. Some platforms can provide sub-pixel cursor movement and this data is now passed on to the application where available. On platforms where this is not provided, the decimal part is zero.</p>
224<p >GLFW 3 only allows you to position the cursor within a window using <a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> (formerly <code>glfwSetMousePos</code>) when that window is active. Unless the window is active, the function fails silently.</p>
225<h2><a class="anchor" id="moving_wheel"></a>
226Wheel position replaced by scroll offsets</h2>
227<p >The <code>glfwGetMouseWheel</code> function has been removed. Scrolling is the input of offsets and has no absolute position. The mouse wheel callback has been replaced by a <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">scroll callback</a> that receives two-dimensional floating point scroll offsets. This allows you to receive precise scroll data from for example modern touchpads.</p>
228<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> GLFWCALL mouse_wheel_callback(<span class="keywordtype">int</span> position);</div>
229</div><!-- fragment --></dd></dl>
230<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> scroll_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset);</div>
231</div><!-- fragment --></dd></dl>
232<dl class="section user"><dt>Removed functions</dt><dd><code>glfwGetMouseWheel</code></dd></dl>
233<h2><a class="anchor" id="moving_repeat"></a>
234Key repeat action</h2>
235<p >The <code>GLFW_KEY_REPEAT</code> enable has been removed and key repeat is always enabled for both keys and characters. A new key action, <code>GLFW_REPEAT</code>, has been added to allow the <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">key callback</a> to distinguish an initial key press from a repeat. Note that <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> still returns only <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
236<h2><a class="anchor" id="moving_keys"></a>
237Physical key input</h2>
238<p >GLFW 3 key tokens map to physical keys, unlike in GLFW 2 where they mapped to the values generated by the current keyboard layout. The tokens are named according to the values they would have using the standard US layout, but this is only a convenience, as most programmers are assumed to know that layout. This means that (for example) <code>GLFW_KEY_LEFT_BRACKET</code> is always a single key and is the same key in the same place regardless of what keyboard layouts the users of your program has.</p>
239<p >The key input facility was never meant for text input, although using it that way worked slightly better in GLFW 2. If you were using it to input text, you should be using the character callback instead, on both GLFW 2 and 3. This will give you the characters being input, as opposed to the keys being pressed.</p>
240<p >GLFW 3 has key tokens for all keys on a standard 105 key keyboard, so instead of having to remember whether to check for <code>a</code> or <code>A</code>, you now check for <a class="el" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff">GLFW_KEY_A</a>.</p>
241<h2><a class="anchor" id="moving_joystick"></a>
242Joystick function changes</h2>
243<p >The <code>glfwGetJoystickPos</code> function has been renamed to <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>.</p>
244<p >The <code>glfwGetJoystickParam</code> function and the <code>GLFW_PRESENT</code>, <code>GLFW_AXES</code> and <code>GLFW_BUTTONS</code> tokens have been replaced by the <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> function as well as axis and button counts returned by the <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> and <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> functions.</p>
245<h2><a class="anchor" id="moving_mbcs"></a>
246Win32 MBCS support</h2>
247<p >The Win32 port of GLFW 3 will not compile in <a href="https://msdn.microsoft.com/en-us/library/5z097dxa.aspx">MBCS mode</a>. However, because the use of the Unicode version of the Win32 API doesn't affect the process as a whole, but only those windows created using it, it's perfectly possible to call MBCS functions from other parts of the same application. Therefore, even if an application using GLFW has MBCS mode code, there's no need for GLFW itself to support it.</p>
248<h2><a class="anchor" id="moving_windows"></a>
249Support for versions of Windows older than XP</h2>
250<p >All explicit support for version of Windows older than XP has been removed. There is no code that actively prevents GLFW 3 from running on these earlier versions, but it uses Win32 functions that those versions lack.</p>
251<p >Windows XP was released in 2001, and by now (January 2015) it has not only replaced almost all earlier versions of Windows, but is itself rapidly being replaced by Windows 7 and 8. The MSDN library doesn't even provide documentation for version older than Windows 2000, making it difficult to maintain compatibility with these versions even if it was deemed worth the effort.</p>
252<p >The Win32 API has also not stood still, and GLFW 3 uses many functions only present on Windows XP or later. Even supporting an OS as new as XP (new from the perspective of GLFW 2, which still supports Windows 95) requires runtime checking for a number of functions that are present only on modern version of Windows.</p>
253<h2><a class="anchor" id="moving_syskeys"></a>
254Capture of system-wide hotkeys</h2>
255<p >The ability to disable and capture system-wide hotkeys like Alt+Tab has been removed. Modern applications, whether they're games, scientific visualisations or something else, are nowadays expected to be good desktop citizens and allow these hotkeys to function even when running in full screen mode.</p>
256<h2><a class="anchor" id="moving_terminate"></a>
257Automatic termination</h2>
258<p >GLFW 3 does not register <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> with <code>atexit</code> at initialization, because <code>exit</code> calls registered functions from the calling thread and while it is permitted to call <code>exit</code> from any thread, <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> must only be called from the main thread.</p>
259<p >To release all resources allocated by GLFW, you should call <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> yourself, from the main thread, before the program terminates. Note that this destroys all windows not already destroyed with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>, invalidating any window handles you may still have.</p>
260<h2><a class="anchor" id="moving_glu"></a>
261GLU header inclusion</h2>
262<p >GLFW 3 does not by default include the GLU header and GLU itself has been deprecated by <a href="https://en.wikipedia.org/wiki/Khronos_Group">Khronos</a>. <b>New projects should not use GLU</b>, but if you need it for legacy code that has been moved to GLFW 3, you can request that the GLFW header includes it by defining <a class="el" href="build_guide.html#GLFW_INCLUDE_GLU">GLFW_INCLUDE_GLU</a> before the inclusion of the GLFW header.</p>
263<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;GL/glfw.h&gt;</span></div>
264</div><!-- fragment --></dd></dl>
265<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_GLU</span></div>
266<div class="line"><span class="preprocessor">#include &lt;GLFW/glfw3.h&gt;</span></div>
267</div><!-- fragment --></dd></dl>
268<p>There are many libraries that offer replacements for the functionality offered by GLU. For the matrix helper functions, see math libraries like <a href="https://github.com/g-truc/glm">GLM</a> (for C++), <a href="https://github.com/datenwolf/linmath.h">linmath.h</a> (for C) and others. For the tessellation functions, see for example <a href="https://github.com/memononen/libtess2">libtess2</a>.</p>
269<h1><a class="anchor" id="moving_tables"></a>
270Name change tables</h1>
271<h2><a class="anchor" id="moving_renamed_functions"></a>
272Renamed functions</h2>
273<table class="markdownTable">
274<tr class="markdownTableHead">
275<th class="markdownTableHeadNone">GLFW 2 </th><th class="markdownTableHeadNone">GLFW 3 </th><th class="markdownTableHeadNone">Notes </th></tr>
276<tr class="markdownTableRowOdd">
277<td class="markdownTableBodyNone"><code>glfwOpenWindow</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> </td><td class="markdownTableBodyNone">All channel bit depths are now hints </td></tr>
278<tr class="markdownTableRowEven">
279<td class="markdownTableBodyNone"><code>glfwCloseWindow</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> </td><td class="markdownTableBodyNone"></td></tr>
280<tr class="markdownTableRowOdd">
281<td class="markdownTableBodyNone"><code>glfwOpenWindowHint</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> </td><td class="markdownTableBodyNone">Now accepts all <code>GLFW_*_BITS</code> tokens </td></tr>
282<tr class="markdownTableRowEven">
283<td class="markdownTableBodyNone"><code>glfwEnable</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> </td><td class="markdownTableBodyNone"></td></tr>
284<tr class="markdownTableRowOdd">
285<td class="markdownTableBodyNone"><code>glfwDisable</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> </td><td class="markdownTableBodyNone"></td></tr>
286<tr class="markdownTableRowEven">
287<td class="markdownTableBodyNone"><code>glfwGetMousePos</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a> </td><td class="markdownTableBodyNone"></td></tr>
288<tr class="markdownTableRowOdd">
289<td class="markdownTableBodyNone"><code>glfwSetMousePos</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> </td><td class="markdownTableBodyNone"></td></tr>
290<tr class="markdownTableRowEven">
291<td class="markdownTableBodyNone"><code>glfwSetMousePosCallback</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a> </td><td class="markdownTableBodyNone"></td></tr>
292<tr class="markdownTableRowOdd">
293<td class="markdownTableBodyNone"><code>glfwSetMouseWheelCallback</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a> </td><td class="markdownTableBodyNone">Accepts two-dimensional scroll offsets as doubles </td></tr>
294<tr class="markdownTableRowEven">
295<td class="markdownTableBodyNone"><code>glfwGetJoystickPos</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> </td><td class="markdownTableBodyNone"></td></tr>
296<tr class="markdownTableRowOdd">
297<td class="markdownTableBodyNone"><code>glfwGetWindowParam</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> </td><td class="markdownTableBodyNone"></td></tr>
298<tr class="markdownTableRowEven">
299<td class="markdownTableBodyNone"><code>glfwGetGLVersion</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> </td><td class="markdownTableBodyNone">Use <code>GLFW_CONTEXT_VERSION_MAJOR</code>, <code>GLFW_CONTEXT_VERSION_MINOR</code> and <code>GLFW_CONTEXT_REVISION</code> </td></tr>
300<tr class="markdownTableRowOdd">
301<td class="markdownTableBodyNone"><code>glfwGetDesktopMode</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> </td><td class="markdownTableBodyNone">Returns the current mode of a monitor </td></tr>
302<tr class="markdownTableRowEven">
303<td class="markdownTableBodyNone"><code>glfwGetJoystickParam</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> </td><td class="markdownTableBodyNone">The axis and button counts are provided by <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> and <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> </td></tr>
304</table>
305<h2><a class="anchor" id="moving_renamed_types"></a>
306Renamed types</h2>
307<table class="markdownTable">
308<tr class="markdownTableHead">
309<th class="markdownTableHeadNone">GLFW 2 </th><th class="markdownTableHeadNone">GLFW 3 </th><th class="markdownTableHeadNone">Notes </th></tr>
310<tr class="markdownTableRowOdd">
311<td class="markdownTableBodyNone"><code>GLFWmousewheelfun</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> </td><td class="markdownTableBodyNone"></td></tr>
312<tr class="markdownTableRowEven">
313<td class="markdownTableBodyNone"><code>GLFWmouseposfun</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> </td><td class="markdownTableBodyNone"></td></tr>
314</table>
315<h2><a class="anchor" id="moving_renamed_tokens"></a>
316Renamed tokens</h2>
317<table class="markdownTable">
318<tr class="markdownTableHead">
319<th class="markdownTableHeadNone">GLFW 2 </th><th class="markdownTableHeadNone">GLFW 3 </th><th class="markdownTableHeadNone">Notes </th></tr>
320<tr class="markdownTableRowOdd">
321<td class="markdownTableBodyNone"><code>GLFW_OPENGL_VERSION_MAJOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_CONTEXT_VERSION_MAJOR</code> </td><td class="markdownTableBodyNone">Renamed as it applies to OpenGL ES as well </td></tr>
322<tr class="markdownTableRowEven">
323<td class="markdownTableBodyNone"><code>GLFW_OPENGL_VERSION_MINOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_CONTEXT_VERSION_MINOR</code> </td><td class="markdownTableBodyNone">Renamed as it applies to OpenGL ES as well </td></tr>
324<tr class="markdownTableRowOdd">
325<td class="markdownTableBodyNone"><code>GLFW_FSAA_SAMPLES</code> </td><td class="markdownTableBodyNone"><code>GLFW_SAMPLES</code> </td><td class="markdownTableBodyNone">Renamed to match the OpenGL API </td></tr>
326<tr class="markdownTableRowEven">
327<td class="markdownTableBodyNone"><code>GLFW_ACTIVE</code> </td><td class="markdownTableBodyNone"><code>GLFW_FOCUSED</code> </td><td class="markdownTableBodyNone">Renamed to match the window focus callback </td></tr>
328<tr class="markdownTableRowOdd">
329<td class="markdownTableBodyNone"><code>GLFW_WINDOW_NO_RESIZE</code> </td><td class="markdownTableBodyNone"><code>GLFW_RESIZABLE</code> </td><td class="markdownTableBodyNone">The default has been inverted </td></tr>
330<tr class="markdownTableRowEven">
331<td class="markdownTableBodyNone"><code>GLFW_MOUSE_CURSOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_CURSOR</code> </td><td class="markdownTableBodyNone">Used with <a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> </td></tr>
332<tr class="markdownTableRowOdd">
333<td class="markdownTableBodyNone"><code>GLFW_KEY_ESC</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_ESCAPE</code> </td><td class="markdownTableBodyNone"></td></tr>
334<tr class="markdownTableRowEven">
335<td class="markdownTableBodyNone"><code>GLFW_KEY_DEL</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_DELETE</code> </td><td class="markdownTableBodyNone"></td></tr>
336<tr class="markdownTableRowOdd">
337<td class="markdownTableBodyNone"><code>GLFW_KEY_PAGEUP</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_PAGE_UP</code> </td><td class="markdownTableBodyNone"></td></tr>
338<tr class="markdownTableRowEven">
339<td class="markdownTableBodyNone"><code>GLFW_KEY_PAGEDOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_PAGE_DOWN</code> </td><td class="markdownTableBodyNone"></td></tr>
340<tr class="markdownTableRowOdd">
341<td class="markdownTableBodyNone"><code>GLFW_KEY_KP_NUM_LOCK</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_NUM_LOCK</code> </td><td class="markdownTableBodyNone"></td></tr>
342<tr class="markdownTableRowEven">
343<td class="markdownTableBodyNone"><code>GLFW_KEY_LCTRL</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_CONTROL</code> </td><td class="markdownTableBodyNone"></td></tr>
344<tr class="markdownTableRowOdd">
345<td class="markdownTableBodyNone"><code>GLFW_KEY_LSHIFT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_SHIFT</code> </td><td class="markdownTableBodyNone"></td></tr>
346<tr class="markdownTableRowEven">
347<td class="markdownTableBodyNone"><code>GLFW_KEY_LALT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_ALT</code> </td><td class="markdownTableBodyNone"></td></tr>
348<tr class="markdownTableRowOdd">
349<td class="markdownTableBodyNone"><code>GLFW_KEY_LSUPER</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_SUPER</code> </td><td class="markdownTableBodyNone"></td></tr>
350<tr class="markdownTableRowEven">
351<td class="markdownTableBodyNone"><code>GLFW_KEY_RCTRL</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_CONTROL</code> </td><td class="markdownTableBodyNone"></td></tr>
352<tr class="markdownTableRowOdd">
353<td class="markdownTableBodyNone"><code>GLFW_KEY_RSHIFT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_SHIFT</code> </td><td class="markdownTableBodyNone"></td></tr>
354<tr class="markdownTableRowEven">
355<td class="markdownTableBodyNone"><code>GLFW_KEY_RALT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_ALT</code> </td><td class="markdownTableBodyNone"></td></tr>
356<tr class="markdownTableRowOdd">
357<td class="markdownTableBodyNone"><code>GLFW_KEY_RSUPER</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_SUPER</code> </td><td class="markdownTableBodyNone"></td></tr>
358</table>
359</div></div><!-- contents -->
360</div><!-- PageDoc -->
361<address class="footer">
362<p>
363Last update on Thu Oct 28 2021 for GLFW 3.3.5
364</p>
365</address>
366</body>
367</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_f.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_f.png
new file mode 100644
index 0000000..72a58a5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_f.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_g.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_g.png
new file mode 100644
index 0000000..2093a23
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_g.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_h.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_h.png
new file mode 100644
index 0000000..33389b1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/nav_h.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news.html
new file mode 100644
index 0000000..1492688
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news.html
@@ -0,0 +1,606 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Release notes</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Release notes </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#news_33">Release notes for version 3.3</a><ul><li class="level2"><a href="#features_33">New features in version 3.3</a><ul><li class="level3"><a href="#gamepad_33">Gamepad input via SDL_GameControllerDB</a></li>
69<li class="level3"><a href="#moltenvk_33">Support for Vulkan on macOS via MoltenVK</a></li>
70<li class="level3"><a href="#content_scale_33">Content scale queries for DPI-aware rendering</a></li>
71<li class="level3"><a href="#setwindowattrib_33">Support for updating window attributes</a></li>
72<li class="level3"><a href="#raw_motion_33">Support for raw mouse motion</a></li>
73<li class="level3"><a href="#joysticks_33">Joystick hats</a></li>
74<li class="level3"><a href="#geterror_33">Error query</a></li>
75<li class="level3"><a href="#init_hints_33">Support for initialization hints</a></li>
76<li class="level3"><a href="#attention_33">User attention request</a></li>
77<li class="level3"><a href="#maximize_33">Window maximization callback</a></li>
78<li class="level3"><a href="#workarea_33">Query for the monitor work area</a></li>
79<li class="level3"><a href="#transparency_33">Transparent windows and framebuffers</a></li>
80<li class="level3"><a href="#key_scancode_33">Query for the scancode of a key</a></li>
81<li class="level3"><a href="#center_cursor_33">Cursor centering window hint</a></li>
82<li class="level3"><a href="#cursor_hover_33">Mouse cursor hover window attribute</a></li>
83<li class="level3"><a href="#focusonshow_33">Window hint and attribute for input focus on show</a></li>
84<li class="level3"><a href="#device_userptr_33">Monitor and joystick user pointers</a></li>
85<li class="level3"><a href="#macos_nib_33">macOS menu bar from nib file</a></li>
86<li class="level3"><a href="#glext_33">Support for more context creation extensions</a></li>
87<li class="level3"><a href="#osmesa_33">OSMesa off-screen context creation support</a></li>
88</ul>
89</li>
90<li class="level2"><a href="#caveats_33">Caveats for version 3.3</a><ul><li class="level3"><a href="#joystick_layout_33">Layout of joysticks have changed</a></li>
91<li class="level3"><a href="#wait_events_33">No window required to wait for events</a></li>
92<li class="level3"><a href="#gamma_ramp_size_33">Gamma ramp size of 256 may be rejected</a></li>
93<li class="level3"><a href="#xinput_deadzone_33">Windows XInput deadzone removed</a></li>
94<li class="level3"><a href="#x11_clipboard_33">X11 clipboard transfer limits</a></li>
95<li class="level3"><a href="#x11_linking_33">X11 extension libraries are loaded dynamically</a></li>
96<li class="level3"><a href="#cmake_version_33">CMake 3.0 or later is required</a></li>
97<li class="level3"><a href="#caveat_fbtransparency_33">Framebuffer transparency requires DWM transparency</a></li>
98</ul>
99</li>
100<li class="level2"><a href="#deprecations_33">Deprecations in version 3.3</a><ul><li class="level3"><a href="#charmods_callback_33">Character with modifiers callback</a></li>
101<li class="level3"><a href="#clipboard_window_33">Window parameter to clipboard functions</a></li>
102</ul>
103</li>
104<li class="level2"><a href="#removals_33">Removals in 3.3</a><ul><li class="level3"><a href="#macos_options_33">macOS specific CMake options and macros</a></li>
105<li class="level3"><a href="#vulkan_sdk_33">LunarG Vulkan SDK dependency</a></li>
106<li class="level3"><a href="#lib_suffix_33">CMake option LIB_SUFFIX</a></li>
107<li class="level3"><a href="#mir_removed_33">Mir support</a></li>
108</ul>
109</li>
110<li class="level2"><a href="#symbols_33">New symbols in version 3.3</a><ul><li class="level3"><a href="#functions_33">New functions in version 3.3</a></li>
111<li class="level3"><a href="#types_33">New types in version 3.3</a></li>
112<li class="level3"><a href="#constants_33">New constants in version 3.3</a></li>
113</ul>
114</li>
115</ul>
116</li>
117<li class="level1"><a href="#news_32">Release notes for 3.2</a><ul><li class="level2"><a href="#features_32">New features in version 3.2</a><ul><li class="level3"><a href="#news_32_vulkan">Support for Vulkan</a></li>
118<li class="level3"><a href="#news_32_setwindowmonitor">Window mode switching</a></li>
119<li class="level3"><a href="#news_32_maximize">Window maxmimization support</a></li>
120<li class="level3"><a href="#news_32_focus">Window input focus control</a></li>
121<li class="level3"><a href="#news_32_sizelimits">Window size limit support</a></li>
122<li class="level3"><a href="#news_32_keyname">Localized key names</a></li>
123<li class="level3"><a href="#news_32_waittimeout">Wait for events with timeout</a></li>
124<li class="level3"><a href="#news_32_icon">Window icon support</a></li>
125<li class="level3"><a href="#news_32_timer">Raw timer access</a></li>
126<li class="level3"><a href="#news_32_joystick">Joystick connection callback</a></li>
127<li class="level3"><a href="#news_32_noapi">Context-less windows</a></li>
128<li class="level3"><a href="#news_32_contextapi">Run-time context creation API selection</a></li>
129<li class="level3"><a href="#news_32_noerror">Error-free context creation</a></li>
130<li class="level3"><a href="#news_32_cmake">CMake config-file package support</a></li>
131</ul>
132</li>
133</ul>
134</li>
135<li class="level1"><a href="#news_31">Release notes for 3.1</a><ul><li class="level2"><a href="#features_31">New features in version 3.1</a><ul><li class="level3"><a href="#news_31_cursor">Custom mouse cursor images</a></li>
136<li class="level3"><a href="#news_31_drop">Path drop event</a></li>
137<li class="level3"><a href="#news_31_emptyevent">Main thread wake-up</a></li>
138<li class="level3"><a href="#news_31_framesize">Window frame size query</a></li>
139<li class="level3"><a href="#news_31_autoiconify">Simultaneous multi-monitor rendering</a></li>
140<li class="level3"><a href="#news_31_floating">Floating windows</a></li>
141<li class="level3"><a href="#news_31_focused">Initially unfocused windows</a></li>
142<li class="level3"><a href="#news_31_direct">Direct access for window attributes and cursor position</a></li>
143<li class="level3"><a href="#news_31_charmods">Character with modifiers callback</a></li>
144<li class="level3"><a href="#news_31_single">Single buffered framebuffers</a></li>
145<li class="level3"><a href="#news_31_glext">Macro for including extension header</a></li>
146<li class="level3"><a href="#news_31_release">Context release behaviors</a></li>
147<li class="level3"><a href="#news_31_wayland">(Experimental) Wayland support</a></li>
148<li class="level3"><a href="#news_31_mir">(Experimental) Mir support</a></li>
149</ul>
150</li>
151</ul>
152</li>
153<li class="level1"><a href="#news_30">Release notes for 3.0</a><ul><li class="level2"><a href="#features_30">New features in version 3.0</a><ul><li class="level3"><a href="#news_30_cmake">CMake build system</a></li>
154<li class="level3"><a href="#news_30_multiwnd">Multi-window support</a></li>
155<li class="level3"><a href="#news_30_multimon">Multi-monitor support</a></li>
156<li class="level3"><a href="#news_30_unicode">Unicode support</a></li>
157<li class="level3"><a href="#news_30_clipboard">Clipboard text I/O</a></li>
158<li class="level3"><a href="#news_30_gamma">Gamma ramp support</a></li>
159<li class="level3"><a href="#news_30_gles">OpenGL ES support</a></li>
160<li class="level3"><a href="#news_30_egl">(Experimental) EGL support</a></li>
161<li class="level3"><a href="#news_30_hidpi">High-DPI support</a></li>
162<li class="level3"><a href="#news_30_error">Error callback</a></li>
163<li class="level3"><a href="#news_30_wndptr">Per-window user pointer</a></li>
164<li class="level3"><a href="#news_30_iconifyfun">Window iconification callback</a></li>
165<li class="level3"><a href="#news_30_wndposfun">Window position callback</a></li>
166<li class="level3"><a href="#news_30_wndpos">Window position query</a></li>
167<li class="level3"><a href="#news_30_focusfun">Window focus callback</a></li>
168<li class="level3"><a href="#news_30_enterleave">Cursor enter/leave callback</a></li>
169<li class="level3"><a href="#news_30_wndtitle">Initial window title</a></li>
170<li class="level3"><a href="#news_30_hidden">Hidden windows</a></li>
171<li class="level3"><a href="#news_30_undecorated">Undecorated windows</a></li>
172<li class="level3"><a href="#news_30_keymods">Modifier key bit masks</a></li>
173<li class="level3"><a href="#news_30_scancode">Platform-specific scancodes</a></li>
174<li class="level3"><a href="#news_30_jsname">Joystick names</a></li>
175<li class="level3"><a href="#news_30_doxygen">Doxygen documentation</a></li>
176</ul>
177</li>
178</ul>
179</li>
180</ul>
181</div>
182<div class="textblock"><h1><a class="anchor" id="news_33"></a>
183Release notes for version 3.3</h1>
184<p >These are the release notes for version 3.3. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
185<p >Please review the caveats, deprecations and removals if your project was written against an earlier version of GLFW 3.</p>
186<h2><a class="anchor" id="features_33"></a>
187New features in version 3.3</h2>
188<h3><a class="anchor" id="gamepad_33"></a>
189Gamepad input via SDL_GameControllerDB</h3>
190<p >GLFW can now remap game controllers to a standard Xbox-like layout using a built-in copy of SDL_GameControllerDB. Call <a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> to check if a joystick has a mapping, <a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a> to retrieve its input state, <a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> to add newer mappings and <a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a> and <a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a> for mapping related information.</p>
191<p >For more information see <a class="el" href="input_guide.html#gamepad">Gamepad input</a>.</p>
192<h3><a class="anchor" id="moltenvk_33"></a>
193Support for Vulkan on macOS via MoltenVK</h3>
194<p >GLFW now supports <a href="https://moltengl.com/moltenvk/">MoltenVK</a>, a Vulkan implementation on top of the Metal API, and its <code>VK_MVK_macos_surface</code> window surface creation extension. MoltenVK is included in the <a href="https://vulkan.lunarg.com/">macOS Vulkan SDK</a>.</p>
195<p >For more information see <a class="el" href="vulkan_guide.html">Vulkan guide</a>.</p>
196<h3><a class="anchor" id="content_scale_33"></a>
197Content scale queries for DPI-aware rendering</h3>
198<p >GLFW now provides content scales for windows and monitors, i.e. the ratio between their current DPI and the platform's default DPI, with <a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a> and <a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>.</p>
199<p >Changes of the content scale of a window can be received with the window content scale callback, set with <a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a>.</p>
200<p >The <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">GLFW_SCALE_TO_MONITOR</a> window hint enables automatic resizing of a window by the content scale of the monitor it is placed, on platforms like Windows where this is necessary. This takes effect both on creation and when the window is moved between monitors. It is related to but different from <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">GLFW_COCOA_RETINA_FRAMEBUFFER</a>.</p>
201<p >For more information see <a class="el" href="window_guide.html#window_scale">Window content scale</a>.</p>
202<h3><a class="anchor" id="setwindowattrib_33"></a>
203Support for updating window attributes</h3>
204<p >GLFW now supports changing the <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">GLFW_DECORATED</a>, <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">GLFW_RESIZABLE</a>, <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">GLFW_FLOATING</a>, <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">GLFW_AUTO_ICONIFY</a> and <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">GLFW_FOCUS_ON_SHOW</a> attributes for existing windows with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
205<p >For more information see <a class="el" href="window_guide.html#window_attribs">Window attributes</a>.</p>
206<h3><a class="anchor" id="raw_motion_33"></a>
207Support for raw mouse motion</h3>
208<p >GLFW now supports raw (unscaled and unaccelerated) mouse motion in disabled cursor mode with the <a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a> input mode. Raw mouse motion input is not yet implemented on macOS. Call <a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> to check if GLFW can provide raw mouse motion on the current system.</p>
209<p >For more information see <a class="el" href="input_guide.html#raw_mouse_motion">Raw mouse motion</a>.</p>
210<h3><a class="anchor" id="joysticks_33"></a>
211Joystick hats</h3>
212<p >GLFW can now return the state of hats (i.e. POVs or D-pads) of a joystick with <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>. For compatibility, hats are also exposed as buttons. This can be disabled with the <a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a> initialization hint.</p>
213<p >For more information see <a class="el" href="input_guide.html#joystick_hat">Joystick hat states</a>.</p>
214<h3><a class="anchor" id="geterror_33"></a>
215Error query</h3>
216<p >GLFW now supports querying the last error code for the calling thread and its human-readable description with <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>. This can be used instead of or together with the error callback.</p>
217<p >For more information see <a class="el" href="intro_guide.html#error_handling">Error handling</a>.</p>
218<h3><a class="anchor" id="init_hints_33"></a>
219Support for initialization hints</h3>
220<p >GLFW now supports setting library initialization hints with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>. These must be set before initialization to take effect. Some of these hints are platform specific but are safe to set on any platform.</p>
221<p >For more information see <a class="el" href="intro_guide.html#init_hints">Initialization hints</a>.</p>
222<h3><a class="anchor" id="attention_33"></a>
223User attention request</h3>
224<p >GLFW now supports requesting user attention with <a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>. Where possible this calls attention to the specified window. On platforms like macOS it calls attention to the whole application.</p>
225<p >For more information see <a class="el" href="window_guide.html#window_attention">Window attention request</a>.</p>
226<h3><a class="anchor" id="maximize_33"></a>
227Window maximization callback</h3>
228<p >GLFW now supports notifying the application that the window has been maximized <a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a>. This is called both when the window was maximized by the user and when it was done with <a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>.</p>
229<p >For more information see <a class="el" href="window_guide.html#window_maximize">Window maximization</a>.</p>
230<h3><a class="anchor" id="workarea_33"></a>
231Query for the monitor work area</h3>
232<p >GLFW now supports querying the work area of a monitor, i.e. the area not occupied by task bars or global menu bars, with <a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>. On platforms that lack this concept, the whole area of the monitor is returned.</p>
233<p >For more information see <a class="el" href="monitor_guide.html#monitor_workarea">Work area</a>.</p>
234<h3><a class="anchor" id="transparency_33"></a>
235Transparent windows and framebuffers</h3>
236<p >GLFW now supports the creation of windows with transparent framebuffers on systems with desktop compositing enabled with the <a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a> window hint and attribute. This hint must be set before window creation and leaves any window decorations opaque.</p>
237<p >GLFW now also supports whole window transparency with <a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a> and <a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>. This value controls the opacity of the whole window including decorations and unlike framebuffer transparency can be changed at any time after window creation.</p>
238<p >For more information see <a class="el" href="window_guide.html#window_transparency">Window transparency</a>.</p>
239<h3><a class="anchor" id="key_scancode_33"></a>
240Query for the scancode of a key</h3>
241<p >GLFW now supports querying the platform dependent scancode of any physical key with <a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>.</p>
242<p >For more information see <a class="el" href="input_guide.html#input_key">Key input</a>.</p>
243<h3><a class="anchor" id="center_cursor_33"></a>
244Cursor centering window hint</h3>
245<p >GLFW now supports controlling whether the cursor is centered over newly created full screen windows with the <a class="el" href="window_guide.html#GLFW_CENTER_CURSOR_hint">GLFW_CENTER_CURSOR</a> window hint. It is enabled by default.</p>
246<h3><a class="anchor" id="cursor_hover_33"></a>
247Mouse cursor hover window attribute</h3>
248<p >GLFW now supports polling whether the cursor is hovering over the window content area with the <a class="el" href="window_guide.html#GLFW_HOVERED_attrib">GLFW_HOVERED</a> window attribute. This attribute corresponds to the <a class="el" href="input_guide.html#cursor_enter">cursor enter/leave</a> event.</p>
249<h3><a class="anchor" id="focusonshow_33"></a>
250Window hint and attribute for input focus on show</h3>
251<p >GLFW now has the <a class="el" href="window_guide.html#GLFW_DECORATED_hint">GLFW_FOCUS_ON_SHOW</a> window hint and attribute for controlling whether a window gets input focus when shown. It is enabled by default. It applies both when creating an visible window with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> and when showing it with <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>.</p>
252<p >This is a workaround for GLFW 3.0 lacking <a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a> and will be corrected in the next major version.</p>
253<p >For more information see <a class="el" href="window_guide.html#window_hide">Window visibility</a>.</p>
254<h3><a class="anchor" id="device_userptr_33"></a>
255Monitor and joystick user pointers</h3>
256<p >GLFW now supports setting and querying user pointers for connected monitors and joysticks with <a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a>, <a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a>, <a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> and <a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a>.</p>
257<p >For more information see <a class="el" href="monitor_guide.html#monitor_userptr">User pointer</a> and <a class="el" href="input_guide.html#joystick_userptr">Joystick user pointer</a>.</p>
258<h3><a class="anchor" id="macos_nib_33"></a>
259macOS menu bar from nib file</h3>
260<p >GLFW will now load a <code>MainMenu.nib</code> file if found in the <code>Contents/Resources</code> directory of the application bundle, as a way to replace the GLFW menu bar without recompiling GLFW. This behavior can be disabled with the <a class="el" href="intro_guide.html#GLFW_COCOA_MENUBAR_hint">GLFW_COCOA_MENUBAR</a> initialization hint.</p>
261<h3><a class="anchor" id="glext_33"></a>
262Support for more context creation extensions</h3>
263<p >The context hint <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">GLFW_SRGB_CAPABLE</a> now supports OpenGL ES via <code>WGL_EXT_colorspace</code>, the context hint <a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a> now supports <code>WGL_ARB_create_context_no_error</code> and <code>GLX_ARB_create_context_no_error</code>, the context hint <a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a> now supports <code>EGL_KHR_context_flush_control</code> and <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> now supports <code>EGL_KHR_get_all_proc_addresses</code>.</p>
264<h3><a class="anchor" id="osmesa_33"></a>
265OSMesa off-screen context creation support</h3>
266<p >GLFW now supports creating off-screen OpenGL contexts using <a href="https://www.mesa3d.org/osmesa.html">OSMesa</a> by setting <a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_hint">GLFW_CONTEXT_CREATION_API</a> to <code>GLFW_OSMESA_CONTEXT_API</code>. Native access function have been added to retrieve the OSMesa color and depth buffers.</p>
267<p >There is also a new null backend that uses OSMesa as its native context creation API, intended for automated testing. This backend does not provide input.</p>
268<h2><a class="anchor" id="caveats_33"></a>
269Caveats for version 3.3</h2>
270<h3><a class="anchor" id="joystick_layout_33"></a>
271Layout of joysticks have changed</h3>
272<p >The way joystick elements are arranged have changed to match SDL2 in order to support SDL_GameControllerDB mappings. The layout of joysticks may change again if required for compatibility with SDL2. If you need a known and stable layout for game controllers, see if you can switch to <a class="el" href="input_guide.html#gamepad">Gamepad input</a>.</p>
273<p >Existing code that depends on a specific joystick layout will likely have to be updated.</p>
274<h3><a class="anchor" id="wait_events_33"></a>
275No window required to wait for events</h3>
276<p >The <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> and <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> functions no longer need a window to be created to wait for events. Before version 3.3 these functions would return immediately if there were no user-created windows. On platforms where only windows can receive events, an internal helper window is used.</p>
277<p >Existing code that depends on the earlier behavior will likely have to be updated.</p>
278<h3><a class="anchor" id="gamma_ramp_size_33"></a>
279Gamma ramp size of 256 may be rejected</h3>
280<p >The documentation for versions before 3.3 stated that a gamma ramp size of 256 would always be accepted. This was never the case on X11 and could lead to artifacts on macOS. The <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> function has been updated to always generate a ramp of the correct size.</p>
281<p >Existing code that hardcodes a size of 256 should be updated to use the size of the current ramp of a monitor when setting a new ramp for that monitor.</p>
282<h3><a class="anchor" id="xinput_deadzone_33"></a>
283Windows XInput deadzone removed</h3>
284<p >GLFW no longer applies any deadzone to the input state received from the XInput API. This was never done for any other platform joystick API so this change makes the behavior more consistent but you will need to apply your own deadzone if desired.</p>
285<h3><a class="anchor" id="x11_clipboard_33"></a>
286X11 clipboard transfer limits</h3>
287<p >GLFW now supports reading clipboard text via the <code>INCR</code> method, which removes the limit on how much text can be read with <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>. However, writing via this method is not yet supported, so you may not be able to write a very large string with <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> even if you read it from the clipboard earlier.</p>
288<p >The exact size limit for writing to the clipboard is negotiated with each receiving application but is at least several tens of kilobytes. Note that only the read limit has changed. Any string that could be written before still can be.</p>
289<h3><a class="anchor" id="x11_linking_33"></a>
290X11 extension libraries are loaded dynamically</h3>
291<p >GLFW now loads all X11 extension libraries at initialization. The only X11 library you need to link against is <code>libX11</code>. The header files for the extension libraries are still required for compilation.</p>
292<p >Existing projects and makefiles that link GLFW directly against the extension libraries should still build correctly but will add these libraries as load-time dependencies.</p>
293<h3><a class="anchor" id="cmake_version_33"></a>
294CMake 3.0 or later is required</h3>
295<p >The minimum CMake version has been raised from 2.8.12 to 3.0. This is only a requirement of the GLFW CMake files. The GLFW source files do not depend on CMake.</p>
296<h3><a class="anchor" id="caveat_fbtransparency_33"></a>
297Framebuffer transparency requires DWM transparency</h3>
298<p >GLFW no longer supports framebuffer transparency enabled via <a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a> on Windows 7 if DWM transparency is off (the Transparency setting under Personalization &gt; Window Color).</p>
299<h2><a class="anchor" id="deprecations_33"></a>
300Deprecations in version 3.3</h2>
301<h3><a class="anchor" id="charmods_callback_33"></a>
302Character with modifiers callback</h3>
303<p >The character with modifiers callback set with <a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> has been deprecated and should if possible not be used.</p>
304<p >Existing code should still work but further bug fixes will likely not be made. The callback will be removed in the next major version.</p>
305<h3><a class="anchor" id="clipboard_window_33"></a>
306Window parameter to clipboard functions</h3>
307<p >The window parameter of the clipboard functions <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> and <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> has been deprecated and is no longer used on any platform. On platforms where the clipboard must be owned by a specific window, an internal helper window is used.</p>
308<p >Existing code should still work unless it depends on a specific window owning the clipboard. New code may pass <code>NULL</code> as the window argument. The parameter will be removed in a future release.</p>
309<h2><a class="anchor" id="removals_33"></a>
310Removals in 3.3</h2>
311<h3><a class="anchor" id="macos_options_33"></a>
312macOS specific CMake options and macros</h3>
313<p >The <code>GLFW_USE_RETINA</code>, <code>GLFW_USE_CHDIR</code> and <code>GLFW_USE_MENUBAR</code> CMake options and the <code>_GLFW_USE_RETINA</code>, <code>_GLFW_USE_CHDIR</code> and <code>_GLFW_USE_MENUBAR</code> compile-time macros have been removed.</p>
314<p >These options and macros are replaced by the window hint <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">GLFW_COCOA_RETINA_FRAMEBUFFER</a> and the init hints <a class="el" href="intro_guide.html#GLFW_COCOA_CHDIR_RESOURCES_hint">GLFW_COCOA_CHDIR_RESOURCES</a> and <a class="el" href="intro_guide.html#GLFW_COCOA_MENUBAR_hint">GLFW_COCOA_MENUBAR</a>.</p>
315<p >Existing projects and makefiles that set these options or define these macros during compilation of GLFW will still build but it will have no effect and the default behaviors will be used.</p>
316<h3><a class="anchor" id="vulkan_sdk_33"></a>
317LunarG Vulkan SDK dependency</h3>
318<p >The GLFW test programs that previously depended on the LunarG Vulkan SDK now instead uses a Vulkan loader generated by <a href="https://github.com/Dav1dde/glad">glad2</a>. This means the GLFW CMake files no longer look for the Vulkan SDK.</p>
319<p >Existing CMake projects that depended on the Vulkan SDK cache variables from GLFW will need to call <code>find_package(Vulkan)</code> themselves. CMake 3.7 and later already comes with a <a href="https://cmake.org/cmake/help/latest/module/FindVulkan.html">Vulkan find module</a> similar to the one GLFW previously included.</p>
320<h3><a class="anchor" id="lib_suffix_33"></a>
321CMake option LIB_SUFFIX</h3>
322<p >The <code>LIB_SUFFIX</code> CMake option has been removed. GLFW now uses the GNUInstallDirs CMake package to handle platform specific details like the library directory suffix and the <code>LIB_SUFFIX</code> CMake option has been removed.</p>
323<p >Existing projects and makefiles that set the <code>LIB_SUFFIX</code> option will use the suffix chosen by the GNUInstallDirs package and the option will be ignored.</p>
324<h3><a class="anchor" id="mir_removed_33"></a>
325Mir support</h3>
326<p >The experimental Mir support has been completely removed as the Mir project has implemented support for the Wayland protocol and is recommending that applications use that instead.</p>
327<p >Existing projects and makefiles that select Mir when compiling GLFW will fail. Use Wayland or X11 instead.</p>
328<h2><a class="anchor" id="symbols_33"></a>
329New symbols in version 3.3</h2>
330<h3><a class="anchor" id="functions_33"></a>
331New functions in version 3.3</h3>
332<ul>
333<li><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></li>
334<li><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></li>
335<li><a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a></li>
336<li><a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></li>
337<li><a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a></li>
338<li><a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a></li>
339<li><a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a></li>
340<li><a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></li>
341<li><a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></li>
342<li><a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></li>
343<li><a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a></li>
344<li><a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></li>
345<li><a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a></li>
346<li><a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></li>
347<li><a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a></li>
348<li><a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a></li>
349<li><a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a></li>
350<li><a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a></li>
351<li><a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a></li>
352<li><a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a></li>
353<li><a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></li>
354<li><a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a></li>
355<li><a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></li>
356<li><a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></li>
357</ul>
358<h3><a class="anchor" id="types_33"></a>
359New types in version 3.3</h3>
360<ul>
361<li><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a></li>
362<li><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a></li>
363<li><a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a></li>
364</ul>
365<h3><a class="anchor" id="constants_33"></a>
366New constants in version 3.3</h3>
367<ul>
368<li><a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a></li>
369<li><a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a></li>
370<li><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a></li>
371<li><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a></li>
372<li><a class="el" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">GLFW_CENTER_CURSOR</a></li>
373<li><a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a></li>
374<li><a class="el" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a></li>
375<li><a class="el" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">GLFW_FOCUS_ON_SHOW</a></li>
376<li><a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">GLFW_SCALE_TO_MONITOR</a></li>
377<li><a class="el" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">GLFW_COCOA_RETINA_FRAMEBUFFER</a></li>
378<li><a class="el" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">GLFW_COCOA_FRAME_NAME</a></li>
379<li><a class="el" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">GLFW_COCOA_GRAPHICS_SWITCHING</a></li>
380<li><a class="el" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">GLFW_X11_CLASS_NAME</a></li>
381<li><a class="el" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">GLFW_X11_INSTANCE_NAME</a></li>
382<li><a class="el" href="glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3">GLFW_OSMESA_CONTEXT_API</a></li>
383<li><a class="el" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd">GLFW_HAT_CENTERED</a></li>
384<li><a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a></li>
385<li><a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a></li>
386<li><a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a></li>
387<li><a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a></li>
388<li><a class="el" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693">GLFW_HAT_RIGHT_UP</a></li>
389<li><a class="el" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5">GLFW_HAT_RIGHT_DOWN</a></li>
390<li><a class="el" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129">GLFW_HAT_LEFT_UP</a></li>
391<li><a class="el" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19">GLFW_HAT_LEFT_DOWN</a></li>
392<li><a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a></li>
393<li><a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a></li>
394<li><a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a></li>
395<li><a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a></li>
396<li><a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></li>
397<li><a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></li>
398<li><a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></li>
399<li><a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></li>
400<li><a class="el" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3">GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</a></li>
401<li><a class="el" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f">GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</a></li>
402<li><a class="el" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf">GLFW_GAMEPAD_BUTTON_BACK</a></li>
403<li><a class="el" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021">GLFW_GAMEPAD_BUTTON_START</a></li>
404<li><a class="el" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc">GLFW_GAMEPAD_BUTTON_GUIDE</a></li>
405<li><a class="el" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a">GLFW_GAMEPAD_BUTTON_LEFT_THUMB</a></li>
406<li><a class="el" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a">GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</a></li>
407<li><a class="el" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a">GLFW_GAMEPAD_BUTTON_DPAD_UP</a></li>
408<li><a class="el" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6">GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</a></li>
409<li><a class="el" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c">GLFW_GAMEPAD_BUTTON_DPAD_DOWN</a></li>
410<li><a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></li>
411<li><a class="el" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb">GLFW_GAMEPAD_BUTTON_LAST</a></li>
412<li><a class="el" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a">GLFW_GAMEPAD_BUTTON_CROSS</a></li>
413<li><a class="el" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82">GLFW_GAMEPAD_BUTTON_CIRCLE</a></li>
414<li><a class="el" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f">GLFW_GAMEPAD_BUTTON_SQUARE</a></li>
415<li><a class="el" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802">GLFW_GAMEPAD_BUTTON_TRIANGLE</a></li>
416<li><a class="el" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38">GLFW_GAMEPAD_AXIS_LEFT_X</a></li>
417<li><a class="el" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5">GLFW_GAMEPAD_AXIS_LEFT_Y</a></li>
418<li><a class="el" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc">GLFW_GAMEPAD_AXIS_RIGHT_X</a></li>
419<li><a class="el" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4">GLFW_GAMEPAD_AXIS_RIGHT_Y</a></li>
420<li><a class="el" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e">GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</a></li>
421<li><a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></li>
422<li><a class="el" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86">GLFW_GAMEPAD_AXIS_LAST</a></li>
423</ul>
424<h1><a class="anchor" id="news_32"></a>
425Release notes for 3.2</h1>
426<p >These are the release notes for version 3.2. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
427<h2><a class="anchor" id="features_32"></a>
428New features in version 3.2</h2>
429<h3><a class="anchor" id="news_32_vulkan"></a>
430Support for Vulkan</h3>
431<p >GLFW now supports basic integration with Vulkan with <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>, <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>, <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> and <a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>. Vulkan header inclusion can be selected with <a class="el" href="build_guide.html#GLFW_INCLUDE_VULKAN">GLFW_INCLUDE_VULKAN</a>.</p>
432<h3><a class="anchor" id="news_32_setwindowmonitor"></a>
433Window mode switching</h3>
434<p >GLFW now supports switching between windowed and full screen modes and updating the monitor and desired resolution and refresh rate of full screen windows with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>.</p>
435<h3><a class="anchor" id="news_32_maximize"></a>
436Window maxmimization support</h3>
437<p >GLFW now supports window maximization with <a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a> and the <a class="el" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a> window hint and attribute.</p>
438<h3><a class="anchor" id="news_32_focus"></a>
439Window input focus control</h3>
440<p >GLFW now supports giving windows input focus with <a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>.</p>
441<h3><a class="anchor" id="news_32_sizelimits"></a>
442Window size limit support</h3>
443<p >GLFW now supports setting both absolute and relative window size limits with <a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a> and <a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>.</p>
444<h3><a class="anchor" id="news_32_keyname"></a>
445Localized key names</h3>
446<p >GLFW now supports querying the localized name of printable keys with <a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>, either by key token or by scancode.</p>
447<h3><a class="anchor" id="news_32_waittimeout"></a>
448Wait for events with timeout</h3>
449<p >GLFW now supports waiting for events for a set amount of time with <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a>.</p>
450<h3><a class="anchor" id="news_32_icon"></a>
451Window icon support</h3>
452<p >GLFW now supports setting the icon of windows with <a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>.</p>
453<h3><a class="anchor" id="news_32_timer"></a>
454Raw timer access</h3>
455<p >GLFW now supports raw timer values with <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a> and <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>.</p>
456<h3><a class="anchor" id="news_32_joystick"></a>
457Joystick connection callback</h3>
458<p >GLFW now supports notifying when a joystick has been connected or disconnected with <a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a>.</p>
459<h3><a class="anchor" id="news_32_noapi"></a>
460Context-less windows</h3>
461<p >GLFW now supports creating windows without a OpenGL or OpenGL ES context by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_NO_API</code>.</p>
462<h3><a class="anchor" id="news_32_contextapi"></a>
463Run-time context creation API selection</h3>
464<p >GLFW now supports selecting and querying the context creation API at run-time with the <a class="el" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">GLFW_CONTEXT_CREATION_API</a> hint and attribute.</p>
465<h3><a class="anchor" id="news_32_noerror"></a>
466Error-free context creation</h3>
467<p >GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do not emit errors with the <a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a> hint, provided the machine supports the <code>GL_KHR_no_error</code> extension.</p>
468<h3><a class="anchor" id="news_32_cmake"></a>
469CMake config-file package support</h3>
470<p >GLFW now supports being used as a <a class="el" href="build_guide.html#build_link_cmake_package">config-file package</a> from other projects for easy linking with the library and its dependencies.</p>
471<h1><a class="anchor" id="news_31"></a>
472Release notes for 3.1</h1>
473<p >These are the release notes for version 3.1. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
474<h2><a class="anchor" id="features_31"></a>
475New features in version 3.1</h2>
476<h3><a class="anchor" id="news_31_cursor"></a>
477Custom mouse cursor images</h3>
478<p >GLFW now supports creating and setting both custom cursor images and standard cursor shapes. They are created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> or <a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>, set with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a> and destroyed with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>.</p>
479<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a></dd></dl>
480<h3><a class="anchor" id="news_31_drop"></a>
481Path drop event</h3>
482<p >GLFW now provides a callback for receiving the paths of files and directories dropped onto GLFW windows. The callback is set with <a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a>.</p>
483<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#path_drop">Path drop input</a></dd></dl>
484<h3><a class="anchor" id="news_31_emptyevent"></a>
485Main thread wake-up</h3>
486<p >GLFW now provides the <a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> function for posting an empty event from another thread to the main thread event queue, causing <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> to return.</p>
487<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a></dd></dl>
488<h3><a class="anchor" id="news_31_framesize"></a>
489Window frame size query</h3>
490<p >GLFW now supports querying the size, on each side, of the frame around the content area of a window, with <a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>.</p>
491<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a></dd></dl>
492<h3><a class="anchor" id="news_31_autoiconify"></a>
493Simultaneous multi-monitor rendering</h3>
494<p >GLFW now supports disabling auto-iconification of full screen windows with the <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">GLFW_AUTO_ICONIFY</a> window hint. This is intended for people building multi-monitor installations, where you need windows to stay in full screen despite losing input focus.</p>
495<h3><a class="anchor" id="news_31_floating"></a>
496Floating windows</h3>
497<p >GLFW now supports floating windows, also called topmost or always on top, for easier debugging with the <a class="el" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">GLFW_FLOATING</a> window hint and attribute.</p>
498<h3><a class="anchor" id="news_31_focused"></a>
499Initially unfocused windows</h3>
500<p >GLFW now supports preventing a windowed mode window from gaining input focus on creation, with the <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">GLFW_FOCUSED</a> window hint.</p>
501<h3><a class="anchor" id="news_31_direct"></a>
502Direct access for window attributes and cursor position</h3>
503<p >GLFW now queries the window input focus, visibility and iconification attributes and the cursor position directly instead of returning cached data.</p>
504<h3><a class="anchor" id="news_31_charmods"></a>
505Character with modifiers callback</h3>
506<p >GLFW now provides a callback for character events with modifier key bits. The callback is set with <a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a>. Unlike the regular character callback, this will report character events that will not result in a character being input, for example if the Control key is held down.</p>
507<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a></dd></dl>
508<h3><a class="anchor" id="news_31_single"></a>
509Single buffered framebuffers</h3>
510<p >GLFW now supports the creation of single buffered windows, with the <a class="el" href="window_guide.html#GLFW_DOUBLEBUFFER">GLFW_DOUBLEBUFFER</a> hint.</p>
511<h3><a class="anchor" id="news_31_glext"></a>
512Macro for including extension header</h3>
513<p >GLFW now includes the extension header appropriate for the chosen OpenGL or OpenGL ES header when <a class="el" href="build_guide.html#GLFW_INCLUDE_GLEXT">GLFW_INCLUDE_GLEXT</a> is defined. GLFW does not provide these headers. They must be provided by your development environment or your OpenGL or OpenGL ES SDK.</p>
514<h3><a class="anchor" id="news_31_release"></a>
515Context release behaviors</h3>
516<p >GLFW now supports controlling and querying whether the pipeline is flushed when a context is made non-current, with the <a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a> hint and attribute, provided the machine supports the <code>GL_KHR_context_flush_control</code> extension.</p>
517<h3><a class="anchor" id="news_31_wayland"></a>
518(Experimental) Wayland support</h3>
519<p >GLFW now has an <em>experimental</em> Wayland display protocol backend that can be selected on Linux with a CMake option.</p>
520<h3><a class="anchor" id="news_31_mir"></a>
521(Experimental) Mir support</h3>
522<p >GLFW now has an <em>experimental</em> Mir display server backend that can be selected on Linux with a CMake option.</p>
523<h1><a class="anchor" id="news_30"></a>
524Release notes for 3.0</h1>
525<p >These are the release notes for version 3.0. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
526<h2><a class="anchor" id="features_30"></a>
527New features in version 3.0</h2>
528<h3><a class="anchor" id="news_30_cmake"></a>
529CMake build system</h3>
530<p >GLFW now uses the CMake build system instead of the various makefiles and project files used by earlier versions. CMake is available for all platforms supported by GLFW, is present in most package systems and can generate makefiles and/or project files for most popular development environments.</p>
531<p >For more information on how to use CMake, see the <a href="https://cmake.org/cmake/help/documentation.html">CMake manual</a>.</p>
532<h3><a class="anchor" id="news_30_multiwnd"></a>
533Multi-window support</h3>
534<p >GLFW now supports the creation of multiple windows, each with their own OpenGL or OpenGL ES context, and all window functions now take a window handle. Event callbacks are now per-window and are provided with the handle of the window that received the event. The <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> function has been added to select which context is current on a given thread.</p>
535<h3><a class="anchor" id="news_30_multimon"></a>
536Multi-monitor support</h3>
537<p >GLFW now explicitly supports multiple monitors. They can be enumerated with <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>, queried with <a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>, <a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>, <a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> and <a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>, and specified at window creation to make the newly created window full screen on that specific monitor.</p>
538<h3><a class="anchor" id="news_30_unicode"></a>
539Unicode support</h3>
540<p >All string arguments to GLFW functions and all strings returned by GLFW now use the UTF-8 encoding. This includes the window title, error string, clipboard text, monitor and joystick names as well as the extension function arguments (as ASCII is a subset of UTF-8).</p>
541<h3><a class="anchor" id="news_30_clipboard"></a>
542Clipboard text I/O</h3>
543<p >GLFW now supports reading and writing plain text to and from the system clipboard, with the <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> and <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> functions.</p>
544<h3><a class="anchor" id="news_30_gamma"></a>
545Gamma ramp support</h3>
546<p >GLFW now supports setting and reading back the gamma ramp of monitors, with the <a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> and <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> functions. There is also <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>, which generates a ramp from a gamma value and then sets it.</p>
547<h3><a class="anchor" id="news_30_gles"></a>
548OpenGL ES support</h3>
549<p >GLFW now supports the creation of OpenGL ES contexts, by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_OPENGL_ES_API</code>, where creation of such contexts are supported. Note that GLFW <em>does not implement</em> OpenGL ES, so your driver must provide support in a way usable by GLFW. Modern Nvidia and Intel drivers support creation of OpenGL ES context using the GLX and WGL APIs, while AMD provides an EGL implementation instead.</p>
550<h3><a class="anchor" id="news_30_egl"></a>
551(Experimental) EGL support</h3>
552<p >GLFW now has an experimental EGL context creation back end that can be selected through CMake options.</p>
553<h3><a class="anchor" id="news_30_hidpi"></a>
554High-DPI support</h3>
555<p >GLFW now supports high-DPI monitors on both Windows and macOS, giving windows full resolution framebuffers where other UI elements are scaled up. To achieve this, <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> and <a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> have been added. These work with pixels, while the rest of the GLFW API works with screen coordinates. This is important as OpenGL uses pixels, not screen coordinates.</p>
556<h3><a class="anchor" id="news_30_error"></a>
557Error callback</h3>
558<p >GLFW now has an error callback, which can provide your application with much more detailed diagnostics than was previously possible. The callback is passed an error code and a description string.</p>
559<h3><a class="anchor" id="news_30_wndptr"></a>
560Per-window user pointer</h3>
561<p >Each window now has a user-defined pointer, retrieved with <a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a> and set with <a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a>, to make it easier to integrate GLFW into C++ code.</p>
562<h3><a class="anchor" id="news_30_iconifyfun"></a>
563Window iconification callback</h3>
564<p >Each window now has a callback for iconification and restoration events, which is set with <a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a>.</p>
565<h3><a class="anchor" id="news_30_wndposfun"></a>
566Window position callback</h3>
567<p >Each window now has a callback for position events, which is set with <a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a>.</p>
568<h3><a class="anchor" id="news_30_wndpos"></a>
569Window position query</h3>
570<p >The position of a window can now be retrieved using <a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a>.</p>
571<h3><a class="anchor" id="news_30_focusfun"></a>
572Window focus callback</h3>
573<p >Each windows now has a callback for focus events, which is set with <a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a>.</p>
574<h3><a class="anchor" id="news_30_enterleave"></a>
575Cursor enter/leave callback</h3>
576<p >Each window now has a callback for when the mouse cursor enters or leaves its content area, which is set with <a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a>.</p>
577<h3><a class="anchor" id="news_30_wndtitle"></a>
578Initial window title</h3>
579<p >The title of a window is now specified at creation time, as one of the arguments to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</p>
580<h3><a class="anchor" id="news_30_hidden"></a>
581Hidden windows</h3>
582<p >Windows can now be hidden with <a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>, shown using <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> and created initially hidden with the <a class="el" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a> window hint and attribute. This allows for off-screen rendering in a way compatible with most drivers, as well as moving a window to a specific position before showing it.</p>
583<h3><a class="anchor" id="news_30_undecorated"></a>
584Undecorated windows</h3>
585<p >Windowed mode windows can now be created without decorations, e.g. things like a frame, a title bar, with the <a class="el" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">GLFW_DECORATED</a> window hint and attribute. This allows for the creation of things like splash screens.</p>
586<h3><a class="anchor" id="news_30_keymods"></a>
587Modifier key bit masks</h3>
588<p ><a class="el" href="group__mods.html">Modifier key bit mask</a> parameters have been added to the <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">mouse button</a> and <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">key</a> callbacks.</p>
589<h3><a class="anchor" id="news_30_scancode"></a>
590Platform-specific scancodes</h3>
591<p >A scancode parameter has been added to the <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">key callback</a>. Keys that don't have a <a class="el" href="group__keys.html">key token</a> still get passed on with the key parameter set to <code>GLFW_KEY_UNKNOWN</code>. These scancodes will vary between machines and are intended to be used for key bindings.</p>
592<h3><a class="anchor" id="news_30_jsname"></a>
593Joystick names</h3>
594<p >The name of a joystick can now be retrieved using <a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>.</p>
595<h3><a class="anchor" id="news_30_doxygen"></a>
596Doxygen documentation</h3>
597<p >You are reading it. </p>
598</div></div><!-- contents -->
599</div><!-- PageDoc -->
600<address class="footer">
601<p>
602Last update on Thu Oct 28 2021 for GLFW 3.3.5
603</p>
604</address>
605</body>
606</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news_8dox.html
new file mode 100644
index 0000000..647743a
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/news_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: news.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">news.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/open.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/open.png
new file mode 100644
index 0000000..30f75c7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/open.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/pages.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/pages.html
new file mode 100644
index 0000000..a5acac1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/pages.html
@@ -0,0 +1,92 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Guides</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48</div><!-- top -->
49<!-- window showing the filter options -->
50<div id="MSearchSelectWindow"
51 onmouseover="return searchBox.OnSearchSelectShow()"
52 onmouseout="return searchBox.OnSearchSelectHide()"
53 onkeydown="return searchBox.OnSearchSelectKey(event)">
54</div>
55
56<!-- iframe showing the search results (closed by default) -->
57<div id="MSearchResultsWindow">
58<iframe src="javascript:void(0)" frameborder="0"
59 name="MSearchResults" id="MSearchResults">
60</iframe>
61</div>
62
63<div class="header">
64 <div class="headertitle"><div class="title">Guides</div></div>
65</div><!--header-->
66<div class="contents">
67<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
68<table class="directory">
69<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="news.html" target="_self">Release notes</a></td><td class="desc"></td></tr>
70<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="quick_guide.html" target="_self">Getting started</a></td><td class="desc"></td></tr>
71<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="moving_guide.html" target="_self">Moving from GLFW 2 to 3</a></td><td class="desc"></td></tr>
72<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="compile_guide.html" target="_self">Compiling GLFW</a></td><td class="desc"></td></tr>
73<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="build_guide.html" target="_self">Building applications</a></td><td class="desc"></td></tr>
74<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="intro_guide.html" target="_self">Introduction to the API</a></td><td class="desc"></td></tr>
75<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="context_guide.html" target="_self">Context guide</a></td><td class="desc"></td></tr>
76<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="monitor_guide.html" target="_self">Monitor guide</a></td><td class="desc"></td></tr>
77<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="window_guide.html" target="_self">Window guide</a></td><td class="desc"></td></tr>
78<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="input_guide.html" target="_self">Input guide</a></td><td class="desc"></td></tr>
79<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="vulkan_guide.html" target="_self">Vulkan guide</a></td><td class="desc"></td></tr>
80<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="compat_guide.html" target="_self">Standards conformance</a></td><td class="desc"></td></tr>
81<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="internals_guide.html" target="_self">Internal structure</a></td><td class="desc"></td></tr>
82<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="deprecated.html" target="_self">Deprecated List</a></td><td class="desc"></td></tr>
83</table>
84</div><!-- directory -->
85</div><!-- contents -->
86<address class="footer">
87<p>
88Last update on Thu Oct 28 2021 for GLFW 3.3.5
89</p>
90</address>
91</body>
92</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_8dox.html
new file mode 100644
index 0000000..0335570
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: quick.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">quick.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_guide.html
new file mode 100644
index 0000000..748a2ac
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/quick_guide.html
@@ -0,0 +1,391 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Getting started</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Getting started </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#quick_steps">Step by step</a><ul><li class="level2"><a href="#quick_include">Including the GLFW header</a></li>
69<li class="level2"><a href="#quick_init_term">Initializing and terminating GLFW</a></li>
70<li class="level2"><a href="#quick_capture_error">Setting an error callback</a></li>
71<li class="level2"><a href="#quick_create_window">Creating a window and context</a></li>
72<li class="level2"><a href="#quick_context_current">Making the OpenGL context current</a></li>
73<li class="level2"><a href="#quick_window_close">Checking the window close flag</a></li>
74<li class="level2"><a href="#quick_key_input">Receiving input events</a></li>
75<li class="level2"><a href="#quick_render">Rendering with OpenGL</a></li>
76<li class="level2"><a href="#quick_timer">Reading the timer</a></li>
77<li class="level2"><a href="#quick_swap_buffers">Swapping buffers</a></li>
78<li class="level2"><a href="#quick_process_events">Processing events</a></li>
79</ul>
80</li>
81<li class="level1"><a href="#quick_example">Putting it together</a></li>
82</ul>
83</div>
84<div class="textblock"><p >This guide takes you through writing a simple application using GLFW 3. The application will create a window and OpenGL context, render a rotating triangle and exit when the user closes the window or presses <em>Escape</em>. This guide will introduce a few of the most commonly used functions, but there are many more.</p>
85<p >This guide assumes no experience with earlier versions of GLFW. If you have used GLFW 2 in the past, read <a class="el" href="moving_guide.html">Moving from GLFW 2 to 3</a>, as some functions behave differently in GLFW 3.</p>
86<h1><a class="anchor" id="quick_steps"></a>
87Step by step</h1>
88<h2><a class="anchor" id="quick_include"></a>
89Including the GLFW header</h2>
90<p >In the source files of your application where you use GLFW, you need to include its header file.</p>
91<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
92<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
93</div><!-- fragment --><p >This header provides all the constants, types and function prototypes of the GLFW API.</p>
94<p >By default it also includes the OpenGL header from your development environment. On some platforms this header only supports older versions of OpenGL. The most extreme case is Windows, where it typically only supports OpenGL 1.2.</p>
95<p >Most programs will instead use an <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> and include its header. This example uses files generated by <a href="https://gen.glad.sh/">glad</a>. The GLFW header can detect most such headers if they are included first and will then not include the one from your development environment.</p>
96<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
97<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
98</div><!-- fragment --><p >To make sure there will be no header conflicts, you can define <a class="el" href="build_guide.html#GLFW_INCLUDE_NONE">GLFW_INCLUDE_NONE</a> before the GLFW header to explicitly disable inclusion of the development environment header. This also allows the two headers to be included in any order.</p>
99<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_NONE</span></div>
100<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
101<div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
102</div><!-- fragment --><h2><a class="anchor" id="quick_init_term"></a>
103Initializing and terminating GLFW</h2>
104<p >Before you can use most GLFW functions, the library must be initialized. On successful initialization, <code>GLFW_TRUE</code> is returned. If an error occurred, <code>GLFW_FALSE</code> is returned.</p>
105<div class="fragment"><div class="line"><span class="keywordflow">if</span> (!<a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>())</div>
106<div class="line">{</div>
107<div class="line"> <span class="comment">// Initialization failed</span></div>
108<div class="line">}</div>
109<div class="ttc" id="agroup__init_html_ga317aac130a235ab08c6db0834907d85e"><div class="ttname"><a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></div><div class="ttdeci">int glfwInit(void)</div><div class="ttdoc">Initializes the GLFW library.</div></div>
110</div><!-- fragment --><p >Note that <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code> are and will always be one and zero.</p>
111<p >When you are done using GLFW, typically just before the application exits, you need to terminate GLFW.</p>
112<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
113<div class="ttc" id="agroup__init_html_gaaae48c0a18607ea4a4ba951d939f0901"><div class="ttname"><a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></div><div class="ttdeci">void glfwTerminate(void)</div><div class="ttdoc">Terminates the GLFW library.</div></div>
114</div><!-- fragment --><p >This destroys any remaining windows and releases any other resources allocated by GLFW. After this call, you must initialize GLFW again before using any GLFW functions that require it.</p>
115<h2><a class="anchor" id="quick_capture_error"></a>
116Setting an error callback</h2>
117<p >Most events are reported through callbacks, whether it's a key being pressed, a GLFW window being moved, or an error occurring. Callbacks are C functions (or C++ static methods) that are called by GLFW with arguments describing the event.</p>
118<p >In case a GLFW function fails, an error is reported to the GLFW error callback. You can receive these reports with an error callback. This function must have the signature below but may do anything permitted in other callbacks.</p>
119<div class="fragment"><div class="line"><span class="keywordtype">void</span> error_callback(<span class="keywordtype">int</span> error, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
120<div class="line">{</div>
121<div class="line"> fprintf(stderr, <span class="stringliteral">&quot;Error: %s\n&quot;</span>, description);</div>
122<div class="line">}</div>
123</div><!-- fragment --><p >Callback functions must be set, so GLFW knows to call them. The function to set the error callback is one of the few GLFW functions that may be called before initialization, which lets you be notified of errors both during and after initialization.</p>
124<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(error_callback);</div>
125<div class="ttc" id="agroup__init_html_gaff45816610d53f0b83656092a4034f40"><div class="ttname"><a href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></div><div class="ttdeci">GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)</div><div class="ttdoc">Sets the error callback.</div></div>
126</div><!-- fragment --><h2><a class="anchor" id="quick_create_window"></a>
127Creating a window and context</h2>
128<p >The window and its OpenGL context are created with a single call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>, which returns a handle to the created combined window and context object</p>
129<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, NULL, NULL);</div>
130<div class="line"><span class="keywordflow">if</span> (!window)</div>
131<div class="line">{</div>
132<div class="line"> <span class="comment">// Window or OpenGL context creation failed</span></div>
133<div class="line">}</div>
134<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
135<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
136</div><!-- fragment --><p >This creates a 640 by 480 windowed mode window with an OpenGL context. If window or OpenGL context creation fails, <code>NULL</code> will be returned. You should always check the return value. While window creation rarely fails, context creation depends on properly installed drivers and may fail even on machines with the necessary hardware.</p>
137<p >By default, the OpenGL context GLFW creates may have any version. You can require a minimum OpenGL version by setting the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints <em>before</em> creation. If the required minimum version is not supported on the machine, context (and window) creation fails.</p>
138<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>, 2);</div>
139<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>, 0);</div>
140<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, NULL, NULL);</div>
141<div class="line"><span class="keywordflow">if</span> (!window)</div>
142<div class="line">{</div>
143<div class="line"> <span class="comment">// Window or context creation failed</span></div>
144<div class="line">}</div>
145<div class="ttc" id="agroup__window_html_ga31aca791e4b538c4e4a771eb95cc2d07"><div class="ttname"><a href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a></div><div class="ttdeci">#define GLFW_CONTEXT_VERSION_MINOR</div><div class="ttdoc">Context client API minor version hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:962</div></div>
146<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
147<div class="ttc" id="agroup__window_html_gafe5e4922de1f9932d7e9849bb053b0c0"><div class="ttname"><a href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a></div><div class="ttdeci">#define GLFW_CONTEXT_VERSION_MAJOR</div><div class="ttdoc">Context client API major version hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:956</div></div>
148</div><!-- fragment --><p >The window handle is passed to all window related functions and is provided to along to all window related callbacks, so they can tell which window received the event.</p>
149<p >When a window and context is no longer needed, destroy it.</p>
150<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(window);</div>
151<div class="ttc" id="agroup__window_html_gacdf43e51376051d2c091662e9fe3d7b2"><div class="ttname"><a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></div><div class="ttdeci">void glfwDestroyWindow(GLFWwindow *window)</div><div class="ttdoc">Destroys the specified window and its context.</div></div>
152</div><!-- fragment --><p >Once this function is called, no more events will be delivered for that window and its handle becomes invalid.</p>
153<h2><a class="anchor" id="quick_context_current"></a>
154Making the OpenGL context current</h2>
155<p >Before you can use the OpenGL API, you must have a current OpenGL context.</p>
156<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
157<div class="ttc" id="agroup__context_html_ga1c04dc242268f827290fe40aa1c91157"><div class="ttname"><a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></div><div class="ttdeci">void glfwMakeContextCurrent(GLFWwindow *window)</div><div class="ttdoc">Makes the context of the specified window current for the calling thread.</div></div>
158</div><!-- fragment --><p >The context will remain current until you make another context current or until the window owning the current context is destroyed.</p>
159<p >If you are using an <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> to access modern OpenGL then this is when to initialize it, as the loader needs a current context to load from. This example uses <a href="https://github.com/Dav1dde/glad">glad</a>, but the same rule applies to all such libraries.</p>
160<div class="fragment"><div class="line">gladLoadGL(<a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>);</div>
161<div class="ttc" id="agroup__context_html_ga35f1837e6f666781842483937612f163"><div class="ttname"><a href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></div><div class="ttdeci">GLFWglproc glfwGetProcAddress(const char *procname)</div><div class="ttdoc">Returns the address of the specified function for the current context.</div></div>
162</div><!-- fragment --><h2><a class="anchor" id="quick_window_close"></a>
163Checking the window close flag</h2>
164<p >Each window has a flag indicating whether the window should be closed.</p>
165<p >When the user attempts to close the window, either by pressing the close widget in the title bar or using a key combination like Alt+F4, this flag is set to 1. Note that <b>the window isn't actually closed</b>, so you are expected to monitor this flag and either destroy the window or give some kind of feedback to the user.</p>
166<div class="fragment"><div class="line"><span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
167<div class="line">{</div>
168<div class="line"> <span class="comment">// Keep running</span></div>
169<div class="line">}</div>
170<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
171</div><!-- fragment --><p >You can be notified when the user is attempting to close the window by setting a close callback with <a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a>. The callback will be called immediately after the close flag has been set.</p>
172<p >You can also set it yourself with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>. This can be useful if you want to interpret other kinds of input as closing the window, like for example pressing the <em>Escape</em> key.</p>
173<h2><a class="anchor" id="quick_key_input"></a>
174Receiving input events</h2>
175<p >Each window has a large number of callbacks that can be set to receive all the various kinds of events. To receive key press and release events, create a key callback function.</p>
176<div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> key_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
177<div class="line">{</div>
178<div class="line"> <span class="keywordflow">if</span> (key == <a class="code hl_define" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
179<div class="line"> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(window, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
180<div class="line">}</div>
181<div class="ttc" id="agroup__init_html_ga2744fbb29b5631bb28802dbe0cf36eba"><div class="ttname"><a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a></div><div class="ttdeci">#define GLFW_TRUE</div><div class="ttdoc">One.</div><div class="ttdef"><b>Definition:</b> glfw3.h:313</div></div>
182<div class="ttc" id="agroup__input_html_ga2485743d0b59df3791c45951c4195265"><div class="ttname"><a href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a></div><div class="ttdeci">#define GLFW_PRESS</div><div class="ttdoc">The key or mouse button was pressed.</div><div class="ttdef"><b>Definition:</b> glfw3.h:339</div></div>
183<div class="ttc" id="agroup__keys_html_gaac6596c350b635c245113b81c2123b93"><div class="ttname"><a href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a></div><div class="ttdeci">#define GLFW_KEY_ESCAPE</div><div class="ttdef"><b>Definition:</b> glfw3.h:447</div></div>
184<div class="ttc" id="agroup__window_html_ga49c449dde2a6f87d996f4daaa09d6708"><div class="ttname"><a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></div><div class="ttdeci">void glfwSetWindowShouldClose(GLFWwindow *window, int value)</div><div class="ttdoc">Sets the close flag of the specified window.</div></div>
185</div><!-- fragment --><p >The key callback, like other window related callbacks, are set per-window.</p>
186<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(window, key_callback);</div>
187<div class="ttc" id="agroup__input_html_ga1caf18159767e761185e49a3be019f8d"><div class="ttname"><a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></div><div class="ttdeci">GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)</div><div class="ttdoc">Sets the key callback.</div></div>
188</div><!-- fragment --><p >In order for event callbacks to be called when events occur, you need to process events as described below.</p>
189<h2><a class="anchor" id="quick_render"></a>
190Rendering with OpenGL</h2>
191<p >Once you have a current OpenGL context, you can use OpenGL normally. In this tutorial, a multi-colored rotating triangle will be rendered. The framebuffer size needs to be retrieved for <code>glViewport</code>.</p>
192<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
193<div class="line"><a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
194<div class="line">glViewport(0, 0, width, height);</div>
195<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
196</div><!-- fragment --><p >You can also set a framebuffer size callback using <a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> and be notified when the size changes.</p>
197<p >The details of how to render with OpenGL is outside the scope of this tutorial, but there are many excellent resources for learning modern OpenGL. Here are a few of them:</p>
198<ul>
199<li><a href="https://antongerdelan.net/opengl/">Anton's OpenGL 4 Tutorials</a></li>
200<li><a href="https://learnopengl.com/">Learn OpenGL</a></li>
201<li><a href="https://open.gl/">Open.GL</a></li>
202</ul>
203<p >These all happen to use GLFW, but OpenGL itself works the same whatever API you use to create the window and context.</p>
204<h2><a class="anchor" id="quick_timer"></a>
205Reading the timer</h2>
206<p >To create smooth animation, a time source is needed. GLFW provides a timer that returns the number of seconds since initialization. The time source used is the most accurate on each platform and generally has micro- or nanosecond resolution.</p>
207<div class="fragment"><div class="line"><span class="keywordtype">double</span> time = <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>();</div>
208<div class="ttc" id="agroup__input_html_gaa6cf4e7a77158a3b8fd00328b1720a4a"><div class="ttname"><a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></div><div class="ttdeci">double glfwGetTime(void)</div><div class="ttdoc">Returns the GLFW time.</div></div>
209</div><!-- fragment --><h2><a class="anchor" id="quick_swap_buffers"></a>
210Swapping buffers</h2>
211<p >GLFW windows by default use double buffering. That means that each window has two rendering buffers; a front buffer and a back buffer. The front buffer is the one being displayed and the back buffer the one you render to.</p>
212<p >When the entire frame has been rendered, the buffers need to be swapped with one another, so the back buffer becomes the front buffer and vice versa.</p>
213<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
214<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
215</div><!-- fragment --><p >The swap interval indicates how many frames to wait until swapping the buffers, commonly known as <em>vsync</em>. By default, the swap interval is zero, meaning buffer swapping will occur immediately. On fast machines, many of those frames will never be seen, as the screen is still only updated typically 60-75 times per second, so this wastes a lot of CPU and GPU cycles.</p>
216<p >Also, because the buffers will be swapped in the middle the screen update, leading to <a href="https://en.wikipedia.org/wiki/Screen_tearing">screen tearing</a>.</p>
217<p >For these reasons, applications will typically want to set the swap interval to one. It can be set to higher values, but this is usually not recommended, because of the input latency it leads to.</p>
218<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(1);</div>
219<div class="ttc" id="agroup__context_html_ga6d4e0cdf151b5e579bd67f13202994ed"><div class="ttname"><a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></div><div class="ttdeci">void glfwSwapInterval(int interval)</div><div class="ttdoc">Sets the swap interval for the current context.</div></div>
220</div><!-- fragment --><p >This function acts on the current context and will fail unless a context is current.</p>
221<h2><a class="anchor" id="quick_process_events"></a>
222Processing events</h2>
223<p >GLFW needs to communicate regularly with the window system both in order to receive events and to show that the application hasn't locked up. Event processing must be done regularly while you have visible windows and is normally done each frame after buffer swapping.</p>
224<p >There are two methods for processing pending events; polling and waiting. This example will use event polling, which processes only those events that have already been received and then returns immediately.</p>
225<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
226<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
227</div><!-- fragment --><p >This is the best choice when rendering continually, like most games do. If instead you only need to update your rendering once you have received new input, <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> is a better choice. It waits until at least one event has been received, putting the thread to sleep in the meantime, and then processes all received events. This saves a great deal of CPU cycles and is useful for, for example, many kinds of editing tools.</p>
228<h1><a class="anchor" id="quick_example"></a>
229Putting it together</h1>
230<p >Now that you know how to initialize GLFW, create a window and poll for keyboard input, it's possible to create a simple program.</p>
231<p >This program creates a 640 by 480 windowed mode window and starts a loop that clears the screen, renders a triangle and processes events until the user either presses <em>Escape</em> or closes the window.</p>
232<div class="fragment"><div class="line"> </div>
233<div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
234<div class="line"><span class="preprocessor">#define GLFW_INCLUDE_NONE</span></div>
235<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
236<div class="line"> </div>
237<div class="line"><span class="preprocessor">#include &quot;linmath.h&quot;</span></div>
238<div class="line"> </div>
239<div class="line"><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
240<div class="line"><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
241<div class="line"> </div>
242<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct</span></div>
243<div class="line">{</div>
244<div class="line"> <span class="keywordtype">float</span> x, y;</div>
245<div class="line"> <span class="keywordtype">float</span> r, g, b;</div>
246<div class="line">} vertices[3] =</div>
247<div class="line">{</div>
248<div class="line"> { -0.6f, -0.4f, 1.f, 0.f, 0.f },</div>
249<div class="line"> { 0.6f, -0.4f, 0.f, 1.f, 0.f },</div>
250<div class="line"> { 0.f, 0.6f, 0.f, 0.f, 1.f }</div>
251<div class="line">};</div>
252<div class="line"> </div>
253<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* vertex_shader_text =</div>
254<div class="line"><span class="stringliteral">&quot;#version 110\n&quot;</span></div>
255<div class="line"><span class="stringliteral">&quot;uniform mat4 MVP;\n&quot;</span></div>
256<div class="line"><span class="stringliteral">&quot;attribute vec3 vCol;\n&quot;</span></div>
257<div class="line"><span class="stringliteral">&quot;attribute vec2 vPos;\n&quot;</span></div>
258<div class="line"><span class="stringliteral">&quot;varying vec3 color;\n&quot;</span></div>
259<div class="line"><span class="stringliteral">&quot;void main()\n&quot;</span></div>
260<div class="line"><span class="stringliteral">&quot;{\n&quot;</span></div>
261<div class="line"><span class="stringliteral">&quot; gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n&quot;</span></div>
262<div class="line"><span class="stringliteral">&quot; color = vCol;\n&quot;</span></div>
263<div class="line"><span class="stringliteral">&quot;}\n&quot;</span>;</div>
264<div class="line"> </div>
265<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* fragment_shader_text =</div>
266<div class="line"><span class="stringliteral">&quot;#version 110\n&quot;</span></div>
267<div class="line"><span class="stringliteral">&quot;varying vec3 color;\n&quot;</span></div>
268<div class="line"><span class="stringliteral">&quot;void main()\n&quot;</span></div>
269<div class="line"><span class="stringliteral">&quot;{\n&quot;</span></div>
270<div class="line"><span class="stringliteral">&quot; gl_FragColor = vec4(color, 1.0);\n&quot;</span></div>
271<div class="line"><span class="stringliteral">&quot;}\n&quot;</span>;</div>
272<div class="line"> </div>
273<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> error_callback(<span class="keywordtype">int</span> error, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
274<div class="line">{</div>
275<div class="line"> fprintf(stderr, <span class="stringliteral">&quot;Error: %s\n&quot;</span>, description);</div>
276<div class="line">}</div>
277<div class="line"> </div>
278<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> key_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
279<div class="line">{</div>
280<div class="line"> <span class="keywordflow">if</span> (key == <a class="code hl_define" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
281<div class="line"> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(window, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
282<div class="line">}</div>
283<div class="line"> </div>
284<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">void</span>)</div>
285<div class="line">{</div>
286<div class="line"> <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window;</div>
287<div class="line"> GLuint vertex_buffer, vertex_shader, fragment_shader, program;</div>
288<div class="line"> GLint mvp_location, vpos_location, vcol_location;</div>
289<div class="line"> </div>
290<div class="line"> <a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(error_callback);</div>
291<div class="line"> </div>
292<div class="line"> <span class="keywordflow">if</span> (!<a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>())</div>
293<div class="line"> exit(EXIT_FAILURE);</div>
294<div class="line"> </div>
295<div class="line"> <a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>, 2);</div>
296<div class="line"> <a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>, 0);</div>
297<div class="line"> </div>
298<div class="line"> window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;Simple example&quot;</span>, NULL, NULL);</div>
299<div class="line"> <span class="keywordflow">if</span> (!window)</div>
300<div class="line"> {</div>
301<div class="line"> <a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
302<div class="line"> exit(EXIT_FAILURE);</div>
303<div class="line"> }</div>
304<div class="line"> </div>
305<div class="line"> <a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(window, key_callback);</div>
306<div class="line"> </div>
307<div class="line"> <a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
308<div class="line"> gladLoadGL(<a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>);</div>
309<div class="line"> <a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(1);</div>
310<div class="line"> </div>
311<div class="line"> <span class="comment">// NOTE: OpenGL error checks have been omitted for brevity</span></div>
312<div class="line"> </div>
313<div class="line"> glGenBuffers(1, &amp;vertex_buffer);</div>
314<div class="line"> glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);</div>
315<div class="line"> glBufferData(GL_ARRAY_BUFFER, <span class="keyword">sizeof</span>(vertices), vertices, GL_STATIC_DRAW);</div>
316<div class="line"> </div>
317<div class="line"> vertex_shader = glCreateShader(GL_VERTEX_SHADER);</div>
318<div class="line"> glShaderSource(vertex_shader, 1, &amp;vertex_shader_text, NULL);</div>
319<div class="line"> glCompileShader(vertex_shader);</div>
320<div class="line"> </div>
321<div class="line"> fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);</div>
322<div class="line"> glShaderSource(fragment_shader, 1, &amp;fragment_shader_text, NULL);</div>
323<div class="line"> glCompileShader(fragment_shader);</div>
324<div class="line"> </div>
325<div class="line"> program = glCreateProgram();</div>
326<div class="line"> glAttachShader(program, vertex_shader);</div>
327<div class="line"> glAttachShader(program, fragment_shader);</div>
328<div class="line"> glLinkProgram(program);</div>
329<div class="line"> </div>
330<div class="line"> mvp_location = glGetUniformLocation(program, <span class="stringliteral">&quot;MVP&quot;</span>);</div>
331<div class="line"> vpos_location = glGetAttribLocation(program, <span class="stringliteral">&quot;vPos&quot;</span>);</div>
332<div class="line"> vcol_location = glGetAttribLocation(program, <span class="stringliteral">&quot;vCol&quot;</span>);</div>
333<div class="line"> </div>
334<div class="line"> glEnableVertexAttribArray(vpos_location);</div>
335<div class="line"> glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE,</div>
336<div class="line"> <span class="keyword">sizeof</span>(vertices[0]), (<span class="keywordtype">void</span>*) 0);</div>
337<div class="line"> glEnableVertexAttribArray(vcol_location);</div>
338<div class="line"> glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE,</div>
339<div class="line"> <span class="keyword">sizeof</span>(vertices[0]), (<span class="keywordtype">void</span>*) (<span class="keyword">sizeof</span>(<span class="keywordtype">float</span>) * 2));</div>
340<div class="line"> </div>
341<div class="line"> <span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
342<div class="line"> {</div>
343<div class="line"> <span class="keywordtype">float</span> ratio;</div>
344<div class="line"> <span class="keywordtype">int</span> width, height;</div>
345<div class="line"> mat4x4 m, p, mvp;</div>
346<div class="line"> </div>
347<div class="line"> <a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
348<div class="line"> ratio = width / (float) height;</div>
349<div class="line"> </div>
350<div class="line"> glViewport(0, 0, width, height);</div>
351<div class="line"> glClear(GL_COLOR_BUFFER_BIT);</div>
352<div class="line"> </div>
353<div class="line"> mat4x4_identity(m);</div>
354<div class="line"> mat4x4_rotate_Z(m, m, (<span class="keywordtype">float</span>) <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>());</div>
355<div class="line"> mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f);</div>
356<div class="line"> mat4x4_mul(mvp, p, m);</div>
357<div class="line"> </div>
358<div class="line"> glUseProgram(program);</div>
359<div class="line"> glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (<span class="keyword">const</span> GLfloat*) mvp);</div>
360<div class="line"> glDrawArrays(GL_TRIANGLES, 0, 3);</div>
361<div class="line"> </div>
362<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
363<div class="line"> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
364<div class="line"> }</div>
365<div class="line"> </div>
366<div class="line"> <a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(window);</div>
367<div class="line"> </div>
368<div class="line"> <a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
369<div class="line"> exit(EXIT_SUCCESS);</div>
370<div class="line">}</div>
371<div class="line"> </div>
372</div><!-- fragment --><p >The program above can be found in the <a href="https://www.glfw.org/download.html">source package</a> as <code>examples/simple.c</code> and is compiled along with all other examples when you build GLFW. If you built GLFW from the source package then you already have this as <code>simple.exe</code> on Windows, <code>simple</code> on Linux or <code>simple.app</code> on macOS.</p>
373<p >This tutorial used only a few of the many functions GLFW provides. There are guides for each of the areas covered by GLFW. Each guide will introduce all the functions for that category.</p>
374<ul>
375<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
376<li><a class="el" href="window_guide.html">Window guide</a></li>
377<li><a class="el" href="context_guide.html">Context guide</a></li>
378<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
379<li><a class="el" href="input_guide.html">Input guide</a></li>
380</ul>
381<p >You can access reference documentation for any GLFW function by clicking it and the reference for each function links to related functions and guide sections.</p>
382<p >The tutorial ends here. Once you have written a program that uses GLFW, you will need to compile and link it. How to do that depends on the development environment you are using and is best explained by the documentation for that environment. To learn about the details that are specific to GLFW, see <a class="el" href="build_guide.html">Building applications</a>. </p>
383</div></div><!-- contents -->
384</div><!-- PageDoc -->
385<address class="footer">
386<p>
387Last update on Thu Oct 28 2021 for GLFW 3.3.5
388</p>
389</address>
390</body>
391</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.html
new file mode 100644
index 0000000..65f85b5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.js
new file mode 100644
index 0000000..c61320f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_0.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['axes_0',['axes',['../structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189',1,'GLFWgamepadstate']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.html
new file mode 100644
index 0000000..af53dab
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_1.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.js
new file mode 100644
index 0000000..30bfd28
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_1.js
@@ -0,0 +1,8 @@
1var searchData=
2[
3 ['blue_0',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]],
4 ['bluebits_1',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]],
5 ['build_2edox_2',['build.dox',['../build_8dox.html',1,'']]],
6 ['building_20applications_3',['Building applications',['../build_guide.html',1,'']]],
7 ['buttons_4',['buttons',['../structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a',1,'GLFWgamepadstate']]]
8];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.html
new file mode 100644
index 0000000..9501164
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_10.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.js
new file mode 100644
index 0000000..f129247
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_10.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['vulkan_20guide_0',['Vulkan guide',['../vulkan_guide.html',1,'']]],
4 ['vulkan_20support_20reference_1',['Vulkan support reference',['../group__vulkan.html',1,'']]],
5 ['vulkan_2edox_2',['vulkan.dox',['../vulkan_8dox.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.html
new file mode 100644
index 0000000..d0712de
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_11.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.js
new file mode 100644
index 0000000..c21189f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_11.js
@@ -0,0 +1,7 @@
1var searchData=
2[
3 ['width_0',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]],
4 ['window_20guide_1',['Window guide',['../window_guide.html',1,'']]],
5 ['window_20reference_2',['Window reference',['../group__window.html',1,'']]],
6 ['window_2edox_3',['window.dox',['../window_8dox.html',1,'']]]
7];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.html
new file mode 100644
index 0000000..f8fe8ec
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_2.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.js
new file mode 100644
index 0000000..2055dca
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_2.js
@@ -0,0 +1,9 @@
1var searchData=
2[
3 ['compat_2edox_0',['compat.dox',['../compat_8dox.html',1,'']]],
4 ['compile_2edox_1',['compile.dox',['../compile_8dox.html',1,'']]],
5 ['compiling_20glfw_2',['Compiling GLFW',['../compile_guide.html',1,'']]],
6 ['context_20guide_3',['Context guide',['../context_guide.html',1,'']]],
7 ['context_20reference_4',['Context reference',['../group__context.html',1,'']]],
8 ['context_2edox_5',['context.dox',['../context_8dox.html',1,'']]]
9];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.html
new file mode 100644
index 0000000..fdb6e19
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_3.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.js
new file mode 100644
index 0000000..4d85845
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_3.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.html
new file mode 100644
index 0000000..1a50c46
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_4.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.js
new file mode 100644
index 0000000..eedfab6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_4.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['error_20codes_0',['Error codes',['../group__errors.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.html
new file mode 100644
index 0000000..4dce5e7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_5.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.js
new file mode 100644
index 0000000..ab1eab6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_5.js
@@ -0,0 +1,476 @@
1var searchData=
2[
3 ['gamepad_20axes_0',['Gamepad axes',['../group__gamepad__axes.html',1,'']]],
4 ['gamepad_20buttons_1',['Gamepad buttons',['../group__gamepad__buttons.html',1,'']]],
5 ['getting_20started_2',['Getting started',['../quick_guide.html',1,'']]],
6 ['glapientry_3',['GLAPIENTRY',['../glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206',1,'glfw3.h']]],
7 ['glfw3_2eh_4',['glfw3.h',['../glfw3_8h.html',1,'']]],
8 ['glfw3native_2eh_5',['glfw3native.h',['../glfw3native_8h.html',1,'']]],
9 ['glfw_5faccum_5falpha_5fbits_6',['GLFW_ACCUM_ALPHA_BITS',['../group__window.html#gae829b55591c18169a40ab4067a041b1f',1,'glfw3.h']]],
10 ['glfw_5faccum_5fblue_5fbits_7',['GLFW_ACCUM_BLUE_BITS',['../group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce',1,'glfw3.h']]],
11 ['glfw_5faccum_5fgreen_5fbits_8',['GLFW_ACCUM_GREEN_BITS',['../group__window.html#ga65713cee1326f8e9d806fdf93187b471',1,'glfw3.h']]],
12 ['glfw_5faccum_5fred_5fbits_9',['GLFW_ACCUM_RED_BITS',['../group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6',1,'glfw3.h']]],
13 ['glfw_5falpha_5fbits_10',['GLFW_ALPHA_BITS',['../group__window.html#gafed79a3f468997877da86c449bd43e8c',1,'glfw3.h']]],
14 ['glfw_5fany_5frelease_5fbehavior_11',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]],
15 ['glfw_5fapi_5funavailable_12',['GLFW_API_UNAVAILABLE',['../group__errors.html#ga56882b290db23261cc6c053c40c2d08e',1,'glfw3.h']]],
16 ['glfw_5fapientry_5fdefined_13',['GLFW_APIENTRY_DEFINED',['../glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9',1,'glfw3.h']]],
17 ['glfw_5farrow_5fcursor_14',['GLFW_ARROW_CURSOR',['../group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a',1,'glfw3.h']]],
18 ['glfw_5fauto_5ficonify_15',['GLFW_AUTO_ICONIFY',['../group__window.html#ga9d9874fc928200136a6dcdad726aa252',1,'glfw3.h']]],
19 ['glfw_5faux_5fbuffers_16',['GLFW_AUX_BUFFERS',['../group__window.html#gab05108c5029443b371112b031d1fa174',1,'glfw3.h']]],
20 ['glfw_5fblue_5fbits_17',['GLFW_BLUE_BITS',['../group__window.html#gab292ea403db6d514537b515311bf9ae3',1,'glfw3.h']]],
21 ['glfw_5fcenter_5fcursor_18',['GLFW_CENTER_CURSOR',['../group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77',1,'glfw3.h']]],
22 ['glfw_5fclient_5fapi_19',['GLFW_CLIENT_API',['../group__window.html#ga649309cf72a3d3de5b1348ca7936c95b',1,'glfw3.h']]],
23 ['glfw_5fcocoa_5fchdir_5fresources_20',['GLFW_COCOA_CHDIR_RESOURCES',['../group__init.html#gab937983147a3158d45f88fad7129d9f2',1,'glfw3.h']]],
24 ['glfw_5fcocoa_5fframe_5fname_21',['GLFW_COCOA_FRAME_NAME',['../group__window.html#ga70fa0fbc745de6aa824df79a580e84b5',1,'glfw3.h']]],
25 ['glfw_5fcocoa_5fgraphics_5fswitching_22',['GLFW_COCOA_GRAPHICS_SWITCHING',['../group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc',1,'glfw3.h']]],
26 ['glfw_5fcocoa_5fmenubar_23',['GLFW_COCOA_MENUBAR',['../group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf',1,'glfw3.h']]],
27 ['glfw_5fcocoa_5fretina_5fframebuffer_24',['GLFW_COCOA_RETINA_FRAMEBUFFER',['../group__window.html#gab6ef2d02eb55800d249ccf1af253c35e',1,'glfw3.h']]],
28 ['glfw_5fconnected_25',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]],
29 ['glfw_5fcontext_5fcreation_5fapi_26',['GLFW_CONTEXT_CREATION_API',['../group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486',1,'glfw3.h']]],
30 ['glfw_5fcontext_5fno_5ferror_27',['GLFW_CONTEXT_NO_ERROR',['../group__window.html#ga5a52fdfd46d8249c211f923675728082',1,'glfw3.h']]],
31 ['glfw_5fcontext_5frelease_5fbehavior_28',['GLFW_CONTEXT_RELEASE_BEHAVIOR',['../group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6',1,'glfw3.h']]],
32 ['glfw_5fcontext_5frevision_29',['GLFW_CONTEXT_REVISION',['../group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08',1,'glfw3.h']]],
33 ['glfw_5fcontext_5frobustness_30',['GLFW_CONTEXT_ROBUSTNESS',['../group__window.html#gade3593916b4c507900aa2d6844810e00',1,'glfw3.h']]],
34 ['glfw_5fcontext_5fversion_5fmajor_31',['GLFW_CONTEXT_VERSION_MAJOR',['../group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0',1,'glfw3.h']]],
35 ['glfw_5fcontext_5fversion_5fminor_32',['GLFW_CONTEXT_VERSION_MINOR',['../group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07',1,'glfw3.h']]],
36 ['glfw_5fcrosshair_5fcursor_33',['GLFW_CROSSHAIR_CURSOR',['../group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22',1,'glfw3.h']]],
37 ['glfw_5fcursor_34',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]],
38 ['glfw_5fcursor_5fdisabled_35',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]],
39 ['glfw_5fcursor_5fhidden_36',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]],
40 ['glfw_5fcursor_5fnormal_37',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]],
41 ['glfw_5fdecorated_38',['GLFW_DECORATED',['../group__window.html#ga21b854d36314c94d65aed84405b2f25e',1,'glfw3.h']]],
42 ['glfw_5fdepth_5fbits_39',['GLFW_DEPTH_BITS',['../group__window.html#ga318a55eac1fee57dfe593b6d38149d07',1,'glfw3.h']]],
43 ['glfw_5fdisconnected_40',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]],
44 ['glfw_5fdont_5fcare_41',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]],
45 ['glfw_5fdoublebuffer_42',['GLFW_DOUBLEBUFFER',['../group__window.html#ga714a5d569e8a274ea58fdfa020955339',1,'glfw3.h']]],
46 ['glfw_5fegl_5fcontext_5fapi_43',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]],
47 ['glfw_5ffalse_44',['GLFW_FALSE',['../group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5',1,'glfw3.h']]],
48 ['glfw_5ffloating_45',['GLFW_FLOATING',['../group__window.html#ga7fb0be51407783b41adbf5bec0b09d80',1,'glfw3.h']]],
49 ['glfw_5ffocus_5fon_5fshow_46',['GLFW_FOCUS_ON_SHOW',['../group__window.html#gafa94b1da34bfd6488c0d709761504dfc',1,'glfw3.h']]],
50 ['glfw_5ffocused_47',['GLFW_FOCUSED',['../group__window.html#ga54ddb14825a1541a56e22afb5f832a9e',1,'glfw3.h']]],
51 ['glfw_5fformat_5funavailable_48',['GLFW_FORMAT_UNAVAILABLE',['../group__errors.html#ga196e125ef261d94184e2b55c05762f14',1,'glfw3.h']]],
52 ['glfw_5fgamepad_5faxis_5flast_49',['GLFW_GAMEPAD_AXIS_LAST',['../group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86',1,'glfw3.h']]],
53 ['glfw_5fgamepad_5faxis_5fleft_5ftrigger_50',['GLFW_GAMEPAD_AXIS_LEFT_TRIGGER',['../group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e',1,'glfw3.h']]],
54 ['glfw_5fgamepad_5faxis_5fleft_5fx_51',['GLFW_GAMEPAD_AXIS_LEFT_X',['../group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38',1,'glfw3.h']]],
55 ['glfw_5fgamepad_5faxis_5fleft_5fy_52',['GLFW_GAMEPAD_AXIS_LEFT_Y',['../group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5',1,'glfw3.h']]],
56 ['glfw_5fgamepad_5faxis_5fright_5ftrigger_53',['GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER',['../group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab',1,'glfw3.h']]],
57 ['glfw_5fgamepad_5faxis_5fright_5fx_54',['GLFW_GAMEPAD_AXIS_RIGHT_X',['../group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc',1,'glfw3.h']]],
58 ['glfw_5fgamepad_5faxis_5fright_5fy_55',['GLFW_GAMEPAD_AXIS_RIGHT_Y',['../group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4',1,'glfw3.h']]],
59 ['glfw_5fgamepad_5fbutton_5fa_56',['GLFW_GAMEPAD_BUTTON_A',['../group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810',1,'glfw3.h']]],
60 ['glfw_5fgamepad_5fbutton_5fb_57',['GLFW_GAMEPAD_BUTTON_B',['../group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa',1,'glfw3.h']]],
61 ['glfw_5fgamepad_5fbutton_5fback_58',['GLFW_GAMEPAD_BUTTON_BACK',['../group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf',1,'glfw3.h']]],
62 ['glfw_5fgamepad_5fbutton_5fcircle_59',['GLFW_GAMEPAD_BUTTON_CIRCLE',['../group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82',1,'glfw3.h']]],
63 ['glfw_5fgamepad_5fbutton_5fcross_60',['GLFW_GAMEPAD_BUTTON_CROSS',['../group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a',1,'glfw3.h']]],
64 ['glfw_5fgamepad_5fbutton_5fdpad_5fdown_61',['GLFW_GAMEPAD_BUTTON_DPAD_DOWN',['../group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c',1,'glfw3.h']]],
65 ['glfw_5fgamepad_5fbutton_5fdpad_5fleft_62',['GLFW_GAMEPAD_BUTTON_DPAD_LEFT',['../group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301',1,'glfw3.h']]],
66 ['glfw_5fgamepad_5fbutton_5fdpad_5fright_63',['GLFW_GAMEPAD_BUTTON_DPAD_RIGHT',['../group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6',1,'glfw3.h']]],
67 ['glfw_5fgamepad_5fbutton_5fdpad_5fup_64',['GLFW_GAMEPAD_BUTTON_DPAD_UP',['../group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a',1,'glfw3.h']]],
68 ['glfw_5fgamepad_5fbutton_5fguide_65',['GLFW_GAMEPAD_BUTTON_GUIDE',['../group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc',1,'glfw3.h']]],
69 ['glfw_5fgamepad_5fbutton_5flast_66',['GLFW_GAMEPAD_BUTTON_LAST',['../group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb',1,'glfw3.h']]],
70 ['glfw_5fgamepad_5fbutton_5fleft_5fbumper_67',['GLFW_GAMEPAD_BUTTON_LEFT_BUMPER',['../group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3',1,'glfw3.h']]],
71 ['glfw_5fgamepad_5fbutton_5fleft_5fthumb_68',['GLFW_GAMEPAD_BUTTON_LEFT_THUMB',['../group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a',1,'glfw3.h']]],
72 ['glfw_5fgamepad_5fbutton_5fright_5fbumper_69',['GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER',['../group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f',1,'glfw3.h']]],
73 ['glfw_5fgamepad_5fbutton_5fright_5fthumb_70',['GLFW_GAMEPAD_BUTTON_RIGHT_THUMB',['../group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a',1,'glfw3.h']]],
74 ['glfw_5fgamepad_5fbutton_5fsquare_71',['GLFW_GAMEPAD_BUTTON_SQUARE',['../group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f',1,'glfw3.h']]],
75 ['glfw_5fgamepad_5fbutton_5fstart_72',['GLFW_GAMEPAD_BUTTON_START',['../group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021',1,'glfw3.h']]],
76 ['glfw_5fgamepad_5fbutton_5ftriangle_73',['GLFW_GAMEPAD_BUTTON_TRIANGLE',['../group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802',1,'glfw3.h']]],
77 ['glfw_5fgamepad_5fbutton_5fx_74',['GLFW_GAMEPAD_BUTTON_X',['../group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c',1,'glfw3.h']]],
78 ['glfw_5fgamepad_5fbutton_5fy_75',['GLFW_GAMEPAD_BUTTON_Y',['../group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed',1,'glfw3.h']]],
79 ['glfw_5fgreen_5fbits_76',['GLFW_GREEN_BITS',['../group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d',1,'glfw3.h']]],
80 ['glfw_5fhand_5fcursor_77',['GLFW_HAND_CURSOR',['../group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263',1,'glfw3.h']]],
81 ['glfw_5fhat_5fcentered_78',['GLFW_HAT_CENTERED',['../group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd',1,'glfw3.h']]],
82 ['glfw_5fhat_5fdown_79',['GLFW_HAT_DOWN',['../group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff',1,'glfw3.h']]],
83 ['glfw_5fhat_5fleft_80',['GLFW_HAT_LEFT',['../group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff',1,'glfw3.h']]],
84 ['glfw_5fhat_5fleft_5fdown_81',['GLFW_HAT_LEFT_DOWN',['../group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19',1,'glfw3.h']]],
85 ['glfw_5fhat_5fleft_5fup_82',['GLFW_HAT_LEFT_UP',['../group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129',1,'glfw3.h']]],
86 ['glfw_5fhat_5fright_83',['GLFW_HAT_RIGHT',['../group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5',1,'glfw3.h']]],
87 ['glfw_5fhat_5fright_5fdown_84',['GLFW_HAT_RIGHT_DOWN',['../group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5',1,'glfw3.h']]],
88 ['glfw_5fhat_5fright_5fup_85',['GLFW_HAT_RIGHT_UP',['../group__hat__state.html#ga94aea0ae241a8b902883536c592ee693',1,'glfw3.h']]],
89 ['glfw_5fhat_5fup_86',['GLFW_HAT_UP',['../group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36',1,'glfw3.h']]],
90 ['glfw_5fhovered_87',['GLFW_HOVERED',['../group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a',1,'glfw3.h']]],
91 ['glfw_5fhresize_5fcursor_88',['GLFW_HRESIZE_CURSOR',['../group__shapes.html#gabb3eb0109f11bb808fc34659177ca962',1,'glfw3.h']]],
92 ['glfw_5fibeam_5fcursor_89',['GLFW_IBEAM_CURSOR',['../group__shapes.html#ga36185f4375eaada1b04e431244774c86',1,'glfw3.h']]],
93 ['glfw_5ficonified_90',['GLFW_ICONIFIED',['../group__window.html#ga39d44b7c056e55e581355a92d240b58a',1,'glfw3.h']]],
94 ['glfw_5finvalid_5fenum_91',['GLFW_INVALID_ENUM',['../group__errors.html#ga76f6bb9c4eea73db675f096b404593ce',1,'glfw3.h']]],
95 ['glfw_5finvalid_5fvalue_92',['GLFW_INVALID_VALUE',['../group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687',1,'glfw3.h']]],
96 ['glfw_5fjoystick_5f1_93',['GLFW_JOYSTICK_1',['../group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d',1,'glfw3.h']]],
97 ['glfw_5fjoystick_5f10_94',['GLFW_JOYSTICK_10',['../group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec',1,'glfw3.h']]],
98 ['glfw_5fjoystick_5f11_95',['GLFW_JOYSTICK_11',['../group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4',1,'glfw3.h']]],
99 ['glfw_5fjoystick_5f12_96',['GLFW_JOYSTICK_12',['../group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7',1,'glfw3.h']]],
100 ['glfw_5fjoystick_5f13_97',['GLFW_JOYSTICK_13',['../group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508',1,'glfw3.h']]],
101 ['glfw_5fjoystick_5f14_98',['GLFW_JOYSTICK_14',['../group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74',1,'glfw3.h']]],
102 ['glfw_5fjoystick_5f15_99',['GLFW_JOYSTICK_15',['../group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9',1,'glfw3.h']]],
103 ['glfw_5fjoystick_5f16_100',['GLFW_JOYSTICK_16',['../group__joysticks.html#ga453edeeabf350827646b6857df4f80ce',1,'glfw3.h']]],
104 ['glfw_5fjoystick_5f2_101',['GLFW_JOYSTICK_2',['../group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c',1,'glfw3.h']]],
105 ['glfw_5fjoystick_5f3_102',['GLFW_JOYSTICK_3',['../group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654',1,'glfw3.h']]],
106 ['glfw_5fjoystick_5f4_103',['GLFW_JOYSTICK_4',['../group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59',1,'glfw3.h']]],
107 ['glfw_5fjoystick_5f5_104',['GLFW_JOYSTICK_5',['../group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695',1,'glfw3.h']]],
108 ['glfw_5fjoystick_5f6_105',['GLFW_JOYSTICK_6',['../group__joysticks.html#ga74771620aa53bd68a487186dea66fd77',1,'glfw3.h']]],
109 ['glfw_5fjoystick_5f7_106',['GLFW_JOYSTICK_7',['../group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87',1,'glfw3.h']]],
110 ['glfw_5fjoystick_5f8_107',['GLFW_JOYSTICK_8',['../group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb',1,'glfw3.h']]],
111 ['glfw_5fjoystick_5f9_108',['GLFW_JOYSTICK_9',['../group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf',1,'glfw3.h']]],
112 ['glfw_5fjoystick_5fhat_5fbuttons_109',['GLFW_JOYSTICK_HAT_BUTTONS',['../group__init.html#gab9c0534709fda03ec8959201da3a9a18',1,'glfw3.h']]],
113 ['glfw_5fjoystick_5flast_110',['GLFW_JOYSTICK_LAST',['../group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9',1,'glfw3.h']]],
114 ['glfw_5fkey_5f0_111',['GLFW_KEY_0',['../group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1',1,'glfw3.h']]],
115 ['glfw_5fkey_5f1_112',['GLFW_KEY_1',['../group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f',1,'glfw3.h']]],
116 ['glfw_5fkey_5f2_113',['GLFW_KEY_2',['../group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c',1,'glfw3.h']]],
117 ['glfw_5fkey_5f3_114',['GLFW_KEY_3',['../group__keys.html#ga812f0273fe1a981e1fa002ae73e92271',1,'glfw3.h']]],
118 ['glfw_5fkey_5f4_115',['GLFW_KEY_4',['../group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356',1,'glfw3.h']]],
119 ['glfw_5fkey_5f5_116',['GLFW_KEY_5',['../group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924',1,'glfw3.h']]],
120 ['glfw_5fkey_5f6_117',['GLFW_KEY_6',['../group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d',1,'glfw3.h']]],
121 ['glfw_5fkey_5f7_118',['GLFW_KEY_7',['../group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666',1,'glfw3.h']]],
122 ['glfw_5fkey_5f8_119',['GLFW_KEY_8',['../group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f',1,'glfw3.h']]],
123 ['glfw_5fkey_5f9_120',['GLFW_KEY_9',['../group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39',1,'glfw3.h']]],
124 ['glfw_5fkey_5fa_121',['GLFW_KEY_A',['../group__keys.html#ga03e842608e1ea323370889d33b8f70ff',1,'glfw3.h']]],
125 ['glfw_5fkey_5fapostrophe_122',['GLFW_KEY_APOSTROPHE',['../group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24',1,'glfw3.h']]],
126 ['glfw_5fkey_5fb_123',['GLFW_KEY_B',['../group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941',1,'glfw3.h']]],
127 ['glfw_5fkey_5fbackslash_124',['GLFW_KEY_BACKSLASH',['../group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1',1,'glfw3.h']]],
128 ['glfw_5fkey_5fbackspace_125',['GLFW_KEY_BACKSPACE',['../group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635',1,'glfw3.h']]],
129 ['glfw_5fkey_5fc_126',['GLFW_KEY_C',['../group__keys.html#ga00ccf3475d9ee2e679480d540d554669',1,'glfw3.h']]],
130 ['glfw_5fkey_5fcaps_5flock_127',['GLFW_KEY_CAPS_LOCK',['../group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672',1,'glfw3.h']]],
131 ['glfw_5fkey_5fcomma_128',['GLFW_KEY_COMMA',['../group__keys.html#gab3d5d72e59d3055f494627b0a524926c',1,'glfw3.h']]],
132 ['glfw_5fkey_5fd_129',['GLFW_KEY_D',['../group__keys.html#ga011f7cdc9a654da984a2506479606933',1,'glfw3.h']]],
133 ['glfw_5fkey_5fdelete_130',['GLFW_KEY_DELETE',['../group__keys.html#gadb111e4df74b8a715f2c05dad58d2682',1,'glfw3.h']]],
134 ['glfw_5fkey_5fdown_131',['GLFW_KEY_DOWN',['../group__keys.html#gae2e3958c71595607416aa7bf082be2f9',1,'glfw3.h']]],
135 ['glfw_5fkey_5fe_132',['GLFW_KEY_E',['../group__keys.html#gabf48fcc3afbe69349df432b470c96ef2',1,'glfw3.h']]],
136 ['glfw_5fkey_5fend_133',['GLFW_KEY_END',['../group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9',1,'glfw3.h']]],
137 ['glfw_5fkey_5fenter_134',['GLFW_KEY_ENTER',['../group__keys.html#ga9555a92ecbecdbc1f3435219c571d667',1,'glfw3.h']]],
138 ['glfw_5fkey_5fequal_135',['GLFW_KEY_EQUAL',['../group__keys.html#gae1a2de47240d6664423c204bdd91bd17',1,'glfw3.h']]],
139 ['glfw_5fkey_5fescape_136',['GLFW_KEY_ESCAPE',['../group__keys.html#gaac6596c350b635c245113b81c2123b93',1,'glfw3.h']]],
140 ['glfw_5fkey_5ff_137',['GLFW_KEY_F',['../group__keys.html#ga5df402e02aca08444240058fd9b42a55',1,'glfw3.h']]],
141 ['glfw_5fkey_5ff1_138',['GLFW_KEY_F1',['../group__keys.html#gafb8d66c573acf22e364049477dcbea30',1,'glfw3.h']]],
142 ['glfw_5fkey_5ff10_139',['GLFW_KEY_F10',['../group__keys.html#ga718d11d2f7d57471a2f6a894235995b1',1,'glfw3.h']]],
143 ['glfw_5fkey_5ff11_140',['GLFW_KEY_F11',['../group__keys.html#ga0bc04b11627e7d69339151e7306b2832',1,'glfw3.h']]],
144 ['glfw_5fkey_5ff12_141',['GLFW_KEY_F12',['../group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2',1,'glfw3.h']]],
145 ['glfw_5fkey_5ff13_142',['GLFW_KEY_F13',['../group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b',1,'glfw3.h']]],
146 ['glfw_5fkey_5ff14_143',['GLFW_KEY_F14',['../group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f',1,'glfw3.h']]],
147 ['glfw_5fkey_5ff15_144',['GLFW_KEY_F15',['../group__keys.html#ga7f70970db6e8be1794da8516a6d14058',1,'glfw3.h']]],
148 ['glfw_5fkey_5ff16_145',['GLFW_KEY_F16',['../group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27',1,'glfw3.h']]],
149 ['glfw_5fkey_5ff17_146',['GLFW_KEY_F17',['../group__keys.html#ga972ce5c365e2394b36104b0e3125c748',1,'glfw3.h']]],
150 ['glfw_5fkey_5ff18_147',['GLFW_KEY_F18',['../group__keys.html#gaebf6391058d5566601e357edc5ea737c',1,'glfw3.h']]],
151 ['glfw_5fkey_5ff19_148',['GLFW_KEY_F19',['../group__keys.html#gaec011d9ba044058cb54529da710e9791',1,'glfw3.h']]],
152 ['glfw_5fkey_5ff2_149',['GLFW_KEY_F2',['../group__keys.html#ga0900750aff94889b940f5e428c07daee',1,'glfw3.h']]],
153 ['glfw_5fkey_5ff20_150',['GLFW_KEY_F20',['../group__keys.html#ga82b9c721ada04cd5ca8de767da38022f',1,'glfw3.h']]],
154 ['glfw_5fkey_5ff21_151',['GLFW_KEY_F21',['../group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f',1,'glfw3.h']]],
155 ['glfw_5fkey_5ff22_152',['GLFW_KEY_F22',['../group__keys.html#ga90960bd2a155f2b09675324d3dff1565',1,'glfw3.h']]],
156 ['glfw_5fkey_5ff23_153',['GLFW_KEY_F23',['../group__keys.html#ga43c21099aac10952d1be909a8ddee4d5',1,'glfw3.h']]],
157 ['glfw_5fkey_5ff24_154',['GLFW_KEY_F24',['../group__keys.html#ga8150374677b5bed3043408732152dea2',1,'glfw3.h']]],
158 ['glfw_5fkey_5ff25_155',['GLFW_KEY_F25',['../group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199',1,'glfw3.h']]],
159 ['glfw_5fkey_5ff3_156',['GLFW_KEY_F3',['../group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015',1,'glfw3.h']]],
160 ['glfw_5fkey_5ff4_157',['GLFW_KEY_F4',['../group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6',1,'glfw3.h']]],
161 ['glfw_5fkey_5ff5_158',['GLFW_KEY_F5',['../group__keys.html#gaf258dda9947daa428377938ed577c8c2',1,'glfw3.h']]],
162 ['glfw_5fkey_5ff6_159',['GLFW_KEY_F6',['../group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d',1,'glfw3.h']]],
163 ['glfw_5fkey_5ff7_160',['GLFW_KEY_F7',['../group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a',1,'glfw3.h']]],
164 ['glfw_5fkey_5ff8_161',['GLFW_KEY_F8',['../group__keys.html#gac9d39390336ae14e4a93e295de43c7e8',1,'glfw3.h']]],
165 ['glfw_5fkey_5ff9_162',['GLFW_KEY_F9',['../group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851',1,'glfw3.h']]],
166 ['glfw_5fkey_5fg_163',['GLFW_KEY_G',['../group__keys.html#gae74ecddf7cc96104ab23989b1cdab536',1,'glfw3.h']]],
167 ['glfw_5fkey_5fgrave_5faccent_164',['GLFW_KEY_GRAVE_ACCENT',['../group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668',1,'glfw3.h']]],
168 ['glfw_5fkey_5fh_165',['GLFW_KEY_H',['../group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076',1,'glfw3.h']]],
169 ['glfw_5fkey_5fhome_166',['GLFW_KEY_HOME',['../group__keys.html#ga41452c7287195d481e43207318c126a7',1,'glfw3.h']]],
170 ['glfw_5fkey_5fi_167',['GLFW_KEY_I',['../group__keys.html#ga274655c8bfe39742684ca393cf8ed093',1,'glfw3.h']]],
171 ['glfw_5fkey_5finsert_168',['GLFW_KEY_INSERT',['../group__keys.html#ga373ac7365435d6b0eb1068f470e34f47',1,'glfw3.h']]],
172 ['glfw_5fkey_5fj_169',['GLFW_KEY_J',['../group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f',1,'glfw3.h']]],
173 ['glfw_5fkey_5fk_170',['GLFW_KEY_K',['../group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0',1,'glfw3.h']]],
174 ['glfw_5fkey_5fkp_5f0_171',['GLFW_KEY_KP_0',['../group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d',1,'glfw3.h']]],
175 ['glfw_5fkey_5fkp_5f1_172',['GLFW_KEY_KP_1',['../group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3',1,'glfw3.h']]],
176 ['glfw_5fkey_5fkp_5f2_173',['GLFW_KEY_KP_2',['../group__keys.html#gaf82d5a802ab8213c72653d7480c16f13',1,'glfw3.h']]],
177 ['glfw_5fkey_5fkp_5f3_174',['GLFW_KEY_KP_3',['../group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2',1,'glfw3.h']]],
178 ['glfw_5fkey_5fkp_5f4_175',['GLFW_KEY_KP_4',['../group__keys.html#gada7ec86778b85e0b4de0beea72234aea',1,'glfw3.h']]],
179 ['glfw_5fkey_5fkp_5f5_176',['GLFW_KEY_KP_5',['../group__keys.html#ga9a5be274434866c51738cafbb6d26b45',1,'glfw3.h']]],
180 ['glfw_5fkey_5fkp_5f6_177',['GLFW_KEY_KP_6',['../group__keys.html#gafc141b0f8450519084c01092a3157faa',1,'glfw3.h']]],
181 ['glfw_5fkey_5fkp_5f7_178',['GLFW_KEY_KP_7',['../group__keys.html#ga8882f411f05d04ec77a9563974bbfa53',1,'glfw3.h']]],
182 ['glfw_5fkey_5fkp_5f8_179',['GLFW_KEY_KP_8',['../group__keys.html#gab2ea2e6a12f89d315045af520ac78cec',1,'glfw3.h']]],
183 ['glfw_5fkey_5fkp_5f9_180',['GLFW_KEY_KP_9',['../group__keys.html#gafb21426b630ed4fcc084868699ba74c1',1,'glfw3.h']]],
184 ['glfw_5fkey_5fkp_5fadd_181',['GLFW_KEY_KP_ADD',['../group__keys.html#gad09c7c98acc79e89aa6a0a91275becac',1,'glfw3.h']]],
185 ['glfw_5fkey_5fkp_5fdecimal_182',['GLFW_KEY_KP_DECIMAL',['../group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b',1,'glfw3.h']]],
186 ['glfw_5fkey_5fkp_5fdivide_183',['GLFW_KEY_KP_DIVIDE',['../group__keys.html#gabca1733780a273d549129ad0f250d1e5',1,'glfw3.h']]],
187 ['glfw_5fkey_5fkp_5fenter_184',['GLFW_KEY_KP_ENTER',['../group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf',1,'glfw3.h']]],
188 ['glfw_5fkey_5fkp_5fequal_185',['GLFW_KEY_KP_EQUAL',['../group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97',1,'glfw3.h']]],
189 ['glfw_5fkey_5fkp_5fmultiply_186',['GLFW_KEY_KP_MULTIPLY',['../group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef',1,'glfw3.h']]],
190 ['glfw_5fkey_5fkp_5fsubtract_187',['GLFW_KEY_KP_SUBTRACT',['../group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236',1,'glfw3.h']]],
191 ['glfw_5fkey_5fl_188',['GLFW_KEY_L',['../group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2',1,'glfw3.h']]],
192 ['glfw_5fkey_5flast_189',['GLFW_KEY_LAST',['../group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789',1,'glfw3.h']]],
193 ['glfw_5fkey_5fleft_190',['GLFW_KEY_LEFT',['../group__keys.html#gae12a010d33c309a67ab9460c51eb2462',1,'glfw3.h']]],
194 ['glfw_5fkey_5fleft_5falt_191',['GLFW_KEY_LEFT_ALT',['../group__keys.html#ga7f27dabf63a7789daa31e1c96790219b',1,'glfw3.h']]],
195 ['glfw_5fkey_5fleft_5fbracket_192',['GLFW_KEY_LEFT_BRACKET',['../group__keys.html#gad1c8d9adac53925276ecb1d592511d8a',1,'glfw3.h']]],
196 ['glfw_5fkey_5fleft_5fcontrol_193',['GLFW_KEY_LEFT_CONTROL',['../group__keys.html#ga9f97b743e81460ac4b2deddecd10a464',1,'glfw3.h']]],
197 ['glfw_5fkey_5fleft_5fshift_194',['GLFW_KEY_LEFT_SHIFT',['../group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6',1,'glfw3.h']]],
198 ['glfw_5fkey_5fleft_5fsuper_195',['GLFW_KEY_LEFT_SUPER',['../group__keys.html#gafb1207c91997fc295afd1835fbc5641a',1,'glfw3.h']]],
199 ['glfw_5fkey_5fm_196',['GLFW_KEY_M',['../group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716',1,'glfw3.h']]],
200 ['glfw_5fkey_5fmenu_197',['GLFW_KEY_MENU',['../group__keys.html#ga9845be48a745fc232045c9ec174d8820',1,'glfw3.h']]],
201 ['glfw_5fkey_5fminus_198',['GLFW_KEY_MINUS',['../group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4',1,'glfw3.h']]],
202 ['glfw_5fkey_5fn_199',['GLFW_KEY_N',['../group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda',1,'glfw3.h']]],
203 ['glfw_5fkey_5fnum_5flock_200',['GLFW_KEY_NUM_LOCK',['../group__keys.html#ga3946edc362aeff213b2be6304296cf43',1,'glfw3.h']]],
204 ['glfw_5fkey_5fo_201',['GLFW_KEY_O',['../group__keys.html#gaecbbb79130df419d58dd7f09a169efe9',1,'glfw3.h']]],
205 ['glfw_5fkey_5fp_202',['GLFW_KEY_P',['../group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1',1,'glfw3.h']]],
206 ['glfw_5fkey_5fpage_5fdown_203',['GLFW_KEY_PAGE_DOWN',['../group__keys.html#gaee0a8fa442001cc2147812f84b59041c',1,'glfw3.h']]],
207 ['glfw_5fkey_5fpage_5fup_204',['GLFW_KEY_PAGE_UP',['../group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586',1,'glfw3.h']]],
208 ['glfw_5fkey_5fpause_205',['GLFW_KEY_PAUSE',['../group__keys.html#ga8116b9692d87382afb5849b6d8907f18',1,'glfw3.h']]],
209 ['glfw_5fkey_5fperiod_206',['GLFW_KEY_PERIOD',['../group__keys.html#ga37e296b650eab419fc474ff69033d927',1,'glfw3.h']]],
210 ['glfw_5fkey_5fprint_5fscreen_207',['GLFW_KEY_PRINT_SCREEN',['../group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642',1,'glfw3.h']]],
211 ['glfw_5fkey_5fq_208',['GLFW_KEY_Q',['../group__keys.html#gafdd01e38b120d67cf51e348bb47f3964',1,'glfw3.h']]],
212 ['glfw_5fkey_5fr_209',['GLFW_KEY_R',['../group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36',1,'glfw3.h']]],
213 ['glfw_5fkey_5fright_210',['GLFW_KEY_RIGHT',['../group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac',1,'glfw3.h']]],
214 ['glfw_5fkey_5fright_5falt_211',['GLFW_KEY_RIGHT_ALT',['../group__keys.html#ga687b38009131cfdd07a8d05fff8fa446',1,'glfw3.h']]],
215 ['glfw_5fkey_5fright_5fbracket_212',['GLFW_KEY_RIGHT_BRACKET',['../group__keys.html#ga86ef225fd6a66404caae71044cdd58d8',1,'glfw3.h']]],
216 ['glfw_5fkey_5fright_5fcontrol_213',['GLFW_KEY_RIGHT_CONTROL',['../group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519',1,'glfw3.h']]],
217 ['glfw_5fkey_5fright_5fshift_214',['GLFW_KEY_RIGHT_SHIFT',['../group__keys.html#gaffca36b99c9dce1a19cb9befbadce691',1,'glfw3.h']]],
218 ['glfw_5fkey_5fright_5fsuper_215',['GLFW_KEY_RIGHT_SUPER',['../group__keys.html#gad4547a3e8e247594acb60423fe6502db',1,'glfw3.h']]],
219 ['glfw_5fkey_5fs_216',['GLFW_KEY_S',['../group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9',1,'glfw3.h']]],
220 ['glfw_5fkey_5fscroll_5flock_217',['GLFW_KEY_SCROLL_LOCK',['../group__keys.html#gaf622b63b9537f7084c2ab649b8365630',1,'glfw3.h']]],
221 ['glfw_5fkey_5fsemicolon_218',['GLFW_KEY_SEMICOLON',['../group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d',1,'glfw3.h']]],
222 ['glfw_5fkey_5fslash_219',['GLFW_KEY_SLASH',['../group__keys.html#gadf3d753b2d479148d711de34b83fd0db',1,'glfw3.h']]],
223 ['glfw_5fkey_5fspace_220',['GLFW_KEY_SPACE',['../group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014',1,'glfw3.h']]],
224 ['glfw_5fkey_5ft_221',['GLFW_KEY_T',['../group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9',1,'glfw3.h']]],
225 ['glfw_5fkey_5ftab_222',['GLFW_KEY_TAB',['../group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df',1,'glfw3.h']]],
226 ['glfw_5fkey_5fu_223',['GLFW_KEY_U',['../group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d',1,'glfw3.h']]],
227 ['glfw_5fkey_5funknown_224',['GLFW_KEY_UNKNOWN',['../group__keys.html#ga99aacc875b6b27a072552631e13775c7',1,'glfw3.h']]],
228 ['glfw_5fkey_5fup_225',['GLFW_KEY_UP',['../group__keys.html#ga2f3342b194020d3544c67e3506b6f144',1,'glfw3.h']]],
229 ['glfw_5fkey_5fv_226',['GLFW_KEY_V',['../group__keys.html#ga22c7763899ecf7788862e5f90eacce6b',1,'glfw3.h']]],
230 ['glfw_5fkey_5fw_227',['GLFW_KEY_W',['../group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545',1,'glfw3.h']]],
231 ['glfw_5fkey_5fworld_5f1_228',['GLFW_KEY_WORLD_1',['../group__keys.html#gadc78dad3dab76bcd4b5c20114052577a',1,'glfw3.h']]],
232 ['glfw_5fkey_5fworld_5f2_229',['GLFW_KEY_WORLD_2',['../group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e',1,'glfw3.h']]],
233 ['glfw_5fkey_5fx_230',['GLFW_KEY_X',['../group__keys.html#gac1c42c0bf4192cea713c55598b06b744',1,'glfw3.h']]],
234 ['glfw_5fkey_5fy_231',['GLFW_KEY_Y',['../group__keys.html#gafd9f115a549effdf8e372a787c360313',1,'glfw3.h']]],
235 ['glfw_5fkey_5fz_232',['GLFW_KEY_Z',['../group__keys.html#gac489e208c26afda8d4938ed88718760a',1,'glfw3.h']]],
236 ['glfw_5flock_5fkey_5fmods_233',['GLFW_LOCK_KEY_MODS',['../glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947',1,'glfw3.h']]],
237 ['glfw_5flose_5fcontext_5fon_5freset_234',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]],
238 ['glfw_5fmaximized_235',['GLFW_MAXIMIZED',['../group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03',1,'glfw3.h']]],
239 ['glfw_5fmod_5falt_236',['GLFW_MOD_ALT',['../group__mods.html#gad2acd5633463c29e07008687ea73c0f4',1,'glfw3.h']]],
240 ['glfw_5fmod_5fcaps_5flock_237',['GLFW_MOD_CAPS_LOCK',['../group__mods.html#gaefeef8fcf825a6e43e241b337897200f',1,'glfw3.h']]],
241 ['glfw_5fmod_5fcontrol_238',['GLFW_MOD_CONTROL',['../group__mods.html#ga6ed94871c3208eefd85713fa929d45aa',1,'glfw3.h']]],
242 ['glfw_5fmod_5fnum_5flock_239',['GLFW_MOD_NUM_LOCK',['../group__mods.html#ga64e020b8a42af8376e944baf61feecbe',1,'glfw3.h']]],
243 ['glfw_5fmod_5fshift_240',['GLFW_MOD_SHIFT',['../group__mods.html#ga14994d3196c290aaa347248e51740274',1,'glfw3.h']]],
244 ['glfw_5fmod_5fsuper_241',['GLFW_MOD_SUPER',['../group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1',1,'glfw3.h']]],
245 ['glfw_5fmouse_5fbutton_5f1_242',['GLFW_MOUSE_BUTTON_1',['../group__buttons.html#ga181a6e875251fd8671654eff00f9112e',1,'glfw3.h']]],
246 ['glfw_5fmouse_5fbutton_5f2_243',['GLFW_MOUSE_BUTTON_2',['../group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c',1,'glfw3.h']]],
247 ['glfw_5fmouse_5fbutton_5f3_244',['GLFW_MOUSE_BUTTON_3',['../group__buttons.html#ga0130d505563d0236a6f85545f19e1721',1,'glfw3.h']]],
248 ['glfw_5fmouse_5fbutton_5f4_245',['GLFW_MOUSE_BUTTON_4',['../group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9',1,'glfw3.h']]],
249 ['glfw_5fmouse_5fbutton_5f5_246',['GLFW_MOUSE_BUTTON_5',['../group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c',1,'glfw3.h']]],
250 ['glfw_5fmouse_5fbutton_5f6_247',['GLFW_MOUSE_BUTTON_6',['../group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a',1,'glfw3.h']]],
251 ['glfw_5fmouse_5fbutton_5f7_248',['GLFW_MOUSE_BUTTON_7',['../group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7',1,'glfw3.h']]],
252 ['glfw_5fmouse_5fbutton_5f8_249',['GLFW_MOUSE_BUTTON_8',['../group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c',1,'glfw3.h']]],
253 ['glfw_5fmouse_5fbutton_5flast_250',['GLFW_MOUSE_BUTTON_LAST',['../group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf',1,'glfw3.h']]],
254 ['glfw_5fmouse_5fbutton_5fleft_251',['GLFW_MOUSE_BUTTON_LEFT',['../group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56',1,'glfw3.h']]],
255 ['glfw_5fmouse_5fbutton_5fmiddle_252',['GLFW_MOUSE_BUTTON_MIDDLE',['../group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a',1,'glfw3.h']]],
256 ['glfw_5fmouse_5fbutton_5fright_253',['GLFW_MOUSE_BUTTON_RIGHT',['../group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74',1,'glfw3.h']]],
257 ['glfw_5fnative_5fcontext_5fapi_254',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]],
258 ['glfw_5fno_5fapi_255',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]],
259 ['glfw_5fno_5fcurrent_5fcontext_256',['GLFW_NO_CURRENT_CONTEXT',['../group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0',1,'glfw3.h']]],
260 ['glfw_5fno_5ferror_257',['GLFW_NO_ERROR',['../group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4',1,'glfw3.h']]],
261 ['glfw_5fno_5freset_5fnotification_258',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]],
262 ['glfw_5fno_5frobustness_259',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]],
263 ['glfw_5fno_5fwindow_5fcontext_260',['GLFW_NO_WINDOW_CONTEXT',['../group__errors.html#gacff24d2757da752ae4c80bf452356487',1,'glfw3.h']]],
264 ['glfw_5fnot_5finitialized_261',['GLFW_NOT_INITIALIZED',['../group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a',1,'glfw3.h']]],
265 ['glfw_5fopengl_5fany_5fprofile_262',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]],
266 ['glfw_5fopengl_5fapi_263',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]],
267 ['glfw_5fopengl_5fcompat_5fprofile_264',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]],
268 ['glfw_5fopengl_5fcore_5fprofile_265',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]],
269 ['glfw_5fopengl_5fdebug_5fcontext_266',['GLFW_OPENGL_DEBUG_CONTEXT',['../group__window.html#ga87ec2df0b915201e950ca42d5d0831e1',1,'glfw3.h']]],
270 ['glfw_5fopengl_5fes_5fapi_267',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]],
271 ['glfw_5fopengl_5fforward_5fcompat_268',['GLFW_OPENGL_FORWARD_COMPAT',['../group__window.html#ga13d24b12465da8b28985f46c8557925b',1,'glfw3.h']]],
272 ['glfw_5fopengl_5fprofile_269',['GLFW_OPENGL_PROFILE',['../group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12',1,'glfw3.h']]],
273 ['glfw_5fosmesa_5fcontext_5fapi_270',['GLFW_OSMESA_CONTEXT_API',['../glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3',1,'glfw3.h']]],
274 ['glfw_5fout_5fof_5fmemory_271',['GLFW_OUT_OF_MEMORY',['../group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f',1,'glfw3.h']]],
275 ['glfw_5fplatform_5ferror_272',['GLFW_PLATFORM_ERROR',['../group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1',1,'glfw3.h']]],
276 ['glfw_5fpress_273',['GLFW_PRESS',['../group__input.html#ga2485743d0b59df3791c45951c4195265',1,'glfw3.h']]],
277 ['glfw_5fraw_5fmouse_5fmotion_274',['GLFW_RAW_MOUSE_MOTION',['../glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb',1,'glfw3.h']]],
278 ['glfw_5fred_5fbits_275',['GLFW_RED_BITS',['../group__window.html#gaf78ed8e417dbcc1e354906cc2708c982',1,'glfw3.h']]],
279 ['glfw_5frefresh_5frate_276',['GLFW_REFRESH_RATE',['../group__window.html#ga0f20825e6e47ee8ba389024519682212',1,'glfw3.h']]],
280 ['glfw_5frelease_277',['GLFW_RELEASE',['../group__input.html#gada11d965c4da13090ad336e030e4d11f',1,'glfw3.h']]],
281 ['glfw_5frelease_5fbehavior_5fflush_278',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]],
282 ['glfw_5frelease_5fbehavior_5fnone_279',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]],
283 ['glfw_5frepeat_280',['GLFW_REPEAT',['../group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f',1,'glfw3.h']]],
284 ['glfw_5fresizable_281',['GLFW_RESIZABLE',['../group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d',1,'glfw3.h']]],
285 ['glfw_5fsamples_282',['GLFW_SAMPLES',['../group__window.html#ga2cdf86fdcb7722fb8829c4e201607535',1,'glfw3.h']]],
286 ['glfw_5fscale_5fto_5fmonitor_283',['GLFW_SCALE_TO_MONITOR',['../group__window.html#ga620bc4280c7eab81ac9f02204500ed47',1,'glfw3.h']]],
287 ['glfw_5fsrgb_5fcapable_284',['GLFW_SRGB_CAPABLE',['../group__window.html#ga444a8f00414a63220591f9fdb7b5642b',1,'glfw3.h']]],
288 ['glfw_5fstencil_5fbits_285',['GLFW_STENCIL_BITS',['../group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d',1,'glfw3.h']]],
289 ['glfw_5fstereo_286',['GLFW_STEREO',['../group__window.html#ga83d991efca02537e2d69969135b77b03',1,'glfw3.h']]],
290 ['glfw_5fsticky_5fkeys_287',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]],
291 ['glfw_5fsticky_5fmouse_5fbuttons_288',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]],
292 ['glfw_5ftransparent_5fframebuffer_289',['GLFW_TRANSPARENT_FRAMEBUFFER',['../group__window.html#ga60a0578c3b9449027d683a9c6abb9f14',1,'glfw3.h']]],
293 ['glfw_5ftrue_290',['GLFW_TRUE',['../group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba',1,'glfw3.h']]],
294 ['glfw_5fversion_5fmajor_291',['GLFW_VERSION_MAJOR',['../group__init.html#ga6337d9ea43b22fc529b2bba066b4a576',1,'glfw3.h']]],
295 ['glfw_5fversion_5fminor_292',['GLFW_VERSION_MINOR',['../group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3',1,'glfw3.h']]],
296 ['glfw_5fversion_5frevision_293',['GLFW_VERSION_REVISION',['../group__init.html#gab72ae2e2035d9ea461abc3495eac0502',1,'glfw3.h']]],
297 ['glfw_5fversion_5funavailable_294',['GLFW_VERSION_UNAVAILABLE',['../group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462',1,'glfw3.h']]],
298 ['glfw_5fvisible_295',['GLFW_VISIBLE',['../group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4',1,'glfw3.h']]],
299 ['glfw_5fvresize_5fcursor_296',['GLFW_VRESIZE_CURSOR',['../group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5',1,'glfw3.h']]],
300 ['glfw_5fx11_5fclass_5fname_297',['GLFW_X11_CLASS_NAME',['../group__window.html#gae5a9ea2fccccd92edbd343fc56461114',1,'glfw3.h']]],
301 ['glfw_5fx11_5finstance_5fname_298',['GLFW_X11_INSTANCE_NAME',['../group__window.html#ga494c3c0d911e4b860b946530a3e389e8',1,'glfw3.h']]],
302 ['glfwcharfun_299',['GLFWcharfun',['../group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e',1,'glfw3.h']]],
303 ['glfwcharmodsfun_300',['GLFWcharmodsfun',['../group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f',1,'glfw3.h']]],
304 ['glfwcreatecursor_301',['glfwCreateCursor',['../group__input.html#ga556f604f73af156c0db0e97c081373c3',1,'glfw3.h']]],
305 ['glfwcreatestandardcursor_302',['glfwCreateStandardCursor',['../group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e',1,'glfw3.h']]],
306 ['glfwcreatewindow_303',['glfwCreateWindow',['../group__window.html#ga3555a418df92ad53f917597fe2f64aeb',1,'glfw3.h']]],
307 ['glfwcreatewindowsurface_304',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]],
308 ['glfwcursor_305',['GLFWcursor',['../group__input.html#ga89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]],
309 ['glfwcursorenterfun_306',['GLFWcursorenterfun',['../group__input.html#gaa93dc4818ac9ab32532909d53a337cbe',1,'glfw3.h']]],
310 ['glfwcursorposfun_307',['GLFWcursorposfun',['../group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68',1,'glfw3.h']]],
311 ['glfwdefaultwindowhints_308',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]],
312 ['glfwdestroycursor_309',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]],
313 ['glfwdestroywindow_310',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]],
314 ['glfwdropfun_311',['GLFWdropfun',['../group__input.html#gaaba73c3274062c18723b7f05862d94b2',1,'glfw3.h']]],
315 ['glfwerrorfun_312',['GLFWerrorfun',['../group__init.html#ga8184701785c096b3862a75cda1bf44a3',1,'glfw3.h']]],
316 ['glfwextensionsupported_313',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]],
317 ['glfwfocuswindow_314',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]],
318 ['glfwframebuffersizefun_315',['GLFWframebuffersizefun',['../group__window.html#gae18026e294dde685ed2e5f759533144d',1,'glfw3.h']]],
319 ['glfwgamepadstate_316',['GLFWgamepadstate',['../group__input.html#ga61acfb1f28f751438dd221225c5e725d',1,'GLFWgamepadstate():&#160;glfw3.h'],['../structGLFWgamepadstate.html',1,'GLFWgamepadstate']]],
320 ['glfwgammaramp_317',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'GLFWgammaramp'],['../group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404',1,'GLFWgammaramp():&#160;glfw3.h']]],
321 ['glfwgetclipboardstring_318',['glfwGetClipboardString',['../group__input.html#ga71a5b20808ea92193d65c21b82580355',1,'glfw3.h']]],
322 ['glfwgetcocoamonitor_319',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]],
323 ['glfwgetcocoawindow_320',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]],
324 ['glfwgetcurrentcontext_321',['glfwGetCurrentContext',['../group__context.html#gad94e80185397a6cf5fe2ab30567af71c',1,'glfw3.h']]],
325 ['glfwgetcursorpos_322',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]],
326 ['glfwgeteglcontext_323',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]],
327 ['glfwgetegldisplay_324',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]],
328 ['glfwgeteglsurface_325',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]],
329 ['glfwgeterror_326',['glfwGetError',['../group__init.html#ga944986b4ec0b928d488141f92982aa18',1,'glfw3.h']]],
330 ['glfwgetframebuffersize_327',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]],
331 ['glfwgetgamepadname_328',['glfwGetGamepadName',['../group__input.html#ga8aea73a1a25cc6c0486a617019f56728',1,'glfw3.h']]],
332 ['glfwgetgamepadstate_329',['glfwGetGamepadState',['../group__input.html#gadccddea8bce6113fa459de379ddaf051',1,'glfw3.h']]],
333 ['glfwgetgammaramp_330',['glfwGetGammaRamp',['../group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f',1,'glfw3.h']]],
334 ['glfwgetglxcontext_331',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]],
335 ['glfwgetglxwindow_332',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]],
336 ['glfwgetinputmode_333',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]],
337 ['glfwgetinstanceprocaddress_334',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]],
338 ['glfwgetjoystickaxes_335',['glfwGetJoystickAxes',['../group__input.html#gaeb1c0191d3140a233a682987c61eb408',1,'glfw3.h']]],
339 ['glfwgetjoystickbuttons_336',['glfwGetJoystickButtons',['../group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938',1,'glfw3.h']]],
340 ['glfwgetjoystickguid_337',['glfwGetJoystickGUID',['../group__input.html#ga6659411aec3c7fcef27780e2cb2d9600',1,'glfw3.h']]],
341 ['glfwgetjoystickhats_338',['glfwGetJoystickHats',['../group__input.html#ga06e660841b3e79c54da4f54a932c5a2c',1,'glfw3.h']]],
342 ['glfwgetjoystickname_339',['glfwGetJoystickName',['../group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978',1,'glfw3.h']]],
343 ['glfwgetjoystickuserpointer_340',['glfwGetJoystickUserPointer',['../group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3',1,'glfw3.h']]],
344 ['glfwgetkey_341',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]],
345 ['glfwgetkeyname_342',['glfwGetKeyName',['../group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f',1,'glfw3.h']]],
346 ['glfwgetkeyscancode_343',['glfwGetKeyScancode',['../group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a',1,'glfw3.h']]],
347 ['glfwgetmonitorcontentscale_344',['glfwGetMonitorContentScale',['../group__monitor.html#gad3152e84465fa620b601265ebfcdb21b',1,'glfw3.h']]],
348 ['glfwgetmonitorname_345',['glfwGetMonitorName',['../group__monitor.html#ga7af83e13489d90379588fb331b9e4b68',1,'glfw3.h']]],
349 ['glfwgetmonitorphysicalsize_346',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]],
350 ['glfwgetmonitorpos_347',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]],
351 ['glfwgetmonitors_348',['glfwGetMonitors',['../group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2',1,'glfw3.h']]],
352 ['glfwgetmonitoruserpointer_349',['glfwGetMonitorUserPointer',['../group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5',1,'glfw3.h']]],
353 ['glfwgetmonitorworkarea_350',['glfwGetMonitorWorkarea',['../group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0',1,'glfw3.h']]],
354 ['glfwgetmousebutton_351',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]],
355 ['glfwgetnsglcontext_352',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]],
356 ['glfwgetosmesacolorbuffer_353',['glfwGetOSMesaColorBuffer',['../group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132',1,'glfw3native.h']]],
357 ['glfwgetosmesacontext_354',['glfwGetOSMesaContext',['../group__native.html#ga9e47700080094eb569cb053afaa88773',1,'glfw3native.h']]],
358 ['glfwgetosmesadepthbuffer_355',['glfwGetOSMesaDepthBuffer',['../group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53',1,'glfw3native.h']]],
359 ['glfwgetphysicaldevicepresentationsupport_356',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]],
360 ['glfwgetprimarymonitor_357',['glfwGetPrimaryMonitor',['../group__monitor.html#gac3adb24947eb709e1874028272e5dfc5',1,'glfw3.h']]],
361 ['glfwgetprocaddress_358',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]],
362 ['glfwgetrequiredinstanceextensions_359',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6',1,'glfw3.h']]],
363 ['glfwgettime_360',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]],
364 ['glfwgettimerfrequency_361',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]],
365 ['glfwgettimervalue_362',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]],
366 ['glfwgetversion_363',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]],
367 ['glfwgetversionstring_364',['glfwGetVersionString',['../group__init.html#ga026abd003c8e6501981ab1662062f1c0',1,'glfw3.h']]],
368 ['glfwgetvideomode_365',['glfwGetVideoMode',['../group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5',1,'glfw3.h']]],
369 ['glfwgetvideomodes_366',['glfwGetVideoModes',['../group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b',1,'glfw3.h']]],
370 ['glfwgetwaylanddisplay_367',['glfwGetWaylandDisplay',['../group__native.html#gacbe11f93ce20621de82989bbba94e62a',1,'glfw3native.h']]],
371 ['glfwgetwaylandmonitor_368',['glfwGetWaylandMonitor',['../group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16',1,'glfw3native.h']]],
372 ['glfwgetwaylandwindow_369',['glfwGetWaylandWindow',['../group__native.html#ga5c597f2841229d9626f0811cca41ceb3',1,'glfw3native.h']]],
373 ['glfwgetwglcontext_370',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]],
374 ['glfwgetwin32adapter_371',['glfwGetWin32Adapter',['../group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41',1,'glfw3native.h']]],
375 ['glfwgetwin32monitor_372',['glfwGetWin32Monitor',['../group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766',1,'glfw3native.h']]],
376 ['glfwgetwin32window_373',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]],
377 ['glfwgetwindowattrib_374',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]],
378 ['glfwgetwindowcontentscale_375',['glfwGetWindowContentScale',['../group__window.html#gaf5d31de9c19c4f994facea64d2b3106c',1,'glfw3.h']]],
379 ['glfwgetwindowframesize_376',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]],
380 ['glfwgetwindowmonitor_377',['glfwGetWindowMonitor',['../group__window.html#ga4d766499ac02c60f02221a9dfab87299',1,'glfw3.h']]],
381 ['glfwgetwindowopacity_378',['glfwGetWindowOpacity',['../group__window.html#gad09f0bd7a6307c4533b7061828480a84',1,'glfw3.h']]],
382 ['glfwgetwindowpos_379',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]],
383 ['glfwgetwindowsize_380',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]],
384 ['glfwgetwindowuserpointer_381',['glfwGetWindowUserPointer',['../group__window.html#gae77a4add0d2023ca21ff1443ced01653',1,'glfw3.h']]],
385 ['glfwgetx11adapter_382',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]],
386 ['glfwgetx11display_383',['glfwGetX11Display',['../group__native.html#ga6e7822385cc8a1cc3b18f60352830189',1,'glfw3native.h']]],
387 ['glfwgetx11monitor_384',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]],
388 ['glfwgetx11selectionstring_385',['glfwGetX11SelectionString',['../group__native.html#gae084ef64dc0db140b455b1427256d3f7',1,'glfw3native.h']]],
389 ['glfwgetx11window_386',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]],
390 ['glfwglproc_387',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]],
391 ['glfwhidewindow_388',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]],
392 ['glfwiconifywindow_389',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]],
393 ['glfwimage_390',['GLFWimage',['../structGLFWimage.html',1,'GLFWimage'],['../group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca',1,'GLFWimage():&#160;glfw3.h']]],
394 ['glfwinit_391',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]],
395 ['glfwinithint_392',['glfwInitHint',['../group__init.html#ga110fd1d3f0412822b4f1908c026f724a',1,'glfw3.h']]],
396 ['glfwjoystickfun_393',['GLFWjoystickfun',['../group__input.html#gaa21ad5986ae9a26077a40142efb56243',1,'glfw3.h']]],
397 ['glfwjoystickisgamepad_394',['glfwJoystickIsGamepad',['../group__input.html#gad0f676860f329d80f7e47e9f06a96f00',1,'glfw3.h']]],
398 ['glfwjoystickpresent_395',['glfwJoystickPresent',['../group__input.html#gaed0966cee139d815317f9ffcba64c9f1',1,'glfw3.h']]],
399 ['glfwkeyfun_396',['GLFWkeyfun',['../group__input.html#ga5bd751b27b90f865d2ea613533f0453c',1,'glfw3.h']]],
400 ['glfwmakecontextcurrent_397',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]],
401 ['glfwmaximizewindow_398',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]],
402 ['glfwmonitor_399',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]],
403 ['glfwmonitorfun_400',['GLFWmonitorfun',['../group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249',1,'glfw3.h']]],
404 ['glfwmousebuttonfun_401',['GLFWmousebuttonfun',['../group__input.html#ga0184dcb59f6d85d735503dcaae809727',1,'glfw3.h']]],
405 ['glfwpollevents_402',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]],
406 ['glfwpostemptyevent_403',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]],
407 ['glfwrawmousemotionsupported_404',['glfwRawMouseMotionSupported',['../group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2',1,'glfw3.h']]],
408 ['glfwrequestwindowattention_405',['glfwRequestWindowAttention',['../group__window.html#ga2f8d59323fc4692c1d54ba08c863a703',1,'glfw3.h']]],
409 ['glfwrestorewindow_406',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]],
410 ['glfwscrollfun_407',['GLFWscrollfun',['../group__input.html#gaf656112c33de3efdb227fa58f0134cf5',1,'glfw3.h']]],
411 ['glfwsetcharcallback_408',['glfwSetCharCallback',['../group__input.html#gab25c4a220fd8f5717718dbc487828996',1,'glfw3.h']]],
412 ['glfwsetcharmodscallback_409',['glfwSetCharModsCallback',['../group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c',1,'glfw3.h']]],
413 ['glfwsetclipboardstring_410',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]],
414 ['glfwsetcursor_411',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]],
415 ['glfwsetcursorentercallback_412',['glfwSetCursorEnterCallback',['../group__input.html#gad27f8ad0142c038a281466c0966817d8',1,'glfw3.h']]],
416 ['glfwsetcursorpos_413',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]],
417 ['glfwsetcursorposcallback_414',['glfwSetCursorPosCallback',['../group__input.html#gac1f879ab7435d54d4d79bb469fe225d7',1,'glfw3.h']]],
418 ['glfwsetdropcallback_415',['glfwSetDropCallback',['../group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b',1,'glfw3.h']]],
419 ['glfwseterrorcallback_416',['glfwSetErrorCallback',['../group__init.html#gaff45816610d53f0b83656092a4034f40',1,'glfw3.h']]],
420 ['glfwsetframebuffersizecallback_417',['glfwSetFramebufferSizeCallback',['../group__window.html#gab3fb7c3366577daef18c0023e2a8591f',1,'glfw3.h']]],
421 ['glfwsetgamma_418',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]],
422 ['glfwsetgammaramp_419',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]],
423 ['glfwsetinputmode_420',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]],
424 ['glfwsetjoystickcallback_421',['glfwSetJoystickCallback',['../group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c',1,'glfw3.h']]],
425 ['glfwsetjoystickuserpointer_422',['glfwSetJoystickUserPointer',['../group__input.html#ga6b2f72d64d636b48a727b437cbb7489e',1,'glfw3.h']]],
426 ['glfwsetkeycallback_423',['glfwSetKeyCallback',['../group__input.html#ga1caf18159767e761185e49a3be019f8d',1,'glfw3.h']]],
427 ['glfwsetmonitorcallback_424',['glfwSetMonitorCallback',['../group__monitor.html#gab39df645587c8518192aa746c2fb06c3',1,'glfw3.h']]],
428 ['glfwsetmonitoruserpointer_425',['glfwSetMonitorUserPointer',['../group__monitor.html#ga702750e24313a686d3637297b6e85fda',1,'glfw3.h']]],
429 ['glfwsetmousebuttoncallback_426',['glfwSetMouseButtonCallback',['../group__input.html#ga6ab84420974d812bee700e45284a723c',1,'glfw3.h']]],
430 ['glfwsetscrollcallback_427',['glfwSetScrollCallback',['../group__input.html#ga571e45a030ae4061f746ed56cb76aede',1,'glfw3.h']]],
431 ['glfwsettime_428',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]],
432 ['glfwsetwindowaspectratio_429',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]],
433 ['glfwsetwindowattrib_430',['glfwSetWindowAttrib',['../group__window.html#gace2afda29b4116ec012e410a6819033e',1,'glfw3.h']]],
434 ['glfwsetwindowclosecallback_431',['glfwSetWindowCloseCallback',['../group__window.html#gada646d775a7776a95ac000cfc1885331',1,'glfw3.h']]],
435 ['glfwsetwindowcontentscalecallback_432',['glfwSetWindowContentScaleCallback',['../group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6',1,'glfw3.h']]],
436 ['glfwsetwindowfocuscallback_433',['glfwSetWindowFocusCallback',['../group__window.html#gac2d83c4a10f071baf841f6730528e66c',1,'glfw3.h']]],
437 ['glfwsetwindowicon_434',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]],
438 ['glfwsetwindowiconifycallback_435',['glfwSetWindowIconifyCallback',['../group__window.html#gac793e9efd255567b5fb8b445052cfd3e',1,'glfw3.h']]],
439 ['glfwsetwindowmaximizecallback_436',['glfwSetWindowMaximizeCallback',['../group__window.html#gacbe64c339fbd94885e62145563b6dc93',1,'glfw3.h']]],
440 ['glfwsetwindowmonitor_437',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]],
441 ['glfwsetwindowopacity_438',['glfwSetWindowOpacity',['../group__window.html#gac31caeb3d1088831b13d2c8a156802e9',1,'glfw3.h']]],
442 ['glfwsetwindowpos_439',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]],
443 ['glfwsetwindowposcallback_440',['glfwSetWindowPosCallback',['../group__window.html#ga08bdfbba88934f9c4f92fd757979ac74',1,'glfw3.h']]],
444 ['glfwsetwindowrefreshcallback_441',['glfwSetWindowRefreshCallback',['../group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e',1,'glfw3.h']]],
445 ['glfwsetwindowshouldclose_442',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]],
446 ['glfwsetwindowsize_443',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]],
447 ['glfwsetwindowsizecallback_444',['glfwSetWindowSizeCallback',['../group__window.html#gad91b8b047a0c4c6033c38853864c34f8',1,'glfw3.h']]],
448 ['glfwsetwindowsizelimits_445',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]],
449 ['glfwsetwindowtitle_446',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]],
450 ['glfwsetwindowuserpointer_447',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]],
451 ['glfwsetx11selectionstring_448',['glfwSetX11SelectionString',['../group__native.html#ga55f879ab02d93367f966186b6f0133f7',1,'glfw3native.h']]],
452 ['glfwshowwindow_449',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]],
453 ['glfwswapbuffers_450',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]],
454 ['glfwswapinterval_451',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]],
455 ['glfwterminate_452',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]],
456 ['glfwupdategamepadmappings_453',['glfwUpdateGamepadMappings',['../group__input.html#gaed5104612f2fa8e66aa6e846652ad00f',1,'glfw3.h']]],
457 ['glfwvidmode_454',['GLFWvidmode',['../structGLFWvidmode.html',1,'GLFWvidmode'],['../group__monitor.html#ga902c2816ac9b34b757282daab59b2565',1,'GLFWvidmode():&#160;glfw3.h']]],
458 ['glfwvkproc_455',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]],
459 ['glfwvulkansupported_456',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]],
460 ['glfwwaitevents_457',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]],
461 ['glfwwaiteventstimeout_458',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]],
462 ['glfwwindow_459',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]],
463 ['glfwwindowclosefun_460',['GLFWwindowclosefun',['../group__window.html#gabf859b936d80961b7d39013a9694cc3e',1,'glfw3.h']]],
464 ['glfwwindowcontentscalefun_461',['GLFWwindowcontentscalefun',['../group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e',1,'glfw3.h']]],
465 ['glfwwindowfocusfun_462',['GLFWwindowfocusfun',['../group__window.html#gabc58c47e9d93f6eb1862d615c3680f46',1,'glfw3.h']]],
466 ['glfwwindowhint_463',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]],
467 ['glfwwindowhintstring_464',['glfwWindowHintString',['../group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f',1,'glfw3.h']]],
468 ['glfwwindowiconifyfun_465',['GLFWwindowiconifyfun',['../group__window.html#ga35c658cccba236f26e7adee0e25f6a4f',1,'glfw3.h']]],
469 ['glfwwindowmaximizefun_466',['GLFWwindowmaximizefun',['../group__window.html#ga3017196fdaec33ac3e095765176c2a90',1,'glfw3.h']]],
470 ['glfwwindowposfun_467',['GLFWwindowposfun',['../group__window.html#gabe287973a21a8f927cde4db06b8dcbe9',1,'glfw3.h']]],
471 ['glfwwindowrefreshfun_468',['GLFWwindowrefreshfun',['../group__window.html#ga431663a1427d2eb3a273bc398b6737b5',1,'glfw3.h']]],
472 ['glfwwindowshouldclose_469',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]],
473 ['glfwwindowsizefun_470',['GLFWwindowsizefun',['../group__window.html#gaec0282944bb810f6f3163ec02da90350',1,'glfw3.h']]],
474 ['green_471',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]],
475 ['greenbits_472',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]]
476];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.html
new file mode 100644
index 0000000..bb28b19
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_6.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.js
new file mode 100644
index 0000000..c7cee75
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_6.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['height_0',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.html
new file mode 100644
index 0000000..ee4017e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_7.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.js
new file mode 100644
index 0000000..e3d9927
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_7.js
@@ -0,0 +1,11 @@
1var searchData=
2[
3 ['initialization_2c_20version_20and_20error_20reference_0',['Initialization, version and error reference',['../group__init.html',1,'']]],
4 ['input_20guide_1',['Input guide',['../input_guide.html',1,'']]],
5 ['input_20reference_2',['Input reference',['../group__input.html',1,'']]],
6 ['input_2edox_3',['input.dox',['../input_8dox.html',1,'']]],
7 ['internal_20structure_4',['Internal structure',['../internals_guide.html',1,'']]],
8 ['internal_2edox_5',['internal.dox',['../internal_8dox.html',1,'']]],
9 ['intro_2edox_6',['intro.dox',['../intro_8dox.html',1,'']]],
10 ['introduction_20to_20the_20api_7',['Introduction to the API',['../intro_guide.html',1,'']]]
11];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.html
new file mode 100644
index 0000000..e2c6307
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_8.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.js
new file mode 100644
index 0000000..13c7e1c
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_8.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['joystick_20hat_20states_0',['Joystick hat states',['../group__hat__state.html',1,'']]],
4 ['joysticks_1',['Joysticks',['../group__joysticks.html',1,'']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.html
new file mode 100644
index 0000000..768d5c9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_9.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.js
new file mode 100644
index 0000000..85dae9f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_9.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['keyboard_20keys_0',['Keyboard keys',['../group__keys.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.html
new file mode 100644
index 0000000..e3ec122
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_a.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.js
new file mode 100644
index 0000000..07d4bf9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_a.js
@@ -0,0 +1,11 @@
1var searchData=
2[
3 ['main_2edox_0',['main.dox',['../main_8dox.html',1,'']]],
4 ['modifier_20key_20flags_1',['Modifier key flags',['../group__mods.html',1,'']]],
5 ['monitor_20guide_2',['Monitor guide',['../monitor_guide.html',1,'']]],
6 ['monitor_20reference_3',['Monitor reference',['../group__monitor.html',1,'']]],
7 ['monitor_2edox_4',['monitor.dox',['../monitor_8dox.html',1,'']]],
8 ['mouse_20buttons_5',['Mouse buttons',['../group__buttons.html',1,'']]],
9 ['moving_20from_20glfw_202_20to_203_6',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]],
10 ['moving_2edox_7',['moving.dox',['../moving_8dox.html',1,'']]]
11];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.html
new file mode 100644
index 0000000..80b5a71
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_b.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.js
new file mode 100644
index 0000000..acfdc50
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_b.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['native_20access_0',['Native access',['../group__native.html',1,'']]],
4 ['news_2edox_1',['news.dox',['../news_8dox.html',1,'']]],
5 ['notitle_2',['notitle',['../index.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.html
new file mode 100644
index 0000000..6e724a0
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_c.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.js
new file mode 100644
index 0000000..6414492
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_c.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['pixels_0',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.html
new file mode 100644
index 0000000..67677b0
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_d.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.js
new file mode 100644
index 0000000..65523fe
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_d.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['quick_2edox_0',['quick.dox',['../quick_8dox.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.html
new file mode 100644
index 0000000..c1f4e6e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_e.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.js
new file mode 100644
index 0000000..7d07f0f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_e.js
@@ -0,0 +1,7 @@
1var searchData=
2[
3 ['red_0',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]],
4 ['redbits_1',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]],
5 ['refreshrate_2',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]],
6 ['release_20notes_3',['Release notes',['../news.html',1,'']]]
7];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.html
new file mode 100644
index 0000000..df25328
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="all_f.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.js
new file mode 100644
index 0000000..58da740
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/all_f.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['size_0',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]],
4 ['standard_20cursor_20shapes_1',['Standard cursor shapes',['../group__shapes.html',1,'']]],
5 ['standards_20conformance_2',['Standards conformance',['../compat_guide.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.html
new file mode 100644
index 0000000..4112ea7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="classes_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.js
new file mode 100644
index 0000000..14cc25b
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/classes_0.js
@@ -0,0 +1,7 @@
1var searchData=
2[
3 ['glfwgamepadstate_0',['GLFWgamepadstate',['../structGLFWgamepadstate.html',1,'']]],
4 ['glfwgammaramp_1',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'']]],
5 ['glfwimage_2',['GLFWimage',['../structGLFWimage.html',1,'']]],
6 ['glfwvidmode_3',['GLFWvidmode',['../structGLFWvidmode.html',1,'']]]
7];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/close.svg b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/close.svg
new file mode 100644
index 0000000..a933eea
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/close.svg
@@ -0,0 +1,31 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg
3 xmlns:dc="http://purl.org/dc/elements/1.1/"
4 xmlns:cc="http://creativecommons.org/ns#"
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6 xmlns:svg="http://www.w3.org/2000/svg"
7 xmlns="http://www.w3.org/2000/svg"
8 viewBox="0 0 11 11"
9 height="11"
10 width="11"
11 id="svg2"
12 version="1.1">
13 <metadata
14 id="metadata8">
15 <rdf:RDF>
16 <cc:Work
17 rdf:about="">
18 <dc:format>image/svg+xml</dc:format>
19 <dc:type
20 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
21 <dc:title></dc:title>
22 </cc:Work>
23 </rdf:RDF>
24 </metadata>
25 <defs
26 id="defs6" />
27 <path
28 id="path12"
29 d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
30 style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
31</svg>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.html
new file mode 100644
index 0000000..19847bb
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="defines_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.js
new file mode 100644
index 0000000..1d84c10
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/defines_0.js
@@ -0,0 +1,31 @@
1var searchData=
2[
3 ['glapientry_0',['GLAPIENTRY',['../glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206',1,'glfw3.h']]],
4 ['glfw_5fany_5frelease_5fbehavior_1',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]],
5 ['glfw_5fapientry_5fdefined_2',['GLFW_APIENTRY_DEFINED',['../glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9',1,'glfw3.h']]],
6 ['glfw_5fconnected_3',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]],
7 ['glfw_5fcursor_4',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]],
8 ['glfw_5fcursor_5fdisabled_5',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]],
9 ['glfw_5fcursor_5fhidden_6',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]],
10 ['glfw_5fcursor_5fnormal_7',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]],
11 ['glfw_5fdisconnected_8',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]],
12 ['glfw_5fdont_5fcare_9',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]],
13 ['glfw_5fegl_5fcontext_5fapi_10',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]],
14 ['glfw_5flock_5fkey_5fmods_11',['GLFW_LOCK_KEY_MODS',['../glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947',1,'glfw3.h']]],
15 ['glfw_5flose_5fcontext_5fon_5freset_12',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]],
16 ['glfw_5fnative_5fcontext_5fapi_13',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]],
17 ['glfw_5fno_5fapi_14',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]],
18 ['glfw_5fno_5freset_5fnotification_15',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]],
19 ['glfw_5fno_5frobustness_16',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]],
20 ['glfw_5fopengl_5fany_5fprofile_17',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]],
21 ['glfw_5fopengl_5fapi_18',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]],
22 ['glfw_5fopengl_5fcompat_5fprofile_19',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]],
23 ['glfw_5fopengl_5fcore_5fprofile_20',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]],
24 ['glfw_5fopengl_5fes_5fapi_21',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]],
25 ['glfw_5fosmesa_5fcontext_5fapi_22',['GLFW_OSMESA_CONTEXT_API',['../glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3',1,'glfw3.h']]],
26 ['glfw_5fraw_5fmouse_5fmotion_23',['GLFW_RAW_MOUSE_MOTION',['../glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb',1,'glfw3.h']]],
27 ['glfw_5frelease_5fbehavior_5fflush_24',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]],
28 ['glfw_5frelease_5fbehavior_5fnone_25',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]],
29 ['glfw_5fsticky_5fkeys_26',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]],
30 ['glfw_5fsticky_5fmouse_5fbuttons_27',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]]
31];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.html
new file mode 100644
index 0000000..e284084
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.js
new file mode 100644
index 0000000..cb6c601
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_0.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['build_2edox_0',['build.dox',['../build_8dox.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.html
new file mode 100644
index 0000000..2e6e1e1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_1.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.js
new file mode 100644
index 0000000..73b293d
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_1.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['compat_2edox_0',['compat.dox',['../compat_8dox.html',1,'']]],
4 ['compile_2edox_1',['compile.dox',['../compile_8dox.html',1,'']]],
5 ['context_2edox_2',['context.dox',['../context_8dox.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.html
new file mode 100644
index 0000000..7a0a2e1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_2.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.js
new file mode 100644
index 0000000..f35780d
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_2.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['glfw3_2eh_0',['glfw3.h',['../glfw3_8h.html',1,'']]],
4 ['glfw3native_2eh_1',['glfw3native.h',['../glfw3native_8h.html',1,'']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.html
new file mode 100644
index 0000000..418f304
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_3.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.js
new file mode 100644
index 0000000..f3b77c0
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_3.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['input_2edox_0',['input.dox',['../input_8dox.html',1,'']]],
4 ['internal_2edox_1',['internal.dox',['../internal_8dox.html',1,'']]],
5 ['intro_2edox_2',['intro.dox',['../intro_8dox.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.html
new file mode 100644
index 0000000..d5e4577
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_4.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.js
new file mode 100644
index 0000000..03c9f8e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_4.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['main_2edox_0',['main.dox',['../main_8dox.html',1,'']]],
4 ['monitor_2edox_1',['monitor.dox',['../monitor_8dox.html',1,'']]],
5 ['moving_2edox_2',['moving.dox',['../moving_8dox.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.html
new file mode 100644
index 0000000..c1ae5d6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_5.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.js
new file mode 100644
index 0000000..6f6eee1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_5.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['news_2edox_0',['news.dox',['../news_8dox.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.html
new file mode 100644
index 0000000..fe47781
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_6.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.js
new file mode 100644
index 0000000..65523fe
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_6.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['quick_2edox_0',['quick.dox',['../quick_8dox.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.html
new file mode 100644
index 0000000..4f4ead4
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_7.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.js
new file mode 100644
index 0000000..82f1459
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_7.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['vulkan_2edox_0',['vulkan.dox',['../vulkan_8dox.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.html
new file mode 100644
index 0000000..dbaced6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="files_8.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.js
new file mode 100644
index 0000000..cb9a6d6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/files_8.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['window_2edox_0',['window.dox',['../window_8dox.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.html
new file mode 100644
index 0000000..ce45090
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="functions_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.js
new file mode 100644
index 0000000..07b0dcd
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/functions_0.js
@@ -0,0 +1,146 @@
1var searchData=
2[
3 ['glfwcreatecursor_0',['glfwCreateCursor',['../group__input.html#ga556f604f73af156c0db0e97c081373c3',1,'glfw3.h']]],
4 ['glfwcreatestandardcursor_1',['glfwCreateStandardCursor',['../group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e',1,'glfw3.h']]],
5 ['glfwcreatewindow_2',['glfwCreateWindow',['../group__window.html#ga3555a418df92ad53f917597fe2f64aeb',1,'glfw3.h']]],
6 ['glfwcreatewindowsurface_3',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]],
7 ['glfwdefaultwindowhints_4',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]],
8 ['glfwdestroycursor_5',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]],
9 ['glfwdestroywindow_6',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]],
10 ['glfwextensionsupported_7',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]],
11 ['glfwfocuswindow_8',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]],
12 ['glfwgetclipboardstring_9',['glfwGetClipboardString',['../group__input.html#ga71a5b20808ea92193d65c21b82580355',1,'glfw3.h']]],
13 ['glfwgetcocoamonitor_10',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]],
14 ['glfwgetcocoawindow_11',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]],
15 ['glfwgetcurrentcontext_12',['glfwGetCurrentContext',['../group__context.html#gad94e80185397a6cf5fe2ab30567af71c',1,'glfw3.h']]],
16 ['glfwgetcursorpos_13',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]],
17 ['glfwgeteglcontext_14',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]],
18 ['glfwgetegldisplay_15',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]],
19 ['glfwgeteglsurface_16',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]],
20 ['glfwgeterror_17',['glfwGetError',['../group__init.html#ga944986b4ec0b928d488141f92982aa18',1,'glfw3.h']]],
21 ['glfwgetframebuffersize_18',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]],
22 ['glfwgetgamepadname_19',['glfwGetGamepadName',['../group__input.html#ga8aea73a1a25cc6c0486a617019f56728',1,'glfw3.h']]],
23 ['glfwgetgamepadstate_20',['glfwGetGamepadState',['../group__input.html#gadccddea8bce6113fa459de379ddaf051',1,'glfw3.h']]],
24 ['glfwgetgammaramp_21',['glfwGetGammaRamp',['../group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f',1,'glfw3.h']]],
25 ['glfwgetglxcontext_22',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]],
26 ['glfwgetglxwindow_23',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]],
27 ['glfwgetinputmode_24',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]],
28 ['glfwgetinstanceprocaddress_25',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]],
29 ['glfwgetjoystickaxes_26',['glfwGetJoystickAxes',['../group__input.html#gaeb1c0191d3140a233a682987c61eb408',1,'glfw3.h']]],
30 ['glfwgetjoystickbuttons_27',['glfwGetJoystickButtons',['../group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938',1,'glfw3.h']]],
31 ['glfwgetjoystickguid_28',['glfwGetJoystickGUID',['../group__input.html#ga6659411aec3c7fcef27780e2cb2d9600',1,'glfw3.h']]],
32 ['glfwgetjoystickhats_29',['glfwGetJoystickHats',['../group__input.html#ga06e660841b3e79c54da4f54a932c5a2c',1,'glfw3.h']]],
33 ['glfwgetjoystickname_30',['glfwGetJoystickName',['../group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978',1,'glfw3.h']]],
34 ['glfwgetjoystickuserpointer_31',['glfwGetJoystickUserPointer',['../group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3',1,'glfw3.h']]],
35 ['glfwgetkey_32',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]],
36 ['glfwgetkeyname_33',['glfwGetKeyName',['../group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f',1,'glfw3.h']]],
37 ['glfwgetkeyscancode_34',['glfwGetKeyScancode',['../group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a',1,'glfw3.h']]],
38 ['glfwgetmonitorcontentscale_35',['glfwGetMonitorContentScale',['../group__monitor.html#gad3152e84465fa620b601265ebfcdb21b',1,'glfw3.h']]],
39 ['glfwgetmonitorname_36',['glfwGetMonitorName',['../group__monitor.html#ga7af83e13489d90379588fb331b9e4b68',1,'glfw3.h']]],
40 ['glfwgetmonitorphysicalsize_37',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]],
41 ['glfwgetmonitorpos_38',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]],
42 ['glfwgetmonitors_39',['glfwGetMonitors',['../group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2',1,'glfw3.h']]],
43 ['glfwgetmonitoruserpointer_40',['glfwGetMonitorUserPointer',['../group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5',1,'glfw3.h']]],
44 ['glfwgetmonitorworkarea_41',['glfwGetMonitorWorkarea',['../group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0',1,'glfw3.h']]],
45 ['glfwgetmousebutton_42',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]],
46 ['glfwgetnsglcontext_43',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]],
47 ['glfwgetosmesacolorbuffer_44',['glfwGetOSMesaColorBuffer',['../group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132',1,'glfw3native.h']]],
48 ['glfwgetosmesacontext_45',['glfwGetOSMesaContext',['../group__native.html#ga9e47700080094eb569cb053afaa88773',1,'glfw3native.h']]],
49 ['glfwgetosmesadepthbuffer_46',['glfwGetOSMesaDepthBuffer',['../group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53',1,'glfw3native.h']]],
50 ['glfwgetphysicaldevicepresentationsupport_47',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]],
51 ['glfwgetprimarymonitor_48',['glfwGetPrimaryMonitor',['../group__monitor.html#gac3adb24947eb709e1874028272e5dfc5',1,'glfw3.h']]],
52 ['glfwgetprocaddress_49',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]],
53 ['glfwgetrequiredinstanceextensions_50',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6',1,'glfw3.h']]],
54 ['glfwgettime_51',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]],
55 ['glfwgettimerfrequency_52',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]],
56 ['glfwgettimervalue_53',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]],
57 ['glfwgetversion_54',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]],
58 ['glfwgetversionstring_55',['glfwGetVersionString',['../group__init.html#ga026abd003c8e6501981ab1662062f1c0',1,'glfw3.h']]],
59 ['glfwgetvideomode_56',['glfwGetVideoMode',['../group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5',1,'glfw3.h']]],
60 ['glfwgetvideomodes_57',['glfwGetVideoModes',['../group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b',1,'glfw3.h']]],
61 ['glfwgetwaylanddisplay_58',['glfwGetWaylandDisplay',['../group__native.html#gacbe11f93ce20621de82989bbba94e62a',1,'glfw3native.h']]],
62 ['glfwgetwaylandmonitor_59',['glfwGetWaylandMonitor',['../group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16',1,'glfw3native.h']]],
63 ['glfwgetwaylandwindow_60',['glfwGetWaylandWindow',['../group__native.html#ga5c597f2841229d9626f0811cca41ceb3',1,'glfw3native.h']]],
64 ['glfwgetwglcontext_61',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]],
65 ['glfwgetwin32adapter_62',['glfwGetWin32Adapter',['../group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41',1,'glfw3native.h']]],
66 ['glfwgetwin32monitor_63',['glfwGetWin32Monitor',['../group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766',1,'glfw3native.h']]],
67 ['glfwgetwin32window_64',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]],
68 ['glfwgetwindowattrib_65',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]],
69 ['glfwgetwindowcontentscale_66',['glfwGetWindowContentScale',['../group__window.html#gaf5d31de9c19c4f994facea64d2b3106c',1,'glfw3.h']]],
70 ['glfwgetwindowframesize_67',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]],
71 ['glfwgetwindowmonitor_68',['glfwGetWindowMonitor',['../group__window.html#ga4d766499ac02c60f02221a9dfab87299',1,'glfw3.h']]],
72 ['glfwgetwindowopacity_69',['glfwGetWindowOpacity',['../group__window.html#gad09f0bd7a6307c4533b7061828480a84',1,'glfw3.h']]],
73 ['glfwgetwindowpos_70',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]],
74 ['glfwgetwindowsize_71',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]],
75 ['glfwgetwindowuserpointer_72',['glfwGetWindowUserPointer',['../group__window.html#gae77a4add0d2023ca21ff1443ced01653',1,'glfw3.h']]],
76 ['glfwgetx11adapter_73',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]],
77 ['glfwgetx11display_74',['glfwGetX11Display',['../group__native.html#ga6e7822385cc8a1cc3b18f60352830189',1,'glfw3native.h']]],
78 ['glfwgetx11monitor_75',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]],
79 ['glfwgetx11selectionstring_76',['glfwGetX11SelectionString',['../group__native.html#gae084ef64dc0db140b455b1427256d3f7',1,'glfw3native.h']]],
80 ['glfwgetx11window_77',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]],
81 ['glfwhidewindow_78',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]],
82 ['glfwiconifywindow_79',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]],
83 ['glfwinit_80',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]],
84 ['glfwinithint_81',['glfwInitHint',['../group__init.html#ga110fd1d3f0412822b4f1908c026f724a',1,'glfw3.h']]],
85 ['glfwjoystickisgamepad_82',['glfwJoystickIsGamepad',['../group__input.html#gad0f676860f329d80f7e47e9f06a96f00',1,'glfw3.h']]],
86 ['glfwjoystickpresent_83',['glfwJoystickPresent',['../group__input.html#gaed0966cee139d815317f9ffcba64c9f1',1,'glfw3.h']]],
87 ['glfwmakecontextcurrent_84',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]],
88 ['glfwmaximizewindow_85',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]],
89 ['glfwpollevents_86',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]],
90 ['glfwpostemptyevent_87',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]],
91 ['glfwrawmousemotionsupported_88',['glfwRawMouseMotionSupported',['../group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2',1,'glfw3.h']]],
92 ['glfwrequestwindowattention_89',['glfwRequestWindowAttention',['../group__window.html#ga2f8d59323fc4692c1d54ba08c863a703',1,'glfw3.h']]],
93 ['glfwrestorewindow_90',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]],
94 ['glfwsetcharcallback_91',['glfwSetCharCallback',['../group__input.html#gab25c4a220fd8f5717718dbc487828996',1,'glfw3.h']]],
95 ['glfwsetcharmodscallback_92',['glfwSetCharModsCallback',['../group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c',1,'glfw3.h']]],
96 ['glfwsetclipboardstring_93',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]],
97 ['glfwsetcursor_94',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]],
98 ['glfwsetcursorentercallback_95',['glfwSetCursorEnterCallback',['../group__input.html#gad27f8ad0142c038a281466c0966817d8',1,'glfw3.h']]],
99 ['glfwsetcursorpos_96',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]],
100 ['glfwsetcursorposcallback_97',['glfwSetCursorPosCallback',['../group__input.html#gac1f879ab7435d54d4d79bb469fe225d7',1,'glfw3.h']]],
101 ['glfwsetdropcallback_98',['glfwSetDropCallback',['../group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b',1,'glfw3.h']]],
102 ['glfwseterrorcallback_99',['glfwSetErrorCallback',['../group__init.html#gaff45816610d53f0b83656092a4034f40',1,'glfw3.h']]],
103 ['glfwsetframebuffersizecallback_100',['glfwSetFramebufferSizeCallback',['../group__window.html#gab3fb7c3366577daef18c0023e2a8591f',1,'glfw3.h']]],
104 ['glfwsetgamma_101',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]],
105 ['glfwsetgammaramp_102',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]],
106 ['glfwsetinputmode_103',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]],
107 ['glfwsetjoystickcallback_104',['glfwSetJoystickCallback',['../group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c',1,'glfw3.h']]],
108 ['glfwsetjoystickuserpointer_105',['glfwSetJoystickUserPointer',['../group__input.html#ga6b2f72d64d636b48a727b437cbb7489e',1,'glfw3.h']]],
109 ['glfwsetkeycallback_106',['glfwSetKeyCallback',['../group__input.html#ga1caf18159767e761185e49a3be019f8d',1,'glfw3.h']]],
110 ['glfwsetmonitorcallback_107',['glfwSetMonitorCallback',['../group__monitor.html#gab39df645587c8518192aa746c2fb06c3',1,'glfw3.h']]],
111 ['glfwsetmonitoruserpointer_108',['glfwSetMonitorUserPointer',['../group__monitor.html#ga702750e24313a686d3637297b6e85fda',1,'glfw3.h']]],
112 ['glfwsetmousebuttoncallback_109',['glfwSetMouseButtonCallback',['../group__input.html#ga6ab84420974d812bee700e45284a723c',1,'glfw3.h']]],
113 ['glfwsetscrollcallback_110',['glfwSetScrollCallback',['../group__input.html#ga571e45a030ae4061f746ed56cb76aede',1,'glfw3.h']]],
114 ['glfwsettime_111',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]],
115 ['glfwsetwindowaspectratio_112',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]],
116 ['glfwsetwindowattrib_113',['glfwSetWindowAttrib',['../group__window.html#gace2afda29b4116ec012e410a6819033e',1,'glfw3.h']]],
117 ['glfwsetwindowclosecallback_114',['glfwSetWindowCloseCallback',['../group__window.html#gada646d775a7776a95ac000cfc1885331',1,'glfw3.h']]],
118 ['glfwsetwindowcontentscalecallback_115',['glfwSetWindowContentScaleCallback',['../group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6',1,'glfw3.h']]],
119 ['glfwsetwindowfocuscallback_116',['glfwSetWindowFocusCallback',['../group__window.html#gac2d83c4a10f071baf841f6730528e66c',1,'glfw3.h']]],
120 ['glfwsetwindowicon_117',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]],
121 ['glfwsetwindowiconifycallback_118',['glfwSetWindowIconifyCallback',['../group__window.html#gac793e9efd255567b5fb8b445052cfd3e',1,'glfw3.h']]],
122 ['glfwsetwindowmaximizecallback_119',['glfwSetWindowMaximizeCallback',['../group__window.html#gacbe64c339fbd94885e62145563b6dc93',1,'glfw3.h']]],
123 ['glfwsetwindowmonitor_120',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]],
124 ['glfwsetwindowopacity_121',['glfwSetWindowOpacity',['../group__window.html#gac31caeb3d1088831b13d2c8a156802e9',1,'glfw3.h']]],
125 ['glfwsetwindowpos_122',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]],
126 ['glfwsetwindowposcallback_123',['glfwSetWindowPosCallback',['../group__window.html#ga08bdfbba88934f9c4f92fd757979ac74',1,'glfw3.h']]],
127 ['glfwsetwindowrefreshcallback_124',['glfwSetWindowRefreshCallback',['../group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e',1,'glfw3.h']]],
128 ['glfwsetwindowshouldclose_125',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]],
129 ['glfwsetwindowsize_126',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]],
130 ['glfwsetwindowsizecallback_127',['glfwSetWindowSizeCallback',['../group__window.html#gad91b8b047a0c4c6033c38853864c34f8',1,'glfw3.h']]],
131 ['glfwsetwindowsizelimits_128',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]],
132 ['glfwsetwindowtitle_129',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]],
133 ['glfwsetwindowuserpointer_130',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]],
134 ['glfwsetx11selectionstring_131',['glfwSetX11SelectionString',['../group__native.html#ga55f879ab02d93367f966186b6f0133f7',1,'glfw3native.h']]],
135 ['glfwshowwindow_132',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]],
136 ['glfwswapbuffers_133',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]],
137 ['glfwswapinterval_134',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]],
138 ['glfwterminate_135',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]],
139 ['glfwupdategamepadmappings_136',['glfwUpdateGamepadMappings',['../group__input.html#gaed5104612f2fa8e66aa6e846652ad00f',1,'glfw3.h']]],
140 ['glfwvulkansupported_137',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]],
141 ['glfwwaitevents_138',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]],
142 ['glfwwaiteventstimeout_139',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]],
143 ['glfwwindowhint_140',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]],
144 ['glfwwindowhintstring_141',['glfwWindowHintString',['../group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f',1,'glfw3.h']]],
145 ['glfwwindowshouldclose_142',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]]
146];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.html
new file mode 100644
index 0000000..b58dd54
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.js
new file mode 100644
index 0000000..93c0706
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_0.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['context_20reference_0',['Context reference',['../group__context.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.html
new file mode 100644
index 0000000..2c2310e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_1.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.js
new file mode 100644
index 0000000..eedfab6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_1.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['error_20codes_0',['Error codes',['../group__errors.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.html
new file mode 100644
index 0000000..a9b6af7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_2.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.js
new file mode 100644
index 0000000..fa4eb8e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_2.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['gamepad_20axes_0',['Gamepad axes',['../group__gamepad__axes.html',1,'']]],
4 ['gamepad_20buttons_1',['Gamepad buttons',['../group__gamepad__buttons.html',1,'']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.html
new file mode 100644
index 0000000..1f15b56
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_3.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.js
new file mode 100644
index 0000000..8dd9d34
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_3.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['initialization_2c_20version_20and_20error_20reference_0',['Initialization, version and error reference',['../group__init.html',1,'']]],
4 ['input_20reference_1',['Input reference',['../group__input.html',1,'']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.html
new file mode 100644
index 0000000..d089254
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_4.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.js
new file mode 100644
index 0000000..13c7e1c
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_4.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['joystick_20hat_20states_0',['Joystick hat states',['../group__hat__state.html',1,'']]],
4 ['joysticks_1',['Joysticks',['../group__joysticks.html',1,'']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.html
new file mode 100644
index 0000000..c8918b6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_5.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.js
new file mode 100644
index 0000000..85dae9f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_5.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['keyboard_20keys_0',['Keyboard keys',['../group__keys.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.html
new file mode 100644
index 0000000..bd77e17
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_6.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.js
new file mode 100644
index 0000000..ecd175e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_6.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['modifier_20key_20flags_0',['Modifier key flags',['../group__mods.html',1,'']]],
4 ['monitor_20reference_1',['Monitor reference',['../group__monitor.html',1,'']]],
5 ['mouse_20buttons_2',['Mouse buttons',['../group__buttons.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.html
new file mode 100644
index 0000000..117f6d7
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_7.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.js
new file mode 100644
index 0000000..423f6a5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_7.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['native_20access_0',['Native access',['../group__native.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.html
new file mode 100644
index 0000000..f3a91a2
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_8.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.js
new file mode 100644
index 0000000..92f24a5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_8.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['standard_20cursor_20shapes_0',['Standard cursor shapes',['../group__shapes.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.html
new file mode 100644
index 0000000..bd50abd
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_9.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.js
new file mode 100644
index 0000000..7b5ed3f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_9.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['vulkan_20support_20reference_0',['Vulkan support reference',['../group__vulkan.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.html
new file mode 100644
index 0000000..e997522
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="groups_a.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.js
new file mode 100644
index 0000000..b9c307f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/groups_a.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['window_20reference_0',['Window reference',['../group__window.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/mag_sel.svg b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/mag_sel.svg
new file mode 100644
index 0000000..03626f6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/mag_sel.svg
@@ -0,0 +1,74 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12 version="1.1"
13 id="svg2"
14 width="20"
15 height="19"
16 viewBox="0 0 20 19"
17 sodipodi:docname="mag_sel.svg"
18 inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
19 <metadata
20 id="metadata8">
21 <rdf:RDF>
22 <cc:Work
23 rdf:about="">
24 <dc:format>image/svg+xml</dc:format>
25 <dc:type
26 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
27 <dc:title></dc:title>
28 </cc:Work>
29 </rdf:RDF>
30 </metadata>
31 <defs
32 id="defs6" />
33 <sodipodi:namedview
34 pagecolor="#ffffff"
35 bordercolor="#666666"
36 borderopacity="1"
37 objecttolerance="10"
38 gridtolerance="10"
39 guidetolerance="10"
40 inkscape:pageopacity="0"
41 inkscape:pageshadow="2"
42 inkscape:window-width="1920"
43 inkscape:window-height="2096"
44 id="namedview4"
45 showgrid="false"
46 fit-margin-top="0"
47 fit-margin-left="0"
48 fit-margin-right="0"
49 fit-margin-bottom="0"
50 inkscape:zoom="32"
51 inkscape:cx="5.9792688"
52 inkscape:cy="1.1436277"
53 inkscape:window-x="1920"
54 inkscape:window-y="27"
55 inkscape:window-maximized="0"
56 inkscape:current-layer="svg2" />
57 <circle
58 style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
59 id="path4611"
60 cx="5.5"
61 cy="8.5"
62 r="3.5" />
63 <path
64 style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
65 d="M 11,7 13.5,10 16,7 Z"
66 id="path4609"
67 inkscape:connector-curvature="0"
68 sodipodi:nodetypes="cccc" />
69 <path
70 style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
71 d="m 8.1085854,11.109059 2.7823556,2.782356"
72 id="path4630"
73 inkscape:connector-curvature="0" />
74</svg>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/nomatches.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/nomatches.html
new file mode 100644
index 0000000..2b9360b
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/nomatches.html
@@ -0,0 +1,13 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<link rel="stylesheet" type="text/css" href="search.css"/>
6<script type="text/javascript" src="search.js"></script>
7</head>
8<body class="SRPage">
9<div id="SRIndex">
10<div class="SRStatus" id="NoMatches">No Matches</div>
11</div>
12</body>
13</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.html
new file mode 100644
index 0000000..34ca499
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.js
new file mode 100644
index 0000000..22546b5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_0.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['building_20applications_0',['Building applications',['../build_guide.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.html
new file mode 100644
index 0000000..37ed0d6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_1.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.js
new file mode 100644
index 0000000..8585995
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_1.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['compiling_20glfw_0',['Compiling GLFW',['../compile_guide.html',1,'']]],
4 ['context_20guide_1',['Context guide',['../context_guide.html',1,'']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.html
new file mode 100644
index 0000000..878d7ec
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_2.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.js
new file mode 100644
index 0000000..4d85845
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_2.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.html
new file mode 100644
index 0000000..bbdea66
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_3.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.js
new file mode 100644
index 0000000..c8458cc
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_3.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['getting_20started_0',['Getting started',['../quick_guide.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.html
new file mode 100644
index 0000000..bda9307
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_4.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.js
new file mode 100644
index 0000000..f6548e8
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_4.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['input_20guide_0',['Input guide',['../input_guide.html',1,'']]],
4 ['internal_20structure_1',['Internal structure',['../internals_guide.html',1,'']]],
5 ['introduction_20to_20the_20api_2',['Introduction to the API',['../intro_guide.html',1,'']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.html
new file mode 100644
index 0000000..5657770
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_5.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.js
new file mode 100644
index 0000000..1a7683e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_5.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['monitor_20guide_0',['Monitor guide',['../monitor_guide.html',1,'']]],
4 ['moving_20from_20glfw_202_20to_203_1',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.html
new file mode 100644
index 0000000..2b24cb5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_6.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.js
new file mode 100644
index 0000000..ea1a4d1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_6.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['notitle_0',['notitle',['../index.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.html
new file mode 100644
index 0000000..10d9d32
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_7.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.js
new file mode 100644
index 0000000..322b61a
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_7.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['release_20notes_0',['Release notes',['../news.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.html
new file mode 100644
index 0000000..a6a559c
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_8.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.js
new file mode 100644
index 0000000..e46b235
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_8.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['standards_20conformance_0',['Standards conformance',['../compat_guide.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.html
new file mode 100644
index 0000000..1913887
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_9.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.js
new file mode 100644
index 0000000..8cae3f5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_9.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['vulkan_20guide_0',['Vulkan guide',['../vulkan_guide.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.html
new file mode 100644
index 0000000..f7cffee
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="pages_a.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.js
new file mode 100644
index 0000000..8078165
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/pages_a.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['window_20guide_0',['Window guide',['../window_guide.html',1,'']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.css b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.css
new file mode 100644
index 0000000..648a792
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.css
@@ -0,0 +1,263 @@
1/*---------------- Search Box */
2
3#MSearchBox {
4 white-space : nowrap;
5 background: white;
6 border-radius: 0.65em;
7 box-shadow: inset 0.5px 0.5px 3px 0px #555;
8 z-index: 102;
9}
10
11#MSearchBox .left {
12 display: inline-block;
13 vertical-align: middle;
14 height: 1.4em;
15}
16
17#MSearchSelect {
18 display: inline-block;
19 vertical-align: middle;
20 height: 19px;
21 padding: 0 0 0 0.3em;
22 margin: 0;
23}
24
25#MSearchField {
26 display: inline-block;
27 vertical-align: middle;
28 width: 7.5em;
29 height: 19px;
30 margin: 0 0.15em;
31 padding: 0;
32 line-height: 1em;
33 border:none;
34 color: #909090;
35 outline: none;
36 font-family: Arial, Verdana, sans-serif;
37 -webkit-border-radius: 0px;
38 border-radius: 0px;
39 background: none;
40}
41
42@media(hover: none) {
43 /* to avoid zooming on iOS */
44 #MSearchField {
45 font-size: 16px;
46 }
47}
48
49#MSearchBox .right {
50 display: inline-block;
51 vertical-align: middle;
52 width: 1.4em;
53 height: 1.4em;
54}
55
56#MSearchClose {
57 display: none;
58 font-size: inherit;
59 background : none;
60 border: none;
61 margin: 0;
62 padding: 0;
63 outline: none;
64
65}
66
67#MSearchCloseImg {
68 height: 1.4em;
69 padding: 0.3em;
70 margin: 0;
71}
72
73.MSearchBoxActive #MSearchField {
74 color: #000000;
75}
76
77#main-menu > li:last-child {
78 /* This <li> object is the parent of the search bar */
79 display: flex;
80 justify-content: center;
81 align-items: center;
82 height: 36px;
83 margin-right: 1em;
84}
85
86/*---------------- Search filter selection */
87
88#MSearchSelectWindow {
89 display: none;
90 position: absolute;
91 left: 0; top: 0;
92 border: 1px solid #90A5CE;
93 background-color: #F9FAFC;
94 z-index: 10001;
95 padding-top: 4px;
96 padding-bottom: 4px;
97 -moz-border-radius: 4px;
98 -webkit-border-top-left-radius: 4px;
99 -webkit-border-top-right-radius: 4px;
100 -webkit-border-bottom-left-radius: 4px;
101 -webkit-border-bottom-right-radius: 4px;
102 -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
103}
104
105.SelectItem {
106 font: 8pt Arial, Verdana, sans-serif;
107 padding-left: 2px;
108 padding-right: 12px;
109 border: 0px;
110}
111
112span.SelectionMark {
113 margin-right: 4px;
114 font-family: monospace;
115 outline-style: none;
116 text-decoration: none;
117}
118
119a.SelectItem {
120 display: block;
121 outline-style: none;
122 color: #000000;
123 text-decoration: none;
124 padding-left: 6px;
125 padding-right: 12px;
126}
127
128a.SelectItem:focus,
129a.SelectItem:active {
130 color: #000000;
131 outline-style: none;
132 text-decoration: none;
133}
134
135a.SelectItem:hover {
136 color: #FFFFFF;
137 background-color: #3D578C;
138 outline-style: none;
139 text-decoration: none;
140 cursor: pointer;
141 display: block;
142}
143
144/*---------------- Search results window */
145
146iframe#MSearchResults {
147 /*width: 60ex;*/
148 height: 15em;
149}
150
151#MSearchResultsWindow {
152 display: none;
153 position: absolute;
154 left: 0; top: 0;
155 border: 1px solid #000;
156 background-color: #EEF1F7;
157 z-index:10000;
158}
159
160/* ----------------------------------- */
161
162
163#SRIndex {
164 clear:both;
165 padding-bottom: 15px;
166}
167
168.SREntry {
169 font-size: 10pt;
170 padding-left: 1ex;
171}
172
173.SRPage .SREntry {
174 font-size: 8pt;
175 padding: 1px 5px;
176}
177
178body.SRPage {
179 margin: 5px 2px;
180}
181
182.SRChildren {
183 padding-left: 3ex; padding-bottom: .5em
184}
185
186.SRPage .SRChildren {
187 display: none;
188}
189
190.SRSymbol {
191 font-weight: bold;
192 color: #425E97;
193 font-family: Arial, Verdana, sans-serif;
194 text-decoration: none;
195 outline: none;
196}
197
198a.SRScope {
199 display: block;
200 color: #425E97;
201 font-family: Arial, Verdana, sans-serif;
202 text-decoration: none;
203 outline: none;
204}
205
206a.SRSymbol:focus, a.SRSymbol:active,
207a.SRScope:focus, a.SRScope:active {
208 text-decoration: underline;
209}
210
211span.SRScope {
212 padding-left: 4px;
213 font-family: Arial, Verdana, sans-serif;
214}
215
216.SRPage .SRStatus {
217 padding: 2px 5px;
218 font-size: 8pt;
219 font-style: italic;
220 font-family: Arial, Verdana, sans-serif;
221}
222
223.SRResult {
224 display: none;
225}
226
227div.searchresults {
228 margin-left: 10px;
229 margin-right: 10px;
230}
231
232/*---------------- External search page results */
233
234.searchresult {
235 background-color: #F0F3F8;
236}
237
238.pages b {
239 color: white;
240 padding: 5px 5px 3px 5px;
241 background-image: url("../tab_a.png");
242 background-repeat: repeat-x;
243 text-shadow: 0 1px 1px #000000;
244}
245
246.pages {
247 line-height: 17px;
248 margin-left: 4px;
249 text-decoration: none;
250}
251
252.hl {
253 font-weight: bold;
254}
255
256#searchresults {
257 margin-bottom: 20px;
258}
259
260.searchpages {
261 margin-top: 10px;
262}
263
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.js
new file mode 100644
index 0000000..ac8055d
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search.js
@@ -0,0 +1,794 @@
1/*
2 @licstart The following is the entire license notice for the JavaScript code in this file.
3
4 The MIT License (MIT)
5
6 Copyright (C) 1997-2020 by Dimitri van Heesch
7
8 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9 and associated documentation files (the "Software"), to deal in the Software without restriction,
10 including without limitation the rights to use, copy, modify, merge, publish, distribute,
11 sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in all copies or
15 substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18 BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23 @licend The above is the entire license notice for the JavaScript code in this file
24 */
25function convertToId(search)
26{
27 var result = '';
28 for (i=0;i<search.length;i++)
29 {
30 var c = search.charAt(i);
31 var cn = c.charCodeAt(0);
32 if (c.match(/[a-z0-9\u0080-\uFFFF]/))
33 {
34 result+=c;
35 }
36 else if (cn<16)
37 {
38 result+="_0"+cn.toString(16);
39 }
40 else
41 {
42 result+="_"+cn.toString(16);
43 }
44 }
45 return result;
46}
47
48function getXPos(item)
49{
50 var x = 0;
51 if (item.offsetWidth)
52 {
53 while (item && item!=document.body)
54 {
55 x += item.offsetLeft;
56 item = item.offsetParent;
57 }
58 }
59 return x;
60}
61
62function getYPos(item)
63{
64 var y = 0;
65 if (item.offsetWidth)
66 {
67 while (item && item!=document.body)
68 {
69 y += item.offsetTop;
70 item = item.offsetParent;
71 }
72 }
73 return y;
74}
75
76/* A class handling everything associated with the search panel.
77
78 Parameters:
79 name - The name of the global variable that will be
80 storing this instance. Is needed to be able to set timeouts.
81 resultPath - path to use for external files
82*/
83function SearchBox(name, resultsPath, label, extension)
84{
85 if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
86 if (!extension || extension == "") { extension = ".html"; }
87
88 // ---------- Instance variables
89 this.name = name;
90 this.resultsPath = resultsPath;
91 this.keyTimeout = 0;
92 this.keyTimeoutLength = 500;
93 this.closeSelectionTimeout = 300;
94 this.lastSearchValue = "";
95 this.lastResultsPage = "";
96 this.hideTimeout = 0;
97 this.searchIndex = 0;
98 this.searchActive = false;
99 this.searchLabel = label;
100 this.extension = extension;
101
102 // ----------- DOM Elements
103
104 this.DOMSearchField = function()
105 { return document.getElementById("MSearchField"); }
106
107 this.DOMSearchSelect = function()
108 { return document.getElementById("MSearchSelect"); }
109
110 this.DOMSearchSelectWindow = function()
111 { return document.getElementById("MSearchSelectWindow"); }
112
113 this.DOMPopupSearchResults = function()
114 { return document.getElementById("MSearchResults"); }
115
116 this.DOMPopupSearchResultsWindow = function()
117 { return document.getElementById("MSearchResultsWindow"); }
118
119 this.DOMSearchClose = function()
120 { return document.getElementById("MSearchClose"); }
121
122 this.DOMSearchBox = function()
123 { return document.getElementById("MSearchBox"); }
124
125 // ------------ Event Handlers
126
127 // Called when focus is added or removed from the search field.
128 this.OnSearchFieldFocus = function(isActive)
129 {
130 this.Activate(isActive);
131 }
132
133 this.OnSearchSelectShow = function()
134 {
135 var searchSelectWindow = this.DOMSearchSelectWindow();
136 var searchField = this.DOMSearchSelect();
137
138 var left = getXPos(searchField);
139 var top = getYPos(searchField);
140 top += searchField.offsetHeight;
141
142 // show search selection popup
143 searchSelectWindow.style.display='block';
144 searchSelectWindow.style.left = left + 'px';
145 searchSelectWindow.style.top = top + 'px';
146
147 // stop selection hide timer
148 if (this.hideTimeout)
149 {
150 clearTimeout(this.hideTimeout);
151 this.hideTimeout=0;
152 }
153 return false; // to avoid "image drag" default event
154 }
155
156 this.OnSearchSelectHide = function()
157 {
158 this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
159 this.closeSelectionTimeout);
160 }
161
162 // Called when the content of the search field is changed.
163 this.OnSearchFieldChange = function(evt)
164 {
165 if (this.keyTimeout) // kill running timer
166 {
167 clearTimeout(this.keyTimeout);
168 this.keyTimeout = 0;
169 }
170
171 var e = (evt) ? evt : window.event; // for IE
172 if (e.keyCode==40 || e.keyCode==13)
173 {
174 if (e.shiftKey==1)
175 {
176 this.OnSearchSelectShow();
177 var win=this.DOMSearchSelectWindow();
178 for (i=0;i<win.childNodes.length;i++)
179 {
180 var child = win.childNodes[i]; // get span within a
181 if (child.className=='SelectItem')
182 {
183 child.focus();
184 return;
185 }
186 }
187 return;
188 }
189 else
190 {
191 window.frames.MSearchResults.postMessage("take_focus", "*");
192 }
193 }
194 else if (e.keyCode==27) // Escape out of the search field
195 {
196 this.DOMSearchField().blur();
197 this.DOMPopupSearchResultsWindow().style.display = 'none';
198 this.DOMSearchClose().style.display = 'none';
199 this.lastSearchValue = '';
200 this.Activate(false);
201 return;
202 }
203
204 // strip whitespaces
205 var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
206
207 if (searchValue != this.lastSearchValue) // search value has changed
208 {
209 if (searchValue != "") // non-empty search
210 {
211 // set timer for search update
212 this.keyTimeout = setTimeout(this.name + '.Search()',
213 this.keyTimeoutLength);
214 }
215 else // empty search field
216 {
217 this.DOMPopupSearchResultsWindow().style.display = 'none';
218 this.DOMSearchClose().style.display = 'none';
219 this.lastSearchValue = '';
220 }
221 }
222 }
223
224 this.SelectItemCount = function(id)
225 {
226 var count=0;
227 var win=this.DOMSearchSelectWindow();
228 for (i=0;i<win.childNodes.length;i++)
229 {
230 var child = win.childNodes[i]; // get span within a
231 if (child.className=='SelectItem')
232 {
233 count++;
234 }
235 }
236 return count;
237 }
238
239 this.SelectItemSet = function(id)
240 {
241 var i,j=0;
242 var win=this.DOMSearchSelectWindow();
243 for (i=0;i<win.childNodes.length;i++)
244 {
245 var child = win.childNodes[i]; // get span within a
246 if (child.className=='SelectItem')
247 {
248 var node = child.firstChild;
249 if (j==id)
250 {
251 node.innerHTML='&#8226;';
252 }
253 else
254 {
255 node.innerHTML='&#160;';
256 }
257 j++;
258 }
259 }
260 }
261
262 // Called when an search filter selection is made.
263 // set item with index id as the active item
264 this.OnSelectItem = function(id)
265 {
266 this.searchIndex = id;
267 this.SelectItemSet(id);
268 var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
269 if (searchValue!="" && this.searchActive) // something was found -> do a search
270 {
271 this.Search();
272 }
273 }
274
275 this.OnSearchSelectKey = function(evt)
276 {
277 var e = (evt) ? evt : window.event; // for IE
278 if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
279 {
280 this.searchIndex++;
281 this.OnSelectItem(this.searchIndex);
282 }
283 else if (e.keyCode==38 && this.searchIndex>0) // Up
284 {
285 this.searchIndex--;
286 this.OnSelectItem(this.searchIndex);
287 }
288 else if (e.keyCode==13 || e.keyCode==27)
289 {
290 this.OnSelectItem(this.searchIndex);
291 this.CloseSelectionWindow();
292 this.DOMSearchField().focus();
293 }
294 return false;
295 }
296
297 // --------- Actions
298
299 // Closes the results window.
300 this.CloseResultsWindow = function()
301 {
302 this.DOMPopupSearchResultsWindow().style.display = 'none';
303 this.DOMSearchClose().style.display = 'none';
304 this.Activate(false);
305 }
306
307 this.CloseSelectionWindow = function()
308 {
309 this.DOMSearchSelectWindow().style.display = 'none';
310 }
311
312 // Performs a search.
313 this.Search = function()
314 {
315 this.keyTimeout = 0;
316
317 // strip leading whitespace
318 var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
319
320 var code = searchValue.toLowerCase().charCodeAt(0);
321 var idxChar = searchValue.substr(0, 1).toLowerCase();
322 if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
323 {
324 idxChar = searchValue.substr(0, 2);
325 }
326
327 var resultsPage;
328 var resultsPageWithSearch;
329 var hasResultsPage;
330
331 var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
332 if (idx!=-1)
333 {
334 var hexCode=idx.toString(16);
335 resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
336 resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
337 hasResultsPage = true;
338 }
339 else // nothing available for this search term
340 {
341 resultsPage = this.resultsPath + '/nomatches' + this.extension;
342 resultsPageWithSearch = resultsPage;
343 hasResultsPage = false;
344 }
345
346 window.frames.MSearchResults.location = resultsPageWithSearch;
347 var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
348
349 if (domPopupSearchResultsWindow.style.display!='block')
350 {
351 var domSearchBox = this.DOMSearchBox();
352 this.DOMSearchClose().style.display = 'inline-block';
353 var domPopupSearchResults = this.DOMPopupSearchResults();
354 var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
355 var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
356 domPopupSearchResultsWindow.style.display = 'block';
357 left -= domPopupSearchResults.offsetWidth;
358 var maxWidth = document.body.clientWidth;
359 var width = 400;
360 if (left<10) left=10;
361 if (width+left+8>maxWidth) width=maxWidth-left-8;
362 domPopupSearchResultsWindow.style.top = top + 'px';
363 domPopupSearchResultsWindow.style.left = left + 'px';
364 domPopupSearchResultsWindow.style.width = width + 'px';
365 }
366
367 this.lastSearchValue = searchValue;
368 this.lastResultsPage = resultsPage;
369 }
370
371 // -------- Activation Functions
372
373 // Activates or deactivates the search panel, resetting things to
374 // their default values if necessary.
375 this.Activate = function(isActive)
376 {
377 if (isActive || // open it
378 this.DOMPopupSearchResultsWindow().style.display == 'block'
379 )
380 {
381 this.DOMSearchBox().className = 'MSearchBoxActive';
382
383 var searchField = this.DOMSearchField();
384
385 if (searchField.value == this.searchLabel) // clear "Search" term upon entry
386 {
387 searchField.value = '';
388 this.searchActive = true;
389 }
390 }
391 else if (!isActive) // directly remove the panel
392 {
393 this.DOMSearchBox().className = 'MSearchBoxInactive';
394 this.DOMSearchField().value = this.searchLabel;
395 this.searchActive = false;
396 this.lastSearchValue = ''
397 this.lastResultsPage = '';
398 }
399 }
400}
401
402// -----------------------------------------------------------------------
403
404// The class that handles everything on the search results page.
405function SearchResults(name)
406{
407 // The number of matches from the last run of <Search()>.
408 this.lastMatchCount = 0;
409 this.lastKey = 0;
410 this.repeatOn = false;
411
412 // Toggles the visibility of the passed element ID.
413 this.FindChildElement = function(id)
414 {
415 var parentElement = document.getElementById(id);
416 var element = parentElement.firstChild;
417
418 while (element && element!=parentElement)
419 {
420 if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
421 {
422 return element;
423 }
424
425 if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
426 {
427 element = element.firstChild;
428 }
429 else if (element.nextSibling)
430 {
431 element = element.nextSibling;
432 }
433 else
434 {
435 do
436 {
437 element = element.parentNode;
438 }
439 while (element && element!=parentElement && !element.nextSibling);
440
441 if (element && element!=parentElement)
442 {
443 element = element.nextSibling;
444 }
445 }
446 }
447 }
448
449 this.Toggle = function(id)
450 {
451 var element = this.FindChildElement(id);
452 if (element)
453 {
454 if (element.style.display == 'block')
455 {
456 element.style.display = 'none';
457 }
458 else
459 {
460 element.style.display = 'block';
461 }
462 }
463 }
464
465 // Searches for the passed string. If there is no parameter,
466 // it takes it from the URL query.
467 //
468 // Always returns true, since other documents may try to call it
469 // and that may or may not be possible.
470 this.Search = function(search)
471 {
472 if (!search) // get search word from URL
473 {
474 search = window.location.search;
475 search = search.substring(1); // Remove the leading '?'
476 search = unescape(search);
477 }
478
479 search = search.replace(/^ +/, ""); // strip leading spaces
480 search = search.replace(/ +$/, ""); // strip trailing spaces
481 search = search.toLowerCase();
482 search = convertToId(search);
483
484 var resultRows = document.getElementsByTagName("div");
485 var matches = 0;
486
487 var i = 0;
488 while (i < resultRows.length)
489 {
490 var row = resultRows.item(i);
491 if (row.className == "SRResult")
492 {
493 var rowMatchName = row.id.toLowerCase();
494 rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
495
496 if (search.length<=rowMatchName.length &&
497 rowMatchName.substr(0, search.length)==search)
498 {
499 row.style.display = 'block';
500 matches++;
501 }
502 else
503 {
504 row.style.display = 'none';
505 }
506 }
507 i++;
508 }
509 document.getElementById("Searching").style.display='none';
510 if (matches == 0) // no results
511 {
512 document.getElementById("NoMatches").style.display='block';
513 }
514 else // at least one result
515 {
516 document.getElementById("NoMatches").style.display='none';
517 }
518 this.lastMatchCount = matches;
519 return true;
520 }
521
522 // return the first item with index index or higher that is visible
523 this.NavNext = function(index)
524 {
525 var focusItem;
526 while (1)
527 {
528 var focusName = 'Item'+index;
529 focusItem = document.getElementById(focusName);
530 if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
531 {
532 break;
533 }
534 else if (!focusItem) // last element
535 {
536 break;
537 }
538 focusItem=null;
539 index++;
540 }
541 return focusItem;
542 }
543
544 this.NavPrev = function(index)
545 {
546 var focusItem;
547 while (1)
548 {
549 var focusName = 'Item'+index;
550 focusItem = document.getElementById(focusName);
551 if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
552 {
553 break;
554 }
555 else if (!focusItem) // last element
556 {
557 break;
558 }
559 focusItem=null;
560 index--;
561 }
562 return focusItem;
563 }
564
565 this.ProcessKeys = function(e)
566 {
567 if (e.type == "keydown")
568 {
569 this.repeatOn = false;
570 this.lastKey = e.keyCode;
571 }
572 else if (e.type == "keypress")
573 {
574 if (!this.repeatOn)
575 {
576 if (this.lastKey) this.repeatOn = true;
577 return false; // ignore first keypress after keydown
578 }
579 }
580 else if (e.type == "keyup")
581 {
582 this.lastKey = 0;
583 this.repeatOn = false;
584 }
585 return this.lastKey!=0;
586 }
587
588 this.Nav = function(evt,itemIndex)
589 {
590 var e = (evt) ? evt : window.event; // for IE
591 if (e.keyCode==13) return true;
592 if (!this.ProcessKeys(e)) return false;
593
594 if (this.lastKey==38) // Up
595 {
596 var newIndex = itemIndex-1;
597 var focusItem = this.NavPrev(newIndex);
598 if (focusItem)
599 {
600 var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
601 if (child && child.style.display == 'block') // children visible
602 {
603 var n=0;
604 var tmpElem;
605 while (1) // search for last child
606 {
607 tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
608 if (tmpElem)
609 {
610 focusItem = tmpElem;
611 }
612 else // found it!
613 {
614 break;
615 }
616 n++;
617 }
618 }
619 }
620 if (focusItem)
621 {
622 focusItem.focus();
623 }
624 else // return focus to search field
625 {
626 parent.document.getElementById("MSearchField").focus();
627 }
628 }
629 else if (this.lastKey==40) // Down
630 {
631 var newIndex = itemIndex+1;
632 var focusItem;
633 var item = document.getElementById('Item'+itemIndex);
634 var elem = this.FindChildElement(item.parentNode.parentNode.id);
635 if (elem && elem.style.display == 'block') // children visible
636 {
637 focusItem = document.getElementById('Item'+itemIndex+'_c0');
638 }
639 if (!focusItem) focusItem = this.NavNext(newIndex);
640 if (focusItem) focusItem.focus();
641 }
642 else if (this.lastKey==39) // Right
643 {
644 var item = document.getElementById('Item'+itemIndex);
645 var elem = this.FindChildElement(item.parentNode.parentNode.id);
646 if (elem) elem.style.display = 'block';
647 }
648 else if (this.lastKey==37) // Left
649 {
650 var item = document.getElementById('Item'+itemIndex);
651 var elem = this.FindChildElement(item.parentNode.parentNode.id);
652 if (elem) elem.style.display = 'none';
653 }
654 else if (this.lastKey==27) // Escape
655 {
656 parent.searchBox.CloseResultsWindow();
657 parent.document.getElementById("MSearchField").focus();
658 }
659 else if (this.lastKey==13) // Enter
660 {
661 return true;
662 }
663 return false;
664 }
665
666 this.NavChild = function(evt,itemIndex,childIndex)
667 {
668 var e = (evt) ? evt : window.event; // for IE
669 if (e.keyCode==13) return true;
670 if (!this.ProcessKeys(e)) return false;
671
672 if (this.lastKey==38) // Up
673 {
674 if (childIndex>0)
675 {
676 var newIndex = childIndex-1;
677 document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
678 }
679 else // already at first child, jump to parent
680 {
681 document.getElementById('Item'+itemIndex).focus();
682 }
683 }
684 else if (this.lastKey==40) // Down
685 {
686 var newIndex = childIndex+1;
687 var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
688 if (!elem) // last child, jump to parent next parent
689 {
690 elem = this.NavNext(itemIndex+1);
691 }
692 if (elem)
693 {
694 elem.focus();
695 }
696 }
697 else if (this.lastKey==27) // Escape
698 {
699 parent.searchBox.CloseResultsWindow();
700 parent.document.getElementById("MSearchField").focus();
701 }
702 else if (this.lastKey==13) // Enter
703 {
704 return true;
705 }
706 return false;
707 }
708}
709
710function setKeyActions(elem,action)
711{
712 elem.setAttribute('onkeydown',action);
713 elem.setAttribute('onkeypress',action);
714 elem.setAttribute('onkeyup',action);
715}
716
717function setClassAttr(elem,attr)
718{
719 elem.setAttribute('class',attr);
720 elem.setAttribute('className',attr);
721}
722
723function createResults()
724{
725 var results = document.getElementById("SRResults");
726 for (var e=0; e<searchData.length; e++)
727 {
728 var id = searchData[e][0];
729 var srResult = document.createElement('div');
730 srResult.setAttribute('id','SR_'+id);
731 setClassAttr(srResult,'SRResult');
732 var srEntry = document.createElement('div');
733 setClassAttr(srEntry,'SREntry');
734 var srLink = document.createElement('a');
735 srLink.setAttribute('id','Item'+e);
736 setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
737 setClassAttr(srLink,'SRSymbol');
738 srLink.innerHTML = searchData[e][1][0];
739 srEntry.appendChild(srLink);
740 if (searchData[e][1].length==2) // single result
741 {
742 srLink.setAttribute('href',searchData[e][1][1][0]);
743 srLink.setAttribute('onclick','parent.searchBox.CloseResultsWindow()');
744 if (searchData[e][1][1][1])
745 {
746 srLink.setAttribute('target','_parent');
747 }
748 var srScope = document.createElement('span');
749 setClassAttr(srScope,'SRScope');
750 srScope.innerHTML = searchData[e][1][1][2];
751 srEntry.appendChild(srScope);
752 }
753 else // multiple results
754 {
755 srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
756 var srChildren = document.createElement('div');
757 setClassAttr(srChildren,'SRChildren');
758 for (var c=0; c<searchData[e][1].length-1; c++)
759 {
760 var srChild = document.createElement('a');
761 srChild.setAttribute('id','Item'+e+'_c'+c);
762 setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
763 setClassAttr(srChild,'SRScope');
764 srChild.setAttribute('href',searchData[e][1][c+1][0]);
765 srChild.setAttribute('onclick','parent.searchBox.CloseResultsWindow()');
766 if (searchData[e][1][c+1][1])
767 {
768 srChild.setAttribute('target','_parent');
769 }
770 srChild.innerHTML = searchData[e][1][c+1][2];
771 srChildren.appendChild(srChild);
772 }
773 srEntry.appendChild(srChildren);
774 }
775 srResult.appendChild(srEntry);
776 results.appendChild(srResult);
777 }
778}
779
780function init_search()
781{
782 var results = document.getElementById("MSearchSelectWindow");
783 for (var key in indexSectionLabels)
784 {
785 var link = document.createElement('a');
786 link.setAttribute('class','SelectItem');
787 link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
788 link.href='javascript:void(0)';
789 link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
790 results.appendChild(link);
791 }
792 searchBox.OnSelectItem(0);
793}
794/* @license-end */
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_l.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_l.png
new file mode 100644
index 0000000..fd5f7da
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_l.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_m.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_m.png
new file mode 100644
index 0000000..b429a16
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_m.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_r.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_r.png
new file mode 100644
index 0000000..1af5d21
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/search_r.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/searchdata.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/searchdata.js
new file mode 100644
index 0000000..26680a5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/searchdata.js
@@ -0,0 +1,39 @@
1var indexSectionsWithContent =
2{
3 0: "abcdeghijkmnpqrsvw",
4 1: "g",
5 2: "bcgimnqvw",
6 3: "g",
7 4: "abghprsw",
8 5: "g",
9 6: "g",
10 7: "cegijkmnsvw",
11 8: "bcdgimnrsvw"
12};
13
14var indexSectionNames =
15{
16 0: "all",
17 1: "classes",
18 2: "files",
19 3: "functions",
20 4: "variables",
21 5: "typedefs",
22 6: "defines",
23 7: "groups",
24 8: "pages"
25};
26
27var indexSectionLabels =
28{
29 0: "All",
30 1: "Data Structures",
31 2: "Files",
32 3: "Functions",
33 4: "Variables",
34 5: "Typedefs",
35 6: "Macros",
36 7: "Modules",
37 8: "Pages"
38};
39
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.html
new file mode 100644
index 0000000..2f66dc4
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="typedefs_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.js
new file mode 100644
index 0000000..4ce15bc
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/typedefs_0.js
@@ -0,0 +1,32 @@
1var searchData=
2[
3 ['glfwcharfun_0',['GLFWcharfun',['../group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e',1,'glfw3.h']]],
4 ['glfwcharmodsfun_1',['GLFWcharmodsfun',['../group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f',1,'glfw3.h']]],
5 ['glfwcursor_2',['GLFWcursor',['../group__input.html#ga89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]],
6 ['glfwcursorenterfun_3',['GLFWcursorenterfun',['../group__input.html#gaa93dc4818ac9ab32532909d53a337cbe',1,'glfw3.h']]],
7 ['glfwcursorposfun_4',['GLFWcursorposfun',['../group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68',1,'glfw3.h']]],
8 ['glfwdropfun_5',['GLFWdropfun',['../group__input.html#gaaba73c3274062c18723b7f05862d94b2',1,'glfw3.h']]],
9 ['glfwerrorfun_6',['GLFWerrorfun',['../group__init.html#ga8184701785c096b3862a75cda1bf44a3',1,'glfw3.h']]],
10 ['glfwframebuffersizefun_7',['GLFWframebuffersizefun',['../group__window.html#gae18026e294dde685ed2e5f759533144d',1,'glfw3.h']]],
11 ['glfwgamepadstate_8',['GLFWgamepadstate',['../group__input.html#ga61acfb1f28f751438dd221225c5e725d',1,'glfw3.h']]],
12 ['glfwgammaramp_9',['GLFWgammaramp',['../group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404',1,'glfw3.h']]],
13 ['glfwglproc_10',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]],
14 ['glfwimage_11',['GLFWimage',['../group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca',1,'glfw3.h']]],
15 ['glfwjoystickfun_12',['GLFWjoystickfun',['../group__input.html#gaa21ad5986ae9a26077a40142efb56243',1,'glfw3.h']]],
16 ['glfwkeyfun_13',['GLFWkeyfun',['../group__input.html#ga5bd751b27b90f865d2ea613533f0453c',1,'glfw3.h']]],
17 ['glfwmonitor_14',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]],
18 ['glfwmonitorfun_15',['GLFWmonitorfun',['../group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249',1,'glfw3.h']]],
19 ['glfwmousebuttonfun_16',['GLFWmousebuttonfun',['../group__input.html#ga0184dcb59f6d85d735503dcaae809727',1,'glfw3.h']]],
20 ['glfwscrollfun_17',['GLFWscrollfun',['../group__input.html#gaf656112c33de3efdb227fa58f0134cf5',1,'glfw3.h']]],
21 ['glfwvidmode_18',['GLFWvidmode',['../group__monitor.html#ga902c2816ac9b34b757282daab59b2565',1,'glfw3.h']]],
22 ['glfwvkproc_19',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]],
23 ['glfwwindow_20',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]],
24 ['glfwwindowclosefun_21',['GLFWwindowclosefun',['../group__window.html#gabf859b936d80961b7d39013a9694cc3e',1,'glfw3.h']]],
25 ['glfwwindowcontentscalefun_22',['GLFWwindowcontentscalefun',['../group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e',1,'glfw3.h']]],
26 ['glfwwindowfocusfun_23',['GLFWwindowfocusfun',['../group__window.html#gabc58c47e9d93f6eb1862d615c3680f46',1,'glfw3.h']]],
27 ['glfwwindowiconifyfun_24',['GLFWwindowiconifyfun',['../group__window.html#ga35c658cccba236f26e7adee0e25f6a4f',1,'glfw3.h']]],
28 ['glfwwindowmaximizefun_25',['GLFWwindowmaximizefun',['../group__window.html#ga3017196fdaec33ac3e095765176c2a90',1,'glfw3.h']]],
29 ['glfwwindowposfun_26',['GLFWwindowposfun',['../group__window.html#gabe287973a21a8f927cde4db06b8dcbe9',1,'glfw3.h']]],
30 ['glfwwindowrefreshfun_27',['GLFWwindowrefreshfun',['../group__window.html#ga431663a1427d2eb3a273bc398b6737b5',1,'glfw3.h']]],
31 ['glfwwindowsizefun_28',['GLFWwindowsizefun',['../group__window.html#gaec0282944bb810f6f3163ec02da90350',1,'glfw3.h']]]
32];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.html
new file mode 100644
index 0000000..7778cf0
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_0.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.js
new file mode 100644
index 0000000..c61320f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_0.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['axes_0',['axes',['../structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189',1,'GLFWgamepadstate']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.html
new file mode 100644
index 0000000..e2f95e2
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_1.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.js
new file mode 100644
index 0000000..20af6e6
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_1.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['blue_0',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]],
4 ['bluebits_1',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]],
5 ['buttons_2',['buttons',['../structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a',1,'GLFWgamepadstate']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.html
new file mode 100644
index 0000000..833f416
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_2.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.js
new file mode 100644
index 0000000..ee6bfb1
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_2.js
@@ -0,0 +1,5 @@
1var searchData=
2[
3 ['green_0',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]],
4 ['greenbits_1',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]]
5];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.html
new file mode 100644
index 0000000..7ef980c
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_3.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.js
new file mode 100644
index 0000000..c7cee75
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_3.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['height_0',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.html
new file mode 100644
index 0000000..0058b6b
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_4.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.js
new file mode 100644
index 0000000..6414492
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_4.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['pixels_0',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.html
new file mode 100644
index 0000000..a2f9f1f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_5.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.js
new file mode 100644
index 0000000..1bbbe9f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_5.js
@@ -0,0 +1,6 @@
1var searchData=
2[
3 ['red_0',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]],
4 ['redbits_1',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]],
5 ['refreshrate_2',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]]
6];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.html
new file mode 100644
index 0000000..2e98801
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_6.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.js
new file mode 100644
index 0000000..406842a
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_6.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['size_0',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.html
new file mode 100644
index 0000000..751f4b8
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.html
@@ -0,0 +1,37 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head><title></title>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="generator" content="Doxygen 1.9.2"/>
6<link rel="stylesheet" type="text/css" href="search.css"/>
7<script type="text/javascript" src="variables_7.js"></script>
8<script type="text/javascript" src="search.js"></script>
9</head>
10<body class="SRPage">
11<div id="SRIndex">
12<div class="SRStatus" id="Loading">Loading...</div>
13<div id="SRResults"></div>
14<script type="text/javascript">
15/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
16createResults();
17/* @license-end */
18</script>
19<div class="SRStatus" id="Searching">Searching...</div>
20<div class="SRStatus" id="NoMatches">No Matches</div>
21<script type="text/javascript">
22/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
23document.getElementById("Loading").style.display="none";
24document.getElementById("NoMatches").style.display="none";
25var searchResults = new SearchResults("searchResults");
26searchResults.Search();
27window.addEventListener("message", function(event) {
28 if (event.data == "take_focus") {
29 var elem = searchResults.NavNext(0);
30 if (elem) elem.focus();
31 }
32});
33/* @license-end */
34</script>
35</div>
36</body>
37</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.js b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.js
new file mode 100644
index 0000000..7d2fabb
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/search/variables_7.js
@@ -0,0 +1,4 @@
1var searchData=
2[
3 ['width_0',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]]
4];
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/spaces.svg b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/spaces.svg
new file mode 100644
index 0000000..5b32646
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/spaces.svg
@@ -0,0 +1,877 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12 width="688.48718"
13 height="327.98221"
14 id="svg2"
15 version="1.1"
16 inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
17 sodipodi:docname="spaces.svg">
18 <defs
19 id="defs4">
20 <marker
21 inkscape:stockid="Arrow2Lend"
22 orient="auto"
23 refY="0.0"
24 refX="0.0"
25 id="Arrow2Lend"
26 style="overflow:visible;">
27 <path
28 id="path3888"
29 style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
30 d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
31 transform="scale(1.1) rotate(180) translate(1,0)" />
32 </marker>
33 </defs>
34 <sodipodi:namedview
35 id="base"
36 pagecolor="#ffffff"
37 bordercolor="#666666"
38 borderopacity="1.0"
39 inkscape:pageopacity="0.0"
40 inkscape:pageshadow="2"
41 inkscape:zoom="1.8110012"
42 inkscape:cx="320.68941"
43 inkscape:cy="159.80509"
44 inkscape:document-units="px"
45 inkscape:current-layer="layer1"
46 showgrid="false"
47 inkscape:window-width="1920"
48 inkscape:window-height="1021"
49 inkscape:window-x="0"
50 inkscape:window-y="30"
51 inkscape:window-maximized="1"
52 fit-margin-top="0"
53 fit-margin-left="0"
54 fit-margin-right="0"
55 fit-margin-bottom="0"
56 units="px"
57 showborder="false"
58 inkscape:showpageshadow="false" />
59 <metadata
60 id="metadata7">
61 <rdf:RDF>
62 <cc:Work
63 rdf:about="">
64 <dc:format>image/svg+xml</dc:format>
65 <dc:type
66 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
67 <dc:title />
68 </cc:Work>
69 </rdf:RDF>
70 </metadata>
71 <g
72 inkscape:label="Layer 1"
73 inkscape:groupmode="layer"
74 id="layer1"
75 transform="translate(-12.627039,-339.86462)">
76 <rect
77 style="fill:#ffffff;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3,3;stroke-dashoffset:0"
78 id="rect2985"
79 width="687.36469"
80 height="326.85971"
81 x="13.188287"
82 y="340.42587"
83 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
84 inkscape:export-xdpi="109.89113"
85 inkscape:export-ydpi="109.89113" />
86 <rect
87 style="fill:#f3fff3;fill-opacity:1;stroke:#00b800;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
88 id="rect3757"
89 width="318.05698"
90 height="277.04684"
91 x="38.315689"
92 y="366.05841"
93 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
94 inkscape:export-xdpi="109.89113"
95 inkscape:export-ydpi="109.89113" />
96 <rect
97 style="fill:#f3fff3;fill-opacity:1;stroke:#00b800;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
98 id="rect3767"
99 width="319.01456"
100 height="198.09369"
101 x="356.36722"
102 y="366.01291"
103 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
104 inkscape:export-xdpi="109.89113"
105 inkscape:export-ydpi="109.89113" />
106 <g
107 style="font-size:12px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
108 id="text3769">
109 <path
110 d="m 365.3732,374.63632 0,2.73926 1.24023,0 c 0.45898,0 0.8138,-0.11881 1.06446,-0.35645 0.25064,-0.23762 0.37597,-0.57616 0.37597,-1.01562 0,-0.43619 -0.12533,-0.77311 -0.37597,-1.01074 -0.25066,-0.23763 -0.60548,-0.35644 -1.06446,-0.35645 l -1.24023,0 m -0.98633,-0.81054 2.22656,0 c 0.81706,0 1.43392,0.18555 1.85059,0.55664 0.41992,0.36784 0.62988,0.9082 0.62988,1.62109 0,0.7194 -0.20996,1.26302 -0.62988,1.63086 -0.41667,0.36784 -1.03353,0.55176 -1.85059,0.55176 l -1.24023,0 0,2.92968 -0.98633,0 0,-7.29003"
111 style="font-size:10px"
112 id="path3281" />
113 <path
114 d="m 373.37613,376.48691 c -0.10092,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15788,0.0179 0.24903,0.0342 l 0.005,0.92285"
115 style="font-size:10px"
116 id="path3283" />
117 <path
118 d="m 374.32828,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
119 style="font-size:10px"
120 id="path3285" />
121 <path
122 d="m 381.35953,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68033,-0.28808 1.10352,-0.28808 0.56965,0 1.0091,0.2002 1.31836,0.60058 0.30923,0.39714 0.46385,0.96355 0.46386,1.69922 l 0,3.30078 -0.90332,0 0,-3.27148 c 0,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18555,-0.2539 -0.46875,-0.38086 -0.84961,-0.38086 -0.4655,0 -0.83334,0.15463 -1.10351,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40528,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c 0,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18555,-0.2539 -0.472,-0.38086 -0.85937,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27019,0.30925 -0.40528,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62662,-0.23926 1.02051,-0.23926 0.39713,0 0.73404,0.10092 1.01074,0.30273 0.27994,0.20183 0.48665,0.4948 0.62012,0.87891"
123 style="font-size:10px"
124 id="path3287" />
125 <path
126 d="m 389.33316,378.36679 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44923 -0.41992,0.84961 0,0.31902 0.10416,0.57292 0.3125,0.76172 0.21159,0.18555 0.49804,0.27832 0.85937,0.27832 0.49805,0 0.89681,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.4541,-0.82519 0.45411,-1.41113 l 0,-0.2002 -0.89356,0 m 1.79199,-0.37109 0,3.12011 -0.89843,0 0,-0.83007 c -0.20509,0.33203 -0.46062,0.5778 -0.76661,0.7373 -0.30599,0.15625 -0.68034,0.23438 -1.12304,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31576 -0.49317,-0.73731 -0.49317,-1.26465 0,-0.61523 0.20508,-1.0791 0.61524,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -10e-6,-0.41341 -0.13673,-0.73242 -0.41016,-0.95704 -0.27019,-0.22786 -0.65105,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91309,0.1123 -0.29622,0.0749 -0.58105,0.18718 -0.85449,0.33692 l 0,-0.83008 c 0.32878,-0.12695 0.64779,-0.22135 0.95703,-0.28321 0.30925,-0.0651 0.61035,-0.0977 0.90332,-0.0977 0.79102,0 1.38184,0.20508 1.77247,0.61523 0.39062,0.41016 0.58593,1.03191 0.58593,1.86524"
127 style="font-size:10px"
128 id="path3289" />
129 <path
130 d="m 396.14957,376.48691 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33203,-0.12696 -0.1172,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
131 style="font-size:10px"
132 id="path3291" />
133 <path
134 d="m 399.37711,381.62363 c -0.25391,0.65104 -0.50131,1.07584 -0.74219,1.27441 -0.24089,0.19857 -0.56315,0.29785 -0.9668,0.29785 l -0.71777,0 0,-0.75195 0.52734,0 c 0.2474,0 0.43945,-0.0586 0.57617,-0.17578 0.13672,-0.11719 0.28809,-0.39388 0.45411,-0.83008 l 0.16113,-0.41016 -2.21192,-5.38086 0.95215,0 1.70899,4.27735 1.70898,-4.27735 0.95215,0 -2.40234,5.97657"
135 style="font-size:10px"
136 id="path3293" />
137 <path
138 d="m 410.46109,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68034,-0.28808 1.10352,-0.28808 0.56965,0 1.00911,0.2002 1.31836,0.60058 0.30924,0.39714 0.46386,0.96355 0.46387,1.69922 l 0,3.30078 -0.90332,0 0,-3.27148 c -1e-5,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18556,-0.2539 -0.46876,-0.38086 -0.84961,-0.38086 -0.4655,0 -0.83334,0.15463 -1.10352,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40527,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c -10e-6,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18555,-0.2539 -0.47201,-0.38086 -0.85938,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27018,0.30925 -0.40527,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62663,-0.23926 1.02051,-0.23926 0.39713,0 0.73405,0.10092 1.01074,0.30273 0.27995,0.20183 0.48665,0.4948 0.62012,0.87891"
139 style="font-size:10px"
140 id="path3295" />
141 <path
142 d="m 418.06851,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
143 style="font-size:10px"
144 id="path3297" />
145 <path
146 d="m 426.60855,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41993,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.4834,0.95866 0.4834,1.71386"
147 style="font-size:10px"
148 id="path3299" />
149 <path
150 d="m 428.41031,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
151 style="font-size:10px"
152 id="path3301" />
153 <path
154 d="m 432.07242,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17187,-0.12858 -1.43554,-0.38574 -0.26368,-0.26041 -0.39551,-0.73242 -0.39551,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
155 style="font-size:10px"
156 id="path3303" />
157 <path
158 d="m 437.22867,376.27695 c -0.48178,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.13769,-0.56641 0.27995,-0.3776 0.41992,-0.89192 0.41993,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41993,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.13769,-0.57129 m 0,-0.76172 c 0.78124,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66894,2.10937 0,0.89519 -0.22298,1.59831 -0.66894,2.10938 -0.44597,0.50781 -1.05958,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66407,-2.10938 0,-0.89843 0.22136,-1.60156 0.66407,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
159 style="font-size:10px"
160 id="path3305" />
161 <path
162 d="m 444.39175,376.48691 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.7373,-0.7373 0.30274,-0.16276 0.67057,-0.24414 1.10352,-0.24414 0.0618,0 0.1302,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
163 style="font-size:10px"
164 id="path3307" />
165 <path
166 d="m 449.39664,380.2955 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32551 0.42643,-0.5664 0.71289,-0.72265 0.28971,-0.1595 0.63476,-0.23926 1.03515,-0.23926 0.66406,0 1.2028,0.26368 1.61621,0.79101 0.41667,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20833,1.55274 -0.625,2.08008 -0.41341,0.52734 -0.95215,0.79102 -1.61621,0.79102 -0.40039,0 -0.74544,-0.0781 -1.03515,-0.23438 -0.28646,-0.1595 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c -1e-5,-0.6608 -0.13673,-1.17838 -0.41016,-1.55273 -0.27019,-0.3776 -0.64291,-0.5664 -1.11816,-0.56641 -0.47527,1e-5 -0.84961,0.18881 -1.12305,0.56641 -0.27018,0.37435 -0.40527,0.89193 -0.40527,1.55273 0,0.66081 0.13509,1.18002 0.40527,1.55762 0.27344,0.37435 0.64778,0.56152 1.12305,0.56152 0.47525,0 0.84797,-0.18717 1.11816,-0.56152 0.27343,-0.3776 0.41015,-0.89681 0.41016,-1.55762"
167 style="font-size:10px"
168 id="path3309" />
169 <path
170 d="m 456.99429,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -10e-6,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
171 style="font-size:10px"
172 id="path3311" />
173 <path
174 d="m 464.47476,375.8082 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27344,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78126,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33204,0.3418 -0.33203,0.61523 -10e-6,0.20834 0.0798,0.37273 0.23925,0.49317 0.15951,0.11719 0.48015,0.22949 0.96192,0.33691 l 0.30762,0.0684 c 0.63801,0.13672 1.09049,0.33041 1.35742,0.58106 0.27017,0.24739 0.40527,0.59407 0.40527,1.04004 0,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64942,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.3418,-0.35156 0.3418,-0.61524 0,-0.24413 -0.083,-0.43131 -0.24902,-0.56152 -0.16277,-0.13021 -0.52247,-0.25553 -1.07911,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11718 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24413 -0.37109,-0.57779 -0.37109,-1.00097 0,-0.51432 0.18229,-0.91146 0.54687,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55274,-0.41992 0.33202,0 0.64452,0.0244 0.9375,0.0732 0.29296,0.0488 0.56314,0.12208 0.81054,0.21973"
175 style="font-size:10px"
176 id="path3313" />
177 <path
178 d="m 466.20328,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
179 style="font-size:10px"
180 id="path3315" />
181 <path
182 d="m 469.86539,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.3955,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
183 style="font-size:10px"
184 id="path3317" />
185 <path
186 d="m 472.9025,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
187 style="font-size:10px"
188 id="path3319" />
189 <path
190 d="m 477.79507,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66244,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
191 style="font-size:10px"
192 id="path3321" />
193 <path
194 d="m 486.33511,377.81503 0,3.30078 -0.89843,0 0,-3.27148 c -1e-5,-0.51757 -0.10092,-0.90494 -0.30274,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75683,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42579,0.58594 0.32226,0.38737 0.48339,0.95866 0.48339,1.71386"
195 style="font-size:10px"
196 id="path3323" />
197 </g>
198 <g
199 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00b800;fill-opacity:1;stroke:none;font-family:Sans"
200 id="text3773">
201 <path
202 d="m 242.85294,625.22699 0,1.1543 c -0.44923,-0.21484 -0.87306,-0.375 -1.27149,-0.48047 -0.39844,-0.10546 -0.78321,-0.1582 -1.1543,-0.15821 -0.64453,10e-6 -1.14258,0.12501 -1.49414,0.375 -0.34765,0.25001 -0.52148,0.60548 -0.52148,1.06641 0,0.38673 0.11523,0.67969 0.3457,0.87891 0.23438,0.19532 0.67578,0.35352 1.32422,0.47461 l 0.71485,0.14648 c 0.8828,0.16797 1.53319,0.46485 1.95117,0.89063 0.42187,0.42187 0.6328,0.98828 0.63281,1.69921 -1e-5,0.84766 -0.28516,1.49024 -0.85547,1.92774 -0.56641,0.4375 -1.39844,0.65625 -2.49609,0.65625 -0.41407,0 -0.85547,-0.0469 -1.32422,-0.14063 -0.46485,-0.0937 -0.94727,-0.23242 -1.44727,-0.41601 l 0,-1.21875 c 0.48047,0.26953 0.95117,0.47266 1.41211,0.60937 0.46094,0.13672 0.91406,0.20508 1.35938,0.20508 0.67577,0 1.19726,-0.13281 1.56445,-0.39844 0.36718,-0.26562 0.55078,-0.64453 0.55078,-1.13671 0,-0.42969 -0.13282,-0.76563 -0.39844,-1.00782 -0.26172,-0.24218 -0.69336,-0.42382 -1.29492,-0.54492 l -0.7207,-0.14062 c -0.88282,-0.17578 -1.52149,-0.45117 -1.91602,-0.82618 -0.39453,-0.37499 -0.59179,-0.89647 -0.59179,-1.56445 0,-0.77343 0.27148,-1.3828 0.81445,-1.82812 0.54687,-0.44531 1.29882,-0.66796 2.25586,-0.66797 0.41015,10e-6 0.82812,0.0371 1.25391,0.11133 0.42577,0.0742 0.86132,0.18555 1.30664,0.33398"
203 style=""
204 id="path3355" />
205 <path
206 d="m 250.79239,630.13715 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26953,1.3086 0.66797,1.69922 0.40234,0.38672 0.96093,0.58008 1.67578,0.58008 0.41406,0 0.81445,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16016,-0.45703 l 0,1.01953 c -0.38673,0.16407 -0.78321,0.28907 -1.18946,0.375 -0.40625,0.0859 -0.81836,0.12891 -1.23633,0.12891 -1.04687,0 -1.87695,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91406,-1.43359 -0.91406,-2.47266 0,-1.07421 0.28906,-1.92578 0.86719,-2.55469 0.58202,-0.6328 1.36523,-0.94921 2.3496,-0.94922 0.88281,10e-6 1.58008,0.28517 2.0918,0.85547 0.51562,0.56641 0.77343,1.3379 0.77344,2.31446 m -1.07813,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49804,-1.41211 -0.32032,-0.35156 -0.7461,-0.52734 -1.27735,-0.52734 -0.60156,0 -1.08398,0.16992 -1.44726,0.50976 -0.35938,0.33985 -0.56641,0.81837 -0.6211,1.43555 l 3.84375,-0.006"
207 style=""
208 id="path3357" />
209 <path
210 d="m 257.28458,627.37738 0,1.00781 c -0.3047,-0.16796 -0.61134,-0.29296 -0.91993,-0.375 -0.30469,-0.0859 -0.61328,-0.1289 -0.92578,-0.1289 -0.69922,0 -1.24219,0.22266 -1.6289,0.66797 -0.38672,0.44141 -0.58008,1.0625 -0.58008,1.86328 0,0.80078 0.19336,1.42383 0.58008,1.86914 0.38671,0.4414 0.92968,0.66211 1.6289,0.66211 0.3125,0 0.62109,-0.041 0.92578,-0.12305 0.30859,-0.0859 0.61523,-0.21289 0.91993,-0.38086 l 0,0.99609 c -0.30079,0.14063 -0.61329,0.2461 -0.9375,0.31641 -0.32032,0.0703 -0.66212,0.10547 -1.02539,0.10547 -0.98829,0 -1.77344,-0.31055 -2.35547,-0.93164 -0.58204,-0.62109 -0.87305,-1.45898 -0.87305,-2.51367 0,-1.07031 0.29297,-1.91211 0.87891,-2.52539 0.58984,-0.61328 1.39648,-0.91992 2.41992,-0.91993 0.33203,10e-6 0.65624,0.0352 0.97265,0.10547 0.31641,0.0664 0.62305,0.16798 0.91993,0.30469"
211 style=""
212 id="path3359" />
213 <path
214 d="m 261.71426,627.88129 c -0.57812,0 -1.03515,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33594,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.0293,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33594,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67383,0.3047 2.20899,0.91407 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79687,-2.53125 -10e-6,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
215 style=""
216 id="path3361" />
217 <path
218 d="m 271.96231,629.72699 0,3.96094 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08594 -0.36329,-1.39454 -0.24219,-0.30858 -0.60547,-0.46288 -1.08984,-0.46289 -0.58203,10e-6 -1.04102,0.18556 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70899 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39453 0.56055,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.2129,-0.29297 0.7539,10e-6 1.32421,0.23439 1.71093,0.70313 0.38672,0.46485 0.58007,1.15039 0.58008,2.05664"
219 style=""
220 id="path3363" />
221 <path
222 d="m 278.44278,628.12152 0,-3.55078 1.07812,0 0,9.11719 -1.07812,0 0,-0.98438 c -0.22657,0.39063 -0.51368,0.68164 -0.86133,0.87305 -0.34375,0.1875 -0.75781,0.28125 -1.24219,0.28125 -0.79297,0 -1.43945,-0.31641 -1.93945,-0.94922 -0.49609,-0.63281 -0.74414,-1.46484 -0.74414,-2.49609 0,-1.03125 0.24805,-1.86328 0.74414,-2.4961 0.5,-0.6328 1.14648,-0.94921 1.93945,-0.94922 0.48438,10e-6 0.89844,0.0957 1.24219,0.28711 0.34765,0.18751 0.63476,0.47657 0.86133,0.86719 m -3.67383,2.29102 c 0,0.79297 0.16211,1.41601 0.48633,1.86914 0.32812,0.44922 0.77734,0.67383 1.34766,0.67383 0.5703,0 1.01952,-0.22461 1.34765,-0.67383 0.32812,-0.45313 0.49218,-1.07617 0.49219,-1.86914 -1e-5,-0.79297 -0.16407,-1.41406 -0.49219,-1.86328 -0.32813,-0.45312 -0.77735,-0.67969 -1.34765,-0.67969 -0.57032,0 -1.01954,0.22657 -1.34766,0.67969 -0.32422,0.44922 -0.48633,1.07031 -0.48633,1.86328"
223 style=""
224 id="path3365" />
225 <path
226 d="m 284.72403,630.3891 c -0.8711,0 -1.47461,0.0996 -1.81055,0.29883 -0.33594,0.19922 -0.50391,0.53906 -0.5039,1.01953 -1e-5,0.38281 0.12499,0.6875 0.375,0.91406 0.2539,0.22266 0.59765,0.33399 1.03125,0.33399 0.59765,0 1.07616,-0.21094 1.43554,-0.63282 0.36328,-0.42578 0.54492,-0.99023 0.54493,-1.69336 l 0,-0.24023 -1.07227,0 m 2.15039,-0.44531 0,3.74414 -1.07812,0 0,-0.9961 c -0.2461,0.39844 -0.55274,0.69336 -0.91993,0.88477 -0.36719,0.1875 -0.81641,0.28125 -1.34765,0.28125 -0.67188,0 -1.20704,-0.1875 -1.60547,-0.5625 -0.39453,-0.37891 -0.5918,-0.88477 -0.5918,-1.51758 0,-0.73828 0.24609,-1.29492 0.73828,-1.66992 0.49609,-0.375 1.23437,-0.5625 2.21485,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32423,-0.27343 -0.78126,-0.41015 -1.3711,-0.41015 -0.375,0 -0.74023,0.0449 -1.0957,0.13476 -0.35547,0.0899 -0.69727,0.22462 -1.02539,0.4043 l 0,-0.99609 c 0.39453,-0.15234 0.77734,-0.26562 1.14844,-0.33985 0.37109,-0.0781 0.73242,-0.11718 1.08398,-0.11719 0.94922,10e-6 1.6582,0.2461 2.12696,0.73829 0.46874,0.49219 0.70311,1.23828 0.70312,2.23828"
227 style=""
228 id="path3367" />
229 <path
230 d="m 292.90372,628.13324 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,10e-6 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39453 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88477,-0.88477 0.36327,-0.1953 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
231 style=""
232 id="path3369" />
233 <path
234 d="m 296.77676,634.2973 c -0.30469,0.78125 -0.60156,1.29102 -0.89062,1.5293 -0.28907,0.23828 -0.67578,0.35742 -1.16016,0.35742 l -0.86133,0 0,-0.90234 0.63282,0 c 0.29687,0 0.52734,-0.0703 0.6914,-0.21094 0.16406,-0.14063 0.3457,-0.47266 0.54493,-0.99609 l 0.19335,-0.49219 -2.65429,-6.45703 1.14258,0 2.05078,5.13281 2.05078,-5.13281 1.14258,0 -2.88282,7.17187"
235 style=""
236 id="path3371" />
237 <path
238 d="m 305.01505,624.93988 1.76367,0 2.23242,5.95313 2.24414,-5.95313 1.76367,0 0,8.74805 -1.1543,0 0,-7.68164 -2.25585,6 -1.18946,0 -2.25586,-6 0,7.68164 -1.14843,0 0,-8.74805"
239 style=""
240 id="path3373" />
241 <path
242 d="m 317.87051,627.88129 c -0.57812,0 -1.03515,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33594,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.0293,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33594,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67383,0.3047 2.20899,0.91407 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79687,-2.53125 -10e-6,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
243 style=""
244 id="path3375" />
245 <path
246 d="m 328.11856,629.72699 0,3.96094 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08594 -0.36329,-1.39454 -0.24219,-0.30858 -0.60547,-0.46288 -1.08984,-0.46289 -0.58203,10e-6 -1.04102,0.18556 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70899 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39453 0.56055,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.2129,-0.29297 0.7539,10e-6 1.32421,0.23439 1.71093,0.70313 0.38672,0.46485 0.58007,1.15039 0.58008,2.05664"
247 style=""
248 id="path3377" />
249 <path
250 d="m 330.28067,627.12543 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55469 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
251 style=""
252 id="path3379" />
253 <path
254 d="m 334.6752,625.26215 0,1.86328 2.2207,0 0,0.83789 -2.2207,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14843,0.15234 0.44726,0.22851 0.89648,0.22851 l 1.10742,0 0,0.90235 -1.10742,0 c -0.83203,0 -1.40625,-0.1543 -1.72265,-0.46289 -0.31641,-0.3125 -0.47461,-0.87891 -0.47461,-1.69922 l 0,-3.5625 -0.79102,0 0,-0.83789 0.79102,0 0,-1.86328 1.08398,0"
255 style=""
256 id="path3381" />
257 <path
258 d="m 340.8627,627.88129 c -0.57813,0 -1.03516,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33593,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.02929,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33595,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67382,0.3047 2.20899,0.91407 0.53515,0.60938 0.80272,1.45313 0.80273,2.53125 -10e-6,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53517,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79688,-2.53125 0,-1.07812 0.26563,-1.92187 0.79688,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
259 style=""
260 id="path3383" />
261 <path
262 d="m 349.4584,628.13324 c -0.12109,-0.0703 -0.25391,-0.12109 -0.39843,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,10e-6 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39453 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88476,-0.88477 0.36328,-0.1953 0.80469,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
263 style=""
264 id="path3385" />
265 </g>
266 <g
267 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00b800;fill-opacity:1;stroke:none;font-family:Sans"
268 id="text3777">
269 <path
270 d="m 575.27002,547.52673 0,3.28711 1.48828,0 c 0.55078,10e-6 0.97656,-0.14257 1.27734,-0.42773 0.30078,-0.28515 0.45117,-0.6914 0.45118,-1.21875 -10e-6,-0.52343 -0.1504,-0.92773 -0.45118,-1.21289 -0.30078,-0.28515 -0.72656,-0.42773 -1.27734,-0.42774 l -1.48828,0 m -1.18359,-0.97265 2.67187,0 c 0.98046,10e-6 1.7207,0.22266 2.2207,0.66797 0.5039,0.44141 0.75586,1.08985 0.75586,1.94531 0,0.86328 -0.25196,1.51563 -0.75586,1.95703 -0.5,0.44141 -1.24024,0.66211 -2.2207,0.66211 l -1.48828,0 0,3.51562 -1.18359,0 0,-8.74804"
271 style=""
272 id="path3326" />
273 <path
274 d="m 584.87354,549.74744 c -0.1211,-0.0703 -0.25392,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52148,-0.69336 0.88477,-0.88477 0.36327,-0.19531 0.80468,-0.29296 1.32421,-0.29297 0.0742,10e-6 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
275 style=""
276 id="path3328" />
277 <path
278 d="m 586.01611,548.73962 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55468 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
279 style=""
280 id="path3330" />
281 <path
282 d="m 594.45361,549.99939 c 0.26953,-0.48437 0.59179,-0.84179 0.9668,-1.07227 0.37499,-0.23046 0.8164,-0.34569 1.32422,-0.3457 0.68358,10e-6 1.21093,0.24024 1.58203,0.7207 0.37108,0.47657 0.55663,1.15626 0.55664,2.03907 l 0,3.96093 -1.08398,0 0,-3.92578 c -10e-6,-0.6289 -0.11134,-1.0957 -0.33399,-1.40039 -0.22266,-0.30468 -0.56251,-0.45702 -1.01953,-0.45703 -0.5586,10e-6 -1.00001,0.18555 -1.32422,0.55664 -0.32422,0.3711 -0.48633,0.87696 -0.48633,1.51758 l 0,3.70898 -1.08398,0 0,-3.92578 c -1e-5,-0.63281 -0.11133,-1.0996 -0.33398,-1.40039 -0.22267,-0.30468 -0.56642,-0.45702 -1.03125,-0.45703 -0.55079,10e-6 -0.98829,0.18751 -1.3125,0.5625 -0.32423,0.3711 -0.48634,0.87501 -0.48633,1.51172 l 0,3.70898 -1.08399,0 0,-6.5625 1.08399,0 0,1.01954 c 0.24609,-0.40234 0.54101,-0.69922 0.88476,-0.89063 0.34375,-0.1914 0.75195,-0.2871 1.22461,-0.28711 0.47656,10e-6 0.88086,0.1211 1.21289,0.36328 0.33593,0.2422 0.58398,0.59376 0.74414,1.05469"
283 style=""
284 id="path3332" />
285 <path
286 d="m 604.02197,552.0033 c -0.87109,0 -1.47461,0.0996 -1.81054,0.29882 -0.33594,0.19923 -0.50391,0.53907 -0.50391,1.01954 0,0.38281 0.125,0.6875 0.375,0.91406 0.2539,0.22265 0.59765,0.33398 1.03125,0.33398 0.59765,0 1.07617,-0.21093 1.43555,-0.63281 0.36327,-0.42578 0.54491,-0.99023 0.54492,-1.69336 l 0,-0.24023 -1.07227,0 m 2.15039,-0.44532 0,3.74414 -1.07812,0 0,-0.99609 c -0.2461,0.39844 -0.55274,0.69336 -0.91992,0.88477 -0.36719,0.1875 -0.81641,0.28125 -1.34766,0.28125 -0.67188,0 -1.20703,-0.1875 -1.60547,-0.5625 -0.39453,-0.37891 -0.5918,-0.88477 -0.5918,-1.51758 0,-0.73828 0.2461,-1.29492 0.73829,-1.66992 0.49609,-0.375 1.23437,-0.5625 2.21484,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32422,-0.27343 -0.78125,-0.41015 -1.37109,-0.41016 -0.37501,10e-6 -0.74024,0.0449 -1.09571,0.13477 -0.35547,0.0898 -0.69726,0.22461 -1.02539,0.4043 l 0,-0.9961 c 0.39453,-0.15234 0.77735,-0.26562 1.14844,-0.33984 0.37109,-0.0781 0.73242,-0.11718 1.08399,-0.11719 0.94921,10e-6 1.65819,0.2461 2.12695,0.73828 0.46874,0.4922 0.70312,1.23829 0.70312,2.23828"
287 style=""
288 id="path3334" />
289 <path
290 d="m 612.20166,549.74744 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52149,-0.69336 0.88477,-0.88477 0.36328,-0.19531 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
291 style=""
292 id="path3336" />
293 <path
294 d="m 616.07471,555.9115 c -0.30469,0.78125 -0.60157,1.29101 -0.89063,1.5293 -0.28906,0.23827 -0.67578,0.35742 -1.16015,0.35742 l -0.86133,0 0,-0.90235 0.63281,0 c 0.29687,0 0.52734,-0.0703 0.69141,-0.21093 0.16406,-0.14063 0.3457,-0.47266 0.54492,-0.9961 l 0.19336,-0.49218 -2.6543,-6.45704 1.14258,0 2.05078,5.13282 2.05078,-5.13282 1.14258,0 -2.88281,7.17188"
295 style=""
296 id="path3338" />
297 <path
298 d="m 624.31299,546.55408 1.76367,0 2.23242,5.95312 2.24414,-5.95312 1.76367,0 0,8.74804 -1.15429,0 0,-7.68164 -2.25586,6 -1.18945,0 -2.25586,-6 0,7.68164 -1.14844,0 0,-8.74804"
299 style=""
300 id="path3340" />
301 <path
302 d="m 637.16846,549.49548 c -0.57813,10e-6 -1.03516,0.22657 -1.3711,0.67969 -0.33594,0.44922 -0.5039,1.06641 -0.5039,1.85156 0,0.78516 0.16601,1.4043 0.49804,1.85743 0.33594,0.44921 0.79492,0.67382 1.37696,0.67382 0.57421,0 1.02929,-0.22656 1.36523,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -10e-6,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36523,-0.68555 m 0,-0.91406 c 0.93749,10e-6 1.67382,0.30469 2.20898,0.91406 0.53515,0.60938 0.80273,1.45313 0.80274,2.53125 -10e-6,1.07422 -0.26759,1.91797 -0.80274,2.53125 -0.53516,0.60938 -1.27149,0.91407 -2.20898,0.91407 -0.94141,0 -1.67969,-0.30469 -2.21485,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21485,-0.91406"
303 style=""
304 id="path3342" />
305 <path
306 d="m 647.4165,551.34119 0,3.96093 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.24219,-0.30859 -0.60548,-0.46288 -1.08985,-0.46289 -0.58203,10e-6 -1.04101,0.18555 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70898 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.25781,-0.39453 0.56055,-0.68945 0.90821,-0.88477 0.35156,-0.19531 0.75585,-0.29296 1.21289,-0.29297 0.7539,10e-6 1.32421,0.23438 1.71094,0.70313 0.38671,0.46485 0.58007,1.15039 0.58007,2.05664"
307 style=""
308 id="path3344" />
309 <path
310 d="m 649.57861,548.73962 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55468 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
311 style=""
312 id="path3346" />
313 <path
314 d="m 653.97314,546.87634 0,1.86328 2.22071,0 0,0.83789 -2.22071,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14844,0.15235 0.44726,0.22852 0.89649,0.22852 l 1.10742,0 0,0.90234 -1.10742,0 c -0.83204,0 -1.40626,-0.15429 -1.72266,-0.46289 -0.31641,-0.3125 -0.47461,-0.8789 -0.47461,-1.69922 l 0,-3.5625 -0.79102,0 0,-0.83789 0.79102,0 0,-1.86328 1.08398,0"
315 style=""
316 id="path3348" />
317 <path
318 d="m 660.16064,549.49548 c -0.57812,10e-6 -1.03515,0.22657 -1.37109,0.67969 -0.33594,0.44922 -0.50391,1.06641 -0.50391,1.85156 0,0.78516 0.16602,1.4043 0.49805,1.85743 0.33594,0.44921 0.79492,0.67382 1.37695,0.67382 0.57422,0 1.0293,-0.22656 1.36524,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -1e-5,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36524,-0.68555 m 0,-0.91406 c 0.9375,10e-6 1.67383,0.30469 2.20899,0.91406 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60938 -1.27149,0.91407 -2.20899,0.91407 -0.9414,0 -1.67968,-0.30469 -2.21484,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21484,-0.91406"
319 style=""
320 id="path3350" />
321 <path
322 d="m 668.75635,549.74744 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52148,-0.69336 0.88477,-0.88477 0.36328,-0.19531 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
323 style=""
324 id="path3352" />
325 </g>
326 <g
327 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
328 id="text3781">
329 <path
330 d="m 612.64136,657.77118 -3.33985,-8.74805 1.23633,0 2.77149,7.36524 2.77734,-7.36524 1.23047,0 -3.33399,8.74805 -1.34179,0"
331 style=""
332 id="path3401" />
333 <path
334 d="m 618.28394,651.20868 1.07812,0 0,6.5625 -1.07812,0 0,-6.5625 m 0,-2.55469 1.07812,0 0,1.36524 -1.07812,0 0,-1.36524"
335 style=""
336 id="path3403" />
337 <path
338 d="m 625.41479,652.21649 c -0.12109,-0.0703 -0.25391,-0.12109 -0.39843,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,1e-5 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39454 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88476,-0.88477 0.36328,-0.1953 0.80469,-0.29296 1.32422,-0.29296 0.0742,0 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
339 style=""
340 id="path3405" />
341 <path
342 d="m 627.62378,649.3454 0,1.86328 2.2207,0 0,0.83789 -2.2207,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14843,0.15234 0.44726,0.22852 0.89648,0.22852 l 1.10742,0 0,0.90234 -1.10742,0 c -0.83203,0 -1.40625,-0.1543 -1.72266,-0.46289 -0.3164,-0.3125 -0.47461,-0.87891 -0.47461,-1.69922 l 0,-3.5625 -0.79101,0 0,-0.83789 0.79101,0 0,-1.86328 1.08399,0"
343 style=""
344 id="path3407" />
345 <path
346 d="m 631.15698,655.18134 0,-3.97266 1.07813,0 0,3.93164 c 0,0.6211 0.12109,1.08789 0.36328,1.40039 0.24218,0.3086 0.60546,0.46289 1.08984,0.46289 0.58203,0 1.04101,-0.18554 1.37696,-0.55664 0.33983,-0.37109 0.50976,-0.87695 0.50976,-1.51758 l 0,-3.7207 1.07813,0 0,6.5625 -1.07813,0 0,-1.00781 c -0.26172,0.39843 -0.56641,0.69531 -0.91406,0.89062 -0.34376,0.19141 -0.74415,0.28711 -1.20117,0.28711 -0.75391,0 -1.32618,-0.23437 -1.7168,-0.70312 -0.39063,-0.46875 -0.58594,-1.1543 -0.58594,-2.05664 m 2.71289,-4.13086 0,0"
347 style=""
348 id="path3409" />
349 <path
350 d="m 641.86792,654.47235 c -0.8711,0 -1.47461,0.0996 -1.81055,0.29883 -0.33594,0.19922 -0.50391,0.53906 -0.5039,1.01953 -10e-6,0.38281 0.12499,0.6875 0.375,0.91406 0.2539,0.22266 0.59765,0.33399 1.03125,0.33399 0.59765,0 1.07616,-0.21094 1.43554,-0.63282 0.36328,-0.42577 0.54492,-0.99023 0.54493,-1.69335 l 0,-0.24024 -1.07227,0 m 2.15039,-0.44531 0,3.74414 -1.07812,0 0,-0.99609 c -0.2461,0.39843 -0.55274,0.69336 -0.91993,0.88476 -0.36719,0.1875 -0.81641,0.28125 -1.34765,0.28125 -0.67188,0 -1.20704,-0.1875 -1.60547,-0.5625 -0.39453,-0.3789 -0.5918,-0.88476 -0.5918,-1.51758 0,-0.73828 0.24609,-1.29492 0.73828,-1.66992 0.49609,-0.37499 1.23438,-0.56249 2.21485,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32423,-0.27343 -0.78126,-0.41015 -1.3711,-0.41015 -0.375,0 -0.74023,0.0449 -1.0957,0.13476 -0.35547,0.0899 -0.69727,0.22462 -1.02539,0.4043 l 0,-0.99609 c 0.39453,-0.15234 0.77734,-0.26562 1.14844,-0.33985 0.37109,-0.0781 0.73242,-0.11718 1.08398,-0.11718 0.94922,0 1.6582,0.2461 2.12696,0.73828 0.46874,0.49219 0.70311,1.23828 0.70312,2.23828"
351 style=""
352 id="path3411" />
353 <path
354 d="m 646.24487,648.65399 1.07813,0 0,9.11719 -1.07813,0 0,-9.11719"
355 style=""
356 id="path3413" />
357 <path
358 d="m 658.68433,649.31024 0,1.1543 c -0.44923,-0.21484 -0.87306,-0.37499 -1.27149,-0.48047 -0.39844,-0.10546 -0.78321,-0.1582 -1.1543,-0.1582 -0.64453,0 -1.14258,0.125 -1.49414,0.375 -0.34765,0.25 -0.52148,0.60547 -0.52148,1.0664 0,0.38673 0.11523,0.6797 0.3457,0.87891 0.23438,0.19532 0.67578,0.35352 1.32422,0.47461 l 0.71485,0.14648 c 0.8828,0.16798 1.53319,0.46485 1.95117,0.89063 0.42187,0.42188 0.6328,0.98828 0.63281,1.69922 -10e-6,0.84765 -0.28516,1.49023 -0.85547,1.92773 -0.56641,0.4375 -1.39844,0.65625 -2.49609,0.65625 -0.41407,0 -0.85547,-0.0469 -1.32422,-0.14062 -0.46485,-0.0937 -0.94727,-0.23243 -1.44727,-0.41602 l 0,-1.21875 c 0.48047,0.26953 0.95117,0.47266 1.41211,0.60938 0.46094,0.13672 0.91406,0.20507 1.35938,0.20507 0.67577,0 1.19726,-0.13281 1.56445,-0.39843 0.36718,-0.26563 0.55078,-0.64453 0.55078,-1.13672 0,-0.42969 -0.13282,-0.76562 -0.39844,-1.00782 -0.26172,-0.24218 -0.69336,-0.42382 -1.29492,-0.54492 l -0.7207,-0.14062 c -0.88282,-0.17578 -1.52149,-0.45117 -1.91602,-0.82617 -0.39453,-0.375 -0.59179,-0.89648 -0.59179,-1.56446 0,-0.77343 0.27148,-1.3828 0.81445,-1.82812 0.54687,-0.44531 1.29883,-0.66796 2.25586,-0.66797 0.41015,1e-5 0.82812,0.0371 1.25391,0.11133 0.42577,0.0742 0.86132,0.18555 1.30664,0.33398"
359 style=""
360 id="path3415" />
361 <path
362 d="m 665.73315,651.46063 0,1.00781 c -0.30469,-0.16796 -0.61133,-0.29296 -0.91992,-0.375 -0.30469,-0.0859 -0.61328,-0.1289 -0.92578,-0.1289 -0.69922,0 -1.24219,0.22266 -1.62891,0.66797 -0.38672,0.44141 -0.58008,1.0625 -0.58007,1.86328 -10e-6,0.80078 0.19335,1.42383 0.58007,1.86914 0.38672,0.44141 0.92969,0.66211 1.62891,0.66211 0.3125,0 0.62109,-0.041 0.92578,-0.12305 0.30859,-0.0859 0.61523,-0.21289 0.91992,-0.38086 l 0,0.9961 c -0.30078,0.14062 -0.61328,0.24609 -0.9375,0.3164 -0.32031,0.0703 -0.66211,0.10547 -1.02539,0.10547 -0.98828,0 -1.77344,-0.31055 -2.35547,-0.93164 -0.58203,-0.62109 -0.87304,-1.45898 -0.87304,-2.51367 0,-1.07031 0.29297,-1.91211 0.8789,-2.52539 0.58985,-0.61328 1.39649,-0.91992 2.41993,-0.91992 0.33202,0 0.65624,0.0352 0.97265,0.10546 0.3164,0.0664 0.62304,0.16798 0.91992,0.30469"
363 style=""
364 id="path3417" />
365 <path
366 d="m 671.42261,652.21649 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,1e-5 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39454 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88477,-0.88477 0.36328,-0.1953 0.80468,-0.29296 1.32422,-0.29296 0.0742,0 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
367 style=""
368 id="path3419" />
369 <path
370 d="m 677.92065,654.2204 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26953,1.3086 0.66797,1.69922 0.40234,0.38672 0.96094,0.58008 1.67578,0.58008 0.41406,0 0.81445,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16016,-0.45703 l 0,1.01953 c -0.38672,0.16407 -0.78321,0.28907 -1.18945,0.375 -0.40626,0.0859 -0.81837,0.12891 -1.23633,0.12891 -1.04688,0 -1.87696,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91407,-1.43359 -0.91407,-2.47266 0,-1.07421 0.28906,-1.92577 0.86719,-2.55469 0.58203,-0.6328 1.36523,-0.94921 2.34961,-0.94921 0.88281,0 1.58007,0.28516 2.0918,0.85546 0.51562,0.56642 0.77343,1.3379 0.77343,2.31446 m -1.07812,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49805,-1.41211 -0.32031,-0.35155 -0.7461,-0.52734 -1.27734,-0.52734 -0.60157,0 -1.08399,0.16993 -1.44727,0.50976 -0.35937,0.33985 -0.56641,0.81837 -0.62109,1.43555 l 3.84375,-0.006"
371 style=""
372 id="path3421" />
373 <path
374 d="m 685.30347,654.2204 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26952,1.3086 0.66796,1.69922 0.40235,0.38672 0.96094,0.58008 1.67579,0.58008 0.41405,0 0.81444,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16015,-0.45703 l 0,1.01953 c -0.38672,0.16407 -0.78321,0.28907 -1.18945,0.375 -0.40625,0.0859 -0.81836,0.12891 -1.23633,0.12891 -1.04688,0 -1.87695,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91407,-1.43359 -0.91406,-2.47266 -10e-6,-1.07421 0.28906,-1.92577 0.86718,-2.55469 0.58203,-0.6328 1.36523,-0.94921 2.34961,-0.94921 0.88281,0 1.58008,0.28516 2.0918,0.85546 0.51562,0.56642 0.77343,1.3379 0.77344,2.31446 m -1.07813,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49805,-1.41211 -0.32031,-0.35155 -0.74609,-0.52734 -1.27734,-0.52734 -0.60156,0 -1.08399,0.16993 -1.44726,0.50976 -0.35938,0.33985 -0.56641,0.81837 -0.6211,1.43555 l 3.84375,-0.006"
375 style=""
376 id="path3423" />
377 <path
378 d="m 692.52808,653.81024 0,3.96094 -1.07813,0 0,-3.92578 c 0,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.24219,-0.30859 -0.60547,-0.46289 -1.08984,-0.46289 -0.58204,0 -1.04102,0.18555 -1.37696,0.55664 -0.33594,0.3711 -0.50391,0.87695 -0.5039,1.51757 l 0,3.70899 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.25781,-0.39452 0.56054,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.21289,-0.29296 0.7539,0 1.32421,0.23438 1.71094,0.70312 0.38671,0.46485 0.58007,1.1504 0.58008,2.05664"
379 style=""
380 id="path3425" />
381 </g>
382 <rect
383 style="fill:#b8b8b8;fill-opacity:1;stroke:#b8b8b8;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
384 id="rect5577"
385 width="173.25098"
386 height="141.43118"
387 x="157.75581"
388 y="436.97159" />
389 <rect
390 style="fill:#ededed;fill-opacity:1;stroke:#ededed;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
391 id="rect3789"
392 width="168.99611"
393 height="136.87178"
394 x="159.87543"
395 y="439.39697"
396 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
397 inkscape:export-xdpi="109.89113"
398 inkscape:export-ydpi="109.89113" />
399 <g
400 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;font-family:Sans"
401 id="text3791">
402 <path
403 d="m 274.28683,558.98682 1.19532,0 1.83984,7.39453 1.83399,-7.39453 1.33007,0 1.83985,7.39453 1.83398,-7.39453 1.20117,0 -2.19726,8.74804 -1.48828,0 -1.84571,-7.59375 -1.86328,7.59375 -1.48828,0 -2.19141,-8.74804"
404 style=""
405 id="path3388" />
406 <path
407 d="m 286.62082,561.17236 1.07812,0 0,6.5625 -1.07812,0 0,-6.5625 m 0,-2.55468 1.07812,0 0,1.36523 -1.07812,0 0,-1.36523"
408 style=""
409 id="path3390" />
410 <path
411 d="m 295.40402,563.77393 0,3.96093 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.2422,-0.30859 -0.60548,-0.46288 -1.08985,-0.46289 -0.58203,1e-5 -1.04102,0.18555 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70898 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39452 0.56055,-0.68944 0.90821,-0.88476 0.35156,-0.19531 0.75585,-0.29296 1.21289,-0.29297 0.7539,1e-5 1.32421,0.23438 1.71093,0.70313 0.38672,0.46484 0.58008,1.15039 0.58008,2.05664"
412 style=""
413 id="path3392" />
414 <path
415 d="m 301.88449,562.16846 0,-3.55078 1.07813,0 0,9.11718 -1.07813,0 0,-0.98437 c -0.22657,0.39062 -0.51368,0.68164 -0.86133,0.87305 -0.34375,0.1875 -0.75781,0.28124 -1.24218,0.28125 -0.79298,-1e-5 -1.43946,-0.31641 -1.93946,-0.94922 -0.49609,-0.63281 -0.74414,-1.46485 -0.74414,-2.4961 0,-1.03124 0.24805,-1.86327 0.74414,-2.49609 0.5,-0.63281 1.14648,-0.94921 1.93946,-0.94922 0.48437,1e-5 0.89843,0.0957 1.24218,0.28711 0.34765,0.18751 0.63476,0.47657 0.86133,0.86719 m -3.67383,2.29101 c 0,0.79297 0.16211,1.41602 0.48633,1.86914 0.32812,0.44922 0.77734,0.67383 1.34766,0.67383 0.57031,0 1.01952,-0.22461 1.34765,-0.67383 0.32812,-0.45312 0.49219,-1.07617 0.49219,-1.86914 0,-0.79296 -0.16407,-1.41406 -0.49219,-1.86328 -0.32813,-0.45312 -0.77734,-0.67968 -1.34765,-0.67969 -0.57032,10e-6 -1.01954,0.22657 -1.34766,0.67969 -0.32422,0.44922 -0.48633,1.07032 -0.48633,1.86328"
416 style=""
417 id="path3394" />
418 <path
419 d="m 307.72629,561.92822 c -0.57813,10e-6 -1.03516,0.22657 -1.3711,0.67969 -0.33594,0.44922 -0.5039,1.06641 -0.5039,1.85156 0,0.78516 0.16601,1.4043 0.49804,1.85742 0.33594,0.44922 0.79492,0.67383 1.37696,0.67383 0.57421,0 1.02929,-0.22656 1.36523,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -1e-5,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36523,-0.68555 m 0,-0.91406 c 0.93749,1e-5 1.67382,0.30469 2.20898,0.91406 0.53515,0.60938 0.80273,1.45313 0.80274,2.53125 -10e-6,1.07422 -0.26759,1.91797 -0.80274,2.53125 -0.53516,0.60938 -1.27149,0.91406 -2.20898,0.91407 -0.94141,-1e-5 -1.67969,-0.30469 -2.21485,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21485,-0.91406"
420 style=""
421 id="path3396" />
422 <path
423 d="m 311.8923,561.17236 1.07813,0 1.34765,5.1211 1.3418,-5.1211 1.27149,0 1.34765,5.1211 1.3418,-5.1211 1.07812,0 -1.71679,6.5625 -1.27149,0 -1.41211,-5.3789 -1.41797,5.3789 -1.27148,0 -1.7168,-6.5625"
424 style=""
425 id="path3398" />
426 </g>
427 <rect
428 y="439.39581"
429 x="159.87428"
430 height="8.8251209"
431 width="168.99841"
432 id="rect3795"
433 style="fill:#7b7bff;fill-opacity:1;stroke:#7b7bff;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
434 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
435 inkscape:export-xdpi="109.89113"
436 inkscape:export-ydpi="109.89113" />
437 <path
438 sodipodi:type="arc"
439 style="fill:#000000;fill-opacity:1;stroke:none"
440 id="path3797"
441 sodipodi:cx="352.54324"
442 sodipodi:cy="373.03461"
443 sodipodi:rx="2.5253813"
444 sodipodi:ry="2.5253813"
445 d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
446 transform="matrix(0.66107369,0,0,0.66107369,123.32145,119.41326)"
447 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
448 inkscape:export-xdpi="109.89113"
449 inkscape:export-ydpi="109.89113" />
450 <path
451 transform="matrix(0.66107369,0,0,0.66107369,-194.73594,119.44704)"
452 d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
453 sodipodi:ry="2.5253813"
454 sodipodi:rx="2.5253813"
455 sodipodi:cy="373.03461"
456 sodipodi:cx="352.54324"
457 id="path3799"
458 style="fill:#000000;fill-opacity:1;stroke:none"
459 sodipodi:type="arc"
460 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
461 inkscape:export-xdpi="109.89113"
462 inkscape:export-ydpi="109.89113" />
463 <path
464 sodipodi:type="arc"
465 style="fill:#000000;fill-opacity:1;stroke:none"
466 id="path3801"
467 sodipodi:cx="352.54324"
468 sodipodi:cy="373.03461"
469 sodipodi:rx="2.5253813"
470 sodipodi:ry="2.5253813"
471 d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
472 transform="matrix(0.66107369,0,0,0.66107369,-73.218648,201.61091)"
473 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
474 inkscape:export-xdpi="109.89113"
475 inkscape:export-ydpi="109.89113" />
476 <text
477 xml:space="preserve"
478 style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
479 x="21.213203"
480 y="340.20465"
481 id="text3803"
482 inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
483 inkscape:export-xdpi="109.89113"
484 inkscape:export-ydpi="109.89113"><tspan
485 sodipodi:role="line"
486 id="tspan3805"
487 x="21.213203"
488 y="340.20465"
489 style="font-size:12px;line-height:1.25;font-family:sans-serif"> </tspan></text>
490 <g
491 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
492 id="text3807">
493 <path
494 d="m 71.179893,455.55557 0.996094,0 1.533203,6.16211 1.528321,-6.16211 1.108398,0 1.533203,6.16211 1.528321,-6.16211 1.000976,0 -1.831055,7.29004 -1.240234,0 -1.538086,-6.32812 -1.552734,6.32812 -1.240235,0 -1.826172,-7.29004"
495 style="font-size:10px"
496 id="path3164" />
497 <path
498 d="m 81.458214,457.37686 0.898437,0 0,5.46875 -0.898437,0 0,-5.46875 m 0,-2.1289 0.898437,0 0,1.13769 -0.898437,0 0,-1.13769"
499 style="font-size:10px"
500 id="path3166" />
501 <path
502 d="m 88.77755,459.54483 0,3.30078 -0.898438,0 0,-3.27148 c -4e-6,-0.51758 -0.100916,-0.90495 -0.302734,-1.16211 -0.201827,-0.25716 -0.504561,-0.38574 -0.908203,-0.38574 -0.485029,0 -0.867516,0.15462 -1.147461,0.46386 -0.27995,0.30925 -0.419924,0.7308 -0.419922,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.214842,-0.32877 0.46712,-0.57454 0.756836,-0.7373 0.292966,-0.16276 0.629879,-0.24414 1.010742,-0.24414 0.628251,0 1.103511,0.19531 1.425781,0.58593 0.322261,0.38738 0.483393,0.95867 0.483399,1.71387"
503 style="font-size:10px"
504 id="path3168" />
505 <path
506 d="m 94.17794,458.20694 0,-2.95898 0.898438,0 0,7.59765 -0.898438,0 0,-0.82031 c -0.188806,0.32552 -0.428064,0.56803 -0.717773,0.72754 -0.286462,0.15625 -0.631514,0.23437 -1.035156,0.23437 -0.66081,0 -1.199546,-0.26367 -1.616211,-0.79101 -0.413412,-0.52735 -0.620118,-1.2207 -0.620117,-2.08008 -10e-7,-0.85937 0.206705,-1.55273 0.620117,-2.08008 0.416665,-0.52734 0.955401,-0.79101 1.616211,-0.79101 0.403642,0 0.748694,0.0797 1.035156,0.23925 0.289709,0.15626 0.528967,0.39714 0.717773,0.72266 m -3.061523,1.90918 c -2e-6,0.66081 0.135089,1.18001 0.405273,1.55762 0.273436,0.37435 0.647784,0.56152 1.123047,0.56152 0.475257,0 0.849606,-0.18717 1.123047,-0.56152 0.273433,-0.37761 0.410152,-0.89681 0.410156,-1.55762 -4e-6,-0.6608 -0.136723,-1.17838 -0.410156,-1.55273 -0.273441,-0.3776 -0.64779,-0.56641 -1.123047,-0.56641 -0.475263,0 -0.849611,0.18881 -1.123047,0.56641 -0.270184,0.37435 -0.405275,0.89193 -0.405273,1.55273"
507 style="font-size:10px"
508 id="path3170" />
509 <path
510 d="m 99.046104,458.00674 c -0.481773,1e-5 -0.862632,0.18881 -1.142578,0.56641 -0.279949,0.37435 -0.419923,0.88868 -0.419922,1.54297 -10e-7,0.6543 0.138345,1.17025 0.415039,1.54785 0.279946,0.37435 0.662433,0.56153 1.147461,0.56152 0.478513,1e-5 0.857744,-0.1888 1.137696,-0.5664 0.27994,-0.3776 0.41992,-0.89193 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53809 -0.279952,-0.38085 -0.659183,-0.57128 -1.137696,-0.57129 m 0,-0.76171 c 0.781247,0 1.394856,0.25391 1.840816,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44596,0.50782 -1.059569,0.76172 -1.840816,0.76172 -0.784507,0 -1.399741,-0.2539 -1.845703,-0.76172 -0.442709,-0.51106 -0.664063,-1.21419 -0.664062,-2.10937 -10e-7,-0.89843 0.221353,-1.60156 0.664062,-2.10938 0.445962,-0.5078 1.061196,-0.76171 1.845703,-0.76171"
511 style="font-size:10px"
512 id="path3172" />
513 <path
514 d="m 102.51778,457.37686 0.89844,0 1.12305,4.26758 1.11816,-4.26758 1.05957,0 1.12305,4.26758 1.11816,-4.26758 0.89844,0 -1.43066,5.46875 -1.05957,0 -1.17676,-4.48242 -1.18164,4.48242 -1.05957,0 -1.43067,-5.46875"
515 style="font-size:10px"
516 id="path3174" />
517 <path
518 d="m 115.27657,462.0253 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32552 0.42643,-0.5664 0.71289,-0.72266 0.28971,-0.1595 0.63477,-0.23925 1.03516,-0.23925 0.66406,0 1.20279,0.26367 1.61621,0.79101 0.41666,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20834,1.55273 -0.625,2.08008 -0.41342,0.52734 -0.95215,0.79101 -1.61621,0.79101 -0.40039,0 -0.74545,-0.0781 -1.03516,-0.23437 -0.28646,-0.15951 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c 0,-0.6608 -0.13672,-1.17838 -0.41015,-1.55273 -0.27019,-0.3776 -0.64291,-0.56641 -1.11817,-0.56641 -0.47526,0 -0.84961,0.18881 -1.12304,0.56641 -0.27019,0.37435 -0.40528,0.89193 -0.40528,1.55273 0,0.66081 0.13509,1.18001 0.40528,1.55762 0.27343,0.37435 0.64778,0.56152 1.12304,0.56152 0.47526,0 0.84798,-0.18717 1.11817,-0.56152 0.27343,-0.37761 0.41015,-0.89681 0.41015,-1.55762"
519 style="font-size:10px"
520 id="path3176" />
521 <path
522 d="m 122.87423,458.00674 c -0.48177,1e-5 -0.86263,0.18881 -1.14258,0.56641 -0.27995,0.37435 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56152 0.47851,1e-5 0.85774,-0.1888 1.13769,-0.5664 0.27995,-0.3776 0.41992,-0.89193 0.41993,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41993,-1.53809 -0.27995,-0.38085 -0.65918,-0.57128 -1.13769,-0.57129 m 0,-0.76171 c 0.78125,0 1.39485,0.25391 1.84082,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44597,0.50782 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.2539 -1.8457,-0.76172 -0.44271,-0.51106 -0.66407,-1.21419 -0.66407,-2.10937 0,-0.89843 0.22136,-1.60156 0.66407,-2.10938 0.44596,-0.5078 1.06119,-0.76171 1.8457,-0.76171"
523 style="font-size:10px"
524 id="path3178" />
525 <path
526 d="m 130.3547,457.53799 0,0.84961 c -0.25391,-0.1302 -0.51758,-0.22786 -0.79102,-0.29296 -0.27344,-0.0651 -0.55664,-0.0977 -0.84961,-0.0977 -0.44596,0 -0.78125,0.0684 -1.00586,0.20508 -0.22135,0.13672 -0.33203,0.3418 -0.33203,0.61523 0,0.20834 0.0797,0.37273 0.23926,0.49317 0.1595,0.11719 0.48014,0.22949 0.96191,0.33691 l 0.30762,0.0684 c 0.63802,0.13672 1.09049,0.33041 1.35742,0.58105 0.27018,0.2474 0.40527,0.59408 0.40528,1.04004 -1e-5,0.50782 -0.20183,0.90983 -0.60547,1.20606 -0.4004,0.29622 -0.95215,0.44433 -1.65528,0.44433 -0.29297,0 -0.59896,-0.0293 -0.91796,-0.0879 -0.31576,-0.0553 -0.64942,-0.13997 -1.00098,-0.2539 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98144,0.39063 0.32227,0.0846 0.64128,0.12695 0.95704,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14649 0.34179,-0.35157 0.3418,-0.61524 -1e-5,-0.24414 -0.083,-0.43131 -0.24903,-0.56152 -0.16276,-0.13021 -0.52246,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11719 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24414 -0.3711,-0.5778 -0.3711,-1.00098 0,-0.51431 0.18229,-0.91145 0.54688,-1.1914 0.36458,-0.27994 0.88216,-0.41992 1.55273,-0.41992 0.33203,0 0.64453,0.0244 0.9375,0.0732 0.29297,0.0488 0.56315,0.12207 0.81055,0.21972"
527 style="font-size:10px"
528 id="path3180" />
529 <path
530 d="m 132.08321,457.37686 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
531 style="font-size:10px"
532 id="path3182" />
533 <path
534 d="m 135.74532,455.82413 0,1.55273 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73243 0.18067,0.85938 0.12369,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0"
535 style="font-size:10px"
536 id="path3184" />
537 <path
538 d="m 138.78243,457.37686 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
539 style="font-size:10px"
540 id="path3186" />
541 <path
542 d="m 143.67501,458.00674 c -0.48177,1e-5 -0.86263,0.18881 -1.14258,0.56641 -0.27995,0.37435 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56152 0.47851,1e-5 0.85774,-0.1888 1.1377,-0.5664 0.27994,-0.3776 0.41991,-0.89193 0.41992,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41992,-1.53809 -0.27996,-0.38085 -0.65919,-0.57128 -1.1377,-0.57129 m 0,-0.76171 c 0.78125,0 1.39485,0.25391 1.84082,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44597,0.50782 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.2539 -1.8457,-0.76172 -0.44271,-0.51106 -0.66407,-1.21419 -0.66406,-2.10937 -10e-6,-0.89843 0.22135,-1.60156 0.66406,-2.10938 0.44596,-0.5078 1.06119,-0.76171 1.8457,-0.76171"
543 style="font-size:10px"
544 id="path3188" />
545 <path
546 d="m 152.21505,459.54483 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51758 -0.10091,-0.90495 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.90821,-0.38574 -0.48502,0 -0.86751,0.15462 -1.14746,0.46386 -0.27995,0.30925 -0.41992,0.7308 -0.41992,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19531 1.42578,0.58593 0.32226,0.38738 0.48339,0.95867 0.4834,1.71387"
547 style="font-size:10px"
548 id="path3190" />
549 </g>
550 <g
551 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
552 id="text3817">
553 <path
554 d="m 49.798271,374.06503 0,0.96192 c -0.374354,-0.17903 -0.727544,-0.3125 -1.05957,-0.40039 -0.332035,-0.0879 -0.652673,-0.13183 -0.961914,-0.13184 -0.537112,1e-5 -0.952151,0.10417 -1.245117,0.3125 -0.289716,0.20834 -0.434572,0.50456 -0.434571,0.88867 -10e-7,0.32227 0.09603,0.56641 0.288086,0.73242 0.195311,0.16277 0.563149,0.2946 1.103516,0.39551 l 0.595703,0.12207 c 0.735673,0.13998 1.277664,0.38738 1.625977,0.74219 0.351556,0.35157 0.527338,0.82357 0.527343,1.41602 -5e-6,0.70638 -0.237635,1.24186 -0.71289,1.60644 -0.47201,0.36458 -1.165369,0.54688 -2.080078,0.54688 -0.345055,0 -0.712893,-0.0391 -1.103516,-0.11719 -0.387371,-0.0781 -0.789389,-0.19369 -1.206055,-0.34668 l 0,-1.01563 c 0.40039,0.22461 0.792642,0.39388 1.176758,0.50782 0.384112,0.11393 0.761716,0.1709 1.132813,0.17089 0.563147,10e-6 0.997717,-0.11067 1.30371,-0.33203 0.305985,-0.22135 0.45898,-0.5371 0.458985,-0.94726 -5e-6,-0.35807 -0.110682,-0.63802 -0.332031,-0.83985 -0.218104,-0.20182 -0.577804,-0.35318 -1.079102,-0.4541 l -0.600586,-0.11719 c -0.735679,-0.14648 -1.267905,-0.37597 -1.59668,-0.68847 -0.328776,-0.3125 -0.493164,-0.74707 -0.493164,-1.30371 0,-0.64453 0.226236,-1.15234 0.678711,-1.52344 0.455728,-0.37109 1.082355,-0.55663 1.879883,-0.55664 0.341793,10e-6 0.6901,0.0309 1.044922,0.0928 0.354813,0.0619 0.717768,0.15463 1.088867,0.27832"
555 style="font-size:10px"
556 id="path3193" />
557 <path
558 d="m 56.414482,378.15683 0,0.43945 -4.130859,0 c 0.03906,0.61849 0.224607,1.0905 0.55664,1.41602 0.335284,0.32226 0.800779,0.4834 1.396485,0.4834 0.345048,0 0.678707,-0.0423 1.000976,-0.12696 0.325516,-0.0846 0.647782,-0.21158 0.966797,-0.38086 l 0,0.84961 c -0.322271,0.13672 -0.652674,0.24089 -0.991211,0.3125 -0.338546,0.0716 -0.68197,0.10743 -1.030273,0.10743 -0.872399,0 -1.56413,-0.25391 -2.075196,-0.76172 -0.507813,-0.50781 -0.761719,-1.19466 -0.761718,-2.06055 -10e-7,-0.89518 0.240884,-1.60481 0.722656,-2.12891 0.485024,-0.52733 1.137693,-0.79101 1.958008,-0.79101 0.735673,0 1.316727,0.23763 1.743164,0.71289 0.429682,0.47201 0.644525,1.11491 0.644531,1.92871 m -0.898437,-0.26367 c -0.0065,-0.49153 -0.144862,-0.88379 -0.415039,-1.17676 -0.266932,-0.29296 -0.621749,-0.43945 -1.064454,-0.43945 -0.501304,0 -0.903322,0.1416 -1.206054,0.4248 -0.299481,0.28321 -0.472007,0.68197 -0.517578,1.19629 l 3.203125,-0.005"
559 style="font-size:10px"
560 id="path3195" />
561 <path
562 d="m 61.824638,375.85703 0,0.83984 c -0.253911,-0.13997 -0.509444,-0.24414 -0.766601,-0.3125 -0.25391,-0.0716 -0.511072,-0.10742 -0.771485,-0.10742 -0.582685,0 -1.035158,0.18555 -1.357421,0.55664 -0.322268,0.36784 -0.4834,0.88542 -0.483399,1.55273 -10e-7,0.66732 0.161131,1.18653 0.483399,1.55762 0.322263,0.36784 0.774736,0.55176 1.357421,0.55176 0.260413,0 0.517575,-0.0342 0.771485,-0.10254 0.257157,-0.0716 0.51269,-0.17741 0.766601,-0.31738 l 0,0.83007 c -0.250655,0.11719 -0.511072,0.20508 -0.78125,0.26368 -0.266931,0.0586 -0.551761,0.0879 -0.854492,0.0879 -0.82357,0 -1.477866,-0.25879 -1.96289,-0.77637 -0.485027,-0.51758 -0.72754,-1.21582 -0.72754,-2.09473 0,-0.89192 0.24414,-1.59342 0.732422,-2.10449 0.491535,-0.51106 1.163735,-0.7666 2.016602,-0.7666 0.276689,0 0.546871,0.0293 0.810547,0.0879 0.263667,0.0553 0.519201,0.13998 0.766601,0.25391"
563 style="font-size:10px"
564 id="path3197" />
565 <path
566 d="m 65.516045,376.27695 c -0.481774,0 -0.862633,0.1888 -1.142579,0.5664 -0.279949,0.37436 -0.419923,0.88868 -0.419921,1.54297 -2e-6,0.6543 0.138344,1.17025 0.415039,1.54785 0.279945,0.37435 0.662432,0.56153 1.147461,0.56153 0.478512,0 0.857743,-0.1888 1.137695,-0.56641 0.279943,-0.3776 0.419917,-0.89192 0.419922,-1.54297 -5e-6,-0.64778 -0.139979,-1.16048 -0.419922,-1.53808 -0.279952,-0.38086 -0.659183,-0.57129 -1.137695,-0.57129 m 0,-0.76172 c 0.781246,0 1.394852,0.25391 1.84082,0.76172 0.445958,0.50781 0.66894,1.21094 0.668945,2.10937 -5e-6,0.89519 -0.222987,1.59831 -0.668945,2.10938 -0.445968,0.50781 -1.059574,0.76172 -1.84082,0.76172 -0.784508,0 -1.399742,-0.25391 -1.845704,-0.76172 -0.442709,-0.51107 -0.664063,-1.21419 -0.664062,-2.10938 -10e-7,-0.89843 0.221353,-1.60156 0.664062,-2.10937 0.445962,-0.50781 1.061196,-0.76172 1.845704,-0.76172"
567 style="font-size:10px"
568 id="path3199" />
569 <path
570 d="m 74.056084,377.81503 0,3.30078 -0.898438,0 0,-3.27148 c -4e-6,-0.51757 -0.100916,-0.90494 -0.302734,-1.16211 -0.201827,-0.25716 -0.504561,-0.38574 -0.908203,-0.38574 -0.485029,0 -0.867516,0.15463 -1.147461,0.46387 -0.27995,0.30924 -0.419924,0.73079 -0.419922,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.214842,-0.32877 0.46712,-0.57454 0.756836,-0.7373 0.292966,-0.16276 0.629879,-0.24414 1.010742,-0.24414 0.628251,0 1.103511,0.19532 1.425781,0.58594 0.322261,0.38737 0.483393,0.95866 0.483399,1.71386"
571 style="font-size:10px"
572 id="path3201" />
573 <path
574 d="m 79.456474,376.47714 0,-2.95898 0.898438,0 0,7.59765 -0.898438,0 0,-0.82031 c -0.188806,0.32552 -0.428064,0.56804 -0.717773,0.72754 -0.286462,0.15625 -0.631514,0.23438 -1.035156,0.23438 -0.66081,0 -1.199546,-0.26368 -1.616211,-0.79102 -0.413413,-0.52734 -0.620118,-1.2207 -0.620118,-2.08008 0,-0.85937 0.206705,-1.55273 0.620118,-2.08008 0.416665,-0.52733 0.955401,-0.79101 1.616211,-0.79101 0.403642,0 0.748694,0.0798 1.035156,0.23926 0.289709,0.15625 0.528967,0.39714 0.717773,0.72265 m -3.061523,1.90918 c -2e-6,0.66081 0.135089,1.18002 0.405273,1.55762 0.273436,0.37435 0.647784,0.56152 1.123047,0.56152 0.475257,0 0.849606,-0.18717 1.123047,-0.56152 0.273433,-0.3776 0.410152,-0.89681 0.410156,-1.55762 -4e-6,-0.6608 -0.136723,-1.17838 -0.410156,-1.55273 -0.273441,-0.3776 -0.64779,-0.5664 -1.123047,-0.56641 -0.475263,1e-5 -0.849611,0.18881 -1.123047,0.56641 -0.270184,0.37435 -0.405275,0.89193 -0.405273,1.55273"
575 style="font-size:10px"
576 id="path3203" />
577 <path
578 d="m 84.690849,378.36679 c -0.725914,0 -1.228843,0.083 -1.508789,0.24902 -0.279949,0.16602 -0.419923,0.44923 -0.419922,0.84961 -10e-7,0.31902 0.104165,0.57292 0.3125,0.76172 0.211587,0.18555 0.498045,0.27832 0.859375,0.27832 0.498044,0 0.896807,-0.17578 1.196289,-0.52734 0.302731,-0.35482 0.454098,-0.82519 0.454102,-1.41113 l 0,-0.2002 -0.893555,0 m 1.791992,-0.37109 0,3.12011 -0.898437,0 0,-0.83007 c -0.205082,0.33203 -0.460616,0.5778 -0.766602,0.7373 -0.305992,0.15625 -0.680341,0.23438 -1.123046,0.23438 -0.559898,0 -1.005861,-0.15625 -1.337891,-0.46875 -0.328777,-0.31576 -0.493165,-0.73731 -0.493164,-1.26465 -1e-6,-0.61523 0.205077,-1.0791 0.615234,-1.3916 0.41341,-0.3125 1.028644,-0.46875 1.845703,-0.46875 l 1.259766,0 0,-0.0879 c -4e-6,-0.41341 -0.136723,-0.73242 -0.410156,-0.95704 -0.270186,-0.22786 -0.651045,-0.34179 -1.142578,-0.34179 -0.312503,0 -0.616865,0.0374 -0.913086,0.1123 -0.296226,0.0749 -0.581056,0.18718 -0.854493,0.33692 l 0,-0.83008 c 0.328775,-0.12695 0.647785,-0.22135 0.957032,-0.28321 0.309242,-0.0651 0.610349,-0.0977 0.90332,-0.0977 0.791012,0 1.381832,0.20508 1.772461,0.61523 0.39062,0.41016 0.585932,1.03191 0.585937,1.86524"
579 style="font-size:10px"
580 id="path3205" />
581 <path
582 d="m 91.507256,376.48691 c -0.100916,-0.0586 -0.211593,-0.10091 -0.332032,-0.12696 -0.117191,-0.0293 -0.247399,-0.0439 -0.390625,-0.0439 -0.507815,0 -0.89844,0.16602 -1.171875,0.49805 -0.270184,0.32878 -0.405275,0.80241 -0.405273,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.434568,-0.57779 0.737305,-0.7373 0.302731,-0.16276 0.670569,-0.24414 1.103515,-0.24414 0.06185,0 0.130205,0.005 0.205078,0.0147 0.07487,0.007 0.157874,0.0179 0.249024,0.0342 l 0.0049,0.92285"
583 style="font-size:10px"
584 id="path3207" />
585 <path
586 d="m 94.734795,381.62363 c -0.25391,0.65104 -0.501305,1.07584 -0.742188,1.27441 -0.240888,0.19857 -0.563153,0.29785 -0.966797,0.29785 l -0.717773,0 0,-0.75195 0.527344,0 c 0.247394,0 0.439451,-0.0586 0.576171,-0.17578 0.136717,-0.11719 0.288084,-0.39388 0.454102,-0.83008 l 0.161133,-0.41016 -2.211914,-5.38086 0.952148,0 1.708985,4.27735 1.708984,-4.27735 0.952148,0 -2.402343,5.97657"
587 style="font-size:10px"
588 id="path3209" />
589 <path
590 d="m 105.81878,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68033,-0.28808 1.10352,-0.28808 0.56965,0 1.00911,0.2002 1.31836,0.60058 0.30923,0.39714 0.46386,0.96355 0.46387,1.69922 l 0,3.30078 -0.90333,0 0,-3.27148 c 0,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18555,-0.2539 -0.46875,-0.38086 -0.8496,-0.38086 -0.46551,0 -0.83334,0.15463 -1.10352,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40527,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c -10e-6,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18556,-0.2539 -0.47201,-0.38086 -0.85938,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27018,0.30925 -0.40527,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62663,-0.23926 1.02051,-0.23926 0.39713,0 0.73404,0.10092 1.01074,0.30273 0.27994,0.20183 0.48665,0.4948 0.62012,0.87891"
591 style="font-size:10px"
592 id="path3211" />
593 <path
594 d="m 113.4262,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27996,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66406,-2.10938 -10e-6,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
595 style="font-size:10px"
596 id="path3213" />
597 <path
598 d="m 121.96624,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.90821,-0.38574 -0.48502,0 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41992,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71386"
599 style="font-size:10px"
600 id="path3215" />
601 <path
602 d="m 123.768,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
603 style="font-size:10px"
604 id="path3217" />
605 <path
606 d="m 127.43011,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.3955,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
607 style="font-size:10px"
608 id="path3219" />
609 <path
610 d="m 132.58636,376.27695 c -0.48178,0 -0.86264,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.13769,-0.56641 0.27995,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13997,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.13769,-0.57129 m 0,-0.76172 c 0.78124,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66894,2.10937 0,0.89519 -0.22298,1.59831 -0.66894,2.10938 -0.44597,0.50781 -1.05958,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.84571,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44597,-0.50781 1.0612,-0.76172 1.84571,-0.76172"
611 style="font-size:10px"
612 id="path3221" />
613 <path
614 d="m 139.74944,376.48691 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.7373,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10352,-0.24414 0.0618,0 0.1302,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
615 style="font-size:10px"
616 id="path3223" />
617 <path
618 d="m 144.75433,380.2955 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32551 0.42643,-0.5664 0.71289,-0.72265 0.28971,-0.1595 0.63476,-0.23926 1.03515,-0.23926 0.66406,0 1.2028,0.26368 1.61621,0.79101 0.41666,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20834,1.55274 -0.625,2.08008 -0.41341,0.52734 -0.95215,0.79102 -1.61621,0.79102 -0.40039,0 -0.74544,-0.0781 -1.03515,-0.23438 -0.28646,-0.1595 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c -1e-5,-0.6608 -0.13673,-1.17838 -0.41016,-1.55273 -0.27019,-0.3776 -0.64291,-0.5664 -1.11816,-0.56641 -0.47527,1e-5 -0.84962,0.18881 -1.12305,0.56641 -0.27018,0.37435 -0.40528,0.89193 -0.40527,1.55273 -1e-5,0.66081 0.13509,1.18002 0.40527,1.55762 0.27343,0.37435 0.64778,0.56152 1.12305,0.56152 0.47525,0 0.84797,-0.18717 1.11816,-0.56152 0.27343,-0.3776 0.41015,-0.89681 0.41016,-1.55762"
619 style="font-size:10px"
620 id="path3225" />
621 <path
622 d="m 152.35198,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
623 style="font-size:10px"
624 id="path3227" />
625 <path
626 d="m 159.83245,375.8082 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27345,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78126,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33204,0.3418 -0.33203,0.61523 -1e-5,0.20834 0.0798,0.37273 0.23925,0.49317 0.15951,0.11719 0.48014,0.22949 0.96192,0.33691 l 0.30761,0.0684 c 0.63802,0.13672 1.0905,0.33041 1.35743,0.58106 0.27017,0.24739 0.40526,0.59407 0.40527,1.04004 -1e-5,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64942,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.34179,-0.35156 0.3418,-0.61524 -1e-5,-0.24413 -0.083,-0.43131 -0.24903,-0.56152 -0.16276,-0.13021 -0.52246,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11718 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24413 -0.3711,-0.57779 -0.3711,-1.00097 0,-0.51432 0.1823,-0.91146 0.54688,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55273,-0.41992 0.33203,0 0.64453,0.0244 0.9375,0.0732 0.29297,0.0488 0.56315,0.12208 0.81055,0.21973"
627 style="font-size:10px"
628 id="path3229" />
629 <path
630 d="m 161.56097,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
631 style="font-size:10px"
632 id="path3231" />
633 <path
634 d="m 165.22308,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c -1e-5,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
635 style="font-size:10px"
636 id="path3233" />
637 <path
638 d="m 168.26019,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
639 style="font-size:10px"
640 id="path3235" />
641 <path
642 d="m 173.15276,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
643 style="font-size:10px"
644 id="path3237" />
645 <path
646 d="m 181.6928,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41993,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21485,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.4834,0.95866 0.4834,1.71386"
647 style="font-size:10px"
648 id="path3239" />
649 </g>
650 <g
651 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
652 id="text3017">
653 <path
654 d="m 367.17007,356.71783 -2.7832,-7.29003 1.03027,0 2.30958,6.13769 2.31445,-6.13769 1.02539,0 -2.77832,7.29003 -1.11817,0"
655 style="font-size:10px"
656 id="path3242" />
657 <path
658 d="m 371.87222,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
659 style="font-size:10px"
660 id="path3244" />
661 <path
662 d="m 377.81461,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33204,-0.12695 -0.11719,-0.0293 -0.24739,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
663 style="font-size:10px"
664 id="path3246" />
665 <path
666 d="m 379.65543,349.69635 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c -1e-5,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
667 style="font-size:10px"
668 id="path3248" />
669 <path
670 d="m 382.59976,354.55963 0,-3.31055 0.89844,0 0,3.27637 c 0,0.51758 0.10091,0.90658 0.30273,1.16699 0.20182,0.25717 0.50456,0.38575 0.90821,0.38575 0.48502,0 0.86751,-0.15463 1.14746,-0.46387 0.2832,-0.30924 0.4248,-0.73079 0.4248,-1.26465 l 0,-3.10059 0.89844,0 0,5.46875 -0.89844,0 0,-0.83984 c -0.2181,0.33203 -0.47201,0.57943 -0.76172,0.74219 -0.28646,0.1595 -0.62012,0.23926 -1.00097,0.23926 -0.62826,0 -1.10515,-0.19532 -1.43067,-0.58594 -0.32552,-0.39063 -0.48828,-0.96191 -0.48828,-1.71387 m 2.26074,-3.44238 0,0"
671 style="font-size:10px"
672 id="path3250" />
673 <path
674 d="m 391.52554,353.96881 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44923 -0.41992,0.84961 0,0.31902 0.10417,0.57292 0.3125,0.76172 0.21159,0.18555 0.49805,0.27832 0.85938,0.27832 0.49804,0 0.8968,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.45409,-0.82519 0.4541,-1.41113 l 0,-0.2002 -0.89356,0 m 1.792,-0.37109 0,3.12011 -0.89844,0 0,-0.83007 c -0.20508,0.33203 -0.46062,0.5778 -0.7666,0.7373 -0.306,0.15625 -0.68035,0.23438 -1.12305,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31576 -0.49317,-0.73731 -0.49317,-1.26465 0,-0.61523 0.20508,-1.0791 0.61524,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -1e-5,-0.41341 -0.13673,-0.73242 -0.41016,-0.95704 -0.27018,-0.22786 -0.65104,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91308,0.1123 -0.29623,0.0749 -0.58106,0.18718 -0.85449,0.33692 l 0,-0.83008 c 0.32877,-0.12695 0.64778,-0.22135 0.95703,-0.28321 0.30924,-0.0651 0.61035,-0.0976 0.90332,-0.0976 0.79101,0 1.38183,0.20508 1.77246,0.61523 0.39062,0.41016 0.58593,1.03191 0.58594,1.86524"
675 style="font-size:10px"
676 id="path3252" />
677 <path
678 d="m 395.173,349.12018 0.89844,0 0,7.59765 -0.89844,0 0,-7.59765"
679 style="font-size:10px"
680 id="path3254" />
681 <path
682 d="m 404.61636,351.41022 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27344,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78125,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33203,0.3418 -0.33203,0.61523 0,0.20834 0.0797,0.37273 0.23926,0.49317 0.1595,0.11719 0.48014,0.22949 0.96191,0.33691 l 0.30762,0.0684 c 0.63801,0.13672 1.09049,0.33041 1.35742,0.58106 0.27018,0.24739 0.40527,0.59407 0.40527,1.04004 0,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64941,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33204,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42318,0 0.7487,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.3418,-0.35156 0.3418,-0.61524 0,-0.24413 -0.083,-0.43131 -0.24902,-0.56152 -0.16277,-0.1302 -0.52247,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55665,-0.11718 -0.95866,-0.29622 -1.20606,-0.53711 -0.2474,-0.24413 -0.37109,-0.57779 -0.37109,-1.00097 0,-0.51432 0.18229,-0.91146 0.54687,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55274,-0.41992 0.33202,0 0.64452,0.0244 0.9375,0.0732 0.29296,0.0488 0.56314,0.12208 0.81054,0.21973"
683 style="font-size:10px"
684 id="path3256" />
685 <path
686 d="m 410.28043,351.45905 0,0.83984 c -0.25391,-0.13997 -0.50945,-0.24414 -0.76661,-0.3125 -0.25391,-0.0716 -0.51107,-0.10742 -0.77148,-0.10742 -0.58268,0 -1.03516,0.18555 -1.35742,0.55664 -0.32227,0.36784 -0.4834,0.88542 -0.4834,1.55273 0,0.66732 0.16113,1.18653 0.4834,1.55762 0.32226,0.36784 0.77474,0.55176 1.35742,0.55176 0.26041,0 0.51757,-0.0342 0.77148,-0.10254 0.25716,-0.0716 0.5127,-0.17741 0.76661,-0.31738 l 0,0.83007 c -0.25066,0.11719 -0.51108,0.20508 -0.78125,0.26368 -0.26693,0.0586 -0.55177,0.0879 -0.8545,0.0879 -0.82357,0 -1.47786,-0.25879 -1.96289,-0.77637 -0.48502,-0.51758 -0.72754,-1.21582 -0.72754,-2.09473 0,-0.89192 0.24414,-1.59342 0.73243,-2.10449 0.49153,-0.51106 1.16373,-0.7666 2.0166,-0.7666 0.27669,0 0.54687,0.0293 0.81054,0.0879 0.26367,0.0553 0.51921,0.13998 0.76661,0.25391"
687 style="font-size:10px"
688 id="path3258" />
689 <path
690 d="m 415.02164,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33203,-0.12695 -0.1172,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
691 style="font-size:10px"
692 id="path3260" />
693 <path
694 d="m 420.43668,353.75885 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.2246,1.0905 0.55664,1.41602 0.33528,0.32227 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12696 0.32551,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32228,0.13672 -0.65268,0.24089 -0.99122,0.3125 -0.33854,0.0716 -0.68197,0.10743 -1.03027,0.10743 -0.8724,0 -1.56413,-0.25391 -2.07519,-0.76172 -0.50782,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24088,-1.60481 0.72265,-2.12891 0.48503,-0.52733 1.1377,-0.79101 1.95801,-0.79101 0.73567,0 1.31673,0.23763 1.74316,0.71289 0.42969,0.47201 0.64453,1.11491 0.64454,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.50131,0 -0.90333,0.1416 -1.20606,0.4248 -0.29948,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20313,-0.005"
695 style="font-size:10px"
696 id="path3262" />
697 <path
698 d="m 426.58902,353.75885 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.22461,1.0905 0.55664,1.41602 0.33529,0.32227 0.80078,0.4834 1.39649,0.4834 0.34504,0 0.6787,-0.0423 1.00097,-0.12696 0.32552,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65268,0.24089 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10743 -1.03028,0.10743 -0.87239,0 -1.56412,-0.25391 -2.07519,-0.76172 -0.50781,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24089,-1.60481 0.72266,-2.12891 0.48502,-0.52733 1.13769,-0.79101 1.958,-0.79101 0.73568,0 1.31673,0.23763 1.74317,0.71289 0.42968,0.47201 0.64452,1.11491 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.5013,0 -0.90332,0.1416 -1.20605,0.4248 -0.29949,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20312,-0.005"
699 style="font-size:10px"
700 id="path3264" />
701 <path
702 d="m 432.60953,353.41705 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10092,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50457,-0.38574 -0.90821,-0.38574 -0.48503,0 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41992,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71386"
703 style="font-size:10px"
704 id="path3266" />
705 <path
706 d="m 439.71402,351.87897 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27996,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66407,-2.10938 0,-0.89843 0.22136,-1.60156 0.66407,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
707 style="font-size:10px"
708 id="path3268" />
709 <path
710 d="m 446.87711,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33204,-0.12695 -0.11719,-0.0293 -0.24739,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
711 style="font-size:10px"
712 id="path3270" />
713 <path
714 d="m 447.82925,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
715 style="font-size:10px"
716 id="path3272" />
717 <path
718 d="m 454.20132,353.91998 c 0,-0.65104 -0.13509,-1.15559 -0.40527,-1.51367 -0.26693,-0.35807 -0.64291,-0.5371 -1.12793,-0.53711 -0.48177,1e-5 -0.85775,0.17904 -1.12793,0.53711 -0.26693,0.35808 -0.40039,0.86263 -0.40039,1.51367 0,0.64779 0.13346,1.15072 0.40039,1.50879 0.27018,0.35808 0.64616,0.53711 1.12793,0.53711 0.48502,0 0.861,-0.17903 1.12793,-0.53711 0.27018,-0.35807 0.40527,-0.861 0.40527,-1.50879 m 0.89844,2.11914 c 0,0.93099 -0.20671,1.62272 -0.62012,2.0752 -0.41341,0.45573 -1.04655,0.68359 -1.89941,0.68359 -0.31576,0 -0.61361,-0.0244 -0.89355,-0.0732 -0.27995,-0.0456 -0.55176,-0.11719 -0.81543,-0.21484 l 0,-0.87403 c 0.26367,0.14323 0.52408,0.24903 0.78125,0.31739 0.25716,0.0684 0.5192,0.10253 0.78613,0.10254 0.58919,-10e-6 1.03027,-0.15463 1.32324,-0.46387 0.29297,-0.30599 0.43945,-0.76986 0.43945,-1.3916 l 0,-0.44434 c -0.18555,0.32227 -0.42318,0.56315 -0.71289,0.72266 -0.28971,0.1595 -0.63639,0.23925 -1.04004,0.23925 -0.67057,0 -1.21093,-0.25553 -1.62109,-0.7666 -0.41016,-0.51106 -0.61523,-1.18815 -0.61523,-2.03125 0,-0.84635 0.20507,-1.52506 0.61523,-2.03613 0.41016,-0.51106 0.95052,-0.7666 1.62109,-0.7666 0.40365,0 0.75033,0.0798 1.04004,0.23926 0.28971,0.15951 0.52734,0.40039 0.71289,0.72265 l 0,-0.83008 0.89844,0 0,4.79004"
719 style="font-size:10px"
720 id="path3274" />
721 <path
722 d="m 456.95035,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
723 style="font-size:10px"
724 id="path3276" />
725 <path
726 d="m 464.26968,353.41705 0,3.30078 -0.89843,0 0,-3.27148 c -10e-6,-0.51757 -0.10092,-0.90494 -0.30274,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75683,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62826,0 1.10352,0.19532 1.42579,0.58594 0.32226,0.38737 0.48339,0.95866 0.48339,1.71386"
727 style="font-size:10px"
728 id="path3278" />
729 </g>
730 <path
731 style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
732 d="m 343.73692,26.224389 0.01,294.941191"
733 id="path3861"
734 inkscape:connector-curvature="0"
735 sodipodi:nodetypes="cc"
736 transform="translate(12.627039,339.86462)" />
737 <path
738 sodipodi:nodetypes="cc"
739 inkscape:connector-curvature="0"
740 id="path4307"
741 d="m 356.48533,366.00457 336.31202,-0.0196"
742 style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none" />
743 <path
744 sodipodi:nodetypes="cc"
745 inkscape:connector-curvature="0"
746 id="path4309"
747 d="m 159.89916,447.6257 -0.0625,145.00422"
748 style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
749 <path
750 style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
751 d="m 160.03997,448.23877 184.95568,-0.0159"
752 id="path4493"
753 inkscape:connector-curvature="0"
754 sodipodi:nodetypes="cc" />
755 <g
756 style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
757 id="text4495">
758 <path
759 d="m 228.57881,442.02737 0.49805,0 0.7666,3.08106 0.76416,-3.08106 0.5542,0 0.7666,3.08106 0.76416,-3.08106 0.50049,0 -0.91553,3.64502 -0.62012,0 -0.76904,-3.16406 -0.77637,3.16406 -0.62011,0 -0.91309,-3.64502"
760 style="font-size:5px"
761 id="path3141" />
762 <path
763 d="m 233.71797,442.93802 0.44922,0 0,2.73437 -0.44922,0 0,-2.73437 m 0,-1.06445 0.44922,0 0,0.56884 -0.44922,0 0,-0.56884"
764 style="font-size:5px"
765 id="path3143" />
766 <path
767 d="m 237.37764,444.022 0,1.65039 -0.44922,0 0,-1.63574 c 0,-0.25879 -0.0505,-0.45247 -0.15137,-0.58105 -0.10091,-0.12858 -0.25228,-0.19287 -0.4541,-0.19287 -0.24251,0 -0.43376,0.0773 -0.57373,0.23193 -0.13997,0.15462 -0.20996,0.3654 -0.20996,0.63232 l 0,1.54541 -0.45166,0 0,-2.73437 0.45166,0 0,0.4248 c 0.10742,-0.16438 0.23356,-0.28727 0.37842,-0.36865 0.14648,-0.0814 0.31494,-0.12207 0.50537,-0.12207 0.31413,0 0.55176,0.0977 0.71289,0.29297 0.16113,0.19369 0.2417,0.47933 0.2417,0.85693"
768 style="font-size:5px"
769 id="path3145" />
770 <path
771 d="m 240.07784,443.35306 0,-1.47949 0.44921,0 0,3.79882 -0.44921,0 0,-0.41015 c -0.0944,0.16276 -0.21404,0.28401 -0.35889,0.36377 -0.14323,0.0781 -0.31576,0.11718 -0.51758,0.11718 -0.3304,0 -0.59977,-0.13183 -0.80811,-0.3955 -0.2067,-0.26367 -0.31005,-0.61035 -0.31005,-1.04004 0,-0.42969 0.10335,-0.77637 0.31005,-1.04004 0.20834,-0.26367 0.47771,-0.39551 0.80811,-0.39551 0.20182,0 0.37435,0.0399 0.51758,0.11963 0.14485,0.0781 0.26448,0.19857 0.35889,0.36133 m -1.53077,0.95459 c 0,0.3304 0.0676,0.59 0.20264,0.77881 0.13672,0.18717 0.32389,0.28076 0.56152,0.28076 0.23763,0 0.42481,-0.0936 0.56153,-0.28076 0.13671,-0.18881 0.20507,-0.44841 0.20508,-0.77881 -1e-5,-0.3304 -0.0684,-0.58919 -0.20508,-0.77637 -0.13672,-0.1888 -0.3239,-0.2832 -0.56153,-0.2832 -0.23763,0 -0.4248,0.0944 -0.56152,0.2832 -0.13509,0.18718 -0.20264,0.44597 -0.20264,0.77637"
772 style="font-size:5px"
773 id="path3147" />
774 <path
775 d="m 242.51192,443.25296 c -0.24089,0 -0.43132,0.0944 -0.57129,0.2832 -0.13998,0.18718 -0.20996,0.44434 -0.20996,0.77149 0,0.32715 0.0692,0.58512 0.20752,0.77392 0.13997,0.18718 0.33121,0.28077 0.57373,0.28077 0.23925,0 0.42887,-0.0944 0.56884,-0.28321 0.13998,-0.1888 0.20996,-0.44596 0.20997,-0.77148 -1e-5,-0.32389 -0.07,-0.58024 -0.20997,-0.76905 -0.13997,-0.19042 -0.32959,-0.28564 -0.56884,-0.28564 m 0,-0.38086 c 0.39062,0 0.69742,0.12696 0.92041,0.38086 0.22298,0.25391 0.33447,0.60547 0.33447,1.05469 0,0.44759 -0.11149,0.79915 -0.33447,1.05469 -0.22299,0.2539 -0.52979,0.38085 -0.92041,0.38085 -0.39226,0 -0.69987,-0.12695 -0.92285,-0.38085 -0.22136,-0.25554 -0.33204,-0.6071 -0.33204,-1.05469 0,-0.44922 0.11068,-0.80078 0.33204,-1.05469 0.22298,-0.2539 0.53059,-0.38086 0.92285,-0.38086"
776 style="font-size:5px"
777 id="path3149" />
778 <path
779 d="m 244.24776,442.93802 0.44922,0 0.56152,2.13379 0.55908,-2.13379 0.52979,0 0.56152,2.13379 0.55908,-2.13379 0.44922,0 -0.71533,2.73437 -0.52979,0 -0.58838,-2.24121 -0.59082,2.24121 -0.52978,0 -0.71533,-2.73437"
780 style="font-size:5px"
781 id="path3151" />
782 <path
783 d="m 249.70674,442.02737 3.0835,0 0,0.41504 -1.29395,0 0,3.22998 -0.4956,0 0,-3.22998 -1.29395,0 0,-0.41504"
784 style="font-size:5px"
785 id="path3153" />
786 <path
787 d="m 253.09297,442.93802 0.44922,0 0,2.73437 -0.44922,0 0,-2.73437 m 0,-1.06445 0.44922,0 0,0.56884 -0.44922,0 0,-0.56884"
788 style="font-size:5px"
789 id="path3155" />
790 <path
791 d="m 254.92403,442.16165 0,0.77637 0.92529,0 0,0.34912 -0.92529,0 0,1.48437 c 0,0.22299 0.0301,0.36622 0.0903,0.42969 0.0618,0.0635 0.18636,0.0952 0.37353,0.0952 l 0.46143,0 0,0.37597 -0.46143,0 c -0.34668,0 -0.58593,-0.0643 -0.71777,-0.19287 -0.13184,-0.13021 -0.19775,-0.36621 -0.19775,-0.70801 l 0,-1.48437 -0.32959,0 0,-0.34912 0.32959,0 0,-0.77637 0.45166,0"
792 style="font-size:5px"
793 id="path3157" />
794 <path
795 d="m 256.44258,441.87357 0.44922,0 0,3.79882 -0.44922,0 0,-3.79882"
796 style="font-size:5px"
797 id="path3159" />
798 <path
799 d="m 260.16817,444.1929 0,0.21973 -2.06543,0 c 0.0195,0.30924 0.1123,0.54525 0.27832,0.70801 0.16764,0.16113 0.40039,0.2417 0.69824,0.2417 0.17252,0 0.33935,-0.0212 0.50049,-0.0635 0.16276,-0.0423 0.32389,-0.1058 0.4834,-0.19043 l 0,0.4248 c -0.16114,0.0684 -0.32634,0.12045 -0.49561,0.15625 -0.16927,0.0358 -0.34098,0.0537 -0.51514,0.0537 -0.43619,0 -0.78206,-0.12695 -1.03759,-0.38085 -0.25391,-0.25391 -0.38086,-0.59733 -0.38086,-1.03028 0,-0.44759 0.12044,-0.8024 0.36133,-1.06445 0.24251,-0.26367 0.56884,-0.39551 0.979,-0.39551 0.36784,0 0.65836,0.11882 0.87158,0.35645 0.21484,0.236 0.32226,0.55745 0.32227,0.96435 m -0.44922,-0.13183 c -0.003,-0.24577 -0.0724,-0.4419 -0.20752,-0.58838 -0.13347,-0.14649 -0.31088,-0.21973 -0.53223,-0.21973 -0.25065,0 -0.45166,0.0708 -0.60303,0.2124 -0.14974,0.14161 -0.236,0.34099 -0.25878,0.59815 l 1.60156,-0.002"
800 style="font-size:5px"
801 id="path3161" />
802 </g>
803 <g
804 aria-label="Content area origin"
805 style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
806 id="text4089">
807 <path
808 d="m 172.21587,456.09125 v 1.04004 q -0.49805,-0.46387 -1.06446,-0.69336 -0.56152,-0.22949 -1.19629,-0.22949 -1.25,0 -1.91406,0.7666 -0.66406,0.76172 -0.66406,2.20703 0,1.44043 0.66406,2.20703 0.66406,0.76172 1.91406,0.76172 0.63477,0 1.19629,-0.22949 0.56641,-0.2295 1.06446,-0.69336 v 1.03027 q -0.51758,0.35156 -1.09864,0.52734 -0.57617,0.17578 -1.2207,0.17578 -1.65527,0 -2.60742,-1.01074 -0.95215,-1.01562 -0.95215,-2.76855 0,-1.75781 0.95215,-2.76856 0.95215,-1.01562 2.60742,-1.01562 0.6543,0 1.23047,0.17578 0.58105,0.1709 1.08887,0.51758 z"
809 style="font-size:10px"
810 id="path4091" />
811 <path
812 d="m 175.82915,457.9809 q -0.72266,0 -1.14258,0.5664 -0.41992,0.56153 -0.41992,1.54297 0,0.98145 0.41504,1.54785 0.41992,0.56153 1.14746,0.56153 0.71777,0 1.13769,-0.56641 0.41992,-0.56641 0.41992,-1.54297 0,-0.97168 -0.41992,-1.53808 -0.41992,-0.57129 -1.13769,-0.57129 z m 0,-0.76172 q 1.17187,0 1.84082,0.76172 0.66894,0.76171 0.66894,2.10937 0,1.34277 -0.66894,2.10938 -0.66895,0.76171 -1.84082,0.76171 -1.17676,0 -1.84571,-0.76171 -0.66406,-0.76661 -0.66406,-2.10938 0,-1.34766 0.66406,-2.10937 0.66895,-0.76172 1.84571,-0.76172 z"
813 style="font-size:10px"
814 id="path4093" />
815 <path
816 d="m 184.36919,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30274,-1.16211 -0.30273,-0.38574 -0.9082,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32226,-0.49316 0.75683,-0.7373 0.43946,-0.24414 1.01075,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
817 style="font-size:10px"
818 id="path4095" />
819 <path
820 d="m 187.05962,455.79828 v 1.55273 h 1.85058 v 0.69825 h -1.85058 v 2.96875 q 0,0.66894 0.18066,0.85937 0.18555,0.19043 0.74707,0.19043 h 0.92285 v 0.75195 h -0.92285 q -1.04004,0 -1.43555,-0.38574 -0.3955,-0.39062 -0.3955,-1.41601 v -2.96875 h -0.65918 v -0.69825 h 0.65918 v -1.55273 z"
821 style="font-size:10px"
822 id="path4097" />
823 <path
824 d="m 194.77446,459.86078 v 0.43945 h -4.13086 q 0.0586,0.92774 0.55664,1.41602 0.50293,0.4834 1.39649,0.4834 0.51757,0 1.00097,-0.12696 0.48828,-0.12695 0.9668,-0.38086 v 0.84961 q -0.4834,0.20508 -0.99121,0.3125 -0.50781,0.10742 -1.03028,0.10742 -1.30859,0 -2.07519,-0.76171 -0.76172,-0.76172 -0.76172,-2.06055 0,-1.34277 0.72266,-2.12891 0.72754,-0.79101 1.958,-0.79101 1.10352,0 1.74317,0.71289 0.64453,0.70801 0.64453,1.92871 z m -0.89844,-0.26367 q -0.01,-0.73731 -0.41504,-1.17676 -0.40039,-0.43945 -1.06445,-0.43945 -0.75195,0 -1.20605,0.4248 -0.44922,0.42481 -0.51758,1.19629 z"
825 style="font-size:10px"
826 id="path4099" />
827 <path
828 d="m 200.79497,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30273,-1.16211 -0.30274,-0.38574 -0.90821,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32227,-0.49316 0.75684,-0.7373 0.43945,-0.24414 1.01074,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
829 style="font-size:10px"
830 id="path4101" />
831 <path
832 d="m 203.4854,455.79828 v 1.55273 h 1.85058 v 0.69825 h -1.85058 v 2.96875 q 0,0.66894 0.18066,0.85937 0.18555,0.19043 0.74707,0.19043 h 0.92285 v 0.75195 h -0.92285 q -1.04004,0 -1.43555,-0.38574 -0.3955,-0.39062 -0.3955,-1.41601 v -2.96875 h -0.65918 v -0.69825 h 0.65918 v -1.55273 z"
833 style="font-size:10px"
834 id="path4103" />
835 <path
836 d="m 212.19145,460.07074 q -1.08887,0 -1.50879,0.24902 -0.41992,0.24903 -0.41992,0.84961 0,0.47852 0.3125,0.76172 0.31738,0.27832 0.85938,0.27832 0.74707,0 1.19629,-0.52734 0.4541,-0.53223 0.4541,-1.41113 v -0.2002 z m 1.79199,-0.37109 v 3.12011 h -0.89843 v -0.83007 q -0.30762,0.49804 -0.7666,0.7373 -0.45899,0.23437 -1.12305,0.23437 -0.83985,0 -1.33789,-0.46875 -0.49317,-0.47363 -0.49317,-1.26464 0,-0.92286 0.61524,-1.39161 0.62012,-0.46875 1.8457,-0.46875 h 1.25977 v -0.0879 q 0,-0.62011 -0.41016,-0.95703 -0.40527,-0.34179 -1.14258,-0.34179 -0.46875,0 -0.91308,0.1123 -0.44434,0.11231 -0.8545,0.33691 v -0.83007 q 0.49317,-0.19043 0.95704,-0.28321 0.46386,-0.0976 0.90332,-0.0976 1.18652,0 1.77246,0.61523 0.58593,0.61524 0.58593,1.86524 z"
837 style="font-size:10px"
838 id="path4105" />
839 <path
840 d="m 219.00786,458.19086 q -0.15137,-0.0879 -0.33203,-0.12696 -0.17578,-0.0439 -0.39063,-0.0439 -0.76172,0 -1.17187,0.49805 -0.40528,0.49316 -0.40528,1.42089 v 2.88086 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.28321,-0.49804 0.73731,-0.7373 0.4541,-0.24414 1.10351,-0.24414 0.0928,0 0.20508,0.0147 0.11231,0.01 0.24903,0.0342 z"
841 style="font-size:10px"
842 id="path4107" />
843 <path
844 d="m 224.4229,459.86078 v 0.43945 h -4.13086 q 0.0586,0.92774 0.55664,1.41602 0.50293,0.4834 1.39648,0.4834 0.51758,0 1.00098,-0.12696 0.48828,-0.12695 0.9668,-0.38086 v 0.84961 q -0.4834,0.20508 -0.99121,0.3125 -0.50782,0.10742 -1.03028,0.10742 -1.30859,0 -2.07519,-0.76171 -0.76172,-0.76172 -0.76172,-2.06055 0,-1.34277 0.72265,-2.12891 0.72754,-0.79101 1.95801,-0.79101 1.10352,0 1.74317,0.71289 0.64453,0.70801 0.64453,1.92871 z m -0.89844,-0.26367 q -0.01,-0.73731 -0.41504,-1.17676 -0.40039,-0.43945 -1.06445,-0.43945 -0.75196,0 -1.20606,0.4248 -0.44922,0.42481 -0.51758,1.19629 z"
845 style="font-size:10px"
846 id="path4109" />
847 <path
848 d="m 228.38286,460.07074 q -1.08887,0 -1.50879,0.24902 -0.41992,0.24903 -0.41992,0.84961 0,0.47852 0.3125,0.76172 0.31738,0.27832 0.85937,0.27832 0.74707,0 1.19629,-0.52734 0.4541,-0.53223 0.4541,-1.41113 v -0.2002 z m 1.79199,-0.37109 v 3.12011 h -0.89844 v -0.83007 q -0.30761,0.49804 -0.7666,0.7373 -0.45898,0.23437 -1.12305,0.23437 -0.83984,0 -1.33789,-0.46875 -0.49316,-0.47363 -0.49316,-1.26464 0,-0.92286 0.61523,-1.39161 0.62012,-0.46875 1.84571,-0.46875 h 1.25976 v -0.0879 q 0,-0.62011 -0.41015,-0.95703 -0.40528,-0.34179 -1.14258,-0.34179 -0.46875,0 -0.91309,0.1123 -0.44433,0.11231 -0.85449,0.33691 v -0.83007 q 0.49316,-0.19043 0.95703,-0.28321 0.46387,-0.0976 0.90332,-0.0976 1.18653,0 1.77246,0.61523 0.58594,0.61524 0.58594,1.86524 z"
849 style="font-size:10px"
850 id="path4111" />
851 <path
852 d="m 237.33305,457.9809 q -0.72265,0 -1.14257,0.5664 -0.41993,0.56153 -0.41993,1.54297 0,0.98145 0.41504,1.54785 0.41992,0.56153 1.14746,0.56153 0.71778,0 1.1377,-0.56641 0.41992,-0.56641 0.41992,-1.54297 0,-0.97168 -0.41992,-1.53808 -0.41992,-0.57129 -1.1377,-0.57129 z m 0,-0.76172 q 1.17188,0 1.84082,0.76172 0.66895,0.76171 0.66895,2.10937 0,1.34277 -0.66895,2.10938 -0.66894,0.76171 -1.84082,0.76171 -1.17675,0 -1.8457,-0.76171 -0.66406,-0.76661 -0.66406,-2.10938 0,-1.34766 0.66406,-2.10937 0.66895,-0.76172 1.8457,-0.76172 z"
853 style="font-size:10px"
854 id="path4113" />
855 <path
856 d="m 244.49614,458.19086 q -0.15137,-0.0879 -0.33203,-0.12696 -0.17578,-0.0439 -0.39063,-0.0439 -0.76172,0 -1.17187,0.49805 -0.40528,0.49316 -0.40528,1.42089 v 2.88086 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.28321,-0.49804 0.73731,-0.7373 0.4541,-0.24414 1.10352,-0.24414 0.0928,0 0.20507,0.0147 0.11231,0.01 0.24903,0.0342 z"
857 style="font-size:10px"
858 id="path4115" />
859 <path
860 d="m 245.44829,457.35101 h 0.89844 v 5.46875 h -0.89844 z m 0,-2.1289 h 0.89844 v 1.13769 h -0.89844 z"
861 style="font-size:10px"
862 id="path4117" />
863 <path
864 d="m 251.82036,460.02191 q 0,-0.97656 -0.40528,-1.51367 -0.40039,-0.53711 -1.12792,-0.53711 -0.72266,0 -1.12793,0.53711 -0.4004,0.53711 -0.4004,1.51367 0,0.97168 0.4004,1.50879 0.40527,0.53711 1.12793,0.53711 0.72753,0 1.12792,-0.53711 0.40528,-0.53711 0.40528,-1.50879 z m 0.89844,2.11914 q 0,1.39649 -0.62012,2.0752 -0.62012,0.68359 -1.89942,0.68359 -0.47363,0 -0.89355,-0.0732 -0.41992,-0.0684 -0.81543,-0.21484 v -0.87403 q 0.39551,0.21485 0.78125,0.31738 0.38574,0.10254 0.78613,0.10254 0.88379,0 1.32325,-0.46386 0.43945,-0.45899 0.43945,-1.3916 v -0.44434 q -0.27832,0.4834 -0.71289,0.72266 -0.43457,0.23925 -1.04004,0.23925 -1.00586,0 -1.6211,-0.7666 -0.61523,-0.7666 -0.61523,-2.03125 0,-1.26953 0.61523,-2.03613 0.61524,-0.7666 1.6211,-0.7666 0.60547,0 1.04004,0.23926 0.43457,0.23925 0.71289,0.72265 v -0.83008 h 0.89844 z"
865 style="font-size:10px"
866 id="path4119" />
867 <path
868 d="m 254.56938,457.35101 h 0.89844 v 5.46875 h -0.89844 z m 0,-2.1289 h 0.89844 v 1.13769 h -0.89844 z"
869 style="font-size:10px"
870 id="path4121" />
871 <path
872 d="m 261.88872,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30273,-1.16211 -0.30274,-0.38574 -0.90821,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32227,-0.49316 0.75684,-0.7373 0.43945,-0.24414 1.01074,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
873 style="font-size:10px"
874 id="path4123" />
875 </g>
876 </g>
877</svg>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/splitbar.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/splitbar.png
new file mode 100644
index 0000000..fe895f2
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/splitbar.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgamepadstate.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgamepadstate.html
new file mode 100644
index 0000000..b2dfa35
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgamepadstate.html
@@ -0,0 +1,129 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: GLFWgamepadstate Struct Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="summary">
65<a href="#pub-attribs">Data Fields</a> </div>
66 <div class="headertitle"><div class="title">GLFWgamepadstate Struct Reference<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69
70<p>Gamepad input state.
71 <a href="structGLFWgamepadstate.html#details">More...</a></p>
72
73<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
74<table class="memberdecls">
75<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
76Data Fields</h2></td></tr>
77<tr class="memitem:a27e9896b51c65df15fba2c7139bfdb9a"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">buttons</a> [15]</td></tr>
78<tr class="separator:a27e9896b51c65df15fba2c7139bfdb9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
79<tr class="memitem:a8b2c8939b1d31458de5359998375c189"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">axes</a> [6]</td></tr>
80<tr class="separator:a8b2c8939b1d31458de5359998375c189"><td class="memSeparator" colspan="2">&#160;</td></tr>
81</table>
82<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
83<div class="textblock"><p >This describes the input state of a gamepad.</p>
84<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
85<dd>
86<a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></dd></dl>
87<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
88</div><h2 class="groupheader">Field Documentation</h2>
89<a id="a27e9896b51c65df15fba2c7139bfdb9a" name="a27e9896b51c65df15fba2c7139bfdb9a"></a>
90<h2 class="memtitle"><span class="permalink"><a href="#a27e9896b51c65df15fba2c7139bfdb9a">&#9670;&nbsp;</a></span>buttons</h2>
91
92<div class="memitem">
93<div class="memproto">
94 <table class="memname">
95 <tr>
96 <td class="memname">unsigned char GLFWgamepadstate::buttons[15]</td>
97 </tr>
98 </table>
99</div><div class="memdoc">
100<p >The states of each <a class="el" href="group__gamepad__buttons.html">gamepad button</a>, <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>. </p>
101
102</div>
103</div>
104<a id="a8b2c8939b1d31458de5359998375c189" name="a8b2c8939b1d31458de5359998375c189"></a>
105<h2 class="memtitle"><span class="permalink"><a href="#a8b2c8939b1d31458de5359998375c189">&#9670;&nbsp;</a></span>axes</h2>
106
107<div class="memitem">
108<div class="memproto">
109 <table class="memname">
110 <tr>
111 <td class="memname">float GLFWgamepadstate::axes[6]</td>
112 </tr>
113 </table>
114</div><div class="memdoc">
115<p >The states of each <a class="el" href="group__gamepad__axes.html">gamepad axis</a>, in the range -1.0 to 1.0 inclusive. </p>
116
117</div>
118</div>
119<hr/>The documentation for this struct was generated from the following file:<ul>
120<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
121</ul>
122</div><!-- contents -->
123<address class="footer">
124<p>
125Last update on Thu Oct 28 2021 for GLFW 3.3.5
126</p>
127</address>
128</body>
129</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgammaramp.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgammaramp.html
new file mode 100644
index 0000000..8093c44
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWgammaramp.html
@@ -0,0 +1,165 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: GLFWgammaramp Struct Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="summary">
65<a href="#pub-attribs">Data Fields</a> </div>
66 <div class="headertitle"><div class="title">GLFWgammaramp Struct Reference<div class="ingroups"><a class="el" href="group__monitor.html">Monitor reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69
70<p>Gamma ramp.
71 <a href="structGLFWgammaramp.html#details">More...</a></p>
72
73<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
74<table class="memberdecls">
75<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
76Data Fields</h2></td></tr>
77<tr class="memitem:a2cce5d968734b685623eef913e635138"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">red</a></td></tr>
78<tr class="separator:a2cce5d968734b685623eef913e635138"><td class="memSeparator" colspan="2">&#160;</td></tr>
79<tr class="memitem:affccc6f5df47820b6562d709da3a5a3a"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">green</a></td></tr>
80<tr class="separator:affccc6f5df47820b6562d709da3a5a3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
81<tr class="memitem:acf0c836d0efe29c392fe8d1a1042744b"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">blue</a></td></tr>
82<tr class="separator:acf0c836d0efe29c392fe8d1a1042744b"><td class="memSeparator" colspan="2">&#160;</td></tr>
83<tr class="memitem:ad620e1cffbff9a32c51bca46301b59a5"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a></td></tr>
84<tr class="separator:ad620e1cffbff9a32c51bca46301b59a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
85</table>
86<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
87<div class="textblock"><p >This describes the gamma ramp for a monitor.</p>
88<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a> </dd>
89<dd>
90<a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> </dd>
91<dd>
92<a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></dd></dl>
93<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
94</div><h2 class="groupheader">Field Documentation</h2>
95<a id="a2cce5d968734b685623eef913e635138" name="a2cce5d968734b685623eef913e635138"></a>
96<h2 class="memtitle"><span class="permalink"><a href="#a2cce5d968734b685623eef913e635138">&#9670;&nbsp;</a></span>red</h2>
97
98<div class="memitem">
99<div class="memproto">
100 <table class="memname">
101 <tr>
102 <td class="memname">unsigned short* GLFWgammaramp::red</td>
103 </tr>
104 </table>
105</div><div class="memdoc">
106<p >An array of value describing the response of the red channel. </p>
107
108</div>
109</div>
110<a id="affccc6f5df47820b6562d709da3a5a3a" name="affccc6f5df47820b6562d709da3a5a3a"></a>
111<h2 class="memtitle"><span class="permalink"><a href="#affccc6f5df47820b6562d709da3a5a3a">&#9670;&nbsp;</a></span>green</h2>
112
113<div class="memitem">
114<div class="memproto">
115 <table class="memname">
116 <tr>
117 <td class="memname">unsigned short* GLFWgammaramp::green</td>
118 </tr>
119 </table>
120</div><div class="memdoc">
121<p >An array of value describing the response of the green channel. </p>
122
123</div>
124</div>
125<a id="acf0c836d0efe29c392fe8d1a1042744b" name="acf0c836d0efe29c392fe8d1a1042744b"></a>
126<h2 class="memtitle"><span class="permalink"><a href="#acf0c836d0efe29c392fe8d1a1042744b">&#9670;&nbsp;</a></span>blue</h2>
127
128<div class="memitem">
129<div class="memproto">
130 <table class="memname">
131 <tr>
132 <td class="memname">unsigned short* GLFWgammaramp::blue</td>
133 </tr>
134 </table>
135</div><div class="memdoc">
136<p >An array of value describing the response of the blue channel. </p>
137
138</div>
139</div>
140<a id="ad620e1cffbff9a32c51bca46301b59a5" name="ad620e1cffbff9a32c51bca46301b59a5"></a>
141<h2 class="memtitle"><span class="permalink"><a href="#ad620e1cffbff9a32c51bca46301b59a5">&#9670;&nbsp;</a></span>size</h2>
142
143<div class="memitem">
144<div class="memproto">
145 <table class="memname">
146 <tr>
147 <td class="memname">unsigned int GLFWgammaramp::size</td>
148 </tr>
149 </table>
150</div><div class="memdoc">
151<p >The number of elements in each array. </p>
152
153</div>
154</div>
155<hr/>The documentation for this struct was generated from the following file:<ul>
156<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
157</ul>
158</div><!-- contents -->
159<address class="footer">
160<p>
161Last update on Thu Oct 28 2021 for GLFW 3.3.5
162</p>
163</address>
164</body>
165</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWimage.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWimage.html
new file mode 100644
index 0000000..06e74e5
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWimage.html
@@ -0,0 +1,146 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: GLFWimage Struct Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="summary">
65<a href="#pub-attribs">Data Fields</a> </div>
66 <div class="headertitle"><div class="title">GLFWimage Struct Reference<div class="ingroups"><a class="el" href="group__window.html">Window reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69
70<p>Image data.
71 <a href="structGLFWimage.html#details">More...</a></p>
72
73<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
74<table class="memberdecls">
75<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
76Data Fields</h2></td></tr>
77<tr class="memitem:af6a71cc999fe6d3aea31dd7e9687d835"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">width</a></td></tr>
78<tr class="separator:af6a71cc999fe6d3aea31dd7e9687d835"><td class="memSeparator" colspan="2">&#160;</td></tr>
79<tr class="memitem:a0b7d95368f0c80d5e5c9875057c7dbec"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">height</a></td></tr>
80<tr class="separator:a0b7d95368f0c80d5e5c9875057c7dbec"><td class="memSeparator" colspan="2">&#160;</td></tr>
81<tr class="memitem:a0c532a5c2bb715555279b7817daba0fb"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">pixels</a></td></tr>
82<tr class="separator:a0c532a5c2bb715555279b7817daba0fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
83</table>
84<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
85<div class="textblock"><p >This describes a single 2D image. See the documentation for each related function what the expected pixel format is.</p>
86<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_custom">Custom cursor creation</a> </dd>
87<dd>
88<a class="el" href="window_guide.html#window_icon">Window icon</a></dd></dl>
89<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Removed format and bytes-per-pixel members. </dd></dl>
90</div><h2 class="groupheader">Field Documentation</h2>
91<a id="af6a71cc999fe6d3aea31dd7e9687d835" name="af6a71cc999fe6d3aea31dd7e9687d835"></a>
92<h2 class="memtitle"><span class="permalink"><a href="#af6a71cc999fe6d3aea31dd7e9687d835">&#9670;&nbsp;</a></span>width</h2>
93
94<div class="memitem">
95<div class="memproto">
96 <table class="memname">
97 <tr>
98 <td class="memname">int GLFWimage::width</td>
99 </tr>
100 </table>
101</div><div class="memdoc">
102<p >The width, in pixels, of this image. </p>
103
104</div>
105</div>
106<a id="a0b7d95368f0c80d5e5c9875057c7dbec" name="a0b7d95368f0c80d5e5c9875057c7dbec"></a>
107<h2 class="memtitle"><span class="permalink"><a href="#a0b7d95368f0c80d5e5c9875057c7dbec">&#9670;&nbsp;</a></span>height</h2>
108
109<div class="memitem">
110<div class="memproto">
111 <table class="memname">
112 <tr>
113 <td class="memname">int GLFWimage::height</td>
114 </tr>
115 </table>
116</div><div class="memdoc">
117<p >The height, in pixels, of this image. </p>
118
119</div>
120</div>
121<a id="a0c532a5c2bb715555279b7817daba0fb" name="a0c532a5c2bb715555279b7817daba0fb"></a>
122<h2 class="memtitle"><span class="permalink"><a href="#a0c532a5c2bb715555279b7817daba0fb">&#9670;&nbsp;</a></span>pixels</h2>
123
124<div class="memitem">
125<div class="memproto">
126 <table class="memname">
127 <tr>
128 <td class="memname">unsigned char* GLFWimage::pixels</td>
129 </tr>
130 </table>
131</div><div class="memdoc">
132<p >The pixel data of this image, arranged left-to-right, top-to-bottom. </p>
133
134</div>
135</div>
136<hr/>The documentation for this struct was generated from the following file:<ul>
137<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
138</ul>
139</div><!-- contents -->
140<address class="footer">
141<p>
142Last update on Thu Oct 28 2021 for GLFW 3.3.5
143</p>
144</address>
145</body>
146</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWvidmode.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWvidmode.html
new file mode 100644
index 0000000..67bb39b
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/structGLFWvidmode.html
@@ -0,0 +1,199 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: GLFWvidmode Struct Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="summary">
65<a href="#pub-attribs">Data Fields</a> </div>
66 <div class="headertitle"><div class="title">GLFWvidmode Struct Reference<div class="ingroups"><a class="el" href="group__monitor.html">Monitor reference</a></div></div></div>
67</div><!--header-->
68<div class="contents">
69
70<p>Video mode type.
71 <a href="structGLFWvidmode.html#details">More...</a></p>
72
73<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
74<table class="memberdecls">
75<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
76Data Fields</h2></td></tr>
77<tr class="memitem:a698dcb200562051a7249cb6ae154c71d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a></td></tr>
78<tr class="separator:a698dcb200562051a7249cb6ae154c71d"><td class="memSeparator" colspan="2">&#160;</td></tr>
79<tr class="memitem:ac65942a5f6981695517437a9d571d03c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a></td></tr>
80<tr class="separator:ac65942a5f6981695517437a9d571d03c"><td class="memSeparator" colspan="2">&#160;</td></tr>
81<tr class="memitem:a6066c4ecd251098700062d3b735dba1b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">redBits</a></td></tr>
82<tr class="separator:a6066c4ecd251098700062d3b735dba1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
83<tr class="memitem:a292fdd281f3485fb3ff102a5bda43faa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">greenBits</a></td></tr>
84<tr class="separator:a292fdd281f3485fb3ff102a5bda43faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
85<tr class="memitem:af310977f58d2e3b188175b6e3d314047"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">blueBits</a></td></tr>
86<tr class="separator:af310977f58d2e3b188175b6e3d314047"><td class="memSeparator" colspan="2">&#160;</td></tr>
87<tr class="memitem:a791bdd6c7697b09f7e9c97054bf05649"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a></td></tr>
88<tr class="separator:a791bdd6c7697b09f7e9c97054bf05649"><td class="memSeparator" colspan="2">&#160;</td></tr>
89</table>
90<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
91<div class="textblock"><p >This describes a single video mode.</p>
92<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
93<dd>
94<a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> </dd>
95<dd>
96<a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></dd></dl>
97<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added refresh rate member. </dd></dl>
98</div><h2 class="groupheader">Field Documentation</h2>
99<a id="a698dcb200562051a7249cb6ae154c71d" name="a698dcb200562051a7249cb6ae154c71d"></a>
100<h2 class="memtitle"><span class="permalink"><a href="#a698dcb200562051a7249cb6ae154c71d">&#9670;&nbsp;</a></span>width</h2>
101
102<div class="memitem">
103<div class="memproto">
104 <table class="memname">
105 <tr>
106 <td class="memname">int GLFWvidmode::width</td>
107 </tr>
108 </table>
109</div><div class="memdoc">
110<p >The width, in screen coordinates, of the video mode. </p>
111
112</div>
113</div>
114<a id="ac65942a5f6981695517437a9d571d03c" name="ac65942a5f6981695517437a9d571d03c"></a>
115<h2 class="memtitle"><span class="permalink"><a href="#ac65942a5f6981695517437a9d571d03c">&#9670;&nbsp;</a></span>height</h2>
116
117<div class="memitem">
118<div class="memproto">
119 <table class="memname">
120 <tr>
121 <td class="memname">int GLFWvidmode::height</td>
122 </tr>
123 </table>
124</div><div class="memdoc">
125<p >The height, in screen coordinates, of the video mode. </p>
126
127</div>
128</div>
129<a id="a6066c4ecd251098700062d3b735dba1b" name="a6066c4ecd251098700062d3b735dba1b"></a>
130<h2 class="memtitle"><span class="permalink"><a href="#a6066c4ecd251098700062d3b735dba1b">&#9670;&nbsp;</a></span>redBits</h2>
131
132<div class="memitem">
133<div class="memproto">
134 <table class="memname">
135 <tr>
136 <td class="memname">int GLFWvidmode::redBits</td>
137 </tr>
138 </table>
139</div><div class="memdoc">
140<p >The bit depth of the red channel of the video mode. </p>
141
142</div>
143</div>
144<a id="a292fdd281f3485fb3ff102a5bda43faa" name="a292fdd281f3485fb3ff102a5bda43faa"></a>
145<h2 class="memtitle"><span class="permalink"><a href="#a292fdd281f3485fb3ff102a5bda43faa">&#9670;&nbsp;</a></span>greenBits</h2>
146
147<div class="memitem">
148<div class="memproto">
149 <table class="memname">
150 <tr>
151 <td class="memname">int GLFWvidmode::greenBits</td>
152 </tr>
153 </table>
154</div><div class="memdoc">
155<p >The bit depth of the green channel of the video mode. </p>
156
157</div>
158</div>
159<a id="af310977f58d2e3b188175b6e3d314047" name="af310977f58d2e3b188175b6e3d314047"></a>
160<h2 class="memtitle"><span class="permalink"><a href="#af310977f58d2e3b188175b6e3d314047">&#9670;&nbsp;</a></span>blueBits</h2>
161
162<div class="memitem">
163<div class="memproto">
164 <table class="memname">
165 <tr>
166 <td class="memname">int GLFWvidmode::blueBits</td>
167 </tr>
168 </table>
169</div><div class="memdoc">
170<p >The bit depth of the blue channel of the video mode. </p>
171
172</div>
173</div>
174<a id="a791bdd6c7697b09f7e9c97054bf05649" name="a791bdd6c7697b09f7e9c97054bf05649"></a>
175<h2 class="memtitle"><span class="permalink"><a href="#a791bdd6c7697b09f7e9c97054bf05649">&#9670;&nbsp;</a></span>refreshRate</h2>
176
177<div class="memitem">
178<div class="memproto">
179 <table class="memname">
180 <tr>
181 <td class="memname">int GLFWvidmode::refreshRate</td>
182 </tr>
183 </table>
184</div><div class="memdoc">
185<p >The refresh rate, in Hz, of the video mode. </p>
186
187</div>
188</div>
189<hr/>The documentation for this struct was generated from the following file:<ul>
190<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
191</ul>
192</div><!-- contents -->
193<address class="footer">
194<p>
195Last update on Thu Oct 28 2021 for GLFW 3.3.5
196</p>
197</address>
198</body>
199</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_off.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_off.png
new file mode 100644
index 0000000..3b443fc
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_off.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_on.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_on.png
new file mode 100644
index 0000000..e08320f
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/sync_on.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_a.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_a.png
new file mode 100644
index 0000000..3b725c4
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_a.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_b.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_b.png
new file mode 100644
index 0000000..e2b4a86
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_b.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_h.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_h.png
new file mode 100644
index 0000000..fd5cb70
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_h.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_s.png b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_s.png
new file mode 100644
index 0000000..ab478c9
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tab_s.png
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tabs.css b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tabs.css
new file mode 100644
index 0000000..00d1c60
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/tabs.css
@@ -0,0 +1 @@
.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_8dox.html
new file mode 100644
index 0000000..0d8b6c3
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: vulkan.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">vulkan.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_guide.html
new file mode 100644
index 0000000..1d41421
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/vulkan_guide.html
@@ -0,0 +1,188 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Vulkan guide</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Vulkan guide </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#vulkan_loader">Linking against the Vulkan loader</a></li>
69<li class="level1"><a href="#vulkan_include">Including the Vulkan and GLFW header files</a></li>
70<li class="level1"><a href="#vulkan_support">Querying for Vulkan support</a><ul><li class="level2"><a href="#vulkan_proc">Querying Vulkan function pointers</a></li>
71</ul>
72</li>
73<li class="level1"><a href="#vulkan_ext">Querying required Vulkan extensions</a></li>
74<li class="level1"><a href="#vulkan_present">Querying for Vulkan presentation support</a></li>
75<li class="level1"><a href="#vulkan_window">Creating the window</a></li>
76<li class="level1"><a href="#vulkan_surface">Creating a Vulkan window surface</a></li>
77</ul>
78</div>
79<div class="textblock"><p >This guide is intended to fill the gaps between the official <a href="https://www.khronos.org/vulkan/">Vulkan resources</a> and the rest of the GLFW documentation and is not a replacement for either. It assumes some familiarity with Vulkan concepts like loaders, devices, queues and surfaces and leaves it to the Vulkan documentation to explain the details of Vulkan functions.</p>
80<p >To develop for Vulkan you should download the <a href="https://vulkan.lunarg.com/">LunarG Vulkan SDK</a> for your platform. Apart from headers and link libraries, they also provide the validation layers necessary for development.</p>
81<p >The <a href="https://vulkan-tutorial.com/">Vulkan Tutorial</a> has more information on how to use GLFW and Vulkan. The <a href="https://github.com/KhronosGroup/Vulkan-Samples">Khronos Vulkan Samples</a> also use GLFW, although with a small framework in between.</p>
82<p >For details on a specific Vulkan support function, see the <a class="el" href="group__vulkan.html">Vulkan support reference</a>. There are also guides for the other areas of the GLFW API.</p>
83<ul>
84<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
85<li><a class="el" href="window_guide.html">Window guide</a></li>
86<li><a class="el" href="context_guide.html">Context guide</a></li>
87<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
88<li><a class="el" href="input_guide.html">Input guide</a></li>
89</ul>
90<h1><a class="anchor" id="vulkan_loader"></a>
91Linking against the Vulkan loader</h1>
92<p >By default, GLFW will look for the Vulkan loader on demand at runtime via its standard name (<code>vulkan-1.dll</code> on Windows, <code>libvulkan.so.1</code> on Linux and other Unix-like systems and <code>libvulkan.1.dylib</code> on macOS). This means that GLFW does not need to be linked against the loader. However, it also means that if you are using the static library form of the Vulkan loader GLFW will either fail to find it or (worse) use the wrong one.</p>
93<p >The <a class="el" href="compile_guide.html#GLFW_VULKAN_STATIC">GLFW_VULKAN_STATIC</a> CMake option makes GLFW call the Vulkan loader directly instead of dynamically loading it at runtime. Not linking against the Vulkan loader will then be a compile-time error.</p>
94<p ><b>macOS:</b> Because the Vulkan loader and ICD are not installed globally on macOS, you need to set up the application bundle according to the LunarG SDK documentation. This is explained in more detail in the <a href="https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html">SDK documentation for macOS</a>.</p>
95<h1><a class="anchor" id="vulkan_include"></a>
96Including the Vulkan and GLFW header files</h1>
97<p >To include the Vulkan header, define <a class="el" href="build_guide.html#GLFW_INCLUDE_VULKAN">GLFW_INCLUDE_VULKAN</a> before including the GLFW header.</p>
98<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_VULKAN</span></div>
99<div class="line"><span class="preprocessor">#include &lt;GLFW/glfw3.h&gt;</span></div>
100</div><!-- fragment --><p >If you instead want to include the Vulkan header from a custom location or use your own custom Vulkan header then do this before the GLFW header.</p>
101<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;path/to/vulkan.h&gt;</span></div>
102<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
103<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
104</div><!-- fragment --><p >Unless a Vulkan header is included, either by the GLFW header or above it, any GLFW functions that take or return Vulkan types will not be declared.</p>
105<p >The <code>VK_USE_PLATFORM_*_KHR</code> macros do not need to be defined for the Vulkan part of GLFW to work. Define them only if you are using these extensions directly.</p>
106<h1><a class="anchor" id="vulkan_support"></a>
107Querying for Vulkan support</h1>
108<p >If you are linking directly against the Vulkan loader then you can skip this section. The canonical desktop loader library exports all Vulkan core and Khronos extension functions, allowing them to be called directly.</p>
109<p >If you are loading the Vulkan loader dynamically instead of linking directly against it, you can check for the availability of a loader and ICD with <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>.</p>
110<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>())</div>
111<div class="line">{</div>
112<div class="line"> <span class="comment">// Vulkan is available, at least for compute</span></div>
113<div class="line">}</div>
114<div class="ttc" id="agroup__vulkan_html_ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><div class="ttname"><a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a></div><div class="ttdeci">int glfwVulkanSupported(void)</div><div class="ttdoc">Returns whether the Vulkan loader and an ICD have been found.</div></div>
115</div><!-- fragment --><p >This function returns <code>GLFW_TRUE</code> if the Vulkan loader and any minimally functional ICD was found.</p>
116<p >If one or both were not found, calling any other Vulkan related GLFW function will generate a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error.</p>
117<h2><a class="anchor" id="vulkan_proc"></a>
118Querying Vulkan function pointers</h2>
119<p >To load any Vulkan core or extension function from the found loader, call <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>. To load functions needed for instance creation, pass <code>NULL</code> as the instance.</p>
120<div class="fragment"><div class="line">PFN_vkCreateInstance pfnCreateInstance = (PFN_vkCreateInstance)</div>
121<div class="line"> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(NULL, <span class="stringliteral">&quot;vkCreateInstance&quot;</span>);</div>
122<div class="ttc" id="agroup__vulkan_html_gadf228fac94c5fd8f12423ec9af9ff1e9"><div class="ttname"><a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></div><div class="ttdeci">GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)</div><div class="ttdoc">Returns the address of the specified Vulkan instance function.</div></div>
123</div><!-- fragment --><p >Once you have created an instance, you can load from it all other Vulkan core functions and functions from any instance extensions you enabled.</p>
124<div class="fragment"><div class="line">PFN_vkCreateDevice pfnCreateDevice = (PFN_vkCreateDevice)</div>
125<div class="line"> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(instance, <span class="stringliteral">&quot;vkCreateDevice&quot;</span>);</div>
126</div><!-- fragment --><p >This function in turn calls <code>vkGetInstanceProcAddr</code>. If that fails, the function falls back to a platform-specific query of the Vulkan loader (i.e. <code>dlsym</code> or <code>GetProcAddress</code>). If that also fails, the function returns <code>NULL</code>. For more information about <code>vkGetInstanceProcAddr</code>, see the Vulkan documentation.</p>
127<p >Vulkan also provides <code>vkGetDeviceProcAddr</code> for loading device-specific versions of Vulkan function. This function can be retrieved from an instance with <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>.</p>
128<div class="fragment"><div class="line">PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)</div>
129<div class="line"> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(instance, <span class="stringliteral">&quot;vkGetDeviceProcAddr&quot;</span>);</div>
130</div><!-- fragment --><p >Device-specific functions may execute a little bit faster, due to not having to dispatch internally based on the device passed to them. For more information about <code>vkGetDeviceProcAddr</code>, see the Vulkan documentation.</p>
131<h1><a class="anchor" id="vulkan_ext"></a>
132Querying required Vulkan extensions</h1>
133<p >To do anything useful with Vulkan you need to create an instance. If you want to use Vulkan to render to a window, you must enable the instance extensions GLFW requires to create Vulkan surfaces.</p>
134<p >To query the instance extensions required, call <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>.</p>
135<div class="fragment"><div class="line">uint32_t count;</div>
136<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>** extensions = <a class="code hl_function" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>(&amp;count);</div>
137<div class="ttc" id="agroup__vulkan_html_ga99ad342d82f4a3421e2864978cb6d1d6"><div class="ttname"><a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></div><div class="ttdeci">const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)</div><div class="ttdoc">Returns the Vulkan instance extensions required by GLFW.</div></div>
138</div><!-- fragment --><p >These extensions must all be enabled when creating instances that are going to be passed to <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> and <a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>. The set of extensions will vary depending on platform and may also vary depending on graphics drivers and other factors.</p>
139<p >If it fails it will return <code>NULL</code> and GLFW will not be able to create Vulkan window surfaces. You can still use Vulkan for off-screen rendering and compute work.</p>
140<p >If successful the returned array will always include <code>VK_KHR_surface</code>, so if you don't require any additional extensions you can pass this list directly to the <code>VkInstanceCreateInfo</code> struct.</p>
141<div class="fragment"><div class="line">VkInstanceCreateInfo ici;</div>
142<div class="line"> </div>
143<div class="line">memset(&amp;ici, 0, <span class="keyword">sizeof</span>(ici));</div>
144<div class="line">ici.enabledExtensionCount = count;</div>
145<div class="line">ici.ppEnabledExtensionNames = extensions;</div>
146<div class="line">...</div>
147</div><!-- fragment --><p >Additional extensions may be required by future versions of GLFW. You should check whether any extensions you wish to enable are already in the returned array, as it is an error to specify an extension more than once in the <code>VkInstanceCreateInfo</code> struct.</p>
148<h1><a class="anchor" id="vulkan_present"></a>
149Querying for Vulkan presentation support</h1>
150<p >Not every queue family of every Vulkan device can present images to surfaces. To check whether a specific queue family of a physical device supports image presentation without first having to create a window and surface, call <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a>.</p>
151<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a>(instance, physical_device, queue_family_index))</div>
152<div class="line">{</div>
153<div class="line"> <span class="comment">// Queue family supports image presentation</span></div>
154<div class="line">}</div>
155<div class="ttc" id="agroup__vulkan_html_gaff3823355cdd7e2f3f9f4d9ea9518d92"><div class="ttname"><a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a></div><div class="ttdeci">int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</div><div class="ttdoc">Returns whether the specified queue family can present images.</div></div>
156</div><!-- fragment --><p >The <code>VK_KHR_surface</code> extension additionally provides the <code>vkGetPhysicalDeviceSurfaceSupportKHR</code> function, which performs the same test on an existing Vulkan surface.</p>
157<h1><a class="anchor" id="vulkan_window"></a>
158Creating the window</h1>
159<p >Unless you will be using OpenGL or OpenGL ES with the same window as Vulkan, there is no need to create a context. You can disable context creation with the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint.</p>
160<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a>, <a class="code hl_define" href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264">GLFW_NO_API</a>);</div>
161<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;Window Title&quot;</span>, NULL, NULL);</div>
162<div class="ttc" id="aglfw3_8h_html_a8f6dcdc968d214ff14779564f1389264"><div class="ttname"><a href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264">GLFW_NO_API</a></div><div class="ttdeci">#define GLFW_NO_API</div><div class="ttdef"><b>Definition:</b> glfw3.h:1037</div></div>
163<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
164<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
165<div class="ttc" id="agroup__window_html_ga649309cf72a3d3de5b1348ca7936c95b"><div class="ttname"><a href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a></div><div class="ttdeci">#define GLFW_CLIENT_API</div><div class="ttdoc">Context client API hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:950</div></div>
166<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
167</div><!-- fragment --><p >See <a class="el" href="context_guide.html#context_less">Windows without contexts</a> for more information.</p>
168<h1><a class="anchor" id="vulkan_surface"></a>
169Creating a Vulkan window surface</h1>
170<p >You can create a Vulkan surface (as defined by the <code>VK_KHR_surface</code> extension) for a GLFW window with <a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>.</p>
171<div class="fragment"><div class="line">VkSurfaceKHR surface;</div>
172<div class="line">VkResult err = <a class="code hl_function" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>(instance, window, NULL, &amp;surface);</div>
173<div class="line"><span class="keywordflow">if</span> (err)</div>
174<div class="line">{</div>
175<div class="line"> <span class="comment">// Window surface creation failed</span></div>
176<div class="line">}</div>
177<div class="ttc" id="agroup__vulkan_html_ga1a24536bec3f80b08ead18e28e6ae965"><div class="ttname"><a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></div><div class="ttdeci">VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</div><div class="ttdoc">Creates a Vulkan surface for the specified window.</div></div>
178</div><!-- fragment --><p >If an OpenGL or OpenGL ES context was created on the window, the context has ownership of the presentation on the window and a Vulkan surface cannot be created.</p>
179<p >It is your responsibility to destroy the surface. GLFW does not destroy it for you. Call <code>vkDestroySurfaceKHR</code> function from the same extension to destroy it. </p>
180</div></div><!-- contents -->
181</div><!-- PageDoc -->
182<address class="footer">
183<p>
184Last update on Thu Oct 28 2021 for GLFW 3.3.5
185</p>
186</address>
187</body>
188</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_8dox.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_8dox.html
new file mode 100644
index 0000000..ee746c4
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_8dox.html
@@ -0,0 +1,74 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: window.dox File Reference</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div class="header">
64 <div class="headertitle"><div class="title">window.dox File Reference</div></div>
65</div><!--header-->
66<div class="contents">
67</div><!-- contents -->
68<address class="footer">
69<p>
70Last update on Thu Oct 28 2021 for GLFW 3.3.5
71</p>
72</address>
73</body>
74</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_guide.html b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_guide.html
new file mode 100644
index 0000000..a225ddb
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/docs/html/window_guide.html
@@ -0,0 +1,756 @@
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.9.2"/>
8<title>GLFW: Window guide</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16<link href="extra.css" rel="stylesheet" type="text/css"/>
17</head>
18<body>
19<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
20<div id="titlearea">
21 <div class="glfwheader">
22 <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
23 <ul class="glfwnavbar">
24 <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
25 <li><a href="https://www.glfw.org/download.html">Download</a></li>
26 <li><a href="https://www.glfw.org/community.html">Community</a></li>
27 </ul>
28 </div>
29</div>
30<!-- end header part -->
31<!-- Generated by Doxygen 1.9.2 -->
32<script type="text/javascript">
33/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
34var searchBox = new SearchBox("searchBox", "search",'Search','.html');
35/* @license-end */
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
41$(function() {
42 initMenu('',true,false,'search.php','Search');
43 $(document).ready(function() { init_search(); });
44});
45/* @license-end */
46</script>
47<div id="main-nav"></div>
48<!-- window showing the filter options -->
49<div id="MSearchSelectWindow"
50 onmouseover="return searchBox.OnSearchSelectShow()"
51 onmouseout="return searchBox.OnSearchSelectHide()"
52 onkeydown="return searchBox.OnSearchSelectKey(event)">
53</div>
54
55<!-- iframe showing the search results (closed by default) -->
56<div id="MSearchResultsWindow">
57<iframe src="javascript:void(0)" frameborder="0"
58 name="MSearchResults" id="MSearchResults">
59</iframe>
60</div>
61
62</div><!-- top -->
63<div><div class="header">
64 <div class="headertitle"><div class="title">Window guide </div></div>
65</div><!--header-->
66<div class="contents">
67<div class="toc"><h3>Table of Contents</h3>
68<ul><li class="level1"><a href="#window_object">Window objects</a><ul><li class="level2"><a href="#window_creation">Window creation</a><ul><li class="level3"><a href="#window_full_screen">Full screen windows</a></li>
69<li class="level3"><a href="#window_windowed_full_screen">&quot;Windowed full screen&quot; windows</a></li>
70</ul>
71</li>
72<li class="level2"><a href="#window_destruction">Window destruction</a></li>
73<li class="level2"><a href="#window_hints">Window creation hints</a><ul><li class="level3"><a href="#window_hints_hard">Hard and soft constraints</a></li>
74<li class="level3"><a href="#window_hints_wnd">Window related hints</a></li>
75<li class="level3"><a href="#window_hints_fb">Framebuffer related hints</a></li>
76<li class="level3"><a href="#window_hints_mtr">Monitor related hints</a></li>
77<li class="level3"><a href="#window_hints_ctx">Context related hints</a></li>
78<li class="level3"><a href="#window_hints_osx">macOS specific window hints</a></li>
79<li class="level3"><a href="#window_hints_x11">X11 specific window hints</a></li>
80<li class="level3"><a href="#window_hints_values">Supported and default values</a></li>
81</ul>
82</li>
83</ul>
84</li>
85<li class="level1"><a href="#window_events">Window event processing</a></li>
86<li class="level1"><a href="#window_properties">Window properties and events</a><ul><li class="level2"><a href="#window_userptr">User pointer</a></li>
87<li class="level2"><a href="#window_close">Window closing and close flag</a></li>
88<li class="level2"><a href="#window_size">Window size</a></li>
89<li class="level2"><a href="#window_fbsize">Framebuffer size</a></li>
90<li class="level2"><a href="#window_scale">Window content scale</a></li>
91<li class="level2"><a href="#window_sizelimits">Window size limits</a></li>
92<li class="level2"><a href="#window_pos">Window position</a></li>
93<li class="level2"><a href="#window_title">Window title</a></li>
94<li class="level2"><a href="#window_icon">Window icon</a></li>
95<li class="level2"><a href="#window_monitor">Window monitor</a></li>
96<li class="level2"><a href="#window_iconify">Window iconification</a></li>
97<li class="level2"><a href="#window_maximize">Window maximization</a></li>
98<li class="level2"><a href="#window_hide">Window visibility</a></li>
99<li class="level2"><a href="#window_focus">Window input focus</a></li>
100<li class="level2"><a href="#window_attention">Window attention request</a></li>
101<li class="level2"><a href="#window_refresh">Window damage and refresh</a></li>
102<li class="level2"><a href="#window_transparency">Window transparency</a></li>
103<li class="level2"><a href="#window_attribs">Window attributes</a><ul><li class="level3"><a href="#window_attribs_wnd">Window related attributes</a></li>
104<li class="level3"><a href="#window_attribs_ctx">Context related attributes</a></li>
105<li class="level3"><a href="#window_attribs_fb">Framebuffer related attributes</a></li>
106</ul>
107</li>
108</ul>
109</li>
110<li class="level1"><a href="#buffer_swap">Buffer swapping</a></li>
111</ul>
112</div>
113<div class="textblock"><p >This guide introduces the window related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__window.html">Window reference</a>. There are also guides for the other areas of GLFW.</p>
114<ul>
115<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
116<li><a class="el" href="context_guide.html">Context guide</a></li>
117<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
118<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
119<li><a class="el" href="input_guide.html">Input guide</a></li>
120</ul>
121<h1><a class="anchor" id="window_object"></a>
122Window objects</h1>
123<p >The <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> object encapsulates both a window and a context. They are created with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> and destroyed with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>, or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>, if any remain. As the window and context are inseparably linked, the object pointer is used as both a context and window handle.</p>
124<p >To see the event stream provided to the various window related callbacks, run the <code>events</code> test program.</p>
125<h2><a class="anchor" id="window_creation"></a>
126Window creation</h2>
127<p >A window and its OpenGL or OpenGL ES context are created with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>, which returns a handle to the created window object. For example, this creates a 640 by 480 windowed mode window:</p>
128<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, NULL, NULL);</div>
129<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
130<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1186</div></div>
131</div><!-- fragment --><p >If window creation fails, <code>NULL</code> will be returned, so it is necessary to check the return value.</p>
132<p >The window handle is passed to all window related functions and is provided to along with all input events, so event handlers can tell which window received the event.</p>
133<h3><a class="anchor" id="window_full_screen"></a>
134Full screen windows</h3>
135<p >To create a full screen window, you need to specify which monitor the window should use. In most cases, the user's primary monitor is a good choice. For more information about retrieving monitors, see <a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a>.</p>
136<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>(), NULL);</div>
137<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
138</div><!-- fragment --><p >Full screen windows cover the entire display area of a monitor, have no border or decorations.</p>
139<p >Windowed mode windows can be made full screen by setting a monitor with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>, and full screen ones can be made windowed by unsetting it with the same function.</p>
140<p >Each field of the <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> structure corresponds to a function parameter or window hint and combine to form the <em>desired video mode</em> for that window. The supported video mode most closely matching the desired video mode will be set for the chosen monitor as long as the window has input focus. For more information about retrieving video modes, see <a class="el" href="monitor_guide.html#monitor_modes">Video modes</a>.</p>
141<table class="markdownTable">
142<tr class="markdownTableHead">
143<th class="markdownTableHeadNone">Video mode field </th><th class="markdownTableHeadNone">Corresponds to </th></tr>
144<tr class="markdownTableRowOdd">
145<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">GLFWvidmode.width</a> </td><td class="markdownTableBodyNone"><code>width</code> parameter of <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> </td></tr>
146<tr class="markdownTableRowEven">
147<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">GLFWvidmode.height</a> </td><td class="markdownTableBodyNone"><code>height</code> parameter of <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> </td></tr>
148<tr class="markdownTableRowOdd">
149<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">GLFWvidmode.redBits</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_RED_BITS">GLFW_RED_BITS</a> hint </td></tr>
150<tr class="markdownTableRowEven">
151<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">GLFWvidmode.greenBits</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_GREEN_BITS">GLFW_GREEN_BITS</a> hint </td></tr>
152<tr class="markdownTableRowOdd">
153<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">GLFWvidmode.blueBits</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_BLUE_BITS">GLFW_BLUE_BITS</a> hint </td></tr>
154<tr class="markdownTableRowEven">
155<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">GLFWvidmode.refreshRate</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_REFRESH_RATE">GLFW_REFRESH_RATE</a> hint </td></tr>
156</table>
157<p >Once you have a full screen window, you can change its resolution, refresh rate and monitor with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>. If you only need change its resolution you can also call <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>. In all cases, the new video mode will be selected the same way as the video mode chosen by <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>. If the window has an OpenGL or OpenGL ES context, it will be unaffected.</p>
158<p >By default, the original video mode of the monitor will be restored and the window iconified if it loses input focus, to allow the user to switch back to the desktop. This behavior can be disabled with the <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">GLFW_AUTO_ICONIFY</a> window hint, for example if you wish to simultaneously cover multiple monitors with full screen windows.</p>
159<p >If a monitor is disconnected, all windows that are full screen on that monitor will be switched to windowed mode. See <a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a> for more information.</p>
160<h3><a class="anchor" id="window_windowed_full_screen"></a>
161"Windowed full screen" windows</h3>
162<p >If the closest match for the desired video mode is the current one, the video mode will not be changed, making window creation faster and application switching much smoother. This is sometimes called <em>windowed full screen</em> or <em>borderless full screen</em> window and counts as a full screen window. To create such a window, request the current video mode.</p>
163<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
164<div class="line"> </div>
165<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">redBits</a>);</div>
166<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">greenBits</a>);</div>
167<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">blueBits</a>);</div>
168<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>);</div>
169<div class="line"> </div>
170<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>, <span class="stringliteral">&quot;My Title&quot;</span>, monitor, NULL);</div>
171<div class="ttc" id="agroup__monitor_html_gaba376fa7e76634b4788bddc505d6c9d5"><div class="ttname"><a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current mode of the specified monitor.</div></div>
172<div class="ttc" id="agroup__window_html_ga0f20825e6e47ee8ba389024519682212"><div class="ttname"><a href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a></div><div class="ttdeci">#define GLFW_REFRESH_RATE</div><div class="ttdoc">Monitor refresh rate hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:938</div></div>
173<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
174<div class="ttc" id="agroup__window_html_gab292ea403db6d514537b515311bf9ae3"><div class="ttname"><a href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a></div><div class="ttdeci">#define GLFW_BLUE_BITS</div><div class="ttdoc">Framebuffer bit depth hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:878</div></div>
175<div class="ttc" id="agroup__window_html_gaf78ed8e417dbcc1e354906cc2708c982"><div class="ttname"><a href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a></div><div class="ttdeci">#define GLFW_RED_BITS</div><div class="ttdoc">Framebuffer bit depth hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:868</div></div>
176<div class="ttc" id="agroup__window_html_gafba3b72638c914e5fb8a237dd4c50d4d"><div class="ttname"><a href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a></div><div class="ttdeci">#define GLFW_GREEN_BITS</div><div class="ttdoc">Framebuffer bit depth hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:873</div></div>
177<div class="ttc" id="astructGLFWvidmode_html"><div class="ttname"><a href="structGLFWvidmode.html">GLFWvidmode</a></div><div class="ttdoc">Video mode type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1659</div></div>
178<div class="ttc" id="astructGLFWvidmode_html_a292fdd281f3485fb3ff102a5bda43faa"><div class="ttname"><a href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">GLFWvidmode::greenBits</a></div><div class="ttdeci">int greenBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1671</div></div>
179<div class="ttc" id="astructGLFWvidmode_html_a6066c4ecd251098700062d3b735dba1b"><div class="ttname"><a href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">GLFWvidmode::redBits</a></div><div class="ttdeci">int redBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1668</div></div>
180<div class="ttc" id="astructGLFWvidmode_html_a698dcb200562051a7249cb6ae154c71d"><div class="ttname"><a href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">GLFWvidmode::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1662</div></div>
181<div class="ttc" id="astructGLFWvidmode_html_a791bdd6c7697b09f7e9c97054bf05649"><div class="ttname"><a href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">GLFWvidmode::refreshRate</a></div><div class="ttdeci">int refreshRate</div><div class="ttdef"><b>Definition:</b> glfw3.h:1677</div></div>
182<div class="ttc" id="astructGLFWvidmode_html_ac65942a5f6981695517437a9d571d03c"><div class="ttname"><a href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">GLFWvidmode::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1665</div></div>
183<div class="ttc" id="astructGLFWvidmode_html_af310977f58d2e3b188175b6e3d314047"><div class="ttname"><a href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">GLFWvidmode::blueBits</a></div><div class="ttdeci">int blueBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1674</div></div>
184</div><!-- fragment --><p >This also works for windowed mode windows that are made full screen.</p>
185<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
186<div class="line"> </div>
187<div class="line"><a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(window, monitor, 0, 0, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>);</div>
188<div class="ttc" id="agroup__window_html_ga81c76c418af80a1cce7055bccb0ae0a7"><div class="ttname"><a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></div><div class="ttdeci">void glfwSetWindowMonitor(GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)</div><div class="ttdoc">Sets the mode, monitor, video mode and placement of a window.</div></div>
189</div><!-- fragment --><p >Note that <a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> returns the <em>current</em> video mode of a monitor, so if you already have a full screen window on that monitor that you want to make windowed full screen, you need to have saved the desktop resolution before.</p>
190<h2><a class="anchor" id="window_destruction"></a>
191Window destruction</h2>
192<p >When a window is no longer needed, destroy it with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>.</p>
193<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(window);</div>
194<div class="ttc" id="agroup__window_html_gacdf43e51376051d2c091662e9fe3d7b2"><div class="ttname"><a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></div><div class="ttdeci">void glfwDestroyWindow(GLFWwindow *window)</div><div class="ttdoc">Destroys the specified window and its context.</div></div>
195</div><!-- fragment --><p >Window destruction always succeeds. Before the actual destruction, all callbacks are removed so no further events will be delivered for the window. All windows remaining when <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> is called are destroyed as well.</p>
196<p >When a full screen window is destroyed, the original video mode of its monitor is restored, but the gamma ramp is left untouched.</p>
197<h2><a class="anchor" id="window_hints"></a>
198Window creation hints</h2>
199<p >There are a number of hints that can be set before the creation of a window and context. Some affect the window itself, others affect the framebuffer or context. These hints are set to their default values each time the library is initialized with <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>. Integer value hints can be set individually with <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> and string value hints with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>. You can reset all at once to their defaults with <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>.</p>
200<p >Some hints are platform specific. These are always valid to set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or calls.</p>
201<dl class="section note"><dt>Note</dt><dd>Window hints need to be set before the creation of the window and context you wish to have the specified attributes. They function as additional arguments to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</dd></dl>
202<h3><a class="anchor" id="window_hints_hard"></a>
203Hard and soft constraints</h3>
204<p >Some window hints are hard constraints. These must match the available capabilities <em>exactly</em> for window and context creation to succeed. Hints that are not hard constraints are matched as closely as possible, but the resulting context and framebuffer may differ from what these hints requested.</p>
205<p >The following hints are always hard constraints:</p><ul>
206<li><a class="el" href="window_guide.html#GLFW_STEREO">GLFW_STEREO</a></li>
207<li><a class="el" href="window_guide.html#GLFW_DOUBLEBUFFER">GLFW_DOUBLEBUFFER</a></li>
208<li><a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a></li>
209<li><a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_hint">GLFW_CONTEXT_CREATION_API</a></li>
210</ul>
211<p >The following additional hints are hard constraints when requesting an OpenGL context, but are ignored when requesting an OpenGL ES context:</p><ul>
212<li><a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">GLFW_OPENGL_FORWARD_COMPAT</a></li>
213<li><a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">GLFW_OPENGL_PROFILE</a></li>
214</ul>
215<h3><a class="anchor" id="window_hints_wnd"></a>
216Window related hints</h3>
217<p ><a class="anchor" id="GLFW_RESIZABLE_hint"></a><b>GLFW_RESIZABLE</b> specifies whether the windowed mode window will be resizable <em>by the user</em>. The window will still be resizable using the <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> function. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen and undecorated windows.</p>
218<p ><a class="anchor" id="GLFW_VISIBLE_hint"></a><b>GLFW_VISIBLE</b> specifies whether the windowed mode window will be initially visible. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
219<p ><a class="anchor" id="GLFW_DECORATED_hint"></a><b>GLFW_DECORATED</b> specifies whether the windowed mode window will have window decorations such as a border, a close widget, etc. An undecorated window will not be resizable by the user but will still allow the user to generate close events on some platforms. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
220<p ><a class="anchor" id="GLFW_FOCUSED_hint"></a><b>GLFW_FOCUSED</b> specifies whether the windowed mode window will be given input focus when created. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen and initially hidden windows.</p>
221<p ><a class="anchor" id="GLFW_AUTO_ICONIFY_hint"></a><b>GLFW_AUTO_ICONIFY</b> specifies whether the full screen window will automatically iconify and restore the previous video mode on input focus loss. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for windowed mode windows.</p>
222<p ><a class="anchor" id="GLFW_FLOATING_hint"></a><b>GLFW_FLOATING</b> specifies whether the windowed mode window will be floating above other regular windows, also called topmost or always-on-top. This is intended primarily for debugging purposes and cannot be used to implement proper full screen windows. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
223<p ><a class="anchor" id="GLFW_MAXIMIZED_hint"></a><b>GLFW_MAXIMIZED</b> specifies whether the windowed mode window will be maximized when created. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
224<p ><a class="anchor" id="GLFW_CENTER_CURSOR_hint"></a><b>GLFW_CENTER_CURSOR</b> specifies whether the cursor should be centered over newly created full screen windows. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for windowed mode windows.</p>
225<p ><a class="anchor" id="GLFW_TRANSPARENT_FRAMEBUFFER_hint"></a><b>GLFW_TRANSPARENT_FRAMEBUFFER</b> specifies whether the window framebuffer will be transparent. If enabled and supported by the system, the window framebuffer alpha channel will be used to combine the framebuffer with the background. This does not affect window decorations. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
226<p ><a class="anchor" id="GLFW_FOCUS_ON_SHOW_hint"></a><b>GLFW_FOCUS_ON_SHOW</b> specifies whether the window will be given input focus when <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> is called. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
227<p ><a class="anchor" id="GLFW_SCALE_TO_MONITOR"></a><b>GLFW_SCALE_TO_MONITOR</b> specified whether the window content area should be resized based on the <a class="el" href="monitor_guide.html#monitor_scale">monitor content scale</a> of any monitor it is placed on. This includes the initial placement when the window is created. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
228<p >This hint only has an effect on platforms where screen coordinates and pixels always map 1:1 such as Windows and X11. On platforms like macOS the resolution of the framebuffer is changed independently of the window size.</p>
229<h3><a class="anchor" id="window_hints_fb"></a>
230Framebuffer related hints</h3>
231<p ><a class="anchor" id="GLFW_RED_BITS"></a><a class="anchor" id="GLFW_GREEN_BITS"></a><a class="anchor" id="GLFW_BLUE_BITS"></a><a class="anchor" id="GLFW_ALPHA_BITS"></a><a class="anchor" id="GLFW_DEPTH_BITS"></a><a class="anchor" id="GLFW_STENCIL_BITS"></a><b>GLFW_RED_BITS</b>, <b>GLFW_GREEN_BITS</b>, <b>GLFW_BLUE_BITS</b>, <b>GLFW_ALPHA_BITS</b>, <b>GLFW_DEPTH_BITS</b> and <b>GLFW_STENCIL_BITS</b> specify the desired bit depths of the various components of the default framebuffer. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
232<p ><a class="anchor" id="GLFW_ACCUM_RED_BITS"></a><a class="anchor" id="GLFW_ACCUM_GREEN_BITS"></a><a class="anchor" id="GLFW_ACCUM_BLUE_BITS"></a><a class="anchor" id="GLFW_ACCUM_ALPHA_BITS"></a><b>GLFW_ACCUM_RED_BITS</b>, <b>GLFW_ACCUM_GREEN_BITS</b>, <b>GLFW_ACCUM_BLUE_BITS</b> and <b>GLFW_ACCUM_ALPHA_BITS</b> specify the desired bit depths of the various components of the accumulation buffer. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
233<p >Accumulation buffers are a legacy OpenGL feature and should not be used in new code.</p>
234<p ><a class="anchor" id="GLFW_AUX_BUFFERS"></a><b>GLFW_AUX_BUFFERS</b> specifies the desired number of auxiliary buffers. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
235<p >Auxiliary buffers are a legacy OpenGL feature and should not be used in new code.</p>
236<p ><a class="anchor" id="GLFW_STEREO"></a><b>GLFW_STEREO</b> specifies whether to use OpenGL stereoscopic rendering. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This is a hard constraint.</p>
237<p ><a class="anchor" id="GLFW_SAMPLES"></a><b>GLFW_SAMPLES</b> specifies the desired number of samples to use for multisampling. Zero disables multisampling. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
238<p ><a class="anchor" id="GLFW_SRGB_CAPABLE"></a><b>GLFW_SRGB_CAPABLE</b> specifies whether the framebuffer should be sRGB capable. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
239<dl class="section note"><dt>Note</dt><dd><b>OpenGL:</b> If enabled and supported by the system, the <code>GL_FRAMEBUFFER_SRGB</code> enable will control sRGB rendering. By default, sRGB rendering will be disabled.</dd>
240<dd>
241<b>OpenGL ES:</b> If enabled and supported by the system, the context will always have sRGB rendering enabled.</dd></dl>
242<p><a class="anchor" id="GLFW_DOUBLEBUFFER"></a><b>GLFW_DOUBLEBUFFER</b> specifies whether the framebuffer should be double buffered. You nearly always want to use double buffering. This is a hard constraint. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
243<h3><a class="anchor" id="window_hints_mtr"></a>
244Monitor related hints</h3>
245<p ><a class="anchor" id="GLFW_REFRESH_RATE"></a><b>GLFW_REFRESH_RATE</b> specifies the desired refresh rate for full screen windows. A value of <code>GLFW_DONT_CARE</code> means the highest available refresh rate will be used. This hint is ignored for windowed mode windows.</p>
246<h3><a class="anchor" id="window_hints_ctx"></a>
247Context related hints</h3>
248<p ><a class="anchor" id="GLFW_CLIENT_API_hint"></a><b>GLFW_CLIENT_API</b> specifies which client API to create the context for. Possible values are <code>GLFW_OPENGL_API</code>, <code>GLFW_OPENGL_ES_API</code> and <code>GLFW_NO_API</code>. This is a hard constraint.</p>
249<p ><a class="anchor" id="GLFW_CONTEXT_CREATION_API_hint"></a><b>GLFW_CONTEXT_CREATION_API</b> specifies which context creation API to use to create the context. Possible values are <code>GLFW_NATIVE_CONTEXT_API</code>, <code>GLFW_EGL_CONTEXT_API</code> and <code>GLFW_OSMESA_CONTEXT_API</code>. This is a hard constraint. If no client API is requested, this hint is ignored.</p>
250<p >An <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> that assumes it knows which API was used to create the current context may fail if you change this hint. This can be resolved by having it load functions via <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>.</p>
251<dl class="section note"><dt>Note</dt><dd><b>Wayland:</b> The EGL API <em>is</em> the native context creation API, so this hint will have no effect.</dd>
252<dd>
253<b>X11:</b> On some Linux systems, creating contexts via both the native and EGL APIs in a single process will cause the application to segfault. Stick to one API or the other on Linux for now.</dd>
254<dd>
255<b>OSMesa:</b> As its name implies, an OpenGL context created with OSMesa does not update the window contents when its buffers are swapped. Use OpenGL functions or the OSMesa native access functions <a class="el" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a> and <a class="el" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a> to retrieve the framebuffer contents.</dd></dl>
256<p><a class="anchor" id="GLFW_CONTEXT_VERSION_MAJOR_hint"></a><a class="anchor" id="GLFW_CONTEXT_VERSION_MINOR_hint"></a><b>GLFW_CONTEXT_VERSION_MAJOR</b> and <b>GLFW_CONTEXT_VERSION_MINOR</b> specify the client API version that the created context must be compatible with. The exact behavior of these hints depend on the requested client API.</p>
257<p >While there is no way to ask the driver for a context of the highest supported version, GLFW will attempt to provide this when you ask for a version 1.0 context, which is the default for these hints.</p>
258<p >Do not confuse these hints with <a class="el" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a> and <a class="el" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a>, which provide the API version of the GLFW header.</p>
259<dl class="section note"><dt>Note</dt><dd><b>OpenGL:</b> These hints are not hard constraints, but creation will fail if the OpenGL version of the created context is less than the one requested. It is therefore perfectly safe to use the default of version 1.0 for legacy code and you will still get backwards-compatible contexts of version 3.0 and above when available.</dd>
260<dd>
261<b>OpenGL ES:</b> These hints are not hard constraints, but creation will fail if the OpenGL ES version of the created context is less than the one requested. Additionally, OpenGL ES 1.x cannot be returned if 2.0 or later was requested, and vice versa. This is because OpenGL ES 3.x is backward compatible with 2.0, but OpenGL ES 2.0 is not backward compatible with 1.x.</dd>
262<dd>
263<b>macOS:</b> The OS only supports forward-compatible core profile contexts for OpenGL versions 3.2 and later. Before creating an OpenGL context of version 3.2 or later you must set the <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">GLFW_OPENGL_FORWARD_COMPAT</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">GLFW_OPENGL_PROFILE</a> hints accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.</dd></dl>
264<p><a class="anchor" id="GLFW_OPENGL_FORWARD_COMPAT_hint"></a><b>GLFW_OPENGL_FORWARD_COMPAT</b> specifies whether the OpenGL context should be forward-compatible, i.e. one where all functionality deprecated in the requested version of OpenGL is removed. This must only be used if the requested OpenGL version is 3.0 or above. If OpenGL ES is requested, this hint is ignored.</p>
265<p >Forward-compatibility is described in detail in the <a href="https://www.opengl.org/registry/">OpenGL Reference Manual</a>.</p>
266<p ><a class="anchor" id="GLFW_OPENGL_DEBUG_CONTEXT_hint"></a><b>GLFW_OPENGL_DEBUG_CONTEXT</b> specifies whether the context should be created in debug mode, which may provide additional error and diagnostic reporting functionality. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
267<p >Debug contexts for OpenGL and OpenGL ES are described in detail by the <a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt">GL_KHR_debug</a> extension.</p>
268<p ><a class="anchor" id="GLFW_OPENGL_PROFILE_hint"></a><b>GLFW_OPENGL_PROFILE</b> specifies which OpenGL profile to create the context for. Possible values are one of <code>GLFW_OPENGL_CORE_PROFILE</code> or <code>GLFW_OPENGL_COMPAT_PROFILE</code>, or <code>GLFW_OPENGL_ANY_PROFILE</code> to not request a specific profile. If requesting an OpenGL version below 3.2, <code>GLFW_OPENGL_ANY_PROFILE</code> must be used. If OpenGL ES is requested, this hint is ignored.</p>
269<p >OpenGL profiles are described in detail in the <a href="https://www.opengl.org/registry/">OpenGL Reference Manual</a>.</p>
270<p ><a class="anchor" id="GLFW_CONTEXT_ROBUSTNESS_hint"></a><b>GLFW_CONTEXT_ROBUSTNESS</b> specifies the robustness strategy to be used by the context. This can be one of <code>GLFW_NO_RESET_NOTIFICATION</code> or <code>GLFW_LOSE_CONTEXT_ON_RESET</code>, or <code>GLFW_NO_ROBUSTNESS</code> to not request a robustness strategy.</p>
271<p ><a class="anchor" id="GLFW_CONTEXT_RELEASE_BEHAVIOR_hint"></a><b>GLFW_CONTEXT_RELEASE_BEHAVIOR</b> specifies the release behavior to be used by the context. Possible values are one of <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code> or <code>GLFW_RELEASE_BEHAVIOR_NONE</code>. If the behavior is <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, the default behavior of the context creation API will be used. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code>, the pipeline will be flushed whenever the context is released from being the current one. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_NONE</code>, the pipeline will not be flushed on release.</p>
272<p >Context release behaviors are described in detail by the <a href="https://www.opengl.org/registry/specs/KHR/context_flush_control.txt">GL_KHR_context_flush_control</a> extension.</p>
273<p ><a class="anchor" id="GLFW_CONTEXT_NO_ERROR_hint"></a><b>GLFW_CONTEXT_NO_ERROR</b> specifies whether errors should be generated by the context. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. If enabled, situations that would have generated errors instead cause undefined behavior.</p>
274<p >The no error mode for OpenGL and OpenGL ES is described in detail by the <a href="https://www.opengl.org/registry/specs/KHR/no_error.txt">GL_KHR_no_error</a> extension.</p>
275<h3><a class="anchor" id="window_hints_osx"></a>
276macOS specific window hints</h3>
277<p ><a class="anchor" id="GLFW_COCOA_RETINA_FRAMEBUFFER_hint"></a><b>GLFW_COCOA_RETINA_FRAMEBUFFER</b> specifies whether to use full resolution framebuffers on Retina displays. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This is ignored on other platforms.</p>
278<p ><a class="anchor" id="GLFW_COCOA_FRAME_NAME_hint"></a><b>GLFW_COCOA_FRAME_NAME</b> specifies the UTF-8 encoded name to use for autosaving the window frame, or if empty disables frame autosaving for the window. This is ignored on other platforms. This is set with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>.</p>
279<p ><a class="anchor" id="GLFW_COCOA_GRAPHICS_SWITCHING_hint"></a><b>GLFW_COCOA_GRAPHICS_SWITCHING</b> specifies whether to in Automatic Graphics Switching, i.e. to allow the system to choose the integrated GPU for the OpenGL context and move it between GPUs if necessary or whether to force it to always run on the discrete GPU. This only affects systems with both integrated and discrete GPUs. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This is ignored on other platforms.</p>
280<p >Simpler programs and tools may want to enable this to save power, while games and other applications performing advanced rendering will want to leave it disabled.</p>
281<p >A bundled application that wishes to participate in Automatic Graphics Switching should also declare this in its <code>Info.plist</code> by setting the <code>NSSupportsAutomaticGraphicsSwitching</code> key to <code>true</code>.</p>
282<h3><a class="anchor" id="window_hints_x11"></a>
283X11 specific window hints</h3>
284<p ><a class="anchor" id="GLFW_X11_CLASS_NAME_hint"></a><a class="anchor" id="GLFW_X11_INSTANCE_NAME_hint"></a><b>GLFW_X11_CLASS_NAME</b> and <b>GLFW_X11_INSTANCE_NAME</b> specifies the desired ASCII encoded class and instance parts of the ICCCM <code>WM_CLASS</code> window property. These are set with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>.</p>
285<h3><a class="anchor" id="window_hints_values"></a>
286Supported and default values</h3>
287<table class="markdownTable">
288<tr class="markdownTableHead">
289<th class="markdownTableHeadNone">Window hint </th><th class="markdownTableHeadNone">Default value </th><th class="markdownTableHeadNone">Supported values </th></tr>
290<tr class="markdownTableRowOdd">
291<td class="markdownTableBodyNone">GLFW_RESIZABLE </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
292<tr class="markdownTableRowEven">
293<td class="markdownTableBodyNone">GLFW_VISIBLE </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
294<tr class="markdownTableRowOdd">
295<td class="markdownTableBodyNone">GLFW_DECORATED </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
296<tr class="markdownTableRowEven">
297<td class="markdownTableBodyNone">GLFW_FOCUSED </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
298<tr class="markdownTableRowOdd">
299<td class="markdownTableBodyNone">GLFW_AUTO_ICONIFY </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
300<tr class="markdownTableRowEven">
301<td class="markdownTableBodyNone">GLFW_FLOATING </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
302<tr class="markdownTableRowOdd">
303<td class="markdownTableBodyNone">GLFW_MAXIMIZED </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
304<tr class="markdownTableRowEven">
305<td class="markdownTableBodyNone">GLFW_CENTER_CURSOR </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
306<tr class="markdownTableRowOdd">
307<td class="markdownTableBodyNone">GLFW_TRANSPARENT_FRAMEBUFFER </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
308<tr class="markdownTableRowEven">
309<td class="markdownTableBodyNone">GLFW_FOCUS_ON_SHOW </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
310<tr class="markdownTableRowOdd">
311<td class="markdownTableBodyNone">GLFW_SCALE_TO_MONITOR </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
312<tr class="markdownTableRowEven">
313<td class="markdownTableBodyNone">GLFW_RED_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
314<tr class="markdownTableRowOdd">
315<td class="markdownTableBodyNone">GLFW_GREEN_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
316<tr class="markdownTableRowEven">
317<td class="markdownTableBodyNone">GLFW_BLUE_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
318<tr class="markdownTableRowOdd">
319<td class="markdownTableBodyNone">GLFW_ALPHA_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
320<tr class="markdownTableRowEven">
321<td class="markdownTableBodyNone">GLFW_DEPTH_BITS </td><td class="markdownTableBodyNone">24 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
322<tr class="markdownTableRowOdd">
323<td class="markdownTableBodyNone">GLFW_STENCIL_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
324<tr class="markdownTableRowEven">
325<td class="markdownTableBodyNone">GLFW_ACCUM_RED_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
326<tr class="markdownTableRowOdd">
327<td class="markdownTableBodyNone">GLFW_ACCUM_GREEN_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
328<tr class="markdownTableRowEven">
329<td class="markdownTableBodyNone">GLFW_ACCUM_BLUE_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
330<tr class="markdownTableRowOdd">
331<td class="markdownTableBodyNone">GLFW_ACCUM_ALPHA_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
332<tr class="markdownTableRowEven">
333<td class="markdownTableBodyNone">GLFW_AUX_BUFFERS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
334<tr class="markdownTableRowOdd">
335<td class="markdownTableBodyNone">GLFW_SAMPLES </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
336<tr class="markdownTableRowEven">
337<td class="markdownTableBodyNone">GLFW_REFRESH_RATE </td><td class="markdownTableBodyNone"><code>GLFW_DONT_CARE</code> </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
338<tr class="markdownTableRowOdd">
339<td class="markdownTableBodyNone">GLFW_STEREO </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
340<tr class="markdownTableRowEven">
341<td class="markdownTableBodyNone">GLFW_SRGB_CAPABLE </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
342<tr class="markdownTableRowOdd">
343<td class="markdownTableBodyNone">GLFW_DOUBLEBUFFER </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
344<tr class="markdownTableRowEven">
345<td class="markdownTableBodyNone">GLFW_CLIENT_API </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_API</code> </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_API</code>, <code>GLFW_OPENGL_ES_API</code> or <code>GLFW_NO_API</code> </td></tr>
346<tr class="markdownTableRowOdd">
347<td class="markdownTableBodyNone">GLFW_CONTEXT_CREATION_API </td><td class="markdownTableBodyNone"><code>GLFW_NATIVE_CONTEXT_API</code> </td><td class="markdownTableBodyNone"><code>GLFW_NATIVE_CONTEXT_API</code>, <code>GLFW_EGL_CONTEXT_API</code> or <code>GLFW_OSMESA_CONTEXT_API</code> </td></tr>
348<tr class="markdownTableRowEven">
349<td class="markdownTableBodyNone">GLFW_CONTEXT_VERSION_MAJOR </td><td class="markdownTableBodyNone">1 </td><td class="markdownTableBodyNone">Any valid major version number of the chosen client API </td></tr>
350<tr class="markdownTableRowOdd">
351<td class="markdownTableBodyNone">GLFW_CONTEXT_VERSION_MINOR </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">Any valid minor version number of the chosen client API </td></tr>
352<tr class="markdownTableRowEven">
353<td class="markdownTableBodyNone">GLFW_CONTEXT_ROBUSTNESS </td><td class="markdownTableBodyNone"><code>GLFW_NO_ROBUSTNESS</code> </td><td class="markdownTableBodyNone"><code>GLFW_NO_ROBUSTNESS</code>, <code>GLFW_NO_RESET_NOTIFICATION</code> or <code>GLFW_LOSE_CONTEXT_ON_RESET</code> </td></tr>
354<tr class="markdownTableRowOdd">
355<td class="markdownTableBodyNone">GLFW_CONTEXT_RELEASE_BEHAVIOR </td><td class="markdownTableBodyNone"><code>GLFW_ANY_RELEASE_BEHAVIOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_ANY_RELEASE_BEHAVIOR</code>, <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code> or <code>GLFW_RELEASE_BEHAVIOR_NONE</code> </td></tr>
356<tr class="markdownTableRowEven">
357<td class="markdownTableBodyNone">GLFW_OPENGL_FORWARD_COMPAT </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
358<tr class="markdownTableRowOdd">
359<td class="markdownTableBodyNone">GLFW_OPENGL_DEBUG_CONTEXT </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
360<tr class="markdownTableRowEven">
361<td class="markdownTableBodyNone">GLFW_OPENGL_PROFILE </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_ANY_PROFILE</code> </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_ANY_PROFILE</code>, <code>GLFW_OPENGL_COMPAT_PROFILE</code> or <code>GLFW_OPENGL_CORE_PROFILE</code> </td></tr>
362<tr class="markdownTableRowOdd">
363<td class="markdownTableBodyNone">GLFW_COCOA_RETINA_FRAMEBUFFER </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
364<tr class="markdownTableRowEven">
365<td class="markdownTableBodyNone">GLFW_COCOA_FRAME_NAME </td><td class="markdownTableBodyNone"><code>""</code> </td><td class="markdownTableBodyNone">A UTF-8 encoded frame autosave name </td></tr>
366<tr class="markdownTableRowOdd">
367<td class="markdownTableBodyNone">GLFW_COCOA_GRAPHICS_SWITCHING </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
368<tr class="markdownTableRowEven">
369<td class="markdownTableBodyNone">GLFW_X11_CLASS_NAME </td><td class="markdownTableBodyNone"><code>""</code> </td><td class="markdownTableBodyNone">An ASCII encoded <code>WM_CLASS</code> class name </td></tr>
370<tr class="markdownTableRowOdd">
371<td class="markdownTableBodyNone">GLFW_X11_INSTANCE_NAME </td><td class="markdownTableBodyNone"><code>""</code> </td><td class="markdownTableBodyNone">An ASCII encoded <code>WM_CLASS</code> instance name </td></tr>
372</table>
373<h1><a class="anchor" id="window_events"></a>
374Window event processing</h1>
375<p >See <a class="el" href="input_guide.html#events">Event processing</a>.</p>
376<h1><a class="anchor" id="window_properties"></a>
377Window properties and events</h1>
378<h2><a class="anchor" id="window_userptr"></a>
379User pointer</h2>
380<p >Each window has a user pointer that can be set with <a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a> and queried with <a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a>. This can be used for any purpose you need and will not be modified by GLFW throughout the life-time of the window.</p>
381<p >The initial value of the pointer is <code>NULL</code>.</p>
382<h2><a class="anchor" id="window_close"></a>
383Window closing and close flag</h2>
384<p >When the user attempts to close the window, for example by clicking the close widget or using a key chord like Alt+F4, the <em>close flag</em> of the window is set. The window is however not actually destroyed and, unless you watch for this state change, nothing further happens.</p>
385<p >The current state of the close flag is returned by <a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> and can be set or cleared directly with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>. A common pattern is to use the close flag as a main loop condition.</p>
386<div class="fragment"><div class="line"><span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
387<div class="line">{</div>
388<div class="line"> render(window);</div>
389<div class="line"> </div>
390<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
391<div class="line"> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
392<div class="line">}</div>
393<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
394<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
395<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
396</div><!-- fragment --><p >If you wish to be notified when the user attempts to close a window, set a close callback.</p>
397<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a>(window, window_close_callback);</div>
398<div class="ttc" id="agroup__window_html_gada646d775a7776a95ac000cfc1885331"><div class="ttname"><a href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a></div><div class="ttdeci">GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun callback)</div><div class="ttdoc">Sets the close callback for the specified window.</div></div>
399</div><!-- fragment --><p >The callback function is called directly <em>after</em> the close flag has been set. It can be used for example to filter close requests and clear the close flag again unless certain conditions are met.</p>
400<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_close_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
401<div class="line">{</div>
402<div class="line"> <span class="keywordflow">if</span> (!time_to_close)</div>
403<div class="line"> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(window, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
404<div class="line">}</div>
405<div class="ttc" id="agroup__init_html_gac877fe3b627d21ef3a0a23e0a73ba8c5"><div class="ttname"><a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a></div><div class="ttdeci">#define GLFW_FALSE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> glfw3.h:322</div></div>
406<div class="ttc" id="agroup__window_html_ga49c449dde2a6f87d996f4daaa09d6708"><div class="ttname"><a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></div><div class="ttdeci">void glfwSetWindowShouldClose(GLFWwindow *window, int value)</div><div class="ttdoc">Sets the close flag of the specified window.</div></div>
407</div><!-- fragment --><h2><a class="anchor" id="window_size"></a>
408Window size</h2>
409<p >The size of a window can be changed with <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>. For windowed mode windows, this sets the size, in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a> of the <em>content area</em> or <em>content area</em> of the window. The window system may impose limits on window size.</p>
410<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>(window, 640, 480);</div>
411<div class="ttc" id="agroup__window_html_ga371911f12c74c504dd8d47d832d095cb"><div class="ttname"><a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></div><div class="ttdeci">void glfwSetWindowSize(GLFWwindow *window, int width, int height)</div><div class="ttdoc">Sets the size of the content area of the specified window.</div></div>
412</div><!-- fragment --><p >For full screen windows, the specified size becomes the new resolution of the window's desired video mode. The video mode most closely matching the new desired video mode is set immediately. The window is resized to fit the resolution of the set video mode.</p>
413<p >If you wish to be notified when a window is resized, whether by the user, the system or your own code, set a size callback.</p>
414<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a>(window, window_size_callback);</div>
415<div class="ttc" id="agroup__window_html_gad91b8b047a0c4c6033c38853864c34f8"><div class="ttname"><a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a></div><div class="ttdeci">GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun callback)</div><div class="ttdoc">Sets the size callback for the specified window.</div></div>
416</div><!-- fragment --><p >The callback function receives the new size, in screen coordinates, of the content area of the window when the window is resized.</p>
417<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_size_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
418<div class="line">{</div>
419<div class="line">}</div>
420</div><!-- fragment --><p >There is also <a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> for directly retrieving the current size of a window.</p>
421<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
422<div class="line"><a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(window, &amp;width, &amp;height);</div>
423<div class="ttc" id="agroup__window_html_gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><div class="ttname"><a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a></div><div class="ttdeci">void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the content area of the specified window.</div></div>
424</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Do not pass the window size to <code>glViewport</code> or other pixel-based OpenGL calls. The window size is in screen coordinates, not pixels. Use the <a class="el" href="window_guide.html#window_fbsize">framebuffer size</a>, which is in pixels, for pixel-based calls.</dd></dl>
425<p>The above functions work with the size of the content area, but decorated windows typically have title bars and window frames around this rectangle. You can retrieve the extents of these with <a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>.</p>
426<div class="fragment"><div class="line"><span class="keywordtype">int</span> left, top, right, bottom;</div>
427<div class="line"><a class="code hl_function" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>(window, &amp;left, &amp;top, &amp;right, &amp;bottom);</div>
428<div class="ttc" id="agroup__window_html_ga1a9fd382058c53101b21cf211898f1f1"><div class="ttname"><a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a></div><div class="ttdeci">void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)</div><div class="ttdoc">Retrieves the size of the frame of the window.</div></div>
429</div><!-- fragment --><p >The returned values are the distances, in screen coordinates, from the edges of the content area to the corresponding edges of the full window. As they are distances and not coordinates, they are always zero or positive.</p>
430<h2><a class="anchor" id="window_fbsize"></a>
431Framebuffer size</h2>
432<p >While the size of a window is measured in screen coordinates, OpenGL works with pixels. The size you pass into <code>glViewport</code>, for example, should be in pixels. On some machines screen coordinates and pixels are the same, but on others they will not be. There is a second set of functions to retrieve the size, in pixels, of the framebuffer of a window.</p>
433<p >If you wish to be notified when the framebuffer of a window is resized, whether by the user or the system, set a size callback.</p>
434<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a>(window, framebuffer_size_callback);</div>
435<div class="ttc" id="agroup__window_html_gab3fb7c3366577daef18c0023e2a8591f"><div class="ttname"><a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></div><div class="ttdeci">GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun callback)</div><div class="ttdoc">Sets the framebuffer resize callback for the specified window.</div></div>
436</div><!-- fragment --><p >The callback function receives the new size of the framebuffer when it is resized, which can for example be used to update the OpenGL viewport.</p>
437<div class="fragment"><div class="line"><span class="keywordtype">void</span> framebuffer_size_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
438<div class="line">{</div>
439<div class="line"> glViewport(0, 0, width, height);</div>
440<div class="line">}</div>
441</div><!-- fragment --><p >There is also <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> for directly retrieving the current size of the framebuffer of a window.</p>
442<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
443<div class="line"><a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
444<div class="line">glViewport(0, 0, width, height);</div>
445<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
446</div><!-- fragment --><p >The size of a framebuffer may change independently of the size of a window, for example if the window is dragged between a regular monitor and a high-DPI one.</p>
447<h2><a class="anchor" id="window_scale"></a>
448Window content scale</h2>
449<p >The content scale for a window can be retrieved with <a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a>.</p>
450<div class="fragment"><div class="line"><span class="keywordtype">float</span> xscale, yscale;</div>
451<div class="line"><a class="code hl_function" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a>(window, &amp;xscale, &amp;yscale);</div>
452<div class="ttc" id="agroup__window_html_gaf5d31de9c19c4f994facea64d2b3106c"><div class="ttname"><a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></div><div class="ttdeci">void glfwGetWindowContentScale(GLFWwindow *window, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified window.</div></div>
453</div><!-- fragment --><p >The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
454<p >On systems where each monitors can have its own content scale, the window content scale will depend on which monitor the system considers the window to be on.</p>
455<p >If you wish to be notified when the content scale of a window changes, whether because of a system setting change or because it was moved to a monitor with a different scale, set a content scale callback.</p>
456<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a>(window, window_content_scale_callback);</div>
457<div class="ttc" id="agroup__window_html_gaf2832ebb5aa6c252a2d261de002c92d6"><div class="ttname"><a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></div><div class="ttdeci">GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow *window, GLFWwindowcontentscalefun callback)</div><div class="ttdoc">Sets the window content scale callback for the specified window.</div></div>
458</div><!-- fragment --><p >The callback function receives the new content scale of the window.</p>
459<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_content_scale_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale)</div>
460<div class="line">{</div>
461<div class="line"> set_interface_scale(xscale, yscale);</div>
462<div class="line">}</div>
463</div><!-- fragment --><p >On platforms where pixels and screen coordinates always map 1:1, the window will need to be resized to appear the same size when it is moved to a monitor with a different content scale. To have this done automatically both when the window is created and when its content scale later changes, set the <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">GLFW_SCALE_TO_MONITOR</a> window hint.</p>
464<h2><a class="anchor" id="window_sizelimits"></a>
465Window size limits</h2>
466<p >The minimum and maximum size of the content area of a windowed mode window can be enforced with <a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>. The user may resize the window to any size and aspect ratio within the specified limits, unless the aspect ratio is also set.</p>
467<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>(window, 200, 200, 400, 400);</div>
468<div class="ttc" id="agroup__window_html_gac314fa6cec7d2d307be9963e2709cc90"><div class="ttname"><a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a></div><div class="ttdeci">void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)</div><div class="ttdoc">Sets the size limits of the specified window.</div></div>
469</div><!-- fragment --><p >To specify only a minimum size or only a maximum one, set the other pair to <code>GLFW_DONT_CARE</code>.</p>
470<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>(window, 640, 480, <a class="code hl_define" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a>, <a class="code hl_define" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a>);</div>
471<div class="ttc" id="aglfw3_8h_html_a7a2edf2c18446833d27d07f1b7f3d571"><div class="ttname"><a href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a></div><div class="ttdeci">#define GLFW_DONT_CARE</div><div class="ttdef"><b>Definition:</b> glfw3.h:1129</div></div>
472</div><!-- fragment --><p >To disable size limits for a window, set them all to <code>GLFW_DONT_CARE</code>.</p>
473<p >The aspect ratio of the content area of a windowed mode window can be enforced with <a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>. The user may resize the window freely unless size limits are also set, but the size will be constrained to maintain the aspect ratio.</p>
474<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>(window, 16, 9);</div>
475<div class="ttc" id="agroup__window_html_ga72ac8cb1ee2e312a878b55153d81b937"><div class="ttname"><a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a></div><div class="ttdeci">void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)</div><div class="ttdoc">Sets the aspect ratio of the specified window.</div></div>
476</div><!-- fragment --><p >The aspect ratio is specified as a numerator and denominator, corresponding to the width and height, respectively. If you want a window to maintain its current aspect ratio, use its current size as the ratio.</p>
477<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
478<div class="line"><a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(window, &amp;width, &amp;height);</div>
479<div class="line"><a class="code hl_function" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>(window, width, height);</div>
480</div><!-- fragment --><p >To disable the aspect ratio limit for a window, set both terms to <code>GLFW_DONT_CARE</code>.</p>
481<p >You can have both size limits and aspect ratio set for a window, but the results are undefined if they conflict.</p>
482<h2><a class="anchor" id="window_pos"></a>
483Window position</h2>
484<p >The position of a windowed-mode window can be changed with <a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a>. This moves the window so that the upper-left corner of its content area has the specified <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a>. The window system may put limitations on window placement.</p>
485<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a>(window, 100, 100);</div>
486<div class="ttc" id="agroup__window_html_ga1abb6d690e8c88e0c8cd1751356dbca8"><div class="ttname"><a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a></div><div class="ttdeci">void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)</div><div class="ttdoc">Sets the position of the content area of the specified window.</div></div>
487</div><!-- fragment --><p >If you wish to be notified when a window is moved, whether by the user, the system or your own code, set a position callback.</p>
488<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a>(window, window_pos_callback);</div>
489<div class="ttc" id="agroup__window_html_ga08bdfbba88934f9c4f92fd757979ac74"><div class="ttname"><a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a></div><div class="ttdeci">GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun callback)</div><div class="ttdoc">Sets the position callback for the specified window.</div></div>
490</div><!-- fragment --><p >The callback function receives the new position, in screen coordinates, of the upper-left corner of the content area when the window is moved.</p>
491<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_pos_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos)</div>
492<div class="line">{</div>
493<div class="line">}</div>
494</div><!-- fragment --><p >There is also <a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a> for directly retrieving the current position of the content area of the window.</p>
495<div class="fragment"><div class="line"><span class="keywordtype">int</span> xpos, ypos;</div>
496<div class="line"><a class="code hl_function" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a>(window, &amp;xpos, &amp;ypos);</div>
497<div class="ttc" id="agroup__window_html_ga73cb526c000876fd8ddf571570fdb634"><div class="ttname"><a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a></div><div class="ttdeci">void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)</div><div class="ttdoc">Retrieves the position of the content area of the specified window.</div></div>
498</div><!-- fragment --><h2><a class="anchor" id="window_title"></a>
499Window title</h2>
500<p >All GLFW windows have a title, although undecorated or full screen windows may not display it or only display it in a task bar or similar interface. You can set a UTF-8 encoded window title with <a class="el" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>.</p>
501<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, <span class="stringliteral">&quot;My Window&quot;</span>);</div>
502<div class="ttc" id="agroup__window_html_ga5d877f09e968cef7a360b513306f17ff"><div class="ttname"><a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a></div><div class="ttdeci">void glfwSetWindowTitle(GLFWwindow *window, const char *title)</div><div class="ttdoc">Sets the title of the specified window.</div></div>
503</div><!-- fragment --><p >The specified string is copied before the function returns, so there is no need to keep it around.</p>
504<p >As long as your source file is encoded as UTF-8, you can use any Unicode characters directly in the source.</p>
505<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, <span class="stringliteral">&quot;ラストエグザイル&quot;</span>);</div>
506</div><!-- fragment --><p >If you are using C++11 or C11, you can use a UTF-8 string literal.</p>
507<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, u8<span class="stringliteral">&quot;This is always a UTF-8 string&quot;</span>);</div>
508</div><!-- fragment --><h2><a class="anchor" id="window_icon"></a>
509Window icon</h2>
510<p >Decorated windows have icons on some platforms. You can set this icon by specifying a list of candidate images with <a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>.</p>
511<div class="fragment"><div class="line"><a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a> images[2];</div>
512<div class="line">images[0] = load_icon(<span class="stringliteral">&quot;my_icon.png&quot;</span>);</div>
513<div class="line">images[1] = load_icon(<span class="stringliteral">&quot;my_icon_small.png&quot;</span>);</div>
514<div class="line"> </div>
515<div class="line"><a class="code hl_function" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>(window, 2, images);</div>
516<div class="ttc" id="agroup__window_html_gadd7ccd39fe7a7d1f0904666ae5932dc5"><div class="ttname"><a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a></div><div class="ttdeci">void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)</div><div class="ttdoc">Sets the icon for the specified window.</div></div>
517<div class="ttc" id="astructGLFWimage_html"><div class="ttname"><a href="structGLFWimage.html">GLFWimage</a></div><div class="ttdoc">Image data.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1722</div></div>
518</div><!-- fragment --><p >The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. The pixels are arranged canonically as sequential rows, starting from the top-left corner.</p>
519<p >To revert to the default window icon, pass in an empty image array.</p>
520<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>(window, 0, NULL);</div>
521</div><!-- fragment --><h2><a class="anchor" id="window_monitor"></a>
522Window monitor</h2>
523<p >Full screen windows are associated with a specific monitor. You can get the handle for this monitor with <a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a>.</p>
524<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor = <a class="code hl_function" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a>(window);</div>
525<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1174</div></div>
526<div class="ttc" id="agroup__window_html_ga4d766499ac02c60f02221a9dfab87299"><div class="ttname"><a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)</div><div class="ttdoc">Returns the monitor that the window uses for full screen mode.</div></div>
527</div><!-- fragment --><p >This monitor handle is one of those returned by <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>.</p>
528<p >For windowed mode windows, this function returns <code>NULL</code>. This is how to tell full screen windows from windowed mode windows.</p>
529<p >You can move windows between monitors or between full screen and windowed mode with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>. When making a window full screen on the same or on a different monitor, specify the desired monitor, resolution and refresh rate. The position arguments are ignored.</p>
530<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
531<div class="line"> </div>
532<div class="line"><a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(window, monitor, 0, 0, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>);</div>
533</div><!-- fragment --><p >When making the window windowed, specify the desired position and size. The refresh rate argument is ignored.</p>
534<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(window, NULL, xpos, ypos, width, height, 0);</div>
535</div><!-- fragment --><p >This restores any previous window settings such as whether it is decorated, floating, resizable, has size or aspect ratio limits, etc.. To restore a window that was originally windowed to its original size and position, save these before making it full screen and then pass them in as above.</p>
536<h2><a class="anchor" id="window_iconify"></a>
537Window iconification</h2>
538<p >Windows can be iconified (i.e. minimized) with <a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a>.</p>
539<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a>(window);</div>
540<div class="ttc" id="agroup__window_html_ga1bb559c0ebaad63c5c05ad2a066779c4"><div class="ttname"><a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a></div><div class="ttdeci">void glfwIconifyWindow(GLFWwindow *window)</div><div class="ttdoc">Iconifies the specified window.</div></div>
541</div><!-- fragment --><p >When a full screen window is iconified, the original video mode of its monitor is restored until the user or application restores the window.</p>
542<p >Iconified windows can be restored with <a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>. This function also restores windows from maximization.</p>
543<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>(window);</div>
544<div class="ttc" id="agroup__window_html_ga52527a5904b47d802b6b4bb519cdebc7"><div class="ttname"><a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a></div><div class="ttdeci">void glfwRestoreWindow(GLFWwindow *window)</div><div class="ttdoc">Restores the specified window.</div></div>
545</div><!-- fragment --><p >When a full screen window is restored, the desired video mode is restored to its monitor as well.</p>
546<p >If you wish to be notified when a window is iconified or restored, whether by the user, system or your own code, set an iconify callback.</p>
547<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a>(window, window_iconify_callback);</div>
548<div class="ttc" id="agroup__window_html_gac793e9efd255567b5fb8b445052cfd3e"><div class="ttname"><a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a></div><div class="ttdeci">GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun callback)</div><div class="ttdoc">Sets the iconify callback for the specified window.</div></div>
549</div><!-- fragment --><p >The callback function receives changes in the iconification state of the window.</p>
550<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_iconify_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified)</div>
551<div class="line">{</div>
552<div class="line"> <span class="keywordflow">if</span> (iconified)</div>
553<div class="line"> {</div>
554<div class="line"> <span class="comment">// The window was iconified</span></div>
555<div class="line"> }</div>
556<div class="line"> <span class="keywordflow">else</span></div>
557<div class="line"> {</div>
558<div class="line"> <span class="comment">// The window was restored</span></div>
559<div class="line"> }</div>
560<div class="line">}</div>
561</div><!-- fragment --><p >You can also get the current iconification state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
562<div class="fragment"><div class="line"><span class="keywordtype">int</span> iconified = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a>);</div>
563<div class="ttc" id="agroup__window_html_ga39d44b7c056e55e581355a92d240b58a"><div class="ttname"><a href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a></div><div class="ttdeci">#define GLFW_ICONIFIED</div><div class="ttdoc">Window iconification window attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:803</div></div>
564<div class="ttc" id="agroup__window_html_gacccb29947ea4b16860ebef42c2cb9337"><div class="ttname"><a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></div><div class="ttdeci">int glfwGetWindowAttrib(GLFWwindow *window, int attrib)</div><div class="ttdoc">Returns an attribute of the specified window.</div></div>
565</div><!-- fragment --><h2><a class="anchor" id="window_maximize"></a>
566Window maximization</h2>
567<p >Windows can be maximized (i.e. zoomed) with <a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>.</p>
568<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>(window);</div>
569<div class="ttc" id="agroup__window_html_ga3f541387449d911274324ae7f17ec56b"><div class="ttname"><a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></div><div class="ttdeci">void glfwMaximizeWindow(GLFWwindow *window)</div><div class="ttdoc">Maximizes the specified window.</div></div>
570</div><!-- fragment --><p >Full screen windows cannot be maximized and passing a full screen window to this function does nothing.</p>
571<p >Maximized windows can be restored with <a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>. This function also restores windows from iconification.</p>
572<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>(window);</div>
573</div><!-- fragment --><p >If you wish to be notified when a window is maximized or restored, whether by the user, system or your own code, set a maximize callback.</p>
574<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a>(window, window_maximize_callback);</div>
575<div class="ttc" id="agroup__window_html_gacbe64c339fbd94885e62145563b6dc93"><div class="ttname"><a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a></div><div class="ttdeci">GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow *window, GLFWwindowmaximizefun callback)</div><div class="ttdoc">Sets the maximize callback for the specified window.</div></div>
576</div><!-- fragment --><p >The callback function receives changes in the maximization state of the window.</p>
577<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_maximize_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized)</div>
578<div class="line">{</div>
579<div class="line"> <span class="keywordflow">if</span> (maximized)</div>
580<div class="line"> {</div>
581<div class="line"> <span class="comment">// The window was maximized</span></div>
582<div class="line"> }</div>
583<div class="line"> <span class="keywordflow">else</span></div>
584<div class="line"> {</div>
585<div class="line"> <span class="comment">// The window was restored</span></div>
586<div class="line"> }</div>
587<div class="line">}</div>
588</div><!-- fragment --><p >You can also get the current maximization state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
589<div class="fragment"><div class="line"><span class="keywordtype">int</span> maximized = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>);</div>
590<div class="ttc" id="agroup__window_html_gad8ccb396253ad0b72c6d4c917eb38a03"><div class="ttname"><a href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a></div><div class="ttdeci">#define GLFW_MAXIMIZED</div><div class="ttdoc">Window maximization window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:839</div></div>
591</div><!-- fragment --><p >By default, newly created windows are not maximized. You can change this behavior by setting the <a class="el" href="window_guide.html#GLFW_MAXIMIZED_hint">GLFW_MAXIMIZED</a> window hint before creating the window.</p>
592<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
593<div class="ttc" id="agroup__init_html_ga2744fbb29b5631bb28802dbe0cf36eba"><div class="ttname"><a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a></div><div class="ttdeci">#define GLFW_TRUE</div><div class="ttdoc">One.</div><div class="ttdef"><b>Definition:</b> glfw3.h:313</div></div>
594</div><!-- fragment --><h2><a class="anchor" id="window_hide"></a>
595Window visibility</h2>
596<p >Windowed mode windows can be hidden with <a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>.</p>
597<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>(window);</div>
598<div class="ttc" id="agroup__window_html_ga49401f82a1ba5f15db5590728314d47c"><div class="ttname"><a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a></div><div class="ttdeci">void glfwHideWindow(GLFWwindow *window)</div><div class="ttdoc">Hides the specified window.</div></div>
599</div><!-- fragment --><p >This makes the window completely invisible to the user, including removing it from the task bar, dock or window list. Full screen windows cannot be hidden and calling <a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a> on a full screen window does nothing.</p>
600<p >Hidden windows can be shown with <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>.</p>
601<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>(window);</div>
602<div class="ttc" id="agroup__window_html_ga61be47917b72536a148300f46494fc66"><div class="ttname"><a href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a></div><div class="ttdeci">void glfwShowWindow(GLFWwindow *window)</div><div class="ttdoc">Makes the specified window visible.</div></div>
603</div><!-- fragment --><p >By default, this function will also set the input focus to that window. Set the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> window hint to change this behavior for all newly created windows, or change the behavior for an existing window with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
604<p >You can also get the current visibility state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
605<div class="fragment"><div class="line"><span class="keywordtype">int</span> visible = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>);</div>
606<div class="ttc" id="agroup__window_html_gafb3cdc45297e06d8f1eb13adc69ca6c4"><div class="ttname"><a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a></div><div class="ttdeci">#define GLFW_VISIBLE</div><div class="ttdoc">Window visibility window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:815</div></div>
607</div><!-- fragment --><p >By default, newly created windows are visible. You can change this behavior by setting the <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">GLFW_VISIBLE</a> window hint before creating the window.</p>
608<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
609</div><!-- fragment --><p >Windows created hidden are completely invisible to the user until shown. This can be useful if you need to set up your window further before showing it, for example moving it to a specific location.</p>
610<h2><a class="anchor" id="window_focus"></a>
611Window input focus</h2>
612<p >Windows can be given input focus and brought to the front with <a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>.</p>
613<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>(window);</div>
614<div class="ttc" id="agroup__window_html_ga873780357abd3f3a081d71a40aae45a1"><div class="ttname"><a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a></div><div class="ttdeci">void glfwFocusWindow(GLFWwindow *window)</div><div class="ttdoc">Brings the specified window to front and sets input focus.</div></div>
615</div><!-- fragment --><p >Keep in mind that it can be very disruptive to the user when a window is forced to the top. For a less disruptive way of getting the user's attention, see <a class="el" href="window_guide.html#window_attention">attention requests</a>.</p>
616<p >If you wish to be notified when a window gains or loses input focus, whether by the user, system or your own code, set a focus callback.</p>
617<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a>(window, window_focus_callback);</div>
618<div class="ttc" id="agroup__window_html_gac2d83c4a10f071baf841f6730528e66c"><div class="ttname"><a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a></div><div class="ttdeci">GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun callback)</div><div class="ttdoc">Sets the focus callback for the specified window.</div></div>
619</div><!-- fragment --><p >The callback function receives changes in the input focus state of the window.</p>
620<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_focus_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused)</div>
621<div class="line">{</div>
622<div class="line"> <span class="keywordflow">if</span> (focused)</div>
623<div class="line"> {</div>
624<div class="line"> <span class="comment">// The window gained input focus</span></div>
625<div class="line"> }</div>
626<div class="line"> <span class="keywordflow">else</span></div>
627<div class="line"> {</div>
628<div class="line"> <span class="comment">// The window lost input focus</span></div>
629<div class="line"> }</div>
630<div class="line">}</div>
631</div><!-- fragment --><p >You can also get the current input focus state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
632<div class="fragment"><div class="line"><span class="keywordtype">int</span> focused = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>);</div>
633<div class="ttc" id="agroup__window_html_ga54ddb14825a1541a56e22afb5f832a9e"><div class="ttname"><a href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a></div><div class="ttdeci">#define GLFW_FOCUSED</div><div class="ttdoc">Input focus window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:798</div></div>
634</div><!-- fragment --><p >By default, newly created windows are given input focus. You can change this behavior by setting the <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">GLFW_FOCUSED</a> window hint before creating the window.</p>
635<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
636</div><!-- fragment --><h2><a class="anchor" id="window_attention"></a>
637Window attention request</h2>
638<p >If you wish to notify the user of an event without interrupting, you can request attention with <a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>.</p>
639<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>(window);</div>
640<div class="ttc" id="agroup__window_html_ga2f8d59323fc4692c1d54ba08c863a703"><div class="ttname"><a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a></div><div class="ttdeci">void glfwRequestWindowAttention(GLFWwindow *window)</div><div class="ttdoc">Requests user attention to the specified window.</div></div>
641</div><!-- fragment --><p >The system will highlight the specified window, or on platforms where this is not supported, the application as a whole. Once the user has given it attention, the system will automatically end the request.</p>
642<h2><a class="anchor" id="window_refresh"></a>
643Window damage and refresh</h2>
644<p >If you wish to be notified when the contents of a window is damaged and needs to be refreshed, set a window refresh callback.</p>
645<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a>(m_handle, window_refresh_callback);</div>
646<div class="ttc" id="agroup__window_html_ga1c5c7eb889c33c7f4d10dd35b327654e"><div class="ttname"><a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a></div><div class="ttdeci">GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun callback)</div><div class="ttdoc">Sets the refresh callback for the specified window.</div></div>
647</div><!-- fragment --><p >The callback function is called when the contents of the window needs to be refreshed.</p>
648<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_refresh_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
649<div class="line">{</div>
650<div class="line"> draw_editor_ui(window);</div>
651<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
652<div class="line">}</div>
653</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>On compositing window systems such as Aero, Compiz or Aqua, where the window contents are saved off-screen, this callback might only be called when the window or framebuffer is resized.</dd></dl>
654<h2><a class="anchor" id="window_transparency"></a>
655Window transparency</h2>
656<p >GLFW supports two kinds of transparency for windows; framebuffer transparency and whole window transparency. A single window may not use both methods. The results of doing this are undefined.</p>
657<p >Both methods require the platform to support it and not every version of every platform GLFW supports does this, so there are mechanisms to check whether the window really is transparent.</p>
658<p >Window framebuffers can be made transparent on a per-pixel per-frame basis with the <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_hint">GLFW_TRANSPARENT_FRAMEBUFFER</a> window hint.</p>
659<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
660<div class="ttc" id="agroup__window_html_ga60a0578c3b9449027d683a9c6abb9f14"><div class="ttname"><a href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a></div><div class="ttdeci">#define GLFW_TRANSPARENT_FRAMEBUFFER</div><div class="ttdoc">Window framebuffer transparency hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:851</div></div>
661</div><!-- fragment --><p >If supported by the system, the window content area will be composited with the background using the framebuffer per-pixel alpha channel. This requires desktop compositing to be enabled on the system. It does not affect window decorations.</p>
662<p >You can check whether the window framebuffer was successfully made transparent with the <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_attrib">GLFW_TRANSPARENT_FRAMEBUFFER</a> window attribute.</p>
663<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>))</div>
664<div class="line">{</div>
665<div class="line"> <span class="comment">// window framebuffer is currently transparent</span></div>
666<div class="line">}</div>
667</div><!-- fragment --><p >GLFW comes with an example that enabled framebuffer transparency called <code>gears</code>.</p>
668<p >The opacity of the whole window, including any decorations, can be set with <a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>.</p>
669<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>(window, 0.5f);</div>
670<div class="ttc" id="agroup__window_html_gac31caeb3d1088831b13d2c8a156802e9"><div class="ttname"><a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></div><div class="ttdeci">void glfwSetWindowOpacity(GLFWwindow *window, float opacity)</div><div class="ttdoc">Sets the opacity of the whole window.</div></div>
671</div><!-- fragment --><p >The opacity (or alpha) value is a positive finite number between zero and one, where 0 (zero) is fully transparent and 1 (one) is fully opaque. The initial opacity value for newly created windows is 1.</p>
672<p >The current opacity of a window can be queried with <a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a>.</p>
673<div class="fragment"><div class="line"><span class="keywordtype">float</span> opacity = <a class="code hl_function" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a>(window);</div>
674<div class="ttc" id="agroup__window_html_gad09f0bd7a6307c4533b7061828480a84"><div class="ttname"><a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></div><div class="ttdeci">float glfwGetWindowOpacity(GLFWwindow *window)</div><div class="ttdoc">Returns the opacity of the whole window.</div></div>
675</div><!-- fragment --><p >If the system does not support whole window transparency, this function always returns one.</p>
676<p >GLFW comes with a test program that lets you control whole window transparency at run-time called <code>opacity</code>.</p>
677<h2><a class="anchor" id="window_attribs"></a>
678Window attributes</h2>
679<p >Windows have a number of attributes that can be returned using <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>. Some reflect state that may change as a result of user interaction, (e.g. whether it has input focus), while others reflect inherent properties of the window (e.g. what kind of border it has). Some are related to the window and others to its OpenGL or OpenGL ES context.</p>
680<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>))</div>
681<div class="line">{</div>
682<div class="line"> <span class="comment">// window has input focus</span></div>
683<div class="line">}</div>
684</div><!-- fragment --><p >The <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">GLFW_DECORATED</a>, <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">GLFW_RESIZABLE</a>, <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">GLFW_FLOATING</a>, <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">GLFW_AUTO_ICONIFY</a> and <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">GLFW_FOCUS_ON_SHOW</a> window attributes can be changed with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
685<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
686<div class="ttc" id="agroup__window_html_gace2afda29b4116ec012e410a6819033e"><div class="ttname"><a href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></div><div class="ttdeci">void glfwSetWindowAttrib(GLFWwindow *window, int attrib, int value)</div><div class="ttdoc">Sets an attribute of the specified window.</div></div>
687<div class="ttc" id="agroup__window_html_gadba13c7a1b3aa40831eb2beedbd5bd1d"><div class="ttname"><a href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a></div><div class="ttdeci">#define GLFW_RESIZABLE</div><div class="ttdoc">Window resize-ability window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:809</div></div>
688</div><!-- fragment --><h3><a class="anchor" id="window_attribs_wnd"></a>
689Window related attributes</h3>
690<p ><a class="anchor" id="GLFW_FOCUSED_attrib"></a><b>GLFW_FOCUSED</b> indicates whether the specified window has input focus. See <a class="el" href="window_guide.html#window_focus">Window input focus</a> for details.</p>
691<p ><a class="anchor" id="GLFW_ICONIFIED_attrib"></a><b>GLFW_ICONIFIED</b> indicates whether the specified window is iconified. See <a class="el" href="window_guide.html#window_iconify">Window iconification</a> for details.</p>
692<p ><a class="anchor" id="GLFW_MAXIMIZED_attrib"></a><b>GLFW_MAXIMIZED</b> indicates whether the specified window is maximized. See <a class="el" href="window_guide.html#window_maximize">Window maximization</a> for details.</p>
693<p ><a class="anchor" id="GLFW_HOVERED_attrib"></a><b>GLFW_HOVERED</b> indicates whether the cursor is currently directly over the content area of the window, with no other windows between. See <a class="el" href="input_guide.html#cursor_enter">Cursor enter/leave events</a> for details.</p>
694<p ><a class="anchor" id="GLFW_VISIBLE_attrib"></a><b>GLFW_VISIBLE</b> indicates whether the specified window is visible. See <a class="el" href="window_guide.html#window_hide">Window visibility</a> for details.</p>
695<p ><a class="anchor" id="GLFW_RESIZABLE_attrib"></a><b>GLFW_RESIZABLE</b> indicates whether the specified window is resizable <em>by the user</em>. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_RESIZABLE_hint">GLFW_RESIZABLE</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
696<p ><a class="anchor" id="GLFW_DECORATED_attrib"></a><b>GLFW_DECORATED</b> indicates whether the specified window has decorations such as a border, a close widget, etc. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_DECORATED_hint">GLFW_DECORATED</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
697<p ><a class="anchor" id="GLFW_AUTO_ICONIFY_attrib"></a><b>GLFW_AUTO_ICONIFY</b> indicates whether the specified full screen window is iconified on focus loss, a close widget, etc. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">GLFW_AUTO_ICONIFY</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
698<p ><a class="anchor" id="GLFW_FLOATING_attrib"></a><b>GLFW_FLOATING</b> indicates whether the specified window is floating, also called topmost or always-on-top. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_FLOATING_hint">GLFW_FLOATING</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
699<p ><a class="anchor" id="GLFW_TRANSPARENT_FRAMEBUFFER_attrib"></a><b>GLFW_TRANSPARENT_FRAMEBUFFER</b> indicates whether the specified window has a transparent framebuffer, i.e. the window contents is composited with the background using the window framebuffer alpha channel. See <a class="el" href="window_guide.html#window_transparency">Window transparency</a> for details.</p>
700<p ><a class="anchor" id="GLFW_FOCUS_ON_SHOW_attrib"></a><b>GLFW_FOCUS_ON_SHOW</b> specifies whether the window will be given input focus when <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> is called. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
701<h3><a class="anchor" id="window_attribs_ctx"></a>
702Context related attributes</h3>
703<p ><a class="anchor" id="GLFW_CLIENT_API_attrib"></a><b>GLFW_CLIENT_API</b> indicates the client API provided by the window's context; either <code>GLFW_OPENGL_API</code>, <code>GLFW_OPENGL_ES_API</code> or <code>GLFW_NO_API</code>.</p>
704<p ><a class="anchor" id="GLFW_CONTEXT_CREATION_API_attrib"></a><b>GLFW_CONTEXT_CREATION_API</b> indicates the context creation API used to create the window's context; either <code>GLFW_NATIVE_CONTEXT_API</code>, <code>GLFW_EGL_CONTEXT_API</code> or <code>GLFW_OSMESA_CONTEXT_API</code>.</p>
705<p ><a class="anchor" id="GLFW_CONTEXT_VERSION_MAJOR_attrib"></a><a class="anchor" id="GLFW_CONTEXT_VERSION_MINOR_attrib"></a><a class="anchor" id="GLFW_CONTEXT_REVISION_attrib"></a><b>GLFW_CONTEXT_VERSION_MAJOR</b>, <b>GLFW_CONTEXT_VERSION_MINOR</b> and <b>GLFW_CONTEXT_REVISION</b> indicate the client API version of the window's context.</p>
706<dl class="section note"><dt>Note</dt><dd>Do not confuse these attributes with <code>GLFW_VERSION_MAJOR</code>, <code>GLFW_VERSION_MINOR</code> and <code>GLFW_VERSION_REVISION</code> which provide the API version of the GLFW header.</dd></dl>
707<p><a class="anchor" id="GLFW_OPENGL_FORWARD_COMPAT_attrib"></a><b>GLFW_OPENGL_FORWARD_COMPAT</b> is <code>GLFW_TRUE</code> if the window's context is an OpenGL forward-compatible one, or <code>GLFW_FALSE</code> otherwise.</p>
708<p ><a class="anchor" id="GLFW_OPENGL_DEBUG_CONTEXT_attrib"></a><b>GLFW_OPENGL_DEBUG_CONTEXT</b> is <code>GLFW_TRUE</code> if the window's context is in debug mode, or <code>GLFW_FALSE</code> otherwise.</p>
709<p ><a class="anchor" id="GLFW_OPENGL_PROFILE_attrib"></a><b>GLFW_OPENGL_PROFILE</b> indicates the OpenGL profile used by the context. This is <code>GLFW_OPENGL_CORE_PROFILE</code> or <code>GLFW_OPENGL_COMPAT_PROFILE</code> if the context uses a known profile, or <code>GLFW_OPENGL_ANY_PROFILE</code> if the OpenGL profile is unknown or the context is an OpenGL ES context. Note that the returned profile may not match the profile bits of the context flags, as GLFW will try other means of detecting the profile when no bits are set.</p>
710<p ><a class="anchor" id="GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib"></a><b>GLFW_CONTEXT_RELEASE_BEHAVIOR</b> indicates the release used by the context. Possible values are one of <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code> or <code>GLFW_RELEASE_BEHAVIOR_NONE</code>. If the behavior is <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, the default behavior of the context creation API will be used. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code>, the pipeline will be flushed whenever the context is released from being the current one. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_NONE</code>, the pipeline will not be flushed on release.</p>
711<p ><a class="anchor" id="GLFW_CONTEXT_NO_ERROR_attrib"></a><b>GLFW_CONTEXT_NO_ERROR</b> indicates whether errors are generated by the context. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. If enabled, situations that would have generated errors instead cause undefined behavior.</p>
712<p ><a class="anchor" id="GLFW_CONTEXT_ROBUSTNESS_attrib"></a><b>GLFW_CONTEXT_ROBUSTNESS</b> indicates the robustness strategy used by the context. This is <code>GLFW_LOSE_CONTEXT_ON_RESET</code> or <code>GLFW_NO_RESET_NOTIFICATION</code> if the window's context supports robustness, or <code>GLFW_NO_ROBUSTNESS</code> otherwise.</p>
713<h3><a class="anchor" id="window_attribs_fb"></a>
714Framebuffer related attributes</h3>
715<p >GLFW does not expose attributes of the default framebuffer (i.e. the framebuffer attached to the window) as these can be queried directly with either OpenGL, OpenGL ES or Vulkan.</p>
716<p >If you are using version 3.0 or later of OpenGL or OpenGL ES, the <code>glGetFramebufferAttachmentParameteriv</code> function can be used to retrieve the number of bits for the red, green, blue, alpha, depth and stencil buffer channels. Otherwise, the <code>glGetIntegerv</code> function can be used.</p>
717<p >The number of MSAA samples are always retrieved with <code>glGetIntegerv</code>. For contexts supporting framebuffer objects, the number of samples of the currently bound framebuffer is returned.</p>
718<table class="markdownTable">
719<tr class="markdownTableHead">
720<th class="markdownTableHeadNone">Attribute </th><th class="markdownTableHeadNone">glGetIntegerv </th><th class="markdownTableHeadNone">glGetFramebufferAttachmentParameteriv </th></tr>
721<tr class="markdownTableRowOdd">
722<td class="markdownTableBodyNone">Red bits </td><td class="markdownTableBodyNone"><code>GL_RED_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE</code> </td></tr>
723<tr class="markdownTableRowEven">
724<td class="markdownTableBodyNone">Green bits </td><td class="markdownTableBodyNone"><code>GL_GREEN_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE</code> </td></tr>
725<tr class="markdownTableRowOdd">
726<td class="markdownTableBodyNone">Blue bits </td><td class="markdownTableBodyNone"><code>GL_BLUE_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE</code> </td></tr>
727<tr class="markdownTableRowEven">
728<td class="markdownTableBodyNone">Alpha bits </td><td class="markdownTableBodyNone"><code>GL_ALPHA_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE</code> </td></tr>
729<tr class="markdownTableRowOdd">
730<td class="markdownTableBodyNone">Depth bits </td><td class="markdownTableBodyNone"><code>GL_DEPTH_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE</code> </td></tr>
731<tr class="markdownTableRowEven">
732<td class="markdownTableBodyNone">Stencil bits </td><td class="markdownTableBodyNone"><code>GL_STENCIL_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE</code> </td></tr>
733<tr class="markdownTableRowOdd">
734<td class="markdownTableBodyNone">MSAA samples </td><td class="markdownTableBodyNone"><code>GL_SAMPLES</code> </td><td class="markdownTableBodyNone"><em>Not provided by this function</em> </td></tr>
735</table>
736<p >When calling <code>glGetFramebufferAttachmentParameteriv</code>, the red, green, blue and alpha sizes are queried from the <code>GL_BACK_LEFT</code>, while the depth and stencil sizes are queried from the <code>GL_DEPTH</code> and <code>GL_STENCIL</code> attachments, respectively.</p>
737<h1><a class="anchor" id="buffer_swap"></a>
738Buffer swapping</h1>
739<p >GLFW windows are by default double buffered. That means that you have two rendering buffers; a front buffer and a back buffer. The front buffer is the one being displayed and the back buffer the one you render to.</p>
740<p >When the entire frame has been rendered, it is time to swap the back and the front buffers in order to display what has been rendered and begin rendering a new frame. This is done with <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>.</p>
741<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
742</div><!-- fragment --><p >Sometimes it can be useful to select when the buffer swap will occur. With the function <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> it is possible to select the minimum number of monitor refreshes the driver should wait from the time <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> was called before swapping the buffers:</p>
743<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(1);</div>
744<div class="ttc" id="agroup__context_html_ga6d4e0cdf151b5e579bd67f13202994ed"><div class="ttname"><a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></div><div class="ttdeci">void glfwSwapInterval(int interval)</div><div class="ttdoc">Sets the swap interval for the current context.</div></div>
745</div><!-- fragment --><p >If the interval is zero, the swap will take place immediately when <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> is called without waiting for a refresh. Otherwise at least interval retraces will pass between each buffer swap. Using a swap interval of zero can be useful for benchmarking purposes, when it is not desirable to measure the time it takes to wait for the vertical retrace. However, a swap interval of one lets you avoid tearing.</p>
746<p >Note that this may not work on all machines, as some drivers have user-controlled settings that override any swap interval the application requests.</p>
747<p >A context that supports either the <code>WGL_EXT_swap_control_tear</code> or the <code>GLX_EXT_swap_control_tear</code> extension also accepts <em>negative</em> swap intervals, which allows the driver to swap immediately even if a frame arrives a little bit late. This trades the risk of visible tears for greater framerate stability. You can check for these extensions with <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>. </p>
748</div></div><!-- contents -->
749</div><!-- PageDoc -->
750<address class="footer">
751<p>
752Last update on Thu Oct 28 2021 for GLFW 3.3.5
753</p>
754</address>
755</body>
756</html>
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3.h b/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3.h
new file mode 100644
index 0000000..9503dd0
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3.h
@@ -0,0 +1,5907 @@
1/*************************************************************************
2 * GLFW 3.3 - www.glfw.org
3 * A library for OpenGL, window and input
4 *------------------------------------------------------------------------
5 * Copyright (c) 2002-2006 Marcus Geelnard
6 * Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
7 *
8 * This software is provided 'as-is', without any express or implied
9 * warranty. In no event will the authors be held liable for any damages
10 * arising from the use of this software.
11 *
12 * Permission is granted to anyone to use this software for any purpose,
13 * including commercial applications, and to alter it and redistribute it
14 * freely, subject to the following restrictions:
15 *
16 * 1. The origin of this software must not be misrepresented; you must not
17 * claim that you wrote the original software. If you use this software
18 * in a product, an acknowledgment in the product documentation would
19 * be appreciated but is not required.
20 *
21 * 2. Altered source versions must be plainly marked as such, and must not
22 * be misrepresented as being the original software.
23 *
24 * 3. This notice may not be removed or altered from any source
25 * distribution.
26 *
27 *************************************************************************/
28
29#ifndef _glfw3_h_
30#define _glfw3_h_
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36
37/*************************************************************************
38 * Doxygen documentation
39 *************************************************************************/
40
41/*! @file glfw3.h
42 * @brief The header of the GLFW 3 API.
43 *
44 * This is the header file of the GLFW 3 API. It defines all its types and
45 * declares all its functions.
46 *
47 * For more information about how to use this file, see @ref build_include.
48 */
49/*! @defgroup context Context reference
50 * @brief Functions and types related to OpenGL and OpenGL ES contexts.
51 *
52 * This is the reference documentation for OpenGL and OpenGL ES context related
53 * functions. For more task-oriented information, see the @ref context_guide.
54 */
55/*! @defgroup vulkan Vulkan support reference
56 * @brief Functions and types related to Vulkan.
57 *
58 * This is the reference documentation for Vulkan related functions and types.
59 * For more task-oriented information, see the @ref vulkan_guide.
60 */
61/*! @defgroup init Initialization, version and error reference
62 * @brief Functions and types related to initialization and error handling.
63 *
64 * This is the reference documentation for initialization and termination of
65 * the library, version management and error handling. For more task-oriented
66 * information, see the @ref intro_guide.
67 */
68/*! @defgroup input Input reference
69 * @brief Functions and types related to input handling.
70 *
71 * This is the reference documentation for input related functions and types.
72 * For more task-oriented information, see the @ref input_guide.
73 */
74/*! @defgroup monitor Monitor reference
75 * @brief Functions and types related to monitors.
76 *
77 * This is the reference documentation for monitor related functions and types.
78 * For more task-oriented information, see the @ref monitor_guide.
79 */
80/*! @defgroup window Window reference
81 * @brief Functions and types related to windows.
82 *
83 * This is the reference documentation for window related functions and types,
84 * including creation, deletion and event polling. For more task-oriented
85 * information, see the @ref window_guide.
86 */
87
88
89/*************************************************************************
90 * Compiler- and platform-specific preprocessor work
91 *************************************************************************/
92
93/* If we are we on Windows, we want a single define for it.
94 */
95#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
96 #define _WIN32
97#endif /* _WIN32 */
98
99/* Include because most Windows GLU headers need wchar_t and
100 * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h.
101 * Include it unconditionally to avoid surprising side-effects.
102 */
103#include <stddef.h>
104
105/* Include because it is needed by Vulkan and related functions.
106 * Include it unconditionally to avoid surprising side-effects.
107 */
108#include <stdint.h>
109
110#if defined(GLFW_INCLUDE_VULKAN)
111 #include <vulkan/vulkan.h>
112#endif /* Vulkan header */
113
114/* The Vulkan header may have indirectly included windows.h (because of
115 * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it.
116 */
117
118/* It is customary to use APIENTRY for OpenGL function pointer declarations on
119 * all platforms. Additionally, the Windows OpenGL header needs APIENTRY.
120 */
121#if !defined(APIENTRY)
122 #if defined(_WIN32)
123 #define APIENTRY __stdcall
124 #else
125 #define APIENTRY
126 #endif
127 #define GLFW_APIENTRY_DEFINED
128#endif /* APIENTRY */
129
130/* Some Windows OpenGL headers need this.
131 */
132#if !defined(WINGDIAPI) && defined(_WIN32)
133 #define WINGDIAPI __declspec(dllimport)
134 #define GLFW_WINGDIAPI_DEFINED
135#endif /* WINGDIAPI */
136
137/* Some Windows GLU headers need this.
138 */
139#if !defined(CALLBACK) && defined(_WIN32)
140 #define CALLBACK __stdcall
141 #define GLFW_CALLBACK_DEFINED
142#endif /* CALLBACK */
143
144/* Include the chosen OpenGL or OpenGL ES headers.
145 */
146#if defined(GLFW_INCLUDE_ES1)
147
148 #include <GLES/gl.h>
149 #if defined(GLFW_INCLUDE_GLEXT)
150 #include <GLES/glext.h>
151 #endif
152
153#elif defined(GLFW_INCLUDE_ES2)
154
155 #include <GLES2/gl2.h>
156 #if defined(GLFW_INCLUDE_GLEXT)
157 #include <GLES2/gl2ext.h>
158 #endif
159
160#elif defined(GLFW_INCLUDE_ES3)
161
162 #include <GLES3/gl3.h>
163 #if defined(GLFW_INCLUDE_GLEXT)
164 #include <GLES2/gl2ext.h>
165 #endif
166
167#elif defined(GLFW_INCLUDE_ES31)
168
169 #include <GLES3/gl31.h>
170 #if defined(GLFW_INCLUDE_GLEXT)
171 #include <GLES2/gl2ext.h>
172 #endif
173
174#elif defined(GLFW_INCLUDE_ES32)
175
176 #include <GLES3/gl32.h>
177 #if defined(GLFW_INCLUDE_GLEXT)
178 #include <GLES2/gl2ext.h>
179 #endif
180
181#elif defined(GLFW_INCLUDE_GLCOREARB)
182
183 #if defined(__APPLE__)
184
185 #include <OpenGL/gl3.h>
186 #if defined(GLFW_INCLUDE_GLEXT)
187 #include <OpenGL/gl3ext.h>
188 #endif /*GLFW_INCLUDE_GLEXT*/
189
190 #else /*__APPLE__*/
191
192 #include <GL/glcorearb.h>
193 #if defined(GLFW_INCLUDE_GLEXT)
194 #include <GL/glext.h>
195 #endif
196
197 #endif /*__APPLE__*/
198
199#elif defined(GLFW_INCLUDE_GLU)
200
201 #if defined(__APPLE__)
202
203 #if defined(GLFW_INCLUDE_GLU)
204 #include <OpenGL/glu.h>
205 #endif
206
207 #else /*__APPLE__*/
208
209 #if defined(GLFW_INCLUDE_GLU)
210 #include <GL/glu.h>
211 #endif
212
213 #endif /*__APPLE__*/
214
215#elif !defined(GLFW_INCLUDE_NONE) && \
216 !defined(__gl_h_) && \
217 !defined(__gles1_gl_h_) && \
218 !defined(__gles2_gl2_h_) && \
219 !defined(__gles2_gl3_h_) && \
220 !defined(__gles2_gl31_h_) && \
221 !defined(__gles2_gl32_h_) && \
222 !defined(__gl_glcorearb_h_) && \
223 !defined(__gl2_h_) /*legacy*/ && \
224 !defined(__gl3_h_) /*legacy*/ && \
225 !defined(__gl31_h_) /*legacy*/ && \
226 !defined(__gl32_h_) /*legacy*/ && \
227 !defined(__glcorearb_h_) /*legacy*/ && \
228 !defined(__GL_H__) /*non-standard*/ && \
229 !defined(__gltypes_h_) /*non-standard*/ && \
230 !defined(__glee_h_) /*non-standard*/
231
232 #if defined(__APPLE__)
233
234 #if !defined(GLFW_INCLUDE_GLEXT)
235 #define GL_GLEXT_LEGACY
236 #endif
237 #include <OpenGL/gl.h>
238
239 #else /*__APPLE__*/
240
241 #include <GL/gl.h>
242 #if defined(GLFW_INCLUDE_GLEXT)
243 #include <GL/glext.h>
244 #endif
245
246 #endif /*__APPLE__*/
247
248#endif /* OpenGL and OpenGL ES headers */
249
250#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
251 /* GLFW_DLL must be defined by applications that are linking against the DLL
252 * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW
253 * configuration header when compiling the DLL version of the library.
254 */
255 #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
256#endif
257
258/* GLFWAPI is used to declare public API functions for export
259 * from the DLL / shared library / dynamic library.
260 */
261#if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
262 /* We are building GLFW as a Win32 DLL */
263 #define GLFWAPI __declspec(dllexport)
264#elif defined(_WIN32) && defined(GLFW_DLL)
265 /* We are calling GLFW as a Win32 DLL */
266 #define GLFWAPI __declspec(dllimport)
267#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)
268 /* We are building GLFW as a shared / dynamic library */
269 #define GLFWAPI __attribute__((visibility("default")))
270#else
271 /* We are building or calling GLFW as a static library */
272 #define GLFWAPI
273#endif
274
275
276/*************************************************************************
277 * GLFW API tokens
278 *************************************************************************/
279
280/*! @name GLFW version macros
281 * @{ */
282/*! @brief The major version number of the GLFW header.
283 *
284 * The major version number of the GLFW header. This is incremented when the
285 * API is changed in non-compatible ways.
286 * @ingroup init
287 */
288#define GLFW_VERSION_MAJOR 3
289/*! @brief The minor version number of the GLFW header.
290 *
291 * The minor version number of the GLFW header. This is incremented when
292 * features are added to the API but it remains backward-compatible.
293 * @ingroup init
294 */
295#define GLFW_VERSION_MINOR 3
296/*! @brief The revision number of the GLFW header.
297 *
298 * The revision number of the GLFW header. This is incremented when a bug fix
299 * release is made that does not contain any API changes.
300 * @ingroup init
301 */
302#define GLFW_VERSION_REVISION 5
303/*! @} */
304
305/*! @brief One.
306 *
307 * This is only semantic sugar for the number 1. You can instead use `1` or
308 * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal
309 * to one.
310 *
311 * @ingroup init
312 */
313#define GLFW_TRUE 1
314/*! @brief Zero.
315 *
316 * This is only semantic sugar for the number 0. You can instead use `0` or
317 * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is
318 * equal to zero.
319 *
320 * @ingroup init
321 */
322#define GLFW_FALSE 0
323
324/*! @name Key and button actions
325 * @{ */
326/*! @brief The key or mouse button was released.
327 *
328 * The key or mouse button was released.
329 *
330 * @ingroup input
331 */
332#define GLFW_RELEASE 0
333/*! @brief The key or mouse button was pressed.
334 *
335 * The key or mouse button was pressed.
336 *
337 * @ingroup input
338 */
339#define GLFW_PRESS 1
340/*! @brief The key was held down until it repeated.
341 *
342 * The key was held down until it repeated.
343 *
344 * @ingroup input
345 */
346#define GLFW_REPEAT 2
347/*! @} */
348
349/*! @defgroup hat_state Joystick hat states
350 * @brief Joystick hat states.
351 *
352 * See [joystick hat input](@ref joystick_hat) for how these are used.
353 *
354 * @ingroup input
355 * @{ */
356#define GLFW_HAT_CENTERED 0
357#define GLFW_HAT_UP 1
358#define GLFW_HAT_RIGHT 2
359#define GLFW_HAT_DOWN 4
360#define GLFW_HAT_LEFT 8
361#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP)
362#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)
363#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP)
364#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN)
365/*! @} */
366
367/*! @defgroup keys Keyboard keys
368 * @brief Keyboard key IDs.
369 *
370 * See [key input](@ref input_key) for how these are used.
371 *
372 * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60),
373 * but re-arranged to map to 7-bit ASCII for printable keys (function keys are
374 * put in the 256+ range).
375 *
376 * The naming of the key codes follow these rules:
377 * - The US keyboard layout is used
378 * - Names of printable alpha-numeric characters are used (e.g. "A", "R",
379 * "3", etc.)
380 * - For non-alphanumeric characters, Unicode:ish names are used (e.g.
381 * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not
382 * correspond to the Unicode standard (usually for brevity)
383 * - Keys that lack a clear US mapping are named "WORLD_x"
384 * - For non-printable keys, custom names are used (e.g. "F4",
385 * "BACKSPACE", etc.)
386 *
387 * @ingroup input
388 * @{
389 */
390
391/* The unknown key */
392#define GLFW_KEY_UNKNOWN -1
393
394/* Printable keys */
395#define GLFW_KEY_SPACE 32
396#define GLFW_KEY_APOSTROPHE 39 /* ' */
397#define GLFW_KEY_COMMA 44 /* , */
398#define GLFW_KEY_MINUS 45 /* - */
399#define GLFW_KEY_PERIOD 46 /* . */
400#define GLFW_KEY_SLASH 47 /* / */
401#define GLFW_KEY_0 48
402#define GLFW_KEY_1 49
403#define GLFW_KEY_2 50
404#define GLFW_KEY_3 51
405#define GLFW_KEY_4 52
406#define GLFW_KEY_5 53
407#define GLFW_KEY_6 54
408#define GLFW_KEY_7 55
409#define GLFW_KEY_8 56
410#define GLFW_KEY_9 57
411#define GLFW_KEY_SEMICOLON 59 /* ; */
412#define GLFW_KEY_EQUAL 61 /* = */
413#define GLFW_KEY_A 65
414#define GLFW_KEY_B 66
415#define GLFW_KEY_C 67
416#define GLFW_KEY_D 68
417#define GLFW_KEY_E 69
418#define GLFW_KEY_F 70
419#define GLFW_KEY_G 71
420#define GLFW_KEY_H 72
421#define GLFW_KEY_I 73
422#define GLFW_KEY_J 74
423#define GLFW_KEY_K 75
424#define GLFW_KEY_L 76
425#define GLFW_KEY_M 77
426#define GLFW_KEY_N 78
427#define GLFW_KEY_O 79
428#define GLFW_KEY_P 80
429#define GLFW_KEY_Q 81
430#define GLFW_KEY_R 82
431#define GLFW_KEY_S 83
432#define GLFW_KEY_T 84
433#define GLFW_KEY_U 85
434#define GLFW_KEY_V 86
435#define GLFW_KEY_W 87
436#define GLFW_KEY_X 88
437#define GLFW_KEY_Y 89
438#define GLFW_KEY_Z 90
439#define GLFW_KEY_LEFT_BRACKET 91 /* [ */
440#define GLFW_KEY_BACKSLASH 92 /* \ */
441#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */
442#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */
443#define GLFW_KEY_WORLD_1 161 /* non-US #1 */
444#define GLFW_KEY_WORLD_2 162 /* non-US #2 */
445
446/* Function keys */
447#define GLFW_KEY_ESCAPE 256
448#define GLFW_KEY_ENTER 257
449#define GLFW_KEY_TAB 258
450#define GLFW_KEY_BACKSPACE 259
451#define GLFW_KEY_INSERT 260
452#define GLFW_KEY_DELETE 261
453#define GLFW_KEY_RIGHT 262
454#define GLFW_KEY_LEFT 263
455#define GLFW_KEY_DOWN 264
456#define GLFW_KEY_UP 265
457#define GLFW_KEY_PAGE_UP 266
458#define GLFW_KEY_PAGE_DOWN 267
459#define GLFW_KEY_HOME 268
460#define GLFW_KEY_END 269
461#define GLFW_KEY_CAPS_LOCK 280
462#define GLFW_KEY_SCROLL_LOCK 281
463#define GLFW_KEY_NUM_LOCK 282
464#define GLFW_KEY_PRINT_SCREEN 283
465#define GLFW_KEY_PAUSE 284
466#define GLFW_KEY_F1 290
467#define GLFW_KEY_F2 291
468#define GLFW_KEY_F3 292
469#define GLFW_KEY_F4 293
470#define GLFW_KEY_F5 294
471#define GLFW_KEY_F6 295
472#define GLFW_KEY_F7 296
473#define GLFW_KEY_F8 297
474#define GLFW_KEY_F9 298
475#define GLFW_KEY_F10 299
476#define GLFW_KEY_F11 300
477#define GLFW_KEY_F12 301
478#define GLFW_KEY_F13 302
479#define GLFW_KEY_F14 303
480#define GLFW_KEY_F15 304
481#define GLFW_KEY_F16 305
482#define GLFW_KEY_F17 306
483#define GLFW_KEY_F18 307
484#define GLFW_KEY_F19 308
485#define GLFW_KEY_F20 309
486#define GLFW_KEY_F21 310
487#define GLFW_KEY_F22 311
488#define GLFW_KEY_F23 312
489#define GLFW_KEY_F24 313
490#define GLFW_KEY_F25 314
491#define GLFW_KEY_KP_0 320
492#define GLFW_KEY_KP_1 321
493#define GLFW_KEY_KP_2 322
494#define GLFW_KEY_KP_3 323
495#define GLFW_KEY_KP_4 324
496#define GLFW_KEY_KP_5 325
497#define GLFW_KEY_KP_6 326
498#define GLFW_KEY_KP_7 327
499#define GLFW_KEY_KP_8 328
500#define GLFW_KEY_KP_9 329
501#define GLFW_KEY_KP_DECIMAL 330
502#define GLFW_KEY_KP_DIVIDE 331
503#define GLFW_KEY_KP_MULTIPLY 332
504#define GLFW_KEY_KP_SUBTRACT 333
505#define GLFW_KEY_KP_ADD 334
506#define GLFW_KEY_KP_ENTER 335
507#define GLFW_KEY_KP_EQUAL 336
508#define GLFW_KEY_LEFT_SHIFT 340
509#define GLFW_KEY_LEFT_CONTROL 341
510#define GLFW_KEY_LEFT_ALT 342
511#define GLFW_KEY_LEFT_SUPER 343
512#define GLFW_KEY_RIGHT_SHIFT 344
513#define GLFW_KEY_RIGHT_CONTROL 345
514#define GLFW_KEY_RIGHT_ALT 346
515#define GLFW_KEY_RIGHT_SUPER 347
516#define GLFW_KEY_MENU 348
517
518#define GLFW_KEY_LAST GLFW_KEY_MENU
519
520/*! @} */
521
522/*! @defgroup mods Modifier key flags
523 * @brief Modifier key flags.
524 *
525 * See [key input](@ref input_key) for how these are used.
526 *
527 * @ingroup input
528 * @{ */
529
530/*! @brief If this bit is set one or more Shift keys were held down.
531 *
532 * If this bit is set one or more Shift keys were held down.
533 */
534#define GLFW_MOD_SHIFT 0x0001
535/*! @brief If this bit is set one or more Control keys were held down.
536 *
537 * If this bit is set one or more Control keys were held down.
538 */
539#define GLFW_MOD_CONTROL 0x0002
540/*! @brief If this bit is set one or more Alt keys were held down.
541 *
542 * If this bit is set one or more Alt keys were held down.
543 */
544#define GLFW_MOD_ALT 0x0004
545/*! @brief If this bit is set one or more Super keys were held down.
546 *
547 * If this bit is set one or more Super keys were held down.
548 */
549#define GLFW_MOD_SUPER 0x0008
550/*! @brief If this bit is set the Caps Lock key is enabled.
551 *
552 * If this bit is set the Caps Lock key is enabled and the @ref
553 * GLFW_LOCK_KEY_MODS input mode is set.
554 */
555#define GLFW_MOD_CAPS_LOCK 0x0010
556/*! @brief If this bit is set the Num Lock key is enabled.
557 *
558 * If this bit is set the Num Lock key is enabled and the @ref
559 * GLFW_LOCK_KEY_MODS input mode is set.
560 */
561#define GLFW_MOD_NUM_LOCK 0x0020
562
563/*! @} */
564
565/*! @defgroup buttons Mouse buttons
566 * @brief Mouse button IDs.
567 *
568 * See [mouse button input](@ref input_mouse_button) for how these are used.
569 *
570 * @ingroup input
571 * @{ */
572#define GLFW_MOUSE_BUTTON_1 0
573#define GLFW_MOUSE_BUTTON_2 1
574#define GLFW_MOUSE_BUTTON_3 2
575#define GLFW_MOUSE_BUTTON_4 3
576#define GLFW_MOUSE_BUTTON_5 4
577#define GLFW_MOUSE_BUTTON_6 5
578#define GLFW_MOUSE_BUTTON_7 6
579#define GLFW_MOUSE_BUTTON_8 7
580#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8
581#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1
582#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2
583#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3
584/*! @} */
585
586/*! @defgroup joysticks Joysticks
587 * @brief Joystick IDs.
588 *
589 * See [joystick input](@ref joystick) for how these are used.
590 *
591 * @ingroup input
592 * @{ */
593#define GLFW_JOYSTICK_1 0
594#define GLFW_JOYSTICK_2 1
595#define GLFW_JOYSTICK_3 2
596#define GLFW_JOYSTICK_4 3
597#define GLFW_JOYSTICK_5 4
598#define GLFW_JOYSTICK_6 5
599#define GLFW_JOYSTICK_7 6
600#define GLFW_JOYSTICK_8 7
601#define GLFW_JOYSTICK_9 8
602#define GLFW_JOYSTICK_10 9
603#define GLFW_JOYSTICK_11 10
604#define GLFW_JOYSTICK_12 11
605#define GLFW_JOYSTICK_13 12
606#define GLFW_JOYSTICK_14 13
607#define GLFW_JOYSTICK_15 14
608#define GLFW_JOYSTICK_16 15
609#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16
610/*! @} */
611
612/*! @defgroup gamepad_buttons Gamepad buttons
613 * @brief Gamepad buttons.
614 *
615 * See @ref gamepad for how these are used.
616 *
617 * @ingroup input
618 * @{ */
619#define GLFW_GAMEPAD_BUTTON_A 0
620#define GLFW_GAMEPAD_BUTTON_B 1
621#define GLFW_GAMEPAD_BUTTON_X 2
622#define GLFW_GAMEPAD_BUTTON_Y 3
623#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4
624#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5
625#define GLFW_GAMEPAD_BUTTON_BACK 6
626#define GLFW_GAMEPAD_BUTTON_START 7
627#define GLFW_GAMEPAD_BUTTON_GUIDE 8
628#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9
629#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10
630#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11
631#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12
632#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13
633#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14
634#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT
635
636#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A
637#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B
638#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X
639#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y
640/*! @} */
641
642/*! @defgroup gamepad_axes Gamepad axes
643 * @brief Gamepad axes.
644 *
645 * See @ref gamepad for how these are used.
646 *
647 * @ingroup input
648 * @{ */
649#define GLFW_GAMEPAD_AXIS_LEFT_X 0
650#define GLFW_GAMEPAD_AXIS_LEFT_Y 1
651#define GLFW_GAMEPAD_AXIS_RIGHT_X 2
652#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3
653#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4
654#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5
655#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
656/*! @} */
657
658/*! @defgroup errors Error codes
659 * @brief Error codes.
660 *
661 * See [error handling](@ref error_handling) for how these are used.
662 *
663 * @ingroup init
664 * @{ */
665/*! @brief No error has occurred.
666 *
667 * No error has occurred.
668 *
669 * @analysis Yay.
670 */
671#define GLFW_NO_ERROR 0
672/*! @brief GLFW has not been initialized.
673 *
674 * This occurs if a GLFW function was called that must not be called unless the
675 * library is [initialized](@ref intro_init).
676 *
677 * @analysis Application programmer error. Initialize GLFW before calling any
678 * function that requires initialization.
679 */
680#define GLFW_NOT_INITIALIZED 0x00010001
681/*! @brief No context is current for this thread.
682 *
683 * This occurs if a GLFW function was called that needs and operates on the
684 * current OpenGL or OpenGL ES context but no context is current on the calling
685 * thread. One such function is @ref glfwSwapInterval.
686 *
687 * @analysis Application programmer error. Ensure a context is current before
688 * calling functions that require a current context.
689 */
690#define GLFW_NO_CURRENT_CONTEXT 0x00010002
691/*! @brief One of the arguments to the function was an invalid enum value.
692 *
693 * One of the arguments to the function was an invalid enum value, for example
694 * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib.
695 *
696 * @analysis Application programmer error. Fix the offending call.
697 */
698#define GLFW_INVALID_ENUM 0x00010003
699/*! @brief One of the arguments to the function was an invalid value.
700 *
701 * One of the arguments to the function was an invalid value, for example
702 * requesting a non-existent OpenGL or OpenGL ES version like 2.7.
703 *
704 * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead
705 * result in a @ref GLFW_VERSION_UNAVAILABLE error.
706 *
707 * @analysis Application programmer error. Fix the offending call.
708 */
709#define GLFW_INVALID_VALUE 0x00010004
710/*! @brief A memory allocation failed.
711 *
712 * A memory allocation failed.
713 *
714 * @analysis A bug in GLFW or the underlying operating system. Report the bug
715 * to our [issue tracker](https://github.com/glfw/glfw/issues).
716 */
717#define GLFW_OUT_OF_MEMORY 0x00010005
718/*! @brief GLFW could not find support for the requested API on the system.
719 *
720 * GLFW could not find support for the requested API on the system.
721 *
722 * @analysis The installed graphics driver does not support the requested
723 * API, or does not support it via the chosen context creation backend.
724 * Below are a few examples.
725 *
726 * @par
727 * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only
728 * supports OpenGL ES via EGL, while Nvidia and Intel only support it via
729 * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa
730 * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary
731 * driver. Older graphics drivers do not support Vulkan.
732 */
733#define GLFW_API_UNAVAILABLE 0x00010006
734/*! @brief The requested OpenGL or OpenGL ES version is not available.
735 *
736 * The requested OpenGL or OpenGL ES version (including any requested context
737 * or framebuffer hints) is not available on this machine.
738 *
739 * @analysis The machine does not support your requirements. If your
740 * application is sufficiently flexible, downgrade your requirements and try
741 * again. Otherwise, inform the user that their machine does not match your
742 * requirements.
743 *
744 * @par
745 * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0
746 * comes out before the 4.x series gets that far, also fail with this error and
747 * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions
748 * will exist.
749 */
750#define GLFW_VERSION_UNAVAILABLE 0x00010007
751/*! @brief A platform-specific error occurred that does not match any of the
752 * more specific categories.
753 *
754 * A platform-specific error occurred that does not match any of the more
755 * specific categories.
756 *
757 * @analysis A bug or configuration error in GLFW, the underlying operating
758 * system or its drivers, or a lack of required resources. Report the issue to
759 * our [issue tracker](https://github.com/glfw/glfw/issues).
760 */
761#define GLFW_PLATFORM_ERROR 0x00010008
762/*! @brief The requested format is not supported or available.
763 *
764 * If emitted during window creation, the requested pixel format is not
765 * supported.
766 *
767 * If emitted when querying the clipboard, the contents of the clipboard could
768 * not be converted to the requested format.
769 *
770 * @analysis If emitted during window creation, one or more
771 * [hard constraints](@ref window_hints_hard) did not match any of the
772 * available pixel formats. If your application is sufficiently flexible,
773 * downgrade your requirements and try again. Otherwise, inform the user that
774 * their machine does not match your requirements.
775 *
776 * @par
777 * If emitted when querying the clipboard, ignore the error or report it to
778 * the user, as appropriate.
779 */
780#define GLFW_FORMAT_UNAVAILABLE 0x00010009
781/*! @brief The specified window does not have an OpenGL or OpenGL ES context.
782 *
783 * A window that does not have an OpenGL or OpenGL ES context was passed to
784 * a function that requires it to have one.
785 *
786 * @analysis Application programmer error. Fix the offending call.
787 */
788#define GLFW_NO_WINDOW_CONTEXT 0x0001000A
789/*! @} */
790
791/*! @addtogroup window
792 * @{ */
793/*! @brief Input focus window hint and attribute
794 *
795 * Input focus [window hint](@ref GLFW_FOCUSED_hint) or
796 * [window attribute](@ref GLFW_FOCUSED_attrib).
797 */
798#define GLFW_FOCUSED 0x00020001
799/*! @brief Window iconification window attribute
800 *
801 * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib).
802 */
803#define GLFW_ICONIFIED 0x00020002
804/*! @brief Window resize-ability window hint and attribute
805 *
806 * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and
807 * [window attribute](@ref GLFW_RESIZABLE_attrib).
808 */
809#define GLFW_RESIZABLE 0x00020003
810/*! @brief Window visibility window hint and attribute
811 *
812 * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and
813 * [window attribute](@ref GLFW_VISIBLE_attrib).
814 */
815#define GLFW_VISIBLE 0x00020004
816/*! @brief Window decoration window hint and attribute
817 *
818 * Window decoration [window hint](@ref GLFW_DECORATED_hint) and
819 * [window attribute](@ref GLFW_DECORATED_attrib).
820 */
821#define GLFW_DECORATED 0x00020005
822/*! @brief Window auto-iconification window hint and attribute
823 *
824 * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and
825 * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib).
826 */
827#define GLFW_AUTO_ICONIFY 0x00020006
828/*! @brief Window decoration window hint and attribute
829 *
830 * Window decoration [window hint](@ref GLFW_FLOATING_hint) and
831 * [window attribute](@ref GLFW_FLOATING_attrib).
832 */
833#define GLFW_FLOATING 0x00020007
834/*! @brief Window maximization window hint and attribute
835 *
836 * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and
837 * [window attribute](@ref GLFW_MAXIMIZED_attrib).
838 */
839#define GLFW_MAXIMIZED 0x00020008
840/*! @brief Cursor centering window hint
841 *
842 * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint).
843 */
844#define GLFW_CENTER_CURSOR 0x00020009
845/*! @brief Window framebuffer transparency hint and attribute
846 *
847 * Window framebuffer transparency
848 * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and
849 * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib).
850 */
851#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A
852/*! @brief Mouse cursor hover window attribute.
853 *
854 * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib).
855 */
856#define GLFW_HOVERED 0x0002000B
857/*! @brief Input focus on calling show window hint and attribute
858 *
859 * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or
860 * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib).
861 */
862#define GLFW_FOCUS_ON_SHOW 0x0002000C
863
864/*! @brief Framebuffer bit depth hint.
865 *
866 * Framebuffer bit depth [hint](@ref GLFW_RED_BITS).
867 */
868#define GLFW_RED_BITS 0x00021001
869/*! @brief Framebuffer bit depth hint.
870 *
871 * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS).
872 */
873#define GLFW_GREEN_BITS 0x00021002
874/*! @brief Framebuffer bit depth hint.
875 *
876 * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS).
877 */
878#define GLFW_BLUE_BITS 0x00021003
879/*! @brief Framebuffer bit depth hint.
880 *
881 * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS).
882 */
883#define GLFW_ALPHA_BITS 0x00021004
884/*! @brief Framebuffer bit depth hint.
885 *
886 * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS).
887 */
888#define GLFW_DEPTH_BITS 0x00021005
889/*! @brief Framebuffer bit depth hint.
890 *
891 * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS).
892 */
893#define GLFW_STENCIL_BITS 0x00021006
894/*! @brief Framebuffer bit depth hint.
895 *
896 * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS).
897 */
898#define GLFW_ACCUM_RED_BITS 0x00021007
899/*! @brief Framebuffer bit depth hint.
900 *
901 * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS).
902 */
903#define GLFW_ACCUM_GREEN_BITS 0x00021008
904/*! @brief Framebuffer bit depth hint.
905 *
906 * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS).
907 */
908#define GLFW_ACCUM_BLUE_BITS 0x00021009
909/*! @brief Framebuffer bit depth hint.
910 *
911 * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS).
912 */
913#define GLFW_ACCUM_ALPHA_BITS 0x0002100A
914/*! @brief Framebuffer auxiliary buffer hint.
915 *
916 * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS).
917 */
918#define GLFW_AUX_BUFFERS 0x0002100B
919/*! @brief OpenGL stereoscopic rendering hint.
920 *
921 * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO).
922 */
923#define GLFW_STEREO 0x0002100C
924/*! @brief Framebuffer MSAA samples hint.
925 *
926 * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES).
927 */
928#define GLFW_SAMPLES 0x0002100D
929/*! @brief Framebuffer sRGB hint.
930 *
931 * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE).
932 */
933#define GLFW_SRGB_CAPABLE 0x0002100E
934/*! @brief Monitor refresh rate hint.
935 *
936 * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE).
937 */
938#define GLFW_REFRESH_RATE 0x0002100F
939/*! @brief Framebuffer double buffering hint.
940 *
941 * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER).
942 */
943#define GLFW_DOUBLEBUFFER 0x00021010
944
945/*! @brief Context client API hint and attribute.
946 *
947 * Context client API [hint](@ref GLFW_CLIENT_API_hint) and
948 * [attribute](@ref GLFW_CLIENT_API_attrib).
949 */
950#define GLFW_CLIENT_API 0x00022001
951/*! @brief Context client API major version hint and attribute.
952 *
953 * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint)
954 * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib).
955 */
956#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002
957/*! @brief Context client API minor version hint and attribute.
958 *
959 * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint)
960 * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib).
961 */
962#define GLFW_CONTEXT_VERSION_MINOR 0x00022003
963/*! @brief Context client API revision number hint and attribute.
964 *
965 * Context client API revision number
966 * [attribute](@ref GLFW_CONTEXT_REVISION_attrib).
967 */
968#define GLFW_CONTEXT_REVISION 0x00022004
969/*! @brief Context robustness hint and attribute.
970 *
971 * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint)
972 * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib).
973 */
974#define GLFW_CONTEXT_ROBUSTNESS 0x00022005
975/*! @brief OpenGL forward-compatibility hint and attribute.
976 *
977 * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint)
978 * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib).
979 */
980#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006
981/*! @brief Debug mode context hint and attribute.
982 *
983 * Debug mode context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and
984 * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib).
985 */
986#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007
987/*! @brief OpenGL profile hint and attribute.
988 *
989 * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and
990 * [attribute](@ref GLFW_OPENGL_PROFILE_attrib).
991 */
992#define GLFW_OPENGL_PROFILE 0x00022008
993/*! @brief Context flush-on-release hint and attribute.
994 *
995 * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and
996 * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib).
997 */
998#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009
999/*! @brief Context error suppression hint and attribute.
1000 *
1001 * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and
1002 * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib).
1003 */
1004#define GLFW_CONTEXT_NO_ERROR 0x0002200A
1005/*! @brief Context creation API hint and attribute.
1006 *
1007 * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and
1008 * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib).
1009 */
1010#define GLFW_CONTEXT_CREATION_API 0x0002200B
1011/*! @brief Window content area scaling window
1012 * [window hint](@ref GLFW_SCALE_TO_MONITOR).
1013 */
1014#define GLFW_SCALE_TO_MONITOR 0x0002200C
1015/*! @brief macOS specific
1016 * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).
1017 */
1018#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001
1019/*! @brief macOS specific
1020 * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint).
1021 */
1022#define GLFW_COCOA_FRAME_NAME 0x00023002
1023/*! @brief macOS specific
1024 * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint).
1025 */
1026#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003
1027/*! @brief X11 specific
1028 * [window hint](@ref GLFW_X11_CLASS_NAME_hint).
1029 */
1030#define GLFW_X11_CLASS_NAME 0x00024001
1031/*! @brief X11 specific
1032 * [window hint](@ref GLFW_X11_CLASS_NAME_hint).
1033 */
1034#define GLFW_X11_INSTANCE_NAME 0x00024002
1035/*! @} */
1036
1037#define GLFW_NO_API 0
1038#define GLFW_OPENGL_API 0x00030001
1039#define GLFW_OPENGL_ES_API 0x00030002
1040
1041#define GLFW_NO_ROBUSTNESS 0
1042#define GLFW_NO_RESET_NOTIFICATION 0x00031001
1043#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002
1044
1045#define GLFW_OPENGL_ANY_PROFILE 0
1046#define GLFW_OPENGL_CORE_PROFILE 0x00032001
1047#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002
1048
1049#define GLFW_CURSOR 0x00033001
1050#define GLFW_STICKY_KEYS 0x00033002
1051#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003
1052#define GLFW_LOCK_KEY_MODS 0x00033004
1053#define GLFW_RAW_MOUSE_MOTION 0x00033005
1054
1055#define GLFW_CURSOR_NORMAL 0x00034001
1056#define GLFW_CURSOR_HIDDEN 0x00034002
1057#define GLFW_CURSOR_DISABLED 0x00034003
1058
1059#define GLFW_ANY_RELEASE_BEHAVIOR 0
1060#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001
1061#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002
1062
1063#define GLFW_NATIVE_CONTEXT_API 0x00036001
1064#define GLFW_EGL_CONTEXT_API 0x00036002
1065#define GLFW_OSMESA_CONTEXT_API 0x00036003
1066
1067/*! @defgroup shapes Standard cursor shapes
1068 * @brief Standard system cursor shapes.
1069 *
1070 * See [standard cursor creation](@ref cursor_standard) for how these are used.
1071 *
1072 * @ingroup input
1073 * @{ */
1074
1075/*! @brief The regular arrow cursor shape.
1076 *
1077 * The regular arrow cursor.
1078 */
1079#define GLFW_ARROW_CURSOR 0x00036001
1080/*! @brief The text input I-beam cursor shape.
1081 *
1082 * The text input I-beam cursor shape.
1083 */
1084#define GLFW_IBEAM_CURSOR 0x00036002
1085/*! @brief The crosshair shape.
1086 *
1087 * The crosshair shape.
1088 */
1089#define GLFW_CROSSHAIR_CURSOR 0x00036003
1090/*! @brief The hand shape.
1091 *
1092 * The hand shape.
1093 */
1094#define GLFW_HAND_CURSOR 0x00036004
1095/*! @brief The horizontal resize arrow shape.
1096 *
1097 * The horizontal resize arrow shape.
1098 */
1099#define GLFW_HRESIZE_CURSOR 0x00036005
1100/*! @brief The vertical resize arrow shape.
1101 *
1102 * The vertical resize arrow shape.
1103 */
1104#define GLFW_VRESIZE_CURSOR 0x00036006
1105/*! @} */
1106
1107#define GLFW_CONNECTED 0x00040001
1108#define GLFW_DISCONNECTED 0x00040002
1109
1110/*! @addtogroup init
1111 * @{ */
1112/*! @brief Joystick hat buttons init hint.
1113 *
1114 * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS).
1115 */
1116#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001
1117/*! @brief macOS specific init hint.
1118 *
1119 * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint).
1120 */
1121#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001
1122/*! @brief macOS specific init hint.
1123 *
1124 * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint).
1125 */
1126#define GLFW_COCOA_MENUBAR 0x00051002
1127/*! @} */
1128
1129#define GLFW_DONT_CARE -1
1130
1131
1132/*************************************************************************
1133 * GLFW API types
1134 *************************************************************************/
1135
1136/*! @brief Client API function pointer type.
1137 *
1138 * Generic function pointer used for returning client API function pointers
1139 * without forcing a cast from a regular pointer.
1140 *
1141 * @sa @ref context_glext
1142 * @sa @ref glfwGetProcAddress
1143 *
1144 * @since Added in version 3.0.
1145 *
1146 * @ingroup context
1147 */
1148typedef void (*GLFWglproc)(void);
1149
1150/*! @brief Vulkan API function pointer type.
1151 *
1152 * Generic function pointer used for returning Vulkan API function pointers
1153 * without forcing a cast from a regular pointer.
1154 *
1155 * @sa @ref vulkan_proc
1156 * @sa @ref glfwGetInstanceProcAddress
1157 *
1158 * @since Added in version 3.2.
1159 *
1160 * @ingroup vulkan
1161 */
1162typedef void (*GLFWvkproc)(void);
1163
1164/*! @brief Opaque monitor object.
1165 *
1166 * Opaque monitor object.
1167 *
1168 * @see @ref monitor_object
1169 *
1170 * @since Added in version 3.0.
1171 *
1172 * @ingroup monitor
1173 */
1174typedef struct GLFWmonitor GLFWmonitor;
1175
1176/*! @brief Opaque window object.
1177 *
1178 * Opaque window object.
1179 *
1180 * @see @ref window_object
1181 *
1182 * @since Added in version 3.0.
1183 *
1184 * @ingroup window
1185 */
1186typedef struct GLFWwindow GLFWwindow;
1187
1188/*! @brief Opaque cursor object.
1189 *
1190 * Opaque cursor object.
1191 *
1192 * @see @ref cursor_object
1193 *
1194 * @since Added in version 3.1.
1195 *
1196 * @ingroup input
1197 */
1198typedef struct GLFWcursor GLFWcursor;
1199
1200/*! @brief The function pointer type for error callbacks.
1201 *
1202 * This is the function pointer type for error callbacks. An error callback
1203 * function has the following signature:
1204 * @code
1205 * void callback_name(int error_code, const char* description)
1206 * @endcode
1207 *
1208 * @param[in] error_code An [error code](@ref errors). Future releases may add
1209 * more error codes.
1210 * @param[in] description A UTF-8 encoded string describing the error.
1211 *
1212 * @pointer_lifetime The error description string is valid until the callback
1213 * function returns.
1214 *
1215 * @sa @ref error_handling
1216 * @sa @ref glfwSetErrorCallback
1217 *
1218 * @since Added in version 3.0.
1219 *
1220 * @ingroup init
1221 */
1222typedef void (* GLFWerrorfun)(int error_code, const char* description);
1223
1224/*! @brief The function pointer type for window position callbacks.
1225 *
1226 * This is the function pointer type for window position callbacks. A window
1227 * position callback function has the following signature:
1228 * @code
1229 * void callback_name(GLFWwindow* window, int xpos, int ypos)
1230 * @endcode
1231 *
1232 * @param[in] window The window that was moved.
1233 * @param[in] xpos The new x-coordinate, in screen coordinates, of the
1234 * upper-left corner of the content area of the window.
1235 * @param[in] ypos The new y-coordinate, in screen coordinates, of the
1236 * upper-left corner of the content area of the window.
1237 *
1238 * @sa @ref window_pos
1239 * @sa @ref glfwSetWindowPosCallback
1240 *
1241 * @since Added in version 3.0.
1242 *
1243 * @ingroup window
1244 */
1245typedef void (* GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos);
1246
1247/*! @brief The function pointer type for window size callbacks.
1248 *
1249 * This is the function pointer type for window size callbacks. A window size
1250 * callback function has the following signature:
1251 * @code
1252 * void callback_name(GLFWwindow* window, int width, int height)
1253 * @endcode
1254 *
1255 * @param[in] window The window that was resized.
1256 * @param[in] width The new width, in screen coordinates, of the window.
1257 * @param[in] height The new height, in screen coordinates, of the window.
1258 *
1259 * @sa @ref window_size
1260 * @sa @ref glfwSetWindowSizeCallback
1261 *
1262 * @since Added in version 1.0.
1263 * @glfw3 Added window handle parameter.
1264 *
1265 * @ingroup window
1266 */
1267typedef void (* GLFWwindowsizefun)(GLFWwindow* window, int width, int height);
1268
1269/*! @brief The function pointer type for window close callbacks.
1270 *
1271 * This is the function pointer type for window close callbacks. A window
1272 * close callback function has the following signature:
1273 * @code
1274 * void function_name(GLFWwindow* window)
1275 * @endcode
1276 *
1277 * @param[in] window The window that the user attempted to close.
1278 *
1279 * @sa @ref window_close
1280 * @sa @ref glfwSetWindowCloseCallback
1281 *
1282 * @since Added in version 2.5.
1283 * @glfw3 Added window handle parameter.
1284 *
1285 * @ingroup window
1286 */
1287typedef void (* GLFWwindowclosefun)(GLFWwindow* window);
1288
1289/*! @brief The function pointer type for window content refresh callbacks.
1290 *
1291 * This is the function pointer type for window content refresh callbacks.
1292 * A window content refresh callback function has the following signature:
1293 * @code
1294 * void function_name(GLFWwindow* window);
1295 * @endcode
1296 *
1297 * @param[in] window The window whose content needs to be refreshed.
1298 *
1299 * @sa @ref window_refresh
1300 * @sa @ref glfwSetWindowRefreshCallback
1301 *
1302 * @since Added in version 2.5.
1303 * @glfw3 Added window handle parameter.
1304 *
1305 * @ingroup window
1306 */
1307typedef void (* GLFWwindowrefreshfun)(GLFWwindow* window);
1308
1309/*! @brief The function pointer type for window focus callbacks.
1310 *
1311 * This is the function pointer type for window focus callbacks. A window
1312 * focus callback function has the following signature:
1313 * @code
1314 * void function_name(GLFWwindow* window, int focused)
1315 * @endcode
1316 *
1317 * @param[in] window The window that gained or lost input focus.
1318 * @param[in] focused `GLFW_TRUE` if the window was given input focus, or
1319 * `GLFW_FALSE` if it lost it.
1320 *
1321 * @sa @ref window_focus
1322 * @sa @ref glfwSetWindowFocusCallback
1323 *
1324 * @since Added in version 3.0.
1325 *
1326 * @ingroup window
1327 */
1328typedef void (* GLFWwindowfocusfun)(GLFWwindow* window, int focused);
1329
1330/*! @brief The function pointer type for window iconify callbacks.
1331 *
1332 * This is the function pointer type for window iconify callbacks. A window
1333 * iconify callback function has the following signature:
1334 * @code
1335 * void function_name(GLFWwindow* window, int iconified)
1336 * @endcode
1337 *
1338 * @param[in] window The window that was iconified or restored.
1339 * @param[in] iconified `GLFW_TRUE` if the window was iconified, or
1340 * `GLFW_FALSE` if it was restored.
1341 *
1342 * @sa @ref window_iconify
1343 * @sa @ref glfwSetWindowIconifyCallback
1344 *
1345 * @since Added in version 3.0.
1346 *
1347 * @ingroup window
1348 */
1349typedef void (* GLFWwindowiconifyfun)(GLFWwindow* window, int iconified);
1350
1351/*! @brief The function pointer type for window maximize callbacks.
1352 *
1353 * This is the function pointer type for window maximize callbacks. A window
1354 * maximize callback function has the following signature:
1355 * @code
1356 * void function_name(GLFWwindow* window, int maximized)
1357 * @endcode
1358 *
1359 * @param[in] window The window that was maximized or restored.
1360 * @param[in] maximized `GLFW_TRUE` if the window was maximized, or
1361 * `GLFW_FALSE` if it was restored.
1362 *
1363 * @sa @ref window_maximize
1364 * @sa glfwSetWindowMaximizeCallback
1365 *
1366 * @since Added in version 3.3.
1367 *
1368 * @ingroup window
1369 */
1370typedef void (* GLFWwindowmaximizefun)(GLFWwindow* window, int maximized);
1371
1372/*! @brief The function pointer type for framebuffer size callbacks.
1373 *
1374 * This is the function pointer type for framebuffer size callbacks.
1375 * A framebuffer size callback function has the following signature:
1376 * @code
1377 * void function_name(GLFWwindow* window, int width, int height)
1378 * @endcode
1379 *
1380 * @param[in] window The window whose framebuffer was resized.
1381 * @param[in] width The new width, in pixels, of the framebuffer.
1382 * @param[in] height The new height, in pixels, of the framebuffer.
1383 *
1384 * @sa @ref window_fbsize
1385 * @sa @ref glfwSetFramebufferSizeCallback
1386 *
1387 * @since Added in version 3.0.
1388 *
1389 * @ingroup window
1390 */
1391typedef void (* GLFWframebuffersizefun)(GLFWwindow* window, int width, int height);
1392
1393/*! @brief The function pointer type for window content scale callbacks.
1394 *
1395 * This is the function pointer type for window content scale callbacks.
1396 * A window content scale callback function has the following signature:
1397 * @code
1398 * void function_name(GLFWwindow* window, float xscale, float yscale)
1399 * @endcode
1400 *
1401 * @param[in] window The window whose content scale changed.
1402 * @param[in] xscale The new x-axis content scale of the window.
1403 * @param[in] yscale The new y-axis content scale of the window.
1404 *
1405 * @sa @ref window_scale
1406 * @sa @ref glfwSetWindowContentScaleCallback
1407 *
1408 * @since Added in version 3.3.
1409 *
1410 * @ingroup window
1411 */
1412typedef void (* GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale);
1413
1414/*! @brief The function pointer type for mouse button callbacks.
1415 *
1416 * This is the function pointer type for mouse button callback functions.
1417 * A mouse button callback function has the following signature:
1418 * @code
1419 * void function_name(GLFWwindow* window, int button, int action, int mods)
1420 * @endcode
1421 *
1422 * @param[in] window The window that received the event.
1423 * @param[in] button The [mouse button](@ref buttons) that was pressed or
1424 * released.
1425 * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases
1426 * may add more actions.
1427 * @param[in] mods Bit field describing which [modifier keys](@ref mods) were
1428 * held down.
1429 *
1430 * @sa @ref input_mouse_button
1431 * @sa @ref glfwSetMouseButtonCallback
1432 *
1433 * @since Added in version 1.0.
1434 * @glfw3 Added window handle and modifier mask parameters.
1435 *
1436 * @ingroup input
1437 */
1438typedef void (* GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods);
1439
1440/*! @brief The function pointer type for cursor position callbacks.
1441 *
1442 * This is the function pointer type for cursor position callbacks. A cursor
1443 * position callback function has the following signature:
1444 * @code
1445 * void function_name(GLFWwindow* window, double xpos, double ypos);
1446 * @endcode
1447 *
1448 * @param[in] window The window that received the event.
1449 * @param[in] xpos The new cursor x-coordinate, relative to the left edge of
1450 * the content area.
1451 * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the
1452 * content area.
1453 *
1454 * @sa @ref cursor_pos
1455 * @sa @ref glfwSetCursorPosCallback
1456 *
1457 * @since Added in version 3.0. Replaces `GLFWmouseposfun`.
1458 *
1459 * @ingroup input
1460 */
1461typedef void (* GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos);
1462
1463/*! @brief The function pointer type for cursor enter/leave callbacks.
1464 *
1465 * This is the function pointer type for cursor enter/leave callbacks.
1466 * A cursor enter/leave callback function has the following signature:
1467 * @code
1468 * void function_name(GLFWwindow* window, int entered)
1469 * @endcode
1470 *
1471 * @param[in] window The window that received the event.
1472 * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content
1473 * area, or `GLFW_FALSE` if it left it.
1474 *
1475 * @sa @ref cursor_enter
1476 * @sa @ref glfwSetCursorEnterCallback
1477 *
1478 * @since Added in version 3.0.
1479 *
1480 * @ingroup input
1481 */
1482typedef void (* GLFWcursorenterfun)(GLFWwindow* window, int entered);
1483
1484/*! @brief The function pointer type for scroll callbacks.
1485 *
1486 * This is the function pointer type for scroll callbacks. A scroll callback
1487 * function has the following signature:
1488 * @code
1489 * void function_name(GLFWwindow* window, double xoffset, double yoffset)
1490 * @endcode
1491 *
1492 * @param[in] window The window that received the event.
1493 * @param[in] xoffset The scroll offset along the x-axis.
1494 * @param[in] yoffset The scroll offset along the y-axis.
1495 *
1496 * @sa @ref scrolling
1497 * @sa @ref glfwSetScrollCallback
1498 *
1499 * @since Added in version 3.0. Replaces `GLFWmousewheelfun`.
1500 *
1501 * @ingroup input
1502 */
1503typedef void (* GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset);
1504
1505/*! @brief The function pointer type for keyboard key callbacks.
1506 *
1507 * This is the function pointer type for keyboard key callbacks. A keyboard
1508 * key callback function has the following signature:
1509 * @code
1510 * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods)
1511 * @endcode
1512 *
1513 * @param[in] window The window that received the event.
1514 * @param[in] key The [keyboard key](@ref keys) that was pressed or released.
1515 * @param[in] scancode The system-specific scancode of the key.
1516 * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future
1517 * releases may add more actions.
1518 * @param[in] mods Bit field describing which [modifier keys](@ref mods) were
1519 * held down.
1520 *
1521 * @sa @ref input_key
1522 * @sa @ref glfwSetKeyCallback
1523 *
1524 * @since Added in version 1.0.
1525 * @glfw3 Added window handle, scancode and modifier mask parameters.
1526 *
1527 * @ingroup input
1528 */
1529typedef void (* GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods);
1530
1531/*! @brief The function pointer type for Unicode character callbacks.
1532 *
1533 * This is the function pointer type for Unicode character callbacks.
1534 * A Unicode character callback function has the following signature:
1535 * @code
1536 * void function_name(GLFWwindow* window, unsigned int codepoint)
1537 * @endcode
1538 *
1539 * @param[in] window The window that received the event.
1540 * @param[in] codepoint The Unicode code point of the character.
1541 *
1542 * @sa @ref input_char
1543 * @sa @ref glfwSetCharCallback
1544 *
1545 * @since Added in version 2.4.
1546 * @glfw3 Added window handle parameter.
1547 *
1548 * @ingroup input
1549 */
1550typedef void (* GLFWcharfun)(GLFWwindow* window, unsigned int codepoint);
1551
1552/*! @brief The function pointer type for Unicode character with modifiers
1553 * callbacks.
1554 *
1555 * This is the function pointer type for Unicode character with modifiers
1556 * callbacks. It is called for each input character, regardless of what
1557 * modifier keys are held down. A Unicode character with modifiers callback
1558 * function has the following signature:
1559 * @code
1560 * void function_name(GLFWwindow* window, unsigned int codepoint, int mods)
1561 * @endcode
1562 *
1563 * @param[in] window The window that received the event.
1564 * @param[in] codepoint The Unicode code point of the character.
1565 * @param[in] mods Bit field describing which [modifier keys](@ref mods) were
1566 * held down.
1567 *
1568 * @sa @ref input_char
1569 * @sa @ref glfwSetCharModsCallback
1570 *
1571 * @deprecated Scheduled for removal in version 4.0.
1572 *
1573 * @since Added in version 3.1.
1574 *
1575 * @ingroup input
1576 */
1577typedef void (* GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods);
1578
1579/*! @brief The function pointer type for path drop callbacks.
1580 *
1581 * This is the function pointer type for path drop callbacks. A path drop
1582 * callback function has the following signature:
1583 * @code
1584 * void function_name(GLFWwindow* window, int path_count, const char* paths[])
1585 * @endcode
1586 *
1587 * @param[in] window The window that received the event.
1588 * @param[in] path_count The number of dropped paths.
1589 * @param[in] paths The UTF-8 encoded file and/or directory path names.
1590 *
1591 * @pointer_lifetime The path array and its strings are valid until the
1592 * callback function returns.
1593 *
1594 * @sa @ref path_drop
1595 * @sa @ref glfwSetDropCallback
1596 *
1597 * @since Added in version 3.1.
1598 *
1599 * @ingroup input
1600 */
1601typedef void (* GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]);
1602
1603/*! @brief The function pointer type for monitor configuration callbacks.
1604 *
1605 * This is the function pointer type for monitor configuration callbacks.
1606 * A monitor callback function has the following signature:
1607 * @code
1608 * void function_name(GLFWmonitor* monitor, int event)
1609 * @endcode
1610 *
1611 * @param[in] monitor The monitor that was connected or disconnected.
1612 * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future
1613 * releases may add more events.
1614 *
1615 * @sa @ref monitor_event
1616 * @sa @ref glfwSetMonitorCallback
1617 *
1618 * @since Added in version 3.0.
1619 *
1620 * @ingroup monitor
1621 */
1622typedef void (* GLFWmonitorfun)(GLFWmonitor* monitor, int event);
1623
1624/*! @brief The function pointer type for joystick configuration callbacks.
1625 *
1626 * This is the function pointer type for joystick configuration callbacks.
1627 * A joystick configuration callback function has the following signature:
1628 * @code
1629 * void function_name(int jid, int event)
1630 * @endcode
1631 *
1632 * @param[in] jid The joystick that was connected or disconnected.
1633 * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future
1634 * releases may add more events.
1635 *
1636 * @sa @ref joystick_event
1637 * @sa @ref glfwSetJoystickCallback
1638 *
1639 * @since Added in version 3.2.
1640 *
1641 * @ingroup input
1642 */
1643typedef void (* GLFWjoystickfun)(int jid, int event);
1644
1645/*! @brief Video mode type.
1646 *
1647 * This describes a single video mode.
1648 *
1649 * @sa @ref monitor_modes
1650 * @sa @ref glfwGetVideoMode
1651 * @sa @ref glfwGetVideoModes
1652 *
1653 * @since Added in version 1.0.
1654 * @glfw3 Added refresh rate member.
1655 *
1656 * @ingroup monitor
1657 */
1658typedef struct GLFWvidmode
1659{
1660 /*! The width, in screen coordinates, of the video mode.
1661 */
1662 int width;
1663 /*! The height, in screen coordinates, of the video mode.
1664 */
1665 int height;
1666 /*! The bit depth of the red channel of the video mode.
1667 */
1668 int redBits;
1669 /*! The bit depth of the green channel of the video mode.
1670 */
1671 int greenBits;
1672 /*! The bit depth of the blue channel of the video mode.
1673 */
1674 int blueBits;
1675 /*! The refresh rate, in Hz, of the video mode.
1676 */
1677 int refreshRate;
1678} GLFWvidmode;
1679
1680/*! @brief Gamma ramp.
1681 *
1682 * This describes the gamma ramp for a monitor.
1683 *
1684 * @sa @ref monitor_gamma
1685 * @sa @ref glfwGetGammaRamp
1686 * @sa @ref glfwSetGammaRamp
1687 *
1688 * @since Added in version 3.0.
1689 *
1690 * @ingroup monitor
1691 */
1692typedef struct GLFWgammaramp
1693{
1694 /*! An array of value describing the response of the red channel.
1695 */
1696 unsigned short* red;
1697 /*! An array of value describing the response of the green channel.
1698 */
1699 unsigned short* green;
1700 /*! An array of value describing the response of the blue channel.
1701 */
1702 unsigned short* blue;
1703 /*! The number of elements in each array.
1704 */
1705 unsigned int size;
1706} GLFWgammaramp;
1707
1708/*! @brief Image data.
1709 *
1710 * This describes a single 2D image. See the documentation for each related
1711 * function what the expected pixel format is.
1712 *
1713 * @sa @ref cursor_custom
1714 * @sa @ref window_icon
1715 *
1716 * @since Added in version 2.1.
1717 * @glfw3 Removed format and bytes-per-pixel members.
1718 *
1719 * @ingroup window
1720 */
1721typedef struct GLFWimage
1722{
1723 /*! The width, in pixels, of this image.
1724 */
1725 int width;
1726 /*! The height, in pixels, of this image.
1727 */
1728 int height;
1729 /*! The pixel data of this image, arranged left-to-right, top-to-bottom.
1730 */
1731 unsigned char* pixels;
1732} GLFWimage;
1733
1734/*! @brief Gamepad input state
1735 *
1736 * This describes the input state of a gamepad.
1737 *
1738 * @sa @ref gamepad
1739 * @sa @ref glfwGetGamepadState
1740 *
1741 * @since Added in version 3.3.
1742 *
1743 * @ingroup input
1744 */
1745typedef struct GLFWgamepadstate
1746{
1747 /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS`
1748 * or `GLFW_RELEASE`.
1749 */
1750 unsigned char buttons[15];
1751 /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0
1752 * to 1.0 inclusive.
1753 */
1754 float axes[6];
1755} GLFWgamepadstate;
1756
1757
1758/*************************************************************************
1759 * GLFW API functions
1760 *************************************************************************/
1761
1762/*! @brief Initializes the GLFW library.
1763 *
1764 * This function initializes the GLFW library. Before most GLFW functions can
1765 * be used, GLFW must be initialized, and before an application terminates GLFW
1766 * should be terminated in order to free any resources allocated during or
1767 * after initialization.
1768 *
1769 * If this function fails, it calls @ref glfwTerminate before returning. If it
1770 * succeeds, you should call @ref glfwTerminate before the application exits.
1771 *
1772 * Additional calls to this function after successful initialization but before
1773 * termination will return `GLFW_TRUE` immediately.
1774 *
1775 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
1776 * [error](@ref error_handling) occurred.
1777 *
1778 * @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
1779 *
1780 * @remark @macos This function will change the current directory of the
1781 * application to the `Contents/Resources` subdirectory of the application's
1782 * bundle, if present. This can be disabled with the @ref
1783 * GLFW_COCOA_CHDIR_RESOURCES init hint.
1784 *
1785 * @remark @x11 This function will set the `LC_CTYPE` category of the
1786 * application locale according to the current environment if that category is
1787 * still "C". This is because the "C" locale breaks Unicode text input.
1788 *
1789 * @thread_safety This function must only be called from the main thread.
1790 *
1791 * @sa @ref intro_init
1792 * @sa @ref glfwTerminate
1793 *
1794 * @since Added in version 1.0.
1795 *
1796 * @ingroup init
1797 */
1798GLFWAPI int glfwInit(void);
1799
1800/*! @brief Terminates the GLFW library.
1801 *
1802 * This function destroys all remaining windows and cursors, restores any
1803 * modified gamma ramps and frees any other allocated resources. Once this
1804 * function is called, you must again call @ref glfwInit successfully before
1805 * you will be able to use most GLFW functions.
1806 *
1807 * If GLFW has been successfully initialized, this function should be called
1808 * before the application exits. If initialization fails, there is no need to
1809 * call this function, as it is called by @ref glfwInit before it returns
1810 * failure.
1811 *
1812 * This function has no effect if GLFW is not initialized.
1813 *
1814 * @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
1815 *
1816 * @remark This function may be called before @ref glfwInit.
1817 *
1818 * @warning The contexts of any remaining windows must not be current on any
1819 * other thread when this function is called.
1820 *
1821 * @reentrancy This function must not be called from a callback.
1822 *
1823 * @thread_safety This function must only be called from the main thread.
1824 *
1825 * @sa @ref intro_init
1826 * @sa @ref glfwInit
1827 *
1828 * @since Added in version 1.0.
1829 *
1830 * @ingroup init
1831 */
1832GLFWAPI void glfwTerminate(void);
1833
1834/*! @brief Sets the specified init hint to the desired value.
1835 *
1836 * This function sets hints for the next initialization of GLFW.
1837 *
1838 * The values you set hints to are never reset by GLFW, but they only take
1839 * effect during initialization. Once GLFW has been initialized, any values
1840 * you set will be ignored until the library is terminated and initialized
1841 * again.
1842 *
1843 * Some hints are platform specific. These may be set on any platform but they
1844 * will only affect their specific platform. Other platforms will ignore them.
1845 * Setting these hints requires no platform specific headers or functions.
1846 *
1847 * @param[in] hint The [init hint](@ref init_hints) to set.
1848 * @param[in] value The new value of the init hint.
1849 *
1850 * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref
1851 * GLFW_INVALID_VALUE.
1852 *
1853 * @remarks This function may be called before @ref glfwInit.
1854 *
1855 * @thread_safety This function must only be called from the main thread.
1856 *
1857 * @sa init_hints
1858 * @sa glfwInit
1859 *
1860 * @since Added in version 3.3.
1861 *
1862 * @ingroup init
1863 */
1864GLFWAPI void glfwInitHint(int hint, int value);
1865
1866/*! @brief Retrieves the version of the GLFW library.
1867 *
1868 * This function retrieves the major, minor and revision numbers of the GLFW
1869 * library. It is intended for when you are using GLFW as a shared library and
1870 * want to ensure that you are using the minimum required version.
1871 *
1872 * Any or all of the version arguments may be `NULL`.
1873 *
1874 * @param[out] major Where to store the major version number, or `NULL`.
1875 * @param[out] minor Where to store the minor version number, or `NULL`.
1876 * @param[out] rev Where to store the revision number, or `NULL`.
1877 *
1878 * @errors None.
1879 *
1880 * @remark This function may be called before @ref glfwInit.
1881 *
1882 * @thread_safety This function may be called from any thread.
1883 *
1884 * @sa @ref intro_version
1885 * @sa @ref glfwGetVersionString
1886 *
1887 * @since Added in version 1.0.
1888 *
1889 * @ingroup init
1890 */
1891GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev);
1892
1893/*! @brief Returns a string describing the compile-time configuration.
1894 *
1895 * This function returns the compile-time generated
1896 * [version string](@ref intro_version_string) of the GLFW library binary. It
1897 * describes the version, platform, compiler and any platform-specific
1898 * compile-time options. It should not be confused with the OpenGL or OpenGL
1899 * ES version string, queried with `glGetString`.
1900 *
1901 * __Do not use the version string__ to parse the GLFW library version. The
1902 * @ref glfwGetVersion function provides the version of the running library
1903 * binary in numerical format.
1904 *
1905 * @return The ASCII encoded GLFW version string.
1906 *
1907 * @errors None.
1908 *
1909 * @remark This function may be called before @ref glfwInit.
1910 *
1911 * @pointer_lifetime The returned string is static and compile-time generated.
1912 *
1913 * @thread_safety This function may be called from any thread.
1914 *
1915 * @sa @ref intro_version
1916 * @sa @ref glfwGetVersion
1917 *
1918 * @since Added in version 3.0.
1919 *
1920 * @ingroup init
1921 */
1922GLFWAPI const char* glfwGetVersionString(void);
1923
1924/*! @brief Returns and clears the last error for the calling thread.
1925 *
1926 * This function returns and clears the [error code](@ref errors) of the last
1927 * error that occurred on the calling thread, and optionally a UTF-8 encoded
1928 * human-readable description of it. If no error has occurred since the last
1929 * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is
1930 * set to `NULL`.
1931 *
1932 * @param[in] description Where to store the error description pointer, or `NULL`.
1933 * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR
1934 * (zero).
1935 *
1936 * @errors None.
1937 *
1938 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
1939 * should not free it yourself. It is guaranteed to be valid only until the
1940 * next error occurs or the library is terminated.
1941 *
1942 * @remark This function may be called before @ref glfwInit.
1943 *
1944 * @thread_safety This function may be called from any thread.
1945 *
1946 * @sa @ref error_handling
1947 * @sa @ref glfwSetErrorCallback
1948 *
1949 * @since Added in version 3.3.
1950 *
1951 * @ingroup init
1952 */
1953GLFWAPI int glfwGetError(const char** description);
1954
1955/*! @brief Sets the error callback.
1956 *
1957 * This function sets the error callback, which is called with an error code
1958 * and a human-readable description each time a GLFW error occurs.
1959 *
1960 * The error code is set before the callback is called. Calling @ref
1961 * glfwGetError from the error callback will return the same value as the error
1962 * code argument.
1963 *
1964 * The error callback is called on the thread where the error occurred. If you
1965 * are using GLFW from multiple threads, your error callback needs to be
1966 * written accordingly.
1967 *
1968 * Because the description string may have been generated specifically for that
1969 * error, it is not guaranteed to be valid after the callback has returned. If
1970 * you wish to use it after the callback returns, you need to make a copy.
1971 *
1972 * Once set, the error callback remains set even after the library has been
1973 * terminated.
1974 *
1975 * @param[in] callback The new callback, or `NULL` to remove the currently set
1976 * callback.
1977 * @return The previously set callback, or `NULL` if no callback was set.
1978 *
1979 * @callback_signature
1980 * @code
1981 * void callback_name(int error_code, const char* description)
1982 * @endcode
1983 * For more information about the callback parameters, see the
1984 * [callback pointer type](@ref GLFWerrorfun).
1985 *
1986 * @errors None.
1987 *
1988 * @remark This function may be called before @ref glfwInit.
1989 *
1990 * @thread_safety This function must only be called from the main thread.
1991 *
1992 * @sa @ref error_handling
1993 * @sa @ref glfwGetError
1994 *
1995 * @since Added in version 3.0.
1996 *
1997 * @ingroup init
1998 */
1999GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback);
2000
2001/*! @brief Returns the currently connected monitors.
2002 *
2003 * This function returns an array of handles for all currently connected
2004 * monitors. The primary monitor is always first in the returned array. If no
2005 * monitors were found, this function returns `NULL`.
2006 *
2007 * @param[out] count Where to store the number of monitors in the returned
2008 * array. This is set to zero if an error occurred.
2009 * @return An array of monitor handles, or `NULL` if no monitors were found or
2010 * if an [error](@ref error_handling) occurred.
2011 *
2012 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2013 *
2014 * @pointer_lifetime The returned array is allocated and freed by GLFW. You
2015 * should not free it yourself. It is guaranteed to be valid only until the
2016 * monitor configuration changes or the library is terminated.
2017 *
2018 * @thread_safety This function must only be called from the main thread.
2019 *
2020 * @sa @ref monitor_monitors
2021 * @sa @ref monitor_event
2022 * @sa @ref glfwGetPrimaryMonitor
2023 *
2024 * @since Added in version 3.0.
2025 *
2026 * @ingroup monitor
2027 */
2028GLFWAPI GLFWmonitor** glfwGetMonitors(int* count);
2029
2030/*! @brief Returns the primary monitor.
2031 *
2032 * This function returns the primary monitor. This is usually the monitor
2033 * where elements like the task bar or global menu bar are located.
2034 *
2035 * @return The primary monitor, or `NULL` if no monitors were found or if an
2036 * [error](@ref error_handling) occurred.
2037 *
2038 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2039 *
2040 * @thread_safety This function must only be called from the main thread.
2041 *
2042 * @remark The primary monitor is always first in the array returned by @ref
2043 * glfwGetMonitors.
2044 *
2045 * @sa @ref monitor_monitors
2046 * @sa @ref glfwGetMonitors
2047 *
2048 * @since Added in version 3.0.
2049 *
2050 * @ingroup monitor
2051 */
2052GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void);
2053
2054/*! @brief Returns the position of the monitor's viewport on the virtual screen.
2055 *
2056 * This function returns the position, in screen coordinates, of the upper-left
2057 * corner of the specified monitor.
2058 *
2059 * Any or all of the position arguments may be `NULL`. If an error occurs, all
2060 * non-`NULL` position arguments will be set to zero.
2061 *
2062 * @param[in] monitor The monitor to query.
2063 * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`.
2064 * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`.
2065 *
2066 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2067 * GLFW_PLATFORM_ERROR.
2068 *
2069 * @thread_safety This function must only be called from the main thread.
2070 *
2071 * @sa @ref monitor_properties
2072 *
2073 * @since Added in version 3.0.
2074 *
2075 * @ingroup monitor
2076 */
2077GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);
2078
2079/*! @brief Retrieves the work area of the monitor.
2080 *
2081 * This function returns the position, in screen coordinates, of the upper-left
2082 * corner of the work area of the specified monitor along with the work area
2083 * size in screen coordinates. The work area is defined as the area of the
2084 * monitor not occluded by the operating system task bar where present. If no
2085 * task bar exists then the work area is the monitor resolution in screen
2086 * coordinates.
2087 *
2088 * Any or all of the position and size arguments may be `NULL`. If an error
2089 * occurs, all non-`NULL` position and size arguments will be set to zero.
2090 *
2091 * @param[in] monitor The monitor to query.
2092 * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`.
2093 * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`.
2094 * @param[out] width Where to store the monitor width, or `NULL`.
2095 * @param[out] height Where to store the monitor height, or `NULL`.
2096 *
2097 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2098 * GLFW_PLATFORM_ERROR.
2099 *
2100 * @thread_safety This function must only be called from the main thread.
2101 *
2102 * @sa @ref monitor_workarea
2103 *
2104 * @since Added in version 3.3.
2105 *
2106 * @ingroup monitor
2107 */
2108GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
2109
2110/*! @brief Returns the physical size of the monitor.
2111 *
2112 * This function returns the size, in millimetres, of the display area of the
2113 * specified monitor.
2114 *
2115 * Some systems do not provide accurate monitor size information, either
2116 * because the monitor
2117 * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data)
2118 * data is incorrect or because the driver does not report it accurately.
2119 *
2120 * Any or all of the size arguments may be `NULL`. If an error occurs, all
2121 * non-`NULL` size arguments will be set to zero.
2122 *
2123 * @param[in] monitor The monitor to query.
2124 * @param[out] widthMM Where to store the width, in millimetres, of the
2125 * monitor's display area, or `NULL`.
2126 * @param[out] heightMM Where to store the height, in millimetres, of the
2127 * monitor's display area, or `NULL`.
2128 *
2129 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2130 *
2131 * @remark @win32 On Windows 8 and earlier the physical size is calculated from
2132 * the current resolution and system DPI instead of querying the monitor EDID data.
2133 *
2134 * @thread_safety This function must only be called from the main thread.
2135 *
2136 * @sa @ref monitor_properties
2137 *
2138 * @since Added in version 3.0.
2139 *
2140 * @ingroup monitor
2141 */
2142GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM);
2143
2144/*! @brief Retrieves the content scale for the specified monitor.
2145 *
2146 * This function retrieves the content scale for the specified monitor. The
2147 * content scale is the ratio between the current DPI and the platform's
2148 * default DPI. This is especially important for text and any UI elements. If
2149 * the pixel dimensions of your UI scaled by this look appropriate on your
2150 * machine then it should appear at a reasonable size on other machines
2151 * regardless of their DPI and scaling settings. This relies on the system DPI
2152 * and scaling settings being somewhat correct.
2153 *
2154 * The content scale may depend on both the monitor resolution and pixel
2155 * density and on user settings. It may be very different from the raw DPI
2156 * calculated from the physical size and current resolution.
2157 *
2158 * @param[in] monitor The monitor to query.
2159 * @param[out] xscale Where to store the x-axis content scale, or `NULL`.
2160 * @param[out] yscale Where to store the y-axis content scale, or `NULL`.
2161 *
2162 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2163 * GLFW_PLATFORM_ERROR.
2164 *
2165 * @thread_safety This function must only be called from the main thread.
2166 *
2167 * @sa @ref monitor_scale
2168 * @sa @ref glfwGetWindowContentScale
2169 *
2170 * @since Added in version 3.3.
2171 *
2172 * @ingroup monitor
2173 */
2174GLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale);
2175
2176/*! @brief Returns the name of the specified monitor.
2177 *
2178 * This function returns a human-readable name, encoded as UTF-8, of the
2179 * specified monitor. The name typically reflects the make and model of the
2180 * monitor and is not guaranteed to be unique among the connected monitors.
2181 *
2182 * @param[in] monitor The monitor to query.
2183 * @return The UTF-8 encoded name of the monitor, or `NULL` if an
2184 * [error](@ref error_handling) occurred.
2185 *
2186 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2187 *
2188 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
2189 * should not free it yourself. It is valid until the specified monitor is
2190 * disconnected or the library is terminated.
2191 *
2192 * @thread_safety This function must only be called from the main thread.
2193 *
2194 * @sa @ref monitor_properties
2195 *
2196 * @since Added in version 3.0.
2197 *
2198 * @ingroup monitor
2199 */
2200GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);
2201
2202/*! @brief Sets the user pointer of the specified monitor.
2203 *
2204 * This function sets the user-defined pointer of the specified monitor. The
2205 * current value is retained until the monitor is disconnected. The initial
2206 * value is `NULL`.
2207 *
2208 * This function may be called from the monitor callback, even for a monitor
2209 * that is being disconnected.
2210 *
2211 * @param[in] monitor The monitor whose pointer to set.
2212 * @param[in] pointer The new value.
2213 *
2214 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2215 *
2216 * @thread_safety This function may be called from any thread. Access is not
2217 * synchronized.
2218 *
2219 * @sa @ref monitor_userptr
2220 * @sa @ref glfwGetMonitorUserPointer
2221 *
2222 * @since Added in version 3.3.
2223 *
2224 * @ingroup monitor
2225 */
2226GLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer);
2227
2228/*! @brief Returns the user pointer of the specified monitor.
2229 *
2230 * This function returns the current value of the user-defined pointer of the
2231 * specified monitor. The initial value is `NULL`.
2232 *
2233 * This function may be called from the monitor callback, even for a monitor
2234 * that is being disconnected.
2235 *
2236 * @param[in] monitor The monitor whose pointer to return.
2237 *
2238 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2239 *
2240 * @thread_safety This function may be called from any thread. Access is not
2241 * synchronized.
2242 *
2243 * @sa @ref monitor_userptr
2244 * @sa @ref glfwSetMonitorUserPointer
2245 *
2246 * @since Added in version 3.3.
2247 *
2248 * @ingroup monitor
2249 */
2250GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor);
2251
2252/*! @brief Sets the monitor configuration callback.
2253 *
2254 * This function sets the monitor configuration callback, or removes the
2255 * currently set callback. This is called when a monitor is connected to or
2256 * disconnected from the system.
2257 *
2258 * @param[in] callback The new callback, or `NULL` to remove the currently set
2259 * callback.
2260 * @return The previously set callback, or `NULL` if no callback was set or the
2261 * library had not been [initialized](@ref intro_init).
2262 *
2263 * @callback_signature
2264 * @code
2265 * void function_name(GLFWmonitor* monitor, int event)
2266 * @endcode
2267 * For more information about the callback parameters, see the
2268 * [function pointer type](@ref GLFWmonitorfun).
2269 *
2270 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2271 *
2272 * @thread_safety This function must only be called from the main thread.
2273 *
2274 * @sa @ref monitor_event
2275 *
2276 * @since Added in version 3.0.
2277 *
2278 * @ingroup monitor
2279 */
2280GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback);
2281
2282/*! @brief Returns the available video modes for the specified monitor.
2283 *
2284 * This function returns an array of all video modes supported by the specified
2285 * monitor. The returned array is sorted in ascending order, first by color
2286 * bit depth (the sum of all channel depths), then by resolution area (the
2287 * product of width and height), then resolution width and finally by refresh
2288 * rate.
2289 *
2290 * @param[in] monitor The monitor to query.
2291 * @param[out] count Where to store the number of video modes in the returned
2292 * array. This is set to zero if an error occurred.
2293 * @return An array of video modes, or `NULL` if an
2294 * [error](@ref error_handling) occurred.
2295 *
2296 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2297 * GLFW_PLATFORM_ERROR.
2298 *
2299 * @pointer_lifetime The returned array is allocated and freed by GLFW. You
2300 * should not free it yourself. It is valid until the specified monitor is
2301 * disconnected, this function is called again for that monitor or the library
2302 * is terminated.
2303 *
2304 * @thread_safety This function must only be called from the main thread.
2305 *
2306 * @sa @ref monitor_modes
2307 * @sa @ref glfwGetVideoMode
2308 *
2309 * @since Added in version 1.0.
2310 * @glfw3 Changed to return an array of modes for a specific monitor.
2311 *
2312 * @ingroup monitor
2313 */
2314GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);
2315
2316/*! @brief Returns the current mode of the specified monitor.
2317 *
2318 * This function returns the current video mode of the specified monitor. If
2319 * you have created a full screen window for that monitor, the return value
2320 * will depend on whether that window is iconified.
2321 *
2322 * @param[in] monitor The monitor to query.
2323 * @return The current mode of the monitor, or `NULL` if an
2324 * [error](@ref error_handling) occurred.
2325 *
2326 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2327 * GLFW_PLATFORM_ERROR.
2328 *
2329 * @pointer_lifetime The returned array is allocated and freed by GLFW. You
2330 * should not free it yourself. It is valid until the specified monitor is
2331 * disconnected or the library is terminated.
2332 *
2333 * @thread_safety This function must only be called from the main thread.
2334 *
2335 * @sa @ref monitor_modes
2336 * @sa @ref glfwGetVideoModes
2337 *
2338 * @since Added in version 3.0. Replaces `glfwGetDesktopMode`.
2339 *
2340 * @ingroup monitor
2341 */
2342GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor);
2343
2344/*! @brief Generates a gamma ramp and sets it for the specified monitor.
2345 *
2346 * This function generates an appropriately sized gamma ramp from the specified
2347 * exponent and then calls @ref glfwSetGammaRamp with it. The value must be
2348 * a finite number greater than zero.
2349 *
2350 * The software controlled gamma ramp is applied _in addition_ to the hardware
2351 * gamma correction, which today is usually an approximation of sRGB gamma.
2352 * This means that setting a perfectly linear ramp, or gamma 1.0, will produce
2353 * the default (usually sRGB-like) behavior.
2354 *
2355 * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref
2356 * GLFW_SRGB_CAPABLE hint.
2357 *
2358 * @param[in] monitor The monitor whose gamma ramp to set.
2359 * @param[in] gamma The desired exponent.
2360 *
2361 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2362 * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
2363 *
2364 * @remark @wayland Gamma handling is a privileged protocol, this function
2365 * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.
2366 *
2367 * @thread_safety This function must only be called from the main thread.
2368 *
2369 * @sa @ref monitor_gamma
2370 *
2371 * @since Added in version 3.0.
2372 *
2373 * @ingroup monitor
2374 */
2375GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma);
2376
2377/*! @brief Returns the current gamma ramp for the specified monitor.
2378 *
2379 * This function returns the current gamma ramp of the specified monitor.
2380 *
2381 * @param[in] monitor The monitor to query.
2382 * @return The current gamma ramp, or `NULL` if an
2383 * [error](@ref error_handling) occurred.
2384 *
2385 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2386 * GLFW_PLATFORM_ERROR.
2387 *
2388 * @remark @wayland Gamma handling is a privileged protocol, this function
2389 * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while
2390 * returning `NULL`.
2391 *
2392 * @pointer_lifetime The returned structure and its arrays are allocated and
2393 * freed by GLFW. You should not free them yourself. They are valid until the
2394 * specified monitor is disconnected, this function is called again for that
2395 * monitor or the library is terminated.
2396 *
2397 * @thread_safety This function must only be called from the main thread.
2398 *
2399 * @sa @ref monitor_gamma
2400 *
2401 * @since Added in version 3.0.
2402 *
2403 * @ingroup monitor
2404 */
2405GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor);
2406
2407/*! @brief Sets the current gamma ramp for the specified monitor.
2408 *
2409 * This function sets the current gamma ramp for the specified monitor. The
2410 * original gamma ramp for that monitor is saved by GLFW the first time this
2411 * function is called and is restored by @ref glfwTerminate.
2412 *
2413 * The software controlled gamma ramp is applied _in addition_ to the hardware
2414 * gamma correction, which today is usually an approximation of sRGB gamma.
2415 * This means that setting a perfectly linear ramp, or gamma 1.0, will produce
2416 * the default (usually sRGB-like) behavior.
2417 *
2418 * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref
2419 * GLFW_SRGB_CAPABLE hint.
2420 *
2421 * @param[in] monitor The monitor whose gamma ramp to set.
2422 * @param[in] ramp The gamma ramp to use.
2423 *
2424 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2425 * GLFW_PLATFORM_ERROR.
2426 *
2427 * @remark The size of the specified gamma ramp should match the size of the
2428 * current ramp for that monitor.
2429 *
2430 * @remark @win32 The gamma ramp size must be 256.
2431 *
2432 * @remark @wayland Gamma handling is a privileged protocol, this function
2433 * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.
2434 *
2435 * @pointer_lifetime The specified gamma ramp is copied before this function
2436 * returns.
2437 *
2438 * @thread_safety This function must only be called from the main thread.
2439 *
2440 * @sa @ref monitor_gamma
2441 *
2442 * @since Added in version 3.0.
2443 *
2444 * @ingroup monitor
2445 */
2446GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);
2447
2448/*! @brief Resets all window hints to their default values.
2449 *
2450 * This function resets all window hints to their
2451 * [default values](@ref window_hints_values).
2452 *
2453 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2454 *
2455 * @thread_safety This function must only be called from the main thread.
2456 *
2457 * @sa @ref window_hints
2458 * @sa @ref glfwWindowHint
2459 * @sa @ref glfwWindowHintString
2460 *
2461 * @since Added in version 3.0.
2462 *
2463 * @ingroup window
2464 */
2465GLFWAPI void glfwDefaultWindowHints(void);
2466
2467/*! @brief Sets the specified window hint to the desired value.
2468 *
2469 * This function sets hints for the next call to @ref glfwCreateWindow. The
2470 * hints, once set, retain their values until changed by a call to this
2471 * function or @ref glfwDefaultWindowHints, or until the library is terminated.
2472 *
2473 * Only integer value hints can be set with this function. String value hints
2474 * are set with @ref glfwWindowHintString.
2475 *
2476 * This function does not check whether the specified hint values are valid.
2477 * If you set hints to invalid values this will instead be reported by the next
2478 * call to @ref glfwCreateWindow.
2479 *
2480 * Some hints are platform specific. These may be set on any platform but they
2481 * will only affect their specific platform. Other platforms will ignore them.
2482 * Setting these hints requires no platform specific headers or functions.
2483 *
2484 * @param[in] hint The [window hint](@ref window_hints) to set.
2485 * @param[in] value The new value of the window hint.
2486 *
2487 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2488 * GLFW_INVALID_ENUM.
2489 *
2490 * @thread_safety This function must only be called from the main thread.
2491 *
2492 * @sa @ref window_hints
2493 * @sa @ref glfwWindowHintString
2494 * @sa @ref glfwDefaultWindowHints
2495 *
2496 * @since Added in version 3.0. Replaces `glfwOpenWindowHint`.
2497 *
2498 * @ingroup window
2499 */
2500GLFWAPI void glfwWindowHint(int hint, int value);
2501
2502/*! @brief Sets the specified window hint to the desired value.
2503 *
2504 * This function sets hints for the next call to @ref glfwCreateWindow. The
2505 * hints, once set, retain their values until changed by a call to this
2506 * function or @ref glfwDefaultWindowHints, or until the library is terminated.
2507 *
2508 * Only string type hints can be set with this function. Integer value hints
2509 * are set with @ref glfwWindowHint.
2510 *
2511 * This function does not check whether the specified hint values are valid.
2512 * If you set hints to invalid values this will instead be reported by the next
2513 * call to @ref glfwCreateWindow.
2514 *
2515 * Some hints are platform specific. These may be set on any platform but they
2516 * will only affect their specific platform. Other platforms will ignore them.
2517 * Setting these hints requires no platform specific headers or functions.
2518 *
2519 * @param[in] hint The [window hint](@ref window_hints) to set.
2520 * @param[in] value The new value of the window hint.
2521 *
2522 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2523 * GLFW_INVALID_ENUM.
2524 *
2525 * @pointer_lifetime The specified string is copied before this function
2526 * returns.
2527 *
2528 * @thread_safety This function must only be called from the main thread.
2529 *
2530 * @sa @ref window_hints
2531 * @sa @ref glfwWindowHint
2532 * @sa @ref glfwDefaultWindowHints
2533 *
2534 * @since Added in version 3.3.
2535 *
2536 * @ingroup window
2537 */
2538GLFWAPI void glfwWindowHintString(int hint, const char* value);
2539
2540/*! @brief Creates a window and its associated context.
2541 *
2542 * This function creates a window and its associated OpenGL or OpenGL ES
2543 * context. Most of the options controlling how the window and its context
2544 * should be created are specified with [window hints](@ref window_hints).
2545 *
2546 * Successful creation does not change which context is current. Before you
2547 * can use the newly created context, you need to
2548 * [make it current](@ref context_current). For information about the `share`
2549 * parameter, see @ref context_sharing.
2550 *
2551 * The created window, framebuffer and context may differ from what you
2552 * requested, as not all parameters and hints are
2553 * [hard constraints](@ref window_hints_hard). This includes the size of the
2554 * window, especially for full screen windows. To query the actual attributes
2555 * of the created window, framebuffer and context, see @ref
2556 * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize.
2557 *
2558 * To create a full screen window, you need to specify the monitor the window
2559 * will cover. If no monitor is specified, the window will be windowed mode.
2560 * Unless you have a way for the user to choose a specific monitor, it is
2561 * recommended that you pick the primary monitor. For more information on how
2562 * to query connected monitors, see @ref monitor_monitors.
2563 *
2564 * For full screen windows, the specified size becomes the resolution of the
2565 * window's _desired video mode_. As long as a full screen window is not
2566 * iconified, the supported video mode most closely matching the desired video
2567 * mode is set for the specified monitor. For more information about full
2568 * screen windows, including the creation of so called _windowed full screen_
2569 * or _borderless full screen_ windows, see @ref window_windowed_full_screen.
2570 *
2571 * Once you have created the window, you can switch it between windowed and
2572 * full screen mode with @ref glfwSetWindowMonitor. This will not affect its
2573 * OpenGL or OpenGL ES context.
2574 *
2575 * By default, newly created windows use the placement recommended by the
2576 * window system. To create the window at a specific position, make it
2577 * initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window
2578 * hint, set its [position](@ref window_pos) and then [show](@ref window_hide)
2579 * it.
2580 *
2581 * As long as at least one full screen window is not iconified, the screensaver
2582 * is prohibited from starting.
2583 *
2584 * Window systems put limits on window sizes. Very large or very small window
2585 * dimensions may be overridden by the window system on creation. Check the
2586 * actual [size](@ref window_size) after creation.
2587 *
2588 * The [swap interval](@ref buffer_swap) is not set during window creation and
2589 * the initial value may vary depending on driver settings and defaults.
2590 *
2591 * @param[in] width The desired width, in screen coordinates, of the window.
2592 * This must be greater than zero.
2593 * @param[in] height The desired height, in screen coordinates, of the window.
2594 * This must be greater than zero.
2595 * @param[in] title The initial, UTF-8 encoded window title.
2596 * @param[in] monitor The monitor to use for full screen mode, or `NULL` for
2597 * windowed mode.
2598 * @param[in] share The window whose context to share resources with, or `NULL`
2599 * to not share resources.
2600 * @return The handle of the created window, or `NULL` if an
2601 * [error](@ref error_handling) occurred.
2602 *
2603 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2604 * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref
2605 * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref
2606 * GLFW_PLATFORM_ERROR.
2607 *
2608 * @remark @win32 Window creation will fail if the Microsoft GDI software
2609 * OpenGL implementation is the only one available.
2610 *
2611 * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it
2612 * will be set as the initial icon for the window. If no such icon is present,
2613 * the `IDI_APPLICATION` icon will be used instead. To set a different icon,
2614 * see @ref glfwSetWindowIcon.
2615 *
2616 * @remark @win32 The context to share resources with must not be current on
2617 * any other thread.
2618 *
2619 * @remark @macos The OS only supports forward-compatible core profile contexts
2620 * for OpenGL versions 3.2 and later. Before creating an OpenGL context of
2621 * version 3.2 or later you must set the
2622 * [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) and
2623 * [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hints accordingly.
2624 * OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.
2625 *
2626 * @remark @macos The GLFW window has no icon, as it is not a document
2627 * window, but the dock icon will be the same as the application bundle's icon.
2628 * For more information on bundles, see the
2629 * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
2630 * in the Mac Developer Library.
2631 *
2632 * @remark @macos The first time a window is created the menu bar is created.
2633 * If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu
2634 * bar. Otherwise a minimal menu bar is created manually with common commands
2635 * like Hide, Quit and About. The About entry opens a minimal about dialog
2636 * with information from the application's bundle. Menu bar creation can be
2637 * disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint.
2638 *
2639 * @remark @macos On OS X 10.10 and later the window frame will not be rendered
2640 * at full resolution on Retina displays unless the
2641 * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
2642 * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the
2643 * application bundle's `Info.plist`. For more information, see
2644 * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)
2645 * in the Mac Developer Library. The GLFW test and example programs use
2646 * a custom `Info.plist` template for this, which can be found as
2647 * `CMake/MacOSXBundleInfo.plist.in` in the source tree.
2648 *
2649 * @remark @macos When activating frame autosaving with
2650 * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified
2651 * window size and position may be overridden by previously saved values.
2652 *
2653 * @remark @x11 Some window managers will not respect the placement of
2654 * initially hidden windows.
2655 *
2656 * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for
2657 * a window to reach its requested state. This means you may not be able to
2658 * query the final size, position or other attributes directly after window
2659 * creation.
2660 *
2661 * @remark @x11 The class part of the `WM_CLASS` window property will by
2662 * default be set to the window title passed to this function. The instance
2663 * part will use the contents of the `RESOURCE_NAME` environment variable, if
2664 * present and not empty, or fall back to the window title. Set the
2665 * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and
2666 * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to
2667 * override this.
2668 *
2669 * @remark @wayland Compositors should implement the xdg-decoration protocol
2670 * for GLFW to decorate the window properly. If this protocol isn't
2671 * supported, or if the compositor prefers client-side decorations, a very
2672 * simple fallback frame will be drawn using the wp_viewporter protocol. A
2673 * compositor can still emit close, maximize or fullscreen events, using for
2674 * instance a keybind mechanism. If neither of these protocols is supported,
2675 * the window won't be decorated.
2676 *
2677 * @remark @wayland A full screen window will not attempt to change the mode,
2678 * no matter what the requested size or refresh rate.
2679 *
2680 * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol
2681 * to be implemented in the user's compositor.
2682 *
2683 * @thread_safety This function must only be called from the main thread.
2684 *
2685 * @sa @ref window_creation
2686 * @sa @ref glfwDestroyWindow
2687 *
2688 * @since Added in version 3.0. Replaces `glfwOpenWindow`.
2689 *
2690 * @ingroup window
2691 */
2692GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);
2693
2694/*! @brief Destroys the specified window and its context.
2695 *
2696 * This function destroys the specified window and its context. On calling
2697 * this function, no further callbacks will be called for that window.
2698 *
2699 * If the context of the specified window is current on the main thread, it is
2700 * detached before being destroyed.
2701 *
2702 * @param[in] window The window to destroy.
2703 *
2704 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2705 * GLFW_PLATFORM_ERROR.
2706 *
2707 * @note The context of the specified window must not be current on any other
2708 * thread when this function is called.
2709 *
2710 * @reentrancy This function must not be called from a callback.
2711 *
2712 * @thread_safety This function must only be called from the main thread.
2713 *
2714 * @sa @ref window_creation
2715 * @sa @ref glfwCreateWindow
2716 *
2717 * @since Added in version 3.0. Replaces `glfwCloseWindow`.
2718 *
2719 * @ingroup window
2720 */
2721GLFWAPI void glfwDestroyWindow(GLFWwindow* window);
2722
2723/*! @brief Checks the close flag of the specified window.
2724 *
2725 * This function returns the value of the close flag of the specified window.
2726 *
2727 * @param[in] window The window to query.
2728 * @return The value of the close flag.
2729 *
2730 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2731 *
2732 * @thread_safety This function may be called from any thread. Access is not
2733 * synchronized.
2734 *
2735 * @sa @ref window_close
2736 *
2737 * @since Added in version 3.0.
2738 *
2739 * @ingroup window
2740 */
2741GLFWAPI int glfwWindowShouldClose(GLFWwindow* window);
2742
2743/*! @brief Sets the close flag of the specified window.
2744 *
2745 * This function sets the value of the close flag of the specified window.
2746 * This can be used to override the user's attempt to close the window, or
2747 * to signal that it should be closed.
2748 *
2749 * @param[in] window The window whose flag to change.
2750 * @param[in] value The new value.
2751 *
2752 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
2753 *
2754 * @thread_safety This function may be called from any thread. Access is not
2755 * synchronized.
2756 *
2757 * @sa @ref window_close
2758 *
2759 * @since Added in version 3.0.
2760 *
2761 * @ingroup window
2762 */
2763GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);
2764
2765/*! @brief Sets the title of the specified window.
2766 *
2767 * This function sets the window title, encoded as UTF-8, of the specified
2768 * window.
2769 *
2770 * @param[in] window The window whose title to change.
2771 * @param[in] title The UTF-8 encoded window title.
2772 *
2773 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2774 * GLFW_PLATFORM_ERROR.
2775 *
2776 * @remark @macos The window title will not be updated until the next time you
2777 * process events.
2778 *
2779 * @thread_safety This function must only be called from the main thread.
2780 *
2781 * @sa @ref window_title
2782 *
2783 * @since Added in version 1.0.
2784 * @glfw3 Added window handle parameter.
2785 *
2786 * @ingroup window
2787 */
2788GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title);
2789
2790/*! @brief Sets the icon for the specified window.
2791 *
2792 * This function sets the icon of the specified window. If passed an array of
2793 * candidate images, those of or closest to the sizes desired by the system are
2794 * selected. If no images are specified, the window reverts to its default
2795 * icon.
2796 *
2797 * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight
2798 * bits per channel with the red channel first. They are arranged canonically
2799 * as packed sequential rows, starting from the top-left corner.
2800 *
2801 * The desired image sizes varies depending on platform and system settings.
2802 * The selected images will be rescaled as needed. Good sizes include 16x16,
2803 * 32x32 and 48x48.
2804 *
2805 * @param[in] window The window whose icon to set.
2806 * @param[in] count The number of images in the specified array, or zero to
2807 * revert to the default window icon.
2808 * @param[in] images The images to create the icon from. This is ignored if
2809 * count is zero.
2810 *
2811 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2812 * GLFW_PLATFORM_ERROR.
2813 *
2814 * @pointer_lifetime The specified image data is copied before this function
2815 * returns.
2816 *
2817 * @remark @macos The GLFW window has no icon, as it is not a document
2818 * window, so this function does nothing. The dock icon will be the same as
2819 * the application bundle's icon. For more information on bundles, see the
2820 * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
2821 * in the Mac Developer Library.
2822 *
2823 * @remark @wayland There is no existing protocol to change an icon, the
2824 * window will thus inherit the one defined in the application's desktop file.
2825 * This function always emits @ref GLFW_PLATFORM_ERROR.
2826 *
2827 * @thread_safety This function must only be called from the main thread.
2828 *
2829 * @sa @ref window_icon
2830 *
2831 * @since Added in version 3.2.
2832 *
2833 * @ingroup window
2834 */
2835GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);
2836
2837/*! @brief Retrieves the position of the content area of the specified window.
2838 *
2839 * This function retrieves the position, in screen coordinates, of the
2840 * upper-left corner of the content area of the specified window.
2841 *
2842 * Any or all of the position arguments may be `NULL`. If an error occurs, all
2843 * non-`NULL` position arguments will be set to zero.
2844 *
2845 * @param[in] window The window to query.
2846 * @param[out] xpos Where to store the x-coordinate of the upper-left corner of
2847 * the content area, or `NULL`.
2848 * @param[out] ypos Where to store the y-coordinate of the upper-left corner of
2849 * the content area, or `NULL`.
2850 *
2851 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2852 * GLFW_PLATFORM_ERROR.
2853 *
2854 * @remark @wayland There is no way for an application to retrieve the global
2855 * position of its windows, this function will always emit @ref
2856 * GLFW_PLATFORM_ERROR.
2857 *
2858 * @thread_safety This function must only be called from the main thread.
2859 *
2860 * @sa @ref window_pos
2861 * @sa @ref glfwSetWindowPos
2862 *
2863 * @since Added in version 3.0.
2864 *
2865 * @ingroup window
2866 */
2867GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
2868
2869/*! @brief Sets the position of the content area of the specified window.
2870 *
2871 * This function sets the position, in screen coordinates, of the upper-left
2872 * corner of the content area of the specified windowed mode window. If the
2873 * window is a full screen window, this function does nothing.
2874 *
2875 * __Do not use this function__ to move an already visible window unless you
2876 * have very good reasons for doing so, as it will confuse and annoy the user.
2877 *
2878 * The window manager may put limits on what positions are allowed. GLFW
2879 * cannot and should not override these limits.
2880 *
2881 * @param[in] window The window to query.
2882 * @param[in] xpos The x-coordinate of the upper-left corner of the content area.
2883 * @param[in] ypos The y-coordinate of the upper-left corner of the content area.
2884 *
2885 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2886 * GLFW_PLATFORM_ERROR.
2887 *
2888 * @remark @wayland There is no way for an application to set the global
2889 * position of its windows, this function will always emit @ref
2890 * GLFW_PLATFORM_ERROR.
2891 *
2892 * @thread_safety This function must only be called from the main thread.
2893 *
2894 * @sa @ref window_pos
2895 * @sa @ref glfwGetWindowPos
2896 *
2897 * @since Added in version 1.0.
2898 * @glfw3 Added window handle parameter.
2899 *
2900 * @ingroup window
2901 */
2902GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
2903
2904/*! @brief Retrieves the size of the content area of the specified window.
2905 *
2906 * This function retrieves the size, in screen coordinates, of the content area
2907 * of the specified window. If you wish to retrieve the size of the
2908 * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize.
2909 *
2910 * Any or all of the size arguments may be `NULL`. If an error occurs, all
2911 * non-`NULL` size arguments will be set to zero.
2912 *
2913 * @param[in] window The window whose size to retrieve.
2914 * @param[out] width Where to store the width, in screen coordinates, of the
2915 * content area, or `NULL`.
2916 * @param[out] height Where to store the height, in screen coordinates, of the
2917 * content area, or `NULL`.
2918 *
2919 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
2920 * GLFW_PLATFORM_ERROR.
2921 *
2922 * @thread_safety This function must only be called from the main thread.
2923 *
2924 * @sa @ref window_size
2925 * @sa @ref glfwSetWindowSize
2926 *
2927 * @since Added in version 1.0.
2928 * @glfw3 Added window handle parameter.
2929 *
2930 * @ingroup window
2931 */
2932GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
2933
2934/*! @brief Sets the size limits of the specified window.
2935 *
2936 * This function sets the size limits of the content area of the specified
2937 * window. If the window is full screen, the size limits only take effect
2938 * once it is made windowed. If the window is not resizable, this function
2939 * does nothing.
2940 *
2941 * The size limits are applied immediately to a windowed mode window and may
2942 * cause it to be resized.
2943 *
2944 * The maximum dimensions must be greater than or equal to the minimum
2945 * dimensions and all must be greater than or equal to zero.
2946 *
2947 * @param[in] window The window to set limits for.
2948 * @param[in] minwidth The minimum width, in screen coordinates, of the content
2949 * area, or `GLFW_DONT_CARE`.
2950 * @param[in] minheight The minimum height, in screen coordinates, of the
2951 * content area, or `GLFW_DONT_CARE`.
2952 * @param[in] maxwidth The maximum width, in screen coordinates, of the content
2953 * area, or `GLFW_DONT_CARE`.
2954 * @param[in] maxheight The maximum height, in screen coordinates, of the
2955 * content area, or `GLFW_DONT_CARE`.
2956 *
2957 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
2958 * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
2959 *
2960 * @remark If you set size limits and an aspect ratio that conflict, the
2961 * results are undefined.
2962 *
2963 * @remark @wayland The size limits will not be applied until the window is
2964 * actually resized, either by the user or by the compositor.
2965 *
2966 * @thread_safety This function must only be called from the main thread.
2967 *
2968 * @sa @ref window_sizelimits
2969 * @sa @ref glfwSetWindowAspectRatio
2970 *
2971 * @since Added in version 3.2.
2972 *
2973 * @ingroup window
2974 */
2975GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
2976
2977/*! @brief Sets the aspect ratio of the specified window.
2978 *
2979 * This function sets the required aspect ratio of the content area of the
2980 * specified window. If the window is full screen, the aspect ratio only takes
2981 * effect once it is made windowed. If the window is not resizable, this
2982 * function does nothing.
2983 *
2984 * The aspect ratio is specified as a numerator and a denominator and both
2985 * values must be greater than zero. For example, the common 16:9 aspect ratio
2986 * is specified as 16 and 9, respectively.
2987 *
2988 * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect
2989 * ratio limit is disabled.
2990 *
2991 * The aspect ratio is applied immediately to a windowed mode window and may
2992 * cause it to be resized.
2993 *
2994 * @param[in] window The window to set limits for.
2995 * @param[in] numer The numerator of the desired aspect ratio, or
2996 * `GLFW_DONT_CARE`.
2997 * @param[in] denom The denominator of the desired aspect ratio, or
2998 * `GLFW_DONT_CARE`.
2999 *
3000 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3001 * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
3002 *
3003 * @remark If you set size limits and an aspect ratio that conflict, the
3004 * results are undefined.
3005 *
3006 * @remark @wayland The aspect ratio will not be applied until the window is
3007 * actually resized, either by the user or by the compositor.
3008 *
3009 * @thread_safety This function must only be called from the main thread.
3010 *
3011 * @sa @ref window_sizelimits
3012 * @sa @ref glfwSetWindowSizeLimits
3013 *
3014 * @since Added in version 3.2.
3015 *
3016 * @ingroup window
3017 */
3018GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);
3019
3020/*! @brief Sets the size of the content area of the specified window.
3021 *
3022 * This function sets the size, in screen coordinates, of the content area of
3023 * the specified window.
3024 *
3025 * For full screen windows, this function updates the resolution of its desired
3026 * video mode and switches to the video mode closest to it, without affecting
3027 * the window's context. As the context is unaffected, the bit depths of the
3028 * framebuffer remain unchanged.
3029 *
3030 * If you wish to update the refresh rate of the desired video mode in addition
3031 * to its resolution, see @ref glfwSetWindowMonitor.
3032 *
3033 * The window manager may put limits on what sizes are allowed. GLFW cannot
3034 * and should not override these limits.
3035 *
3036 * @param[in] window The window to resize.
3037 * @param[in] width The desired width, in screen coordinates, of the window
3038 * content area.
3039 * @param[in] height The desired height, in screen coordinates, of the window
3040 * content area.
3041 *
3042 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3043 * GLFW_PLATFORM_ERROR.
3044 *
3045 * @remark @wayland A full screen window will not attempt to change the mode,
3046 * no matter what the requested size.
3047 *
3048 * @thread_safety This function must only be called from the main thread.
3049 *
3050 * @sa @ref window_size
3051 * @sa @ref glfwGetWindowSize
3052 * @sa @ref glfwSetWindowMonitor
3053 *
3054 * @since Added in version 1.0.
3055 * @glfw3 Added window handle parameter.
3056 *
3057 * @ingroup window
3058 */
3059GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height);
3060
3061/*! @brief Retrieves the size of the framebuffer of the specified window.
3062 *
3063 * This function retrieves the size, in pixels, of the framebuffer of the
3064 * specified window. If you wish to retrieve the size of the window in screen
3065 * coordinates, see @ref glfwGetWindowSize.
3066 *
3067 * Any or all of the size arguments may be `NULL`. If an error occurs, all
3068 * non-`NULL` size arguments will be set to zero.
3069 *
3070 * @param[in] window The window whose framebuffer to query.
3071 * @param[out] width Where to store the width, in pixels, of the framebuffer,
3072 * or `NULL`.
3073 * @param[out] height Where to store the height, in pixels, of the framebuffer,
3074 * or `NULL`.
3075 *
3076 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3077 * GLFW_PLATFORM_ERROR.
3078 *
3079 * @thread_safety This function must only be called from the main thread.
3080 *
3081 * @sa @ref window_fbsize
3082 * @sa @ref glfwSetFramebufferSizeCallback
3083 *
3084 * @since Added in version 3.0.
3085 *
3086 * @ingroup window
3087 */
3088GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);
3089
3090/*! @brief Retrieves the size of the frame of the window.
3091 *
3092 * This function retrieves the size, in screen coordinates, of each edge of the
3093 * frame of the specified window. This size includes the title bar, if the
3094 * window has one. The size of the frame may vary depending on the
3095 * [window-related hints](@ref window_hints_wnd) used to create it.
3096 *
3097 * Because this function retrieves the size of each window frame edge and not
3098 * the offset along a particular coordinate axis, the retrieved values will
3099 * always be zero or positive.
3100 *
3101 * Any or all of the size arguments may be `NULL`. If an error occurs, all
3102 * non-`NULL` size arguments will be set to zero.
3103 *
3104 * @param[in] window The window whose frame size to query.
3105 * @param[out] left Where to store the size, in screen coordinates, of the left
3106 * edge of the window frame, or `NULL`.
3107 * @param[out] top Where to store the size, in screen coordinates, of the top
3108 * edge of the window frame, or `NULL`.
3109 * @param[out] right Where to store the size, in screen coordinates, of the
3110 * right edge of the window frame, or `NULL`.
3111 * @param[out] bottom Where to store the size, in screen coordinates, of the
3112 * bottom edge of the window frame, or `NULL`.
3113 *
3114 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3115 * GLFW_PLATFORM_ERROR.
3116 *
3117 * @thread_safety This function must only be called from the main thread.
3118 *
3119 * @sa @ref window_size
3120 *
3121 * @since Added in version 3.1.
3122 *
3123 * @ingroup window
3124 */
3125GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
3126
3127/*! @brief Retrieves the content scale for the specified window.
3128 *
3129 * This function retrieves the content scale for the specified window. The
3130 * content scale is the ratio between the current DPI and the platform's
3131 * default DPI. This is especially important for text and any UI elements. If
3132 * the pixel dimensions of your UI scaled by this look appropriate on your
3133 * machine then it should appear at a reasonable size on other machines
3134 * regardless of their DPI and scaling settings. This relies on the system DPI
3135 * and scaling settings being somewhat correct.
3136 *
3137 * On systems where each monitors can have its own content scale, the window
3138 * content scale will depend on which monitor the system considers the window
3139 * to be on.
3140 *
3141 * @param[in] window The window to query.
3142 * @param[out] xscale Where to store the x-axis content scale, or `NULL`.
3143 * @param[out] yscale Where to store the y-axis content scale, or `NULL`.
3144 *
3145 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3146 * GLFW_PLATFORM_ERROR.
3147 *
3148 * @thread_safety This function must only be called from the main thread.
3149 *
3150 * @sa @ref window_scale
3151 * @sa @ref glfwSetWindowContentScaleCallback
3152 * @sa @ref glfwGetMonitorContentScale
3153 *
3154 * @since Added in version 3.3.
3155 *
3156 * @ingroup window
3157 */
3158GLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale);
3159
3160/*! @brief Returns the opacity of the whole window.
3161 *
3162 * This function returns the opacity of the window, including any decorations.
3163 *
3164 * The opacity (or alpha) value is a positive finite number between zero and
3165 * one, where zero is fully transparent and one is fully opaque. If the system
3166 * does not support whole window transparency, this function always returns one.
3167 *
3168 * The initial opacity value for newly created windows is one.
3169 *
3170 * @param[in] window The window to query.
3171 * @return The opacity value of the specified window.
3172 *
3173 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3174 * GLFW_PLATFORM_ERROR.
3175 *
3176 * @thread_safety This function must only be called from the main thread.
3177 *
3178 * @sa @ref window_transparency
3179 * @sa @ref glfwSetWindowOpacity
3180 *
3181 * @since Added in version 3.3.
3182 *
3183 * @ingroup window
3184 */
3185GLFWAPI float glfwGetWindowOpacity(GLFWwindow* window);
3186
3187/*! @brief Sets the opacity of the whole window.
3188 *
3189 * This function sets the opacity of the window, including any decorations.
3190 *
3191 * The opacity (or alpha) value is a positive finite number between zero and
3192 * one, where zero is fully transparent and one is fully opaque.
3193 *
3194 * The initial opacity value for newly created windows is one.
3195 *
3196 * A window created with framebuffer transparency may not use whole window
3197 * transparency. The results of doing this are undefined.
3198 *
3199 * @param[in] window The window to set the opacity for.
3200 * @param[in] opacity The desired opacity of the specified window.
3201 *
3202 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3203 * GLFW_PLATFORM_ERROR.
3204 *
3205 * @thread_safety This function must only be called from the main thread.
3206 *
3207 * @sa @ref window_transparency
3208 * @sa @ref glfwGetWindowOpacity
3209 *
3210 * @since Added in version 3.3.
3211 *
3212 * @ingroup window
3213 */
3214GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity);
3215
3216/*! @brief Iconifies the specified window.
3217 *
3218 * This function iconifies (minimizes) the specified window if it was
3219 * previously restored. If the window is already iconified, this function does
3220 * nothing.
3221 *
3222 * If the specified window is a full screen window, the original monitor
3223 * resolution is restored until the window is restored.
3224 *
3225 * @param[in] window The window to iconify.
3226 *
3227 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3228 * GLFW_PLATFORM_ERROR.
3229 *
3230 * @remark @wayland There is no concept of iconification in wl_shell, this
3231 * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated
3232 * protocol.
3233 *
3234 * @thread_safety This function must only be called from the main thread.
3235 *
3236 * @sa @ref window_iconify
3237 * @sa @ref glfwRestoreWindow
3238 * @sa @ref glfwMaximizeWindow
3239 *
3240 * @since Added in version 2.1.
3241 * @glfw3 Added window handle parameter.
3242 *
3243 * @ingroup window
3244 */
3245GLFWAPI void glfwIconifyWindow(GLFWwindow* window);
3246
3247/*! @brief Restores the specified window.
3248 *
3249 * This function restores the specified window if it was previously iconified
3250 * (minimized) or maximized. If the window is already restored, this function
3251 * does nothing.
3252 *
3253 * If the specified window is a full screen window, the resolution chosen for
3254 * the window is restored on the selected monitor.
3255 *
3256 * @param[in] window The window to restore.
3257 *
3258 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3259 * GLFW_PLATFORM_ERROR.
3260 *
3261 * @thread_safety This function must only be called from the main thread.
3262 *
3263 * @sa @ref window_iconify
3264 * @sa @ref glfwIconifyWindow
3265 * @sa @ref glfwMaximizeWindow
3266 *
3267 * @since Added in version 2.1.
3268 * @glfw3 Added window handle parameter.
3269 *
3270 * @ingroup window
3271 */
3272GLFWAPI void glfwRestoreWindow(GLFWwindow* window);
3273
3274/*! @brief Maximizes the specified window.
3275 *
3276 * This function maximizes the specified window if it was previously not
3277 * maximized. If the window is already maximized, this function does nothing.
3278 *
3279 * If the specified window is a full screen window, this function does nothing.
3280 *
3281 * @param[in] window The window to maximize.
3282 *
3283 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3284 * GLFW_PLATFORM_ERROR.
3285 *
3286 * @par Thread Safety
3287 * This function may only be called from the main thread.
3288 *
3289 * @sa @ref window_iconify
3290 * @sa @ref glfwIconifyWindow
3291 * @sa @ref glfwRestoreWindow
3292 *
3293 * @since Added in GLFW 3.2.
3294 *
3295 * @ingroup window
3296 */
3297GLFWAPI void glfwMaximizeWindow(GLFWwindow* window);
3298
3299/*! @brief Makes the specified window visible.
3300 *
3301 * This function makes the specified window visible if it was previously
3302 * hidden. If the window is already visible or is in full screen mode, this
3303 * function does nothing.
3304 *
3305 * By default, windowed mode windows are focused when shown
3306 * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint
3307 * to change this behavior for all newly created windows, or change the
3308 * behavior for an existing window with @ref glfwSetWindowAttrib.
3309 *
3310 * @param[in] window The window to make visible.
3311 *
3312 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3313 * GLFW_PLATFORM_ERROR.
3314 *
3315 * @thread_safety This function must only be called from the main thread.
3316 *
3317 * @sa @ref window_hide
3318 * @sa @ref glfwHideWindow
3319 *
3320 * @since Added in version 3.0.
3321 *
3322 * @ingroup window
3323 */
3324GLFWAPI void glfwShowWindow(GLFWwindow* window);
3325
3326/*! @brief Hides the specified window.
3327 *
3328 * This function hides the specified window if it was previously visible. If
3329 * the window is already hidden or is in full screen mode, this function does
3330 * nothing.
3331 *
3332 * @param[in] window The window to hide.
3333 *
3334 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3335 * GLFW_PLATFORM_ERROR.
3336 *
3337 * @thread_safety This function must only be called from the main thread.
3338 *
3339 * @sa @ref window_hide
3340 * @sa @ref glfwShowWindow
3341 *
3342 * @since Added in version 3.0.
3343 *
3344 * @ingroup window
3345 */
3346GLFWAPI void glfwHideWindow(GLFWwindow* window);
3347
3348/*! @brief Brings the specified window to front and sets input focus.
3349 *
3350 * This function brings the specified window to front and sets input focus.
3351 * The window should already be visible and not iconified.
3352 *
3353 * By default, both windowed and full screen mode windows are focused when
3354 * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to
3355 * disable this behavior.
3356 *
3357 * Also by default, windowed mode windows are focused when shown
3358 * with @ref glfwShowWindow. Set the
3359 * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior.
3360 *
3361 * __Do not use this function__ to steal focus from other applications unless
3362 * you are certain that is what the user wants. Focus stealing can be
3363 * extremely disruptive.
3364 *
3365 * For a less disruptive way of getting the user's attention, see
3366 * [attention requests](@ref window_attention).
3367 *
3368 * @param[in] window The window to give input focus.
3369 *
3370 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3371 * GLFW_PLATFORM_ERROR.
3372 *
3373 * @remark @wayland It is not possible for an application to bring its windows
3374 * to front, this function will always emit @ref GLFW_PLATFORM_ERROR.
3375 *
3376 * @thread_safety This function must only be called from the main thread.
3377 *
3378 * @sa @ref window_focus
3379 * @sa @ref window_attention
3380 *
3381 * @since Added in version 3.2.
3382 *
3383 * @ingroup window
3384 */
3385GLFWAPI void glfwFocusWindow(GLFWwindow* window);
3386
3387/*! @brief Requests user attention to the specified window.
3388 *
3389 * This function requests user attention to the specified window. On
3390 * platforms where this is not supported, attention is requested to the
3391 * application as a whole.
3392 *
3393 * Once the user has given attention, usually by focusing the window or
3394 * application, the system will end the request automatically.
3395 *
3396 * @param[in] window The window to request attention to.
3397 *
3398 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3399 * GLFW_PLATFORM_ERROR.
3400 *
3401 * @remark @macos Attention is requested to the application as a whole, not the
3402 * specific window.
3403 *
3404 * @thread_safety This function must only be called from the main thread.
3405 *
3406 * @sa @ref window_attention
3407 *
3408 * @since Added in version 3.3.
3409 *
3410 * @ingroup window
3411 */
3412GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window);
3413
3414/*! @brief Returns the monitor that the window uses for full screen mode.
3415 *
3416 * This function returns the handle of the monitor that the specified window is
3417 * in full screen on.
3418 *
3419 * @param[in] window The window to query.
3420 * @return The monitor, or `NULL` if the window is in windowed mode or an
3421 * [error](@ref error_handling) occurred.
3422 *
3423 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3424 *
3425 * @thread_safety This function must only be called from the main thread.
3426 *
3427 * @sa @ref window_monitor
3428 * @sa @ref glfwSetWindowMonitor
3429 *
3430 * @since Added in version 3.0.
3431 *
3432 * @ingroup window
3433 */
3434GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window);
3435
3436/*! @brief Sets the mode, monitor, video mode and placement of a window.
3437 *
3438 * This function sets the monitor that the window uses for full screen mode or,
3439 * if the monitor is `NULL`, makes it windowed mode.
3440 *
3441 * When setting a monitor, this function updates the width, height and refresh
3442 * rate of the desired video mode and switches to the video mode closest to it.
3443 * The window position is ignored when setting a monitor.
3444 *
3445 * When the monitor is `NULL`, the position, width and height are used to
3446 * place the window content area. The refresh rate is ignored when no monitor
3447 * is specified.
3448 *
3449 * If you only wish to update the resolution of a full screen window or the
3450 * size of a windowed mode window, see @ref glfwSetWindowSize.
3451 *
3452 * When a window transitions from full screen to windowed mode, this function
3453 * restores any previous window settings such as whether it is decorated,
3454 * floating, resizable, has size or aspect ratio limits, etc.
3455 *
3456 * @param[in] window The window whose monitor, size or video mode to set.
3457 * @param[in] monitor The desired monitor, or `NULL` to set windowed mode.
3458 * @param[in] xpos The desired x-coordinate of the upper-left corner of the
3459 * content area.
3460 * @param[in] ypos The desired y-coordinate of the upper-left corner of the
3461 * content area.
3462 * @param[in] width The desired with, in screen coordinates, of the content
3463 * area or video mode.
3464 * @param[in] height The desired height, in screen coordinates, of the content
3465 * area or video mode.
3466 * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode,
3467 * or `GLFW_DONT_CARE`.
3468 *
3469 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3470 * GLFW_PLATFORM_ERROR.
3471 *
3472 * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise
3473 * affected by any resizing or mode switching, although you may need to update
3474 * your viewport if the framebuffer size has changed.
3475 *
3476 * @remark @wayland The desired window position is ignored, as there is no way
3477 * for an application to set this property.
3478 *
3479 * @remark @wayland Setting the window to full screen will not attempt to
3480 * change the mode, no matter what the requested size or refresh rate.
3481 *
3482 * @thread_safety This function must only be called from the main thread.
3483 *
3484 * @sa @ref window_monitor
3485 * @sa @ref window_full_screen
3486 * @sa @ref glfwGetWindowMonitor
3487 * @sa @ref glfwSetWindowSize
3488 *
3489 * @since Added in version 3.2.
3490 *
3491 * @ingroup window
3492 */
3493GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
3494
3495/*! @brief Returns an attribute of the specified window.
3496 *
3497 * This function returns the value of an attribute of the specified window or
3498 * its OpenGL or OpenGL ES context.
3499 *
3500 * @param[in] window The window to query.
3501 * @param[in] attrib The [window attribute](@ref window_attribs) whose value to
3502 * return.
3503 * @return The value of the attribute, or zero if an
3504 * [error](@ref error_handling) occurred.
3505 *
3506 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3507 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
3508 *
3509 * @remark Framebuffer related hints are not window attributes. See @ref
3510 * window_attribs_fb for more information.
3511 *
3512 * @remark Zero is a valid value for many window and context related
3513 * attributes so you cannot use a return value of zero as an indication of
3514 * errors. However, this function should not fail as long as it is passed
3515 * valid arguments and the library has been [initialized](@ref intro_init).
3516 *
3517 * @thread_safety This function must only be called from the main thread.
3518 *
3519 * @sa @ref window_attribs
3520 * @sa @ref glfwSetWindowAttrib
3521 *
3522 * @since Added in version 3.0. Replaces `glfwGetWindowParam` and
3523 * `glfwGetGLVersion`.
3524 *
3525 * @ingroup window
3526 */
3527GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
3528
3529/*! @brief Sets an attribute of the specified window.
3530 *
3531 * This function sets the value of an attribute of the specified window.
3532 *
3533 * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
3534 * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
3535 * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
3536 * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and
3537 * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib).
3538 *
3539 * Some of these attributes are ignored for full screen windows. The new
3540 * value will take effect if the window is later made windowed.
3541 *
3542 * Some of these attributes are ignored for windowed mode windows. The new
3543 * value will take effect if the window is later made full screen.
3544 *
3545 * @param[in] window The window to set the attribute for.
3546 * @param[in] attrib A supported window attribute.
3547 * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`.
3548 *
3549 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
3550 * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
3551 *
3552 * @remark Calling @ref glfwGetWindowAttrib will always return the latest
3553 * value, even if that value is ignored by the current mode of the window.
3554 *
3555 * @thread_safety This function must only be called from the main thread.
3556 *
3557 * @sa @ref window_attribs
3558 * @sa @ref glfwGetWindowAttrib
3559 *
3560 * @since Added in version 3.3.
3561 *
3562 * @ingroup window
3563 */
3564GLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value);
3565
3566/*! @brief Sets the user pointer of the specified window.
3567 *
3568 * This function sets the user-defined pointer of the specified window. The
3569 * current value is retained until the window is destroyed. The initial value
3570 * is `NULL`.
3571 *
3572 * @param[in] window The window whose pointer to set.
3573 * @param[in] pointer The new value.
3574 *
3575 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3576 *
3577 * @thread_safety This function may be called from any thread. Access is not
3578 * synchronized.
3579 *
3580 * @sa @ref window_userptr
3581 * @sa @ref glfwGetWindowUserPointer
3582 *
3583 * @since Added in version 3.0.
3584 *
3585 * @ingroup window
3586 */
3587GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
3588
3589/*! @brief Returns the user pointer of the specified window.
3590 *
3591 * This function returns the current value of the user-defined pointer of the
3592 * specified window. The initial value is `NULL`.
3593 *
3594 * @param[in] window The window whose pointer to return.
3595 *
3596 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3597 *
3598 * @thread_safety This function may be called from any thread. Access is not
3599 * synchronized.
3600 *
3601 * @sa @ref window_userptr
3602 * @sa @ref glfwSetWindowUserPointer
3603 *
3604 * @since Added in version 3.0.
3605 *
3606 * @ingroup window
3607 */
3608GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window);
3609
3610/*! @brief Sets the position callback for the specified window.
3611 *
3612 * This function sets the position callback of the specified window, which is
3613 * called when the window is moved. The callback is provided with the
3614 * position, in screen coordinates, of the upper-left corner of the content
3615 * area of the window.
3616 *
3617 * @param[in] window The window whose callback to set.
3618 * @param[in] callback The new callback, or `NULL` to remove the currently set
3619 * callback.
3620 * @return The previously set callback, or `NULL` if no callback was set or the
3621 * library had not been [initialized](@ref intro_init).
3622 *
3623 * @callback_signature
3624 * @code
3625 * void function_name(GLFWwindow* window, int xpos, int ypos)
3626 * @endcode
3627 * For more information about the callback parameters, see the
3628 * [function pointer type](@ref GLFWwindowposfun).
3629 *
3630 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3631 *
3632 * @remark @wayland This callback will never be called, as there is no way for
3633 * an application to know its global position.
3634 *
3635 * @thread_safety This function must only be called from the main thread.
3636 *
3637 * @sa @ref window_pos
3638 *
3639 * @since Added in version 3.0.
3640 *
3641 * @ingroup window
3642 */
3643GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback);
3644
3645/*! @brief Sets the size callback for the specified window.
3646 *
3647 * This function sets the size callback of the specified window, which is
3648 * called when the window is resized. The callback is provided with the size,
3649 * in screen coordinates, of the content area of the window.
3650 *
3651 * @param[in] window The window whose callback to set.
3652 * @param[in] callback The new callback, or `NULL` to remove the currently set
3653 * callback.
3654 * @return The previously set callback, or `NULL` if no callback was set or the
3655 * library had not been [initialized](@ref intro_init).
3656 *
3657 * @callback_signature
3658 * @code
3659 * void function_name(GLFWwindow* window, int width, int height)
3660 * @endcode
3661 * For more information about the callback parameters, see the
3662 * [function pointer type](@ref GLFWwindowsizefun).
3663 *
3664 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3665 *
3666 * @thread_safety This function must only be called from the main thread.
3667 *
3668 * @sa @ref window_size
3669 *
3670 * @since Added in version 1.0.
3671 * @glfw3 Added window handle parameter and return value.
3672 *
3673 * @ingroup window
3674 */
3675GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback);
3676
3677/*! @brief Sets the close callback for the specified window.
3678 *
3679 * This function sets the close callback of the specified window, which is
3680 * called when the user attempts to close the window, for example by clicking
3681 * the close widget in the title bar.
3682 *
3683 * The close flag is set before this callback is called, but you can modify it
3684 * at any time with @ref glfwSetWindowShouldClose.
3685 *
3686 * The close callback is not triggered by @ref glfwDestroyWindow.
3687 *
3688 * @param[in] window The window whose callback to set.
3689 * @param[in] callback The new callback, or `NULL` to remove the currently set
3690 * callback.
3691 * @return The previously set callback, or `NULL` if no callback was set or the
3692 * library had not been [initialized](@ref intro_init).
3693 *
3694 * @callback_signature
3695 * @code
3696 * void function_name(GLFWwindow* window)
3697 * @endcode
3698 * For more information about the callback parameters, see the
3699 * [function pointer type](@ref GLFWwindowclosefun).
3700 *
3701 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3702 *
3703 * @remark @macos Selecting Quit from the application menu will trigger the
3704 * close callback for all windows.
3705 *
3706 * @thread_safety This function must only be called from the main thread.
3707 *
3708 * @sa @ref window_close
3709 *
3710 * @since Added in version 2.5.
3711 * @glfw3 Added window handle parameter and return value.
3712 *
3713 * @ingroup window
3714 */
3715GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback);
3716
3717/*! @brief Sets the refresh callback for the specified window.
3718 *
3719 * This function sets the refresh callback of the specified window, which is
3720 * called when the content area of the window needs to be redrawn, for example
3721 * if the window has been exposed after having been covered by another window.
3722 *
3723 * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where
3724 * the window contents are saved off-screen, this callback may be called only
3725 * very infrequently or never at all.
3726 *
3727 * @param[in] window The window whose callback to set.
3728 * @param[in] callback The new callback, or `NULL` to remove the currently set
3729 * callback.
3730 * @return The previously set callback, or `NULL` if no callback was set or the
3731 * library had not been [initialized](@ref intro_init).
3732 *
3733 * @callback_signature
3734 * @code
3735 * void function_name(GLFWwindow* window);
3736 * @endcode
3737 * For more information about the callback parameters, see the
3738 * [function pointer type](@ref GLFWwindowrefreshfun).
3739 *
3740 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3741 *
3742 * @thread_safety This function must only be called from the main thread.
3743 *
3744 * @sa @ref window_refresh
3745 *
3746 * @since Added in version 2.5.
3747 * @glfw3 Added window handle parameter and return value.
3748 *
3749 * @ingroup window
3750 */
3751GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback);
3752
3753/*! @brief Sets the focus callback for the specified window.
3754 *
3755 * This function sets the focus callback of the specified window, which is
3756 * called when the window gains or loses input focus.
3757 *
3758 * After the focus callback is called for a window that lost input focus,
3759 * synthetic key and mouse button release events will be generated for all such
3760 * that had been pressed. For more information, see @ref glfwSetKeyCallback
3761 * and @ref glfwSetMouseButtonCallback.
3762 *
3763 * @param[in] window The window whose callback to set.
3764 * @param[in] callback The new callback, or `NULL` to remove the currently set
3765 * callback.
3766 * @return The previously set callback, or `NULL` if no callback was set or the
3767 * library had not been [initialized](@ref intro_init).
3768 *
3769 * @callback_signature
3770 * @code
3771 * void function_name(GLFWwindow* window, int focused)
3772 * @endcode
3773 * For more information about the callback parameters, see the
3774 * [function pointer type](@ref GLFWwindowfocusfun).
3775 *
3776 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3777 *
3778 * @thread_safety This function must only be called from the main thread.
3779 *
3780 * @sa @ref window_focus
3781 *
3782 * @since Added in version 3.0.
3783 *
3784 * @ingroup window
3785 */
3786GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback);
3787
3788/*! @brief Sets the iconify callback for the specified window.
3789 *
3790 * This function sets the iconification callback of the specified window, which
3791 * is called when the window is iconified or restored.
3792 *
3793 * @param[in] window The window whose callback to set.
3794 * @param[in] callback The new callback, or `NULL` to remove the currently set
3795 * callback.
3796 * @return The previously set callback, or `NULL` if no callback was set or the
3797 * library had not been [initialized](@ref intro_init).
3798 *
3799 * @callback_signature
3800 * @code
3801 * void function_name(GLFWwindow* window, int iconified)
3802 * @endcode
3803 * For more information about the callback parameters, see the
3804 * [function pointer type](@ref GLFWwindowiconifyfun).
3805 *
3806 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3807 *
3808 * @remark @wayland The wl_shell protocol has no concept of iconification,
3809 * this callback will never be called when using this deprecated protocol.
3810 *
3811 * @thread_safety This function must only be called from the main thread.
3812 *
3813 * @sa @ref window_iconify
3814 *
3815 * @since Added in version 3.0.
3816 *
3817 * @ingroup window
3818 */
3819GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback);
3820
3821/*! @brief Sets the maximize callback for the specified window.
3822 *
3823 * This function sets the maximization callback of the specified window, which
3824 * is called when the window is maximized or restored.
3825 *
3826 * @param[in] window The window whose callback to set.
3827 * @param[in] callback The new callback, or `NULL` to remove the currently set
3828 * callback.
3829 * @return The previously set callback, or `NULL` if no callback was set or the
3830 * library had not been [initialized](@ref intro_init).
3831 *
3832 * @callback_signature
3833 * @code
3834 * void function_name(GLFWwindow* window, int maximized)
3835 * @endcode
3836 * For more information about the callback parameters, see the
3837 * [function pointer type](@ref GLFWwindowmaximizefun).
3838 *
3839 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3840 *
3841 * @thread_safety This function must only be called from the main thread.
3842 *
3843 * @sa @ref window_maximize
3844 *
3845 * @since Added in version 3.3.
3846 *
3847 * @ingroup window
3848 */
3849GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback);
3850
3851/*! @brief Sets the framebuffer resize callback for the specified window.
3852 *
3853 * This function sets the framebuffer resize callback of the specified window,
3854 * which is called when the framebuffer of the specified window is resized.
3855 *
3856 * @param[in] window The window whose callback to set.
3857 * @param[in] callback The new callback, or `NULL` to remove the currently set
3858 * callback.
3859 * @return The previously set callback, or `NULL` if no callback was set or the
3860 * library had not been [initialized](@ref intro_init).
3861 *
3862 * @callback_signature
3863 * @code
3864 * void function_name(GLFWwindow* window, int width, int height)
3865 * @endcode
3866 * For more information about the callback parameters, see the
3867 * [function pointer type](@ref GLFWframebuffersizefun).
3868 *
3869 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3870 *
3871 * @thread_safety This function must only be called from the main thread.
3872 *
3873 * @sa @ref window_fbsize
3874 *
3875 * @since Added in version 3.0.
3876 *
3877 * @ingroup window
3878 */
3879GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback);
3880
3881/*! @brief Sets the window content scale callback for the specified window.
3882 *
3883 * This function sets the window content scale callback of the specified window,
3884 * which is called when the content scale of the specified window changes.
3885 *
3886 * @param[in] window The window whose callback to set.
3887 * @param[in] callback The new callback, or `NULL` to remove the currently set
3888 * callback.
3889 * @return The previously set callback, or `NULL` if no callback was set or the
3890 * library had not been [initialized](@ref intro_init).
3891 *
3892 * @callback_signature
3893 * @code
3894 * void function_name(GLFWwindow* window, float xscale, float yscale)
3895 * @endcode
3896 * For more information about the callback parameters, see the
3897 * [function pointer type](@ref GLFWwindowcontentscalefun).
3898 *
3899 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
3900 *
3901 * @thread_safety This function must only be called from the main thread.
3902 *
3903 * @sa @ref window_scale
3904 * @sa @ref glfwGetWindowContentScale
3905 *
3906 * @since Added in version 3.3.
3907 *
3908 * @ingroup window
3909 */
3910GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback);
3911
3912/*! @brief Processes all pending events.
3913 *
3914 * This function processes only those events that are already in the event
3915 * queue and then returns immediately. Processing events will cause the window
3916 * and input callbacks associated with those events to be called.
3917 *
3918 * On some platforms, a window move, resize or menu operation will cause event
3919 * processing to block. This is due to how event processing is designed on
3920 * those platforms. You can use the
3921 * [window refresh callback](@ref window_refresh) to redraw the contents of
3922 * your window when necessary during such operations.
3923 *
3924 * Do not assume that callbacks you set will _only_ be called in response to
3925 * event processing functions like this one. While it is necessary to poll for
3926 * events, window systems that require GLFW to register callbacks of its own
3927 * can pass events to GLFW in response to many window system function calls.
3928 * GLFW will pass those events on to the application callbacks before
3929 * returning.
3930 *
3931 * Event processing is not required for joystick input to work.
3932 *
3933 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3934 * GLFW_PLATFORM_ERROR.
3935 *
3936 * @reentrancy This function must not be called from a callback.
3937 *
3938 * @thread_safety This function must only be called from the main thread.
3939 *
3940 * @sa @ref events
3941 * @sa @ref glfwWaitEvents
3942 * @sa @ref glfwWaitEventsTimeout
3943 *
3944 * @since Added in version 1.0.
3945 *
3946 * @ingroup window
3947 */
3948GLFWAPI void glfwPollEvents(void);
3949
3950/*! @brief Waits until events are queued and processes them.
3951 *
3952 * This function puts the calling thread to sleep until at least one event is
3953 * available in the event queue. Once one or more events are available,
3954 * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue
3955 * are processed and the function then returns immediately. Processing events
3956 * will cause the window and input callbacks associated with those events to be
3957 * called.
3958 *
3959 * Since not all events are associated with callbacks, this function may return
3960 * without a callback having been called even if you are monitoring all
3961 * callbacks.
3962 *
3963 * On some platforms, a window move, resize or menu operation will cause event
3964 * processing to block. This is due to how event processing is designed on
3965 * those platforms. You can use the
3966 * [window refresh callback](@ref window_refresh) to redraw the contents of
3967 * your window when necessary during such operations.
3968 *
3969 * Do not assume that callbacks you set will _only_ be called in response to
3970 * event processing functions like this one. While it is necessary to poll for
3971 * events, window systems that require GLFW to register callbacks of its own
3972 * can pass events to GLFW in response to many window system function calls.
3973 * GLFW will pass those events on to the application callbacks before
3974 * returning.
3975 *
3976 * Event processing is not required for joystick input to work.
3977 *
3978 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
3979 * GLFW_PLATFORM_ERROR.
3980 *
3981 * @reentrancy This function must not be called from a callback.
3982 *
3983 * @thread_safety This function must only be called from the main thread.
3984 *
3985 * @sa @ref events
3986 * @sa @ref glfwPollEvents
3987 * @sa @ref glfwWaitEventsTimeout
3988 *
3989 * @since Added in version 2.5.
3990 *
3991 * @ingroup window
3992 */
3993GLFWAPI void glfwWaitEvents(void);
3994
3995/*! @brief Waits with timeout until events are queued and processes them.
3996 *
3997 * This function puts the calling thread to sleep until at least one event is
3998 * available in the event queue, or until the specified timeout is reached. If
3999 * one or more events are available, it behaves exactly like @ref
4000 * glfwPollEvents, i.e. the events in the queue are processed and the function
4001 * then returns immediately. Processing events will cause the window and input
4002 * callbacks associated with those events to be called.
4003 *
4004 * The timeout value must be a positive finite number.
4005 *
4006 * Since not all events are associated with callbacks, this function may return
4007 * without a callback having been called even if you are monitoring all
4008 * callbacks.
4009 *
4010 * On some platforms, a window move, resize or menu operation will cause event
4011 * processing to block. This is due to how event processing is designed on
4012 * those platforms. You can use the
4013 * [window refresh callback](@ref window_refresh) to redraw the contents of
4014 * your window when necessary during such operations.
4015 *
4016 * Do not assume that callbacks you set will _only_ be called in response to
4017 * event processing functions like this one. While it is necessary to poll for
4018 * events, window systems that require GLFW to register callbacks of its own
4019 * can pass events to GLFW in response to many window system function calls.
4020 * GLFW will pass those events on to the application callbacks before
4021 * returning.
4022 *
4023 * Event processing is not required for joystick input to work.
4024 *
4025 * @param[in] timeout The maximum amount of time, in seconds, to wait.
4026 *
4027 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4028 * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
4029 *
4030 * @reentrancy This function must not be called from a callback.
4031 *
4032 * @thread_safety This function must only be called from the main thread.
4033 *
4034 * @sa @ref events
4035 * @sa @ref glfwPollEvents
4036 * @sa @ref glfwWaitEvents
4037 *
4038 * @since Added in version 3.2.
4039 *
4040 * @ingroup window
4041 */
4042GLFWAPI void glfwWaitEventsTimeout(double timeout);
4043
4044/*! @brief Posts an empty event to the event queue.
4045 *
4046 * This function posts an empty event from the current thread to the event
4047 * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return.
4048 *
4049 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4050 * GLFW_PLATFORM_ERROR.
4051 *
4052 * @thread_safety This function may be called from any thread.
4053 *
4054 * @sa @ref events
4055 * @sa @ref glfwWaitEvents
4056 * @sa @ref glfwWaitEventsTimeout
4057 *
4058 * @since Added in version 3.1.
4059 *
4060 * @ingroup window
4061 */
4062GLFWAPI void glfwPostEmptyEvent(void);
4063
4064/*! @brief Returns the value of an input option for the specified window.
4065 *
4066 * This function returns the value of an input option for the specified window.
4067 * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS,
4068 * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or
4069 * @ref GLFW_RAW_MOUSE_MOTION.
4070 *
4071 * @param[in] window The window to query.
4072 * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`,
4073 * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or
4074 * `GLFW_RAW_MOUSE_MOTION`.
4075 *
4076 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4077 * GLFW_INVALID_ENUM.
4078 *
4079 * @thread_safety This function must only be called from the main thread.
4080 *
4081 * @sa @ref glfwSetInputMode
4082 *
4083 * @since Added in version 3.0.
4084 *
4085 * @ingroup input
4086 */
4087GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);
4088
4089/*! @brief Sets an input option for the specified window.
4090 *
4091 * This function sets an input mode option for the specified window. The mode
4092 * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS,
4093 * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or
4094 * @ref GLFW_RAW_MOUSE_MOTION.
4095 *
4096 * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor
4097 * modes:
4098 * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally.
4099 * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the
4100 * content area of the window but does not restrict the cursor from leaving.
4101 * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual
4102 * and unlimited cursor movement. This is useful for implementing for
4103 * example 3D camera controls.
4104 *
4105 * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to
4106 * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are
4107 * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS`
4108 * the next time it is called even if the key had been released before the
4109 * call. This is useful when you are only interested in whether keys have been
4110 * pressed but not when or in which order.
4111 *
4112 * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either
4113 * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it.
4114 * If sticky mouse buttons are enabled, a mouse button press will ensure that
4115 * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even
4116 * if the mouse button had been released before the call. This is useful when
4117 * you are only interested in whether mouse buttons have been pressed but not
4118 * when or in which order.
4119 *
4120 * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to
4121 * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled,
4122 * callbacks that receive modifier bits will also have the @ref
4123 * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on,
4124 * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on.
4125 *
4126 * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE`
4127 * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is
4128 * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported,
4129 * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref
4130 * glfwRawMouseMotionSupported to check for support.
4131 *
4132 * @param[in] window The window whose input mode to set.
4133 * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`,
4134 * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or
4135 * `GLFW_RAW_MOUSE_MOTION`.
4136 * @param[in] value The new value of the specified input mode.
4137 *
4138 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4139 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4140 *
4141 * @thread_safety This function must only be called from the main thread.
4142 *
4143 * @sa @ref glfwGetInputMode
4144 *
4145 * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`.
4146 *
4147 * @ingroup input
4148 */
4149GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value);
4150
4151/*! @brief Returns whether raw mouse motion is supported.
4152 *
4153 * This function returns whether raw mouse motion is supported on the current
4154 * system. This status does not change after GLFW has been initialized so you
4155 * only need to check this once. If you attempt to enable raw motion on
4156 * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted.
4157 *
4158 * Raw mouse motion is closer to the actual motion of the mouse across
4159 * a surface. It is not affected by the scaling and acceleration applied to
4160 * the motion of the desktop cursor. That processing is suitable for a cursor
4161 * while raw motion is better for controlling for example a 3D camera. Because
4162 * of this, raw mouse motion is only provided when the cursor is disabled.
4163 *
4164 * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine,
4165 * or `GLFW_FALSE` otherwise.
4166 *
4167 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4168 *
4169 * @thread_safety This function must only be called from the main thread.
4170 *
4171 * @sa @ref raw_mouse_motion
4172 * @sa @ref glfwSetInputMode
4173 *
4174 * @since Added in version 3.3.
4175 *
4176 * @ingroup input
4177 */
4178GLFWAPI int glfwRawMouseMotionSupported(void);
4179
4180/*! @brief Returns the layout-specific name of the specified printable key.
4181 *
4182 * This function returns the name of the specified printable key, encoded as
4183 * UTF-8. This is typically the character that key would produce without any
4184 * modifier keys, intended for displaying key bindings to the user. For dead
4185 * keys, it is typically the diacritic it would add to a character.
4186 *
4187 * __Do not use this function__ for [text input](@ref input_char). You will
4188 * break text input for many languages even if it happens to work for yours.
4189 *
4190 * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key,
4191 * otherwise the scancode is ignored. If you specify a non-printable key, or
4192 * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this
4193 * function returns `NULL` but does not emit an error.
4194 *
4195 * This behavior allows you to always pass in the arguments in the
4196 * [key callback](@ref input_key) without modification.
4197 *
4198 * The printable keys are:
4199 * - `GLFW_KEY_APOSTROPHE`
4200 * - `GLFW_KEY_COMMA`
4201 * - `GLFW_KEY_MINUS`
4202 * - `GLFW_KEY_PERIOD`
4203 * - `GLFW_KEY_SLASH`
4204 * - `GLFW_KEY_SEMICOLON`
4205 * - `GLFW_KEY_EQUAL`
4206 * - `GLFW_KEY_LEFT_BRACKET`
4207 * - `GLFW_KEY_RIGHT_BRACKET`
4208 * - `GLFW_KEY_BACKSLASH`
4209 * - `GLFW_KEY_WORLD_1`
4210 * - `GLFW_KEY_WORLD_2`
4211 * - `GLFW_KEY_0` to `GLFW_KEY_9`
4212 * - `GLFW_KEY_A` to `GLFW_KEY_Z`
4213 * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9`
4214 * - `GLFW_KEY_KP_DECIMAL`
4215 * - `GLFW_KEY_KP_DIVIDE`
4216 * - `GLFW_KEY_KP_MULTIPLY`
4217 * - `GLFW_KEY_KP_SUBTRACT`
4218 * - `GLFW_KEY_KP_ADD`
4219 * - `GLFW_KEY_KP_EQUAL`
4220 *
4221 * Names for printable keys depend on keyboard layout, while names for
4222 * non-printable keys are the same across layouts but depend on the application
4223 * language and should be localized along with other user interface text.
4224 *
4225 * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`.
4226 * @param[in] scancode The scancode of the key to query.
4227 * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`.
4228 *
4229 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4230 * GLFW_PLATFORM_ERROR.
4231 *
4232 * @remark The contents of the returned string may change when a keyboard
4233 * layout change event is received.
4234 *
4235 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
4236 * should not free it yourself. It is valid until the library is terminated.
4237 *
4238 * @thread_safety This function must only be called from the main thread.
4239 *
4240 * @sa @ref input_key_name
4241 *
4242 * @since Added in version 3.2.
4243 *
4244 * @ingroup input
4245 */
4246GLFWAPI const char* glfwGetKeyName(int key, int scancode);
4247
4248/*! @brief Returns the platform-specific scancode of the specified key.
4249 *
4250 * This function returns the platform-specific scancode of the specified key.
4251 *
4252 * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this
4253 * method will return `-1`.
4254 *
4255 * @param[in] key Any [named key](@ref keys).
4256 * @return The platform-specific scancode for the key, or `-1` if an
4257 * [error](@ref error_handling) occurred.
4258 *
4259 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4260 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4261 *
4262 * @thread_safety This function may be called from any thread.
4263 *
4264 * @sa @ref input_key
4265 *
4266 * @since Added in version 3.3.
4267 *
4268 * @ingroup input
4269 */
4270GLFWAPI int glfwGetKeyScancode(int key);
4271
4272/*! @brief Returns the last reported state of a keyboard key for the specified
4273 * window.
4274 *
4275 * This function returns the last state reported for the specified key to the
4276 * specified window. The returned state is one of `GLFW_PRESS` or
4277 * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to
4278 * the key callback.
4279 *
4280 * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns
4281 * `GLFW_PRESS` the first time you call it for a key that was pressed, even if
4282 * that key has already been released.
4283 *
4284 * The key functions deal with physical keys, with [key tokens](@ref keys)
4285 * named after their use on the standard US keyboard layout. If you want to
4286 * input text, use the Unicode character callback instead.
4287 *
4288 * The [modifier key bit masks](@ref mods) are not key tokens and cannot be
4289 * used with this function.
4290 *
4291 * __Do not use this function__ to implement [text input](@ref input_char).
4292 *
4293 * @param[in] window The desired window.
4294 * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is
4295 * not a valid key for this function.
4296 * @return One of `GLFW_PRESS` or `GLFW_RELEASE`.
4297 *
4298 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4299 * GLFW_INVALID_ENUM.
4300 *
4301 * @thread_safety This function must only be called from the main thread.
4302 *
4303 * @sa @ref input_key
4304 *
4305 * @since Added in version 1.0.
4306 * @glfw3 Added window handle parameter.
4307 *
4308 * @ingroup input
4309 */
4310GLFWAPI int glfwGetKey(GLFWwindow* window, int key);
4311
4312/*! @brief Returns the last reported state of a mouse button for the specified
4313 * window.
4314 *
4315 * This function returns the last state reported for the specified mouse button
4316 * to the specified window. The returned state is one of `GLFW_PRESS` or
4317 * `GLFW_RELEASE`.
4318 *
4319 * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function
4320 * returns `GLFW_PRESS` the first time you call it for a mouse button that was
4321 * pressed, even if that mouse button has already been released.
4322 *
4323 * @param[in] window The desired window.
4324 * @param[in] button The desired [mouse button](@ref buttons).
4325 * @return One of `GLFW_PRESS` or `GLFW_RELEASE`.
4326 *
4327 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4328 * GLFW_INVALID_ENUM.
4329 *
4330 * @thread_safety This function must only be called from the main thread.
4331 *
4332 * @sa @ref input_mouse_button
4333 *
4334 * @since Added in version 1.0.
4335 * @glfw3 Added window handle parameter.
4336 *
4337 * @ingroup input
4338 */
4339GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button);
4340
4341/*! @brief Retrieves the position of the cursor relative to the content area of
4342 * the window.
4343 *
4344 * This function returns the position of the cursor, in screen coordinates,
4345 * relative to the upper-left corner of the content area of the specified
4346 * window.
4347 *
4348 * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor
4349 * position is unbounded and limited only by the minimum and maximum values of
4350 * a `double`.
4351 *
4352 * The coordinate can be converted to their integer equivalents with the
4353 * `floor` function. Casting directly to an integer type works for positive
4354 * coordinates, but fails for negative ones.
4355 *
4356 * Any or all of the position arguments may be `NULL`. If an error occurs, all
4357 * non-`NULL` position arguments will be set to zero.
4358 *
4359 * @param[in] window The desired window.
4360 * @param[out] xpos Where to store the cursor x-coordinate, relative to the
4361 * left edge of the content area, or `NULL`.
4362 * @param[out] ypos Where to store the cursor y-coordinate, relative to the to
4363 * top edge of the content area, or `NULL`.
4364 *
4365 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4366 * GLFW_PLATFORM_ERROR.
4367 *
4368 * @thread_safety This function must only be called from the main thread.
4369 *
4370 * @sa @ref cursor_pos
4371 * @sa @ref glfwSetCursorPos
4372 *
4373 * @since Added in version 3.0. Replaces `glfwGetMousePos`.
4374 *
4375 * @ingroup input
4376 */
4377GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);
4378
4379/*! @brief Sets the position of the cursor, relative to the content area of the
4380 * window.
4381 *
4382 * This function sets the position, in screen coordinates, of the cursor
4383 * relative to the upper-left corner of the content area of the specified
4384 * window. The window must have input focus. If the window does not have
4385 * input focus when this function is called, it fails silently.
4386 *
4387 * __Do not use this function__ to implement things like camera controls. GLFW
4388 * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the
4389 * cursor, transparently re-centers it and provides unconstrained cursor
4390 * motion. See @ref glfwSetInputMode for more information.
4391 *
4392 * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is
4393 * unconstrained and limited only by the minimum and maximum values of
4394 * a `double`.
4395 *
4396 * @param[in] window The desired window.
4397 * @param[in] xpos The desired x-coordinate, relative to the left edge of the
4398 * content area.
4399 * @param[in] ypos The desired y-coordinate, relative to the top edge of the
4400 * content area.
4401 *
4402 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4403 * GLFW_PLATFORM_ERROR.
4404 *
4405 * @remark @wayland This function will only work when the cursor mode is
4406 * `GLFW_CURSOR_DISABLED`, otherwise it will do nothing.
4407 *
4408 * @thread_safety This function must only be called from the main thread.
4409 *
4410 * @sa @ref cursor_pos
4411 * @sa @ref glfwGetCursorPos
4412 *
4413 * @since Added in version 3.0. Replaces `glfwSetMousePos`.
4414 *
4415 * @ingroup input
4416 */
4417GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);
4418
4419/*! @brief Creates a custom cursor.
4420 *
4421 * Creates a new custom cursor image that can be set for a window with @ref
4422 * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor.
4423 * Any remaining cursors are destroyed by @ref glfwTerminate.
4424 *
4425 * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight
4426 * bits per channel with the red channel first. They are arranged canonically
4427 * as packed sequential rows, starting from the top-left corner.
4428 *
4429 * The cursor hotspot is specified in pixels, relative to the upper-left corner
4430 * of the cursor image. Like all other coordinate systems in GLFW, the X-axis
4431 * points to the right and the Y-axis points down.
4432 *
4433 * @param[in] image The desired cursor image.
4434 * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot.
4435 * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot.
4436 * @return The handle of the created cursor, or `NULL` if an
4437 * [error](@ref error_handling) occurred.
4438 *
4439 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4440 * GLFW_PLATFORM_ERROR.
4441 *
4442 * @pointer_lifetime The specified image data is copied before this function
4443 * returns.
4444 *
4445 * @thread_safety This function must only be called from the main thread.
4446 *
4447 * @sa @ref cursor_object
4448 * @sa @ref glfwDestroyCursor
4449 * @sa @ref glfwCreateStandardCursor
4450 *
4451 * @since Added in version 3.1.
4452 *
4453 * @ingroup input
4454 */
4455GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);
4456
4457/*! @brief Creates a cursor with a standard shape.
4458 *
4459 * Returns a cursor with a [standard shape](@ref shapes), that can be set for
4460 * a window with @ref glfwSetCursor.
4461 *
4462 * @param[in] shape One of the [standard shapes](@ref shapes).
4463 * @return A new cursor ready to use or `NULL` if an
4464 * [error](@ref error_handling) occurred.
4465 *
4466 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4467 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4468 *
4469 * @thread_safety This function must only be called from the main thread.
4470 *
4471 * @sa @ref cursor_object
4472 * @sa @ref glfwCreateCursor
4473 *
4474 * @since Added in version 3.1.
4475 *
4476 * @ingroup input
4477 */
4478GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape);
4479
4480/*! @brief Destroys a cursor.
4481 *
4482 * This function destroys a cursor previously created with @ref
4483 * glfwCreateCursor. Any remaining cursors will be destroyed by @ref
4484 * glfwTerminate.
4485 *
4486 * If the specified cursor is current for any window, that window will be
4487 * reverted to the default cursor. This does not affect the cursor mode.
4488 *
4489 * @param[in] cursor The cursor object to destroy.
4490 *
4491 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4492 * GLFW_PLATFORM_ERROR.
4493 *
4494 * @reentrancy This function must not be called from a callback.
4495 *
4496 * @thread_safety This function must only be called from the main thread.
4497 *
4498 * @sa @ref cursor_object
4499 * @sa @ref glfwCreateCursor
4500 *
4501 * @since Added in version 3.1.
4502 *
4503 * @ingroup input
4504 */
4505GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor);
4506
4507/*! @brief Sets the cursor for the window.
4508 *
4509 * This function sets the cursor image to be used when the cursor is over the
4510 * content area of the specified window. The set cursor will only be visible
4511 * when the [cursor mode](@ref cursor_mode) of the window is
4512 * `GLFW_CURSOR_NORMAL`.
4513 *
4514 * On some platforms, the set cursor may not be visible unless the window also
4515 * has input focus.
4516 *
4517 * @param[in] window The window to set the cursor for.
4518 * @param[in] cursor The cursor to set, or `NULL` to switch back to the default
4519 * arrow cursor.
4520 *
4521 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
4522 * GLFW_PLATFORM_ERROR.
4523 *
4524 * @thread_safety This function must only be called from the main thread.
4525 *
4526 * @sa @ref cursor_object
4527 *
4528 * @since Added in version 3.1.
4529 *
4530 * @ingroup input
4531 */
4532GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);
4533
4534/*! @brief Sets the key callback.
4535 *
4536 * This function sets the key callback of the specified window, which is called
4537 * when a key is pressed, repeated or released.
4538 *
4539 * The key functions deal with physical keys, with layout independent
4540 * [key tokens](@ref keys) named after their values in the standard US keyboard
4541 * layout. If you want to input text, use the
4542 * [character callback](@ref glfwSetCharCallback) instead.
4543 *
4544 * When a window loses input focus, it will generate synthetic key release
4545 * events for all pressed keys. You can tell these events from user-generated
4546 * events by the fact that the synthetic ones are generated after the focus
4547 * loss event has been processed, i.e. after the
4548 * [window focus callback](@ref glfwSetWindowFocusCallback) has been called.
4549 *
4550 * The scancode of a key is specific to that platform or sometimes even to that
4551 * machine. Scancodes are intended to allow users to bind keys that don't have
4552 * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their
4553 * state is not saved and so it cannot be queried with @ref glfwGetKey.
4554 *
4555 * Sometimes GLFW needs to generate synthetic key events, in which case the
4556 * scancode may be zero.
4557 *
4558 * @param[in] window The window whose callback to set.
4559 * @param[in] callback The new key callback, or `NULL` to remove the currently
4560 * set callback.
4561 * @return The previously set callback, or `NULL` if no callback was set or the
4562 * library had not been [initialized](@ref intro_init).
4563 *
4564 * @callback_signature
4565 * @code
4566 * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods)
4567 * @endcode
4568 * For more information about the callback parameters, see the
4569 * [function pointer type](@ref GLFWkeyfun).
4570 *
4571 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4572 *
4573 * @thread_safety This function must only be called from the main thread.
4574 *
4575 * @sa @ref input_key
4576 *
4577 * @since Added in version 1.0.
4578 * @glfw3 Added window handle parameter and return value.
4579 *
4580 * @ingroup input
4581 */
4582GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback);
4583
4584/*! @brief Sets the Unicode character callback.
4585 *
4586 * This function sets the character callback of the specified window, which is
4587 * called when a Unicode character is input.
4588 *
4589 * The character callback is intended for Unicode text input. As it deals with
4590 * characters, it is keyboard layout dependent, whereas the
4591 * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1
4592 * to physical keys, as a key may produce zero, one or more characters. If you
4593 * want to know whether a specific physical key was pressed or released, see
4594 * the key callback instead.
4595 *
4596 * The character callback behaves as system text input normally does and will
4597 * not be called if modifier keys are held down that would prevent normal text
4598 * input on that platform, for example a Super (Command) key on macOS or Alt key
4599 * on Windows.
4600 *
4601 * @param[in] window The window whose callback to set.
4602 * @param[in] callback The new callback, or `NULL` to remove the currently set
4603 * callback.
4604 * @return The previously set callback, or `NULL` if no callback was set or the
4605 * library had not been [initialized](@ref intro_init).
4606 *
4607 * @callback_signature
4608 * @code
4609 * void function_name(GLFWwindow* window, unsigned int codepoint)
4610 * @endcode
4611 * For more information about the callback parameters, see the
4612 * [function pointer type](@ref GLFWcharfun).
4613 *
4614 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4615 *
4616 * @thread_safety This function must only be called from the main thread.
4617 *
4618 * @sa @ref input_char
4619 *
4620 * @since Added in version 2.4.
4621 * @glfw3 Added window handle parameter and return value.
4622 *
4623 * @ingroup input
4624 */
4625GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback);
4626
4627/*! @brief Sets the Unicode character with modifiers callback.
4628 *
4629 * This function sets the character with modifiers callback of the specified
4630 * window, which is called when a Unicode character is input regardless of what
4631 * modifier keys are used.
4632 *
4633 * The character with modifiers callback is intended for implementing custom
4634 * Unicode character input. For regular Unicode text input, see the
4635 * [character callback](@ref glfwSetCharCallback). Like the character
4636 * callback, the character with modifiers callback deals with characters and is
4637 * keyboard layout dependent. Characters do not map 1:1 to physical keys, as
4638 * a key may produce zero, one or more characters. If you want to know whether
4639 * a specific physical key was pressed or released, see the
4640 * [key callback](@ref glfwSetKeyCallback) instead.
4641 *
4642 * @param[in] window The window whose callback to set.
4643 * @param[in] callback The new callback, or `NULL` to remove the currently set
4644 * callback.
4645 * @return The previously set callback, or `NULL` if no callback was set or an
4646 * [error](@ref error_handling) occurred.
4647 *
4648 * @callback_signature
4649 * @code
4650 * void function_name(GLFWwindow* window, unsigned int codepoint, int mods)
4651 * @endcode
4652 * For more information about the callback parameters, see the
4653 * [function pointer type](@ref GLFWcharmodsfun).
4654 *
4655 * @deprecated Scheduled for removal in version 4.0.
4656 *
4657 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4658 *
4659 * @thread_safety This function must only be called from the main thread.
4660 *
4661 * @sa @ref input_char
4662 *
4663 * @since Added in version 3.1.
4664 *
4665 * @ingroup input
4666 */
4667GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback);
4668
4669/*! @brief Sets the mouse button callback.
4670 *
4671 * This function sets the mouse button callback of the specified window, which
4672 * is called when a mouse button is pressed or released.
4673 *
4674 * When a window loses input focus, it will generate synthetic mouse button
4675 * release events for all pressed mouse buttons. You can tell these events
4676 * from user-generated events by the fact that the synthetic ones are generated
4677 * after the focus loss event has been processed, i.e. after the
4678 * [window focus callback](@ref glfwSetWindowFocusCallback) has been called.
4679 *
4680 * @param[in] window The window whose callback to set.
4681 * @param[in] callback The new callback, or `NULL` to remove the currently set
4682 * callback.
4683 * @return The previously set callback, or `NULL` if no callback was set or the
4684 * library had not been [initialized](@ref intro_init).
4685 *
4686 * @callback_signature
4687 * @code
4688 * void function_name(GLFWwindow* window, int button, int action, int mods)
4689 * @endcode
4690 * For more information about the callback parameters, see the
4691 * [function pointer type](@ref GLFWmousebuttonfun).
4692 *
4693 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4694 *
4695 * @thread_safety This function must only be called from the main thread.
4696 *
4697 * @sa @ref input_mouse_button
4698 *
4699 * @since Added in version 1.0.
4700 * @glfw3 Added window handle parameter and return value.
4701 *
4702 * @ingroup input
4703 */
4704GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback);
4705
4706/*! @brief Sets the cursor position callback.
4707 *
4708 * This function sets the cursor position callback of the specified window,
4709 * which is called when the cursor is moved. The callback is provided with the
4710 * position, in screen coordinates, relative to the upper-left corner of the
4711 * content area of the window.
4712 *
4713 * @param[in] window The window whose callback to set.
4714 * @param[in] callback The new callback, or `NULL` to remove the currently set
4715 * callback.
4716 * @return The previously set callback, or `NULL` if no callback was set or the
4717 * library had not been [initialized](@ref intro_init).
4718 *
4719 * @callback_signature
4720 * @code
4721 * void function_name(GLFWwindow* window, double xpos, double ypos);
4722 * @endcode
4723 * For more information about the callback parameters, see the
4724 * [function pointer type](@ref GLFWcursorposfun).
4725 *
4726 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4727 *
4728 * @thread_safety This function must only be called from the main thread.
4729 *
4730 * @sa @ref cursor_pos
4731 *
4732 * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`.
4733 *
4734 * @ingroup input
4735 */
4736GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback);
4737
4738/*! @brief Sets the cursor enter/leave callback.
4739 *
4740 * This function sets the cursor boundary crossing callback of the specified
4741 * window, which is called when the cursor enters or leaves the content area of
4742 * the window.
4743 *
4744 * @param[in] window The window whose callback to set.
4745 * @param[in] callback The new callback, or `NULL` to remove the currently set
4746 * callback.
4747 * @return The previously set callback, or `NULL` if no callback was set or the
4748 * library had not been [initialized](@ref intro_init).
4749 *
4750 * @callback_signature
4751 * @code
4752 * void function_name(GLFWwindow* window, int entered)
4753 * @endcode
4754 * For more information about the callback parameters, see the
4755 * [function pointer type](@ref GLFWcursorenterfun).
4756 *
4757 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4758 *
4759 * @thread_safety This function must only be called from the main thread.
4760 *
4761 * @sa @ref cursor_enter
4762 *
4763 * @since Added in version 3.0.
4764 *
4765 * @ingroup input
4766 */
4767GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback);
4768
4769/*! @brief Sets the scroll callback.
4770 *
4771 * This function sets the scroll callback of the specified window, which is
4772 * called when a scrolling device is used, such as a mouse wheel or scrolling
4773 * area of a touchpad.
4774 *
4775 * The scroll callback receives all scrolling input, like that from a mouse
4776 * wheel or a touchpad scrolling area.
4777 *
4778 * @param[in] window The window whose callback to set.
4779 * @param[in] callback The new scroll callback, or `NULL` to remove the
4780 * currently set callback.
4781 * @return The previously set callback, or `NULL` if no callback was set or the
4782 * library had not been [initialized](@ref intro_init).
4783 *
4784 * @callback_signature
4785 * @code
4786 * void function_name(GLFWwindow* window, double xoffset, double yoffset)
4787 * @endcode
4788 * For more information about the callback parameters, see the
4789 * [function pointer type](@ref GLFWscrollfun).
4790 *
4791 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4792 *
4793 * @thread_safety This function must only be called from the main thread.
4794 *
4795 * @sa @ref scrolling
4796 *
4797 * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`.
4798 *
4799 * @ingroup input
4800 */
4801GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback);
4802
4803/*! @brief Sets the path drop callback.
4804 *
4805 * This function sets the path drop callback of the specified window, which is
4806 * called when one or more dragged paths are dropped on the window.
4807 *
4808 * Because the path array and its strings may have been generated specifically
4809 * for that event, they are not guaranteed to be valid after the callback has
4810 * returned. If you wish to use them after the callback returns, you need to
4811 * make a deep copy.
4812 *
4813 * @param[in] window The window whose callback to set.
4814 * @param[in] callback The new file drop callback, or `NULL` to remove the
4815 * currently set callback.
4816 * @return The previously set callback, or `NULL` if no callback was set or the
4817 * library had not been [initialized](@ref intro_init).
4818 *
4819 * @callback_signature
4820 * @code
4821 * void function_name(GLFWwindow* window, int path_count, const char* paths[])
4822 * @endcode
4823 * For more information about the callback parameters, see the
4824 * [function pointer type](@ref GLFWdropfun).
4825 *
4826 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
4827 *
4828 * @remark @wayland File drop is currently unimplemented.
4829 *
4830 * @thread_safety This function must only be called from the main thread.
4831 *
4832 * @sa @ref path_drop
4833 *
4834 * @since Added in version 3.1.
4835 *
4836 * @ingroup input
4837 */
4838GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback);
4839
4840/*! @brief Returns whether the specified joystick is present.
4841 *
4842 * This function returns whether the specified joystick is present.
4843 *
4844 * There is no need to call this function before other functions that accept
4845 * a joystick ID, as they all check for presence before performing any other
4846 * work.
4847 *
4848 * @param[in] jid The [joystick](@ref joysticks) to query.
4849 * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise.
4850 *
4851 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4852 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4853 *
4854 * @thread_safety This function must only be called from the main thread.
4855 *
4856 * @sa @ref joystick
4857 *
4858 * @since Added in version 3.0. Replaces `glfwGetJoystickParam`.
4859 *
4860 * @ingroup input
4861 */
4862GLFWAPI int glfwJoystickPresent(int jid);
4863
4864/*! @brief Returns the values of all axes of the specified joystick.
4865 *
4866 * This function returns the values of all axes of the specified joystick.
4867 * Each element in the array is a value between -1.0 and 1.0.
4868 *
4869 * If the specified joystick is not present this function will return `NULL`
4870 * but will not generate an error. This can be used instead of first calling
4871 * @ref glfwJoystickPresent.
4872 *
4873 * @param[in] jid The [joystick](@ref joysticks) to query.
4874 * @param[out] count Where to store the number of axis values in the returned
4875 * array. This is set to zero if the joystick is not present or an error
4876 * occurred.
4877 * @return An array of axis values, or `NULL` if the joystick is not present or
4878 * an [error](@ref error_handling) occurred.
4879 *
4880 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4881 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4882 *
4883 * @pointer_lifetime The returned array is allocated and freed by GLFW. You
4884 * should not free it yourself. It is valid until the specified joystick is
4885 * disconnected or the library is terminated.
4886 *
4887 * @thread_safety This function must only be called from the main thread.
4888 *
4889 * @sa @ref joystick_axis
4890 *
4891 * @since Added in version 3.0. Replaces `glfwGetJoystickPos`.
4892 *
4893 * @ingroup input
4894 */
4895GLFWAPI const float* glfwGetJoystickAxes(int jid, int* count);
4896
4897/*! @brief Returns the state of all buttons of the specified joystick.
4898 *
4899 * This function returns the state of all buttons of the specified joystick.
4900 * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`.
4901 *
4902 * For backward compatibility with earlier versions that did not have @ref
4903 * glfwGetJoystickHats, the button array also includes all hats, each
4904 * represented as four buttons. The hats are in the same order as returned by
4905 * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and
4906 * _left_. To disable these extra buttons, set the @ref
4907 * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization.
4908 *
4909 * If the specified joystick is not present this function will return `NULL`
4910 * but will not generate an error. This can be used instead of first calling
4911 * @ref glfwJoystickPresent.
4912 *
4913 * @param[in] jid The [joystick](@ref joysticks) to query.
4914 * @param[out] count Where to store the number of button states in the returned
4915 * array. This is set to zero if the joystick is not present or an error
4916 * occurred.
4917 * @return An array of button states, or `NULL` if the joystick is not present
4918 * or an [error](@ref error_handling) occurred.
4919 *
4920 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4921 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4922 *
4923 * @pointer_lifetime The returned array is allocated and freed by GLFW. You
4924 * should not free it yourself. It is valid until the specified joystick is
4925 * disconnected or the library is terminated.
4926 *
4927 * @thread_safety This function must only be called from the main thread.
4928 *
4929 * @sa @ref joystick_button
4930 *
4931 * @since Added in version 2.2.
4932 * @glfw3 Changed to return a dynamic array.
4933 *
4934 * @ingroup input
4935 */
4936GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count);
4937
4938/*! @brief Returns the state of all hats of the specified joystick.
4939 *
4940 * This function returns the state of all hats of the specified joystick.
4941 * Each element in the array is one of the following values:
4942 *
4943 * Name | Value
4944 * ---- | -----
4945 * `GLFW_HAT_CENTERED` | 0
4946 * `GLFW_HAT_UP` | 1
4947 * `GLFW_HAT_RIGHT` | 2
4948 * `GLFW_HAT_DOWN` | 4
4949 * `GLFW_HAT_LEFT` | 8
4950 * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP`
4951 * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN`
4952 * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP`
4953 * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN`
4954 *
4955 * The diagonal directions are bitwise combinations of the primary (up, right,
4956 * down and left) directions and you can test for these individually by ANDing
4957 * it with the corresponding direction.
4958 *
4959 * @code
4960 * if (hats[2] & GLFW_HAT_RIGHT)
4961 * {
4962 * // State of hat 2 could be right-up, right or right-down
4963 * }
4964 * @endcode
4965 *
4966 * If the specified joystick is not present this function will return `NULL`
4967 * but will not generate an error. This can be used instead of first calling
4968 * @ref glfwJoystickPresent.
4969 *
4970 * @param[in] jid The [joystick](@ref joysticks) to query.
4971 * @param[out] count Where to store the number of hat states in the returned
4972 * array. This is set to zero if the joystick is not present or an error
4973 * occurred.
4974 * @return An array of hat states, or `NULL` if the joystick is not present
4975 * or an [error](@ref error_handling) occurred.
4976 *
4977 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
4978 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
4979 *
4980 * @pointer_lifetime The returned array is allocated and freed by GLFW. You
4981 * should not free it yourself. It is valid until the specified joystick is
4982 * disconnected, this function is called again for that joystick or the library
4983 * is terminated.
4984 *
4985 * @thread_safety This function must only be called from the main thread.
4986 *
4987 * @sa @ref joystick_hat
4988 *
4989 * @since Added in version 3.3.
4990 *
4991 * @ingroup input
4992 */
4993GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count);
4994
4995/*! @brief Returns the name of the specified joystick.
4996 *
4997 * This function returns the name, encoded as UTF-8, of the specified joystick.
4998 * The returned string is allocated and freed by GLFW. You should not free it
4999 * yourself.
5000 *
5001 * If the specified joystick is not present this function will return `NULL`
5002 * but will not generate an error. This can be used instead of first calling
5003 * @ref glfwJoystickPresent.
5004 *
5005 * @param[in] jid The [joystick](@ref joysticks) to query.
5006 * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick
5007 * is not present or an [error](@ref error_handling) occurred.
5008 *
5009 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5010 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
5011 *
5012 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
5013 * should not free it yourself. It is valid until the specified joystick is
5014 * disconnected or the library is terminated.
5015 *
5016 * @thread_safety This function must only be called from the main thread.
5017 *
5018 * @sa @ref joystick_name
5019 *
5020 * @since Added in version 3.0.
5021 *
5022 * @ingroup input
5023 */
5024GLFWAPI const char* glfwGetJoystickName(int jid);
5025
5026/*! @brief Returns the SDL compatible GUID of the specified joystick.
5027 *
5028 * This function returns the SDL compatible GUID, as a UTF-8 encoded
5029 * hexadecimal string, of the specified joystick. The returned string is
5030 * allocated and freed by GLFW. You should not free it yourself.
5031 *
5032 * The GUID is what connects a joystick to a gamepad mapping. A connected
5033 * joystick will always have a GUID even if there is no gamepad mapping
5034 * assigned to it.
5035 *
5036 * If the specified joystick is not present this function will return `NULL`
5037 * but will not generate an error. This can be used instead of first calling
5038 * @ref glfwJoystickPresent.
5039 *
5040 * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to
5041 * uniquely identify the make and model of a joystick but does not identify
5042 * a specific unit, e.g. all wired Xbox 360 controllers will have the same
5043 * GUID on that platform. The GUID for a unit may vary between platforms
5044 * depending on what hardware information the platform specific APIs provide.
5045 *
5046 * @param[in] jid The [joystick](@ref joysticks) to query.
5047 * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick
5048 * is not present or an [error](@ref error_handling) occurred.
5049 *
5050 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5051 * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
5052 *
5053 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
5054 * should not free it yourself. It is valid until the specified joystick is
5055 * disconnected or the library is terminated.
5056 *
5057 * @thread_safety This function must only be called from the main thread.
5058 *
5059 * @sa @ref gamepad
5060 *
5061 * @since Added in version 3.3.
5062 *
5063 * @ingroup input
5064 */
5065GLFWAPI const char* glfwGetJoystickGUID(int jid);
5066
5067/*! @brief Sets the user pointer of the specified joystick.
5068 *
5069 * This function sets the user-defined pointer of the specified joystick. The
5070 * current value is retained until the joystick is disconnected. The initial
5071 * value is `NULL`.
5072 *
5073 * This function may be called from the joystick callback, even for a joystick
5074 * that is being disconnected.
5075 *
5076 * @param[in] jid The joystick whose pointer to set.
5077 * @param[in] pointer The new value.
5078 *
5079 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5080 *
5081 * @thread_safety This function may be called from any thread. Access is not
5082 * synchronized.
5083 *
5084 * @sa @ref joystick_userptr
5085 * @sa @ref glfwGetJoystickUserPointer
5086 *
5087 * @since Added in version 3.3.
5088 *
5089 * @ingroup input
5090 */
5091GLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer);
5092
5093/*! @brief Returns the user pointer of the specified joystick.
5094 *
5095 * This function returns the current value of the user-defined pointer of the
5096 * specified joystick. The initial value is `NULL`.
5097 *
5098 * This function may be called from the joystick callback, even for a joystick
5099 * that is being disconnected.
5100 *
5101 * @param[in] jid The joystick whose pointer to return.
5102 *
5103 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5104 *
5105 * @thread_safety This function may be called from any thread. Access is not
5106 * synchronized.
5107 *
5108 * @sa @ref joystick_userptr
5109 * @sa @ref glfwSetJoystickUserPointer
5110 *
5111 * @since Added in version 3.3.
5112 *
5113 * @ingroup input
5114 */
5115GLFWAPI void* glfwGetJoystickUserPointer(int jid);
5116
5117/*! @brief Returns whether the specified joystick has a gamepad mapping.
5118 *
5119 * This function returns whether the specified joystick is both present and has
5120 * a gamepad mapping.
5121 *
5122 * If the specified joystick is present but does not have a gamepad mapping
5123 * this function will return `GLFW_FALSE` but will not generate an error. Call
5124 * @ref glfwJoystickPresent to check if a joystick is present regardless of
5125 * whether it has a mapping.
5126 *
5127 * @param[in] jid The [joystick](@ref joysticks) to query.
5128 * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping,
5129 * or `GLFW_FALSE` otherwise.
5130 *
5131 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5132 * GLFW_INVALID_ENUM.
5133 *
5134 * @thread_safety This function must only be called from the main thread.
5135 *
5136 * @sa @ref gamepad
5137 * @sa @ref glfwGetGamepadState
5138 *
5139 * @since Added in version 3.3.
5140 *
5141 * @ingroup input
5142 */
5143GLFWAPI int glfwJoystickIsGamepad(int jid);
5144
5145/*! @brief Sets the joystick configuration callback.
5146 *
5147 * This function sets the joystick configuration callback, or removes the
5148 * currently set callback. This is called when a joystick is connected to or
5149 * disconnected from the system.
5150 *
5151 * For joystick connection and disconnection events to be delivered on all
5152 * platforms, you need to call one of the [event processing](@ref events)
5153 * functions. Joystick disconnection may also be detected and the callback
5154 * called by joystick functions. The function will then return whatever it
5155 * returns if the joystick is not present.
5156 *
5157 * @param[in] callback The new callback, or `NULL` to remove the currently set
5158 * callback.
5159 * @return The previously set callback, or `NULL` if no callback was set or the
5160 * library had not been [initialized](@ref intro_init).
5161 *
5162 * @callback_signature
5163 * @code
5164 * void function_name(int jid, int event)
5165 * @endcode
5166 * For more information about the callback parameters, see the
5167 * [function pointer type](@ref GLFWjoystickfun).
5168 *
5169 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5170 *
5171 * @thread_safety This function must only be called from the main thread.
5172 *
5173 * @sa @ref joystick_event
5174 *
5175 * @since Added in version 3.2.
5176 *
5177 * @ingroup input
5178 */
5179GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback);
5180
5181/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings.
5182 *
5183 * This function parses the specified ASCII encoded string and updates the
5184 * internal list with any gamepad mappings it finds. This string may
5185 * contain either a single gamepad mapping or many mappings separated by
5186 * newlines. The parser supports the full format of the `gamecontrollerdb.txt`
5187 * source file including empty lines and comments.
5188 *
5189 * See @ref gamepad_mapping for a description of the format.
5190 *
5191 * If there is already a gamepad mapping for a given GUID in the internal list,
5192 * it will be replaced by the one passed to this function. If the library is
5193 * terminated and re-initialized the internal list will revert to the built-in
5194 * default.
5195 *
5196 * @param[in] string The string containing the gamepad mappings.
5197 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
5198 * [error](@ref error_handling) occurred.
5199 *
5200 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5201 * GLFW_INVALID_VALUE.
5202 *
5203 * @thread_safety This function must only be called from the main thread.
5204 *
5205 * @sa @ref gamepad
5206 * @sa @ref glfwJoystickIsGamepad
5207 * @sa @ref glfwGetGamepadName
5208 *
5209 * @since Added in version 3.3.
5210 *
5211 * @ingroup input
5212 */
5213GLFWAPI int glfwUpdateGamepadMappings(const char* string);
5214
5215/*! @brief Returns the human-readable gamepad name for the specified joystick.
5216 *
5217 * This function returns the human-readable name of the gamepad from the
5218 * gamepad mapping assigned to the specified joystick.
5219 *
5220 * If the specified joystick is not present or does not have a gamepad mapping
5221 * this function will return `NULL` but will not generate an error. Call
5222 * @ref glfwJoystickPresent to check whether it is present regardless of
5223 * whether it has a mapping.
5224 *
5225 * @param[in] jid The [joystick](@ref joysticks) to query.
5226 * @return The UTF-8 encoded name of the gamepad, or `NULL` if the
5227 * joystick is not present, does not have a mapping or an
5228 * [error](@ref error_handling) occurred.
5229 *
5230 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
5231 * should not free it yourself. It is valid until the specified joystick is
5232 * disconnected, the gamepad mappings are updated or the library is terminated.
5233 *
5234 * @thread_safety This function must only be called from the main thread.
5235 *
5236 * @sa @ref gamepad
5237 * @sa @ref glfwJoystickIsGamepad
5238 *
5239 * @since Added in version 3.3.
5240 *
5241 * @ingroup input
5242 */
5243GLFWAPI const char* glfwGetGamepadName(int jid);
5244
5245/*! @brief Retrieves the state of the specified joystick remapped as a gamepad.
5246 *
5247 * This function retrieves the state of the specified joystick remapped to
5248 * an Xbox-like gamepad.
5249 *
5250 * If the specified joystick is not present or does not have a gamepad mapping
5251 * this function will return `GLFW_FALSE` but will not generate an error. Call
5252 * @ref glfwJoystickPresent to check whether it is present regardless of
5253 * whether it has a mapping.
5254 *
5255 * The Guide button may not be available for input as it is often hooked by the
5256 * system or the Steam client.
5257 *
5258 * Not all devices have all the buttons or axes provided by @ref
5259 * GLFWgamepadstate. Unavailable buttons and axes will always report
5260 * `GLFW_RELEASE` and 0.0 respectively.
5261 *
5262 * @param[in] jid The [joystick](@ref joysticks) to query.
5263 * @param[out] state The gamepad input state of the joystick.
5264 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is
5265 * connected, it has no gamepad mapping or an [error](@ref error_handling)
5266 * occurred.
5267 *
5268 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5269 * GLFW_INVALID_ENUM.
5270 *
5271 * @thread_safety This function must only be called from the main thread.
5272 *
5273 * @sa @ref gamepad
5274 * @sa @ref glfwUpdateGamepadMappings
5275 * @sa @ref glfwJoystickIsGamepad
5276 *
5277 * @since Added in version 3.3.
5278 *
5279 * @ingroup input
5280 */
5281GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state);
5282
5283/*! @brief Sets the clipboard to the specified string.
5284 *
5285 * This function sets the system clipboard to the specified, UTF-8 encoded
5286 * string.
5287 *
5288 * @param[in] window Deprecated. Any valid window or `NULL`.
5289 * @param[in] string A UTF-8 encoded string.
5290 *
5291 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5292 * GLFW_PLATFORM_ERROR.
5293 *
5294 * @pointer_lifetime The specified string is copied before this function
5295 * returns.
5296 *
5297 * @thread_safety This function must only be called from the main thread.
5298 *
5299 * @sa @ref clipboard
5300 * @sa @ref glfwGetClipboardString
5301 *
5302 * @since Added in version 3.0.
5303 *
5304 * @ingroup input
5305 */
5306GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string);
5307
5308/*! @brief Returns the contents of the clipboard as a string.
5309 *
5310 * This function returns the contents of the system clipboard, if it contains
5311 * or is convertible to a UTF-8 encoded string. If the clipboard is empty or
5312 * if its contents cannot be converted, `NULL` is returned and a @ref
5313 * GLFW_FORMAT_UNAVAILABLE error is generated.
5314 *
5315 * @param[in] window Deprecated. Any valid window or `NULL`.
5316 * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL`
5317 * if an [error](@ref error_handling) occurred.
5318 *
5319 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5320 * GLFW_PLATFORM_ERROR.
5321 *
5322 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
5323 * should not free it yourself. It is valid until the next call to @ref
5324 * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library
5325 * is terminated.
5326 *
5327 * @thread_safety This function must only be called from the main thread.
5328 *
5329 * @sa @ref clipboard
5330 * @sa @ref glfwSetClipboardString
5331 *
5332 * @since Added in version 3.0.
5333 *
5334 * @ingroup input
5335 */
5336GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window);
5337
5338/*! @brief Returns the GLFW time.
5339 *
5340 * This function returns the current GLFW time, in seconds. Unless the time
5341 * has been set using @ref glfwSetTime it measures time elapsed since GLFW was
5342 * initialized.
5343 *
5344 * This function and @ref glfwSetTime are helper functions on top of @ref
5345 * glfwGetTimerFrequency and @ref glfwGetTimerValue.
5346 *
5347 * The resolution of the timer is system dependent, but is usually on the order
5348 * of a few micro- or nanoseconds. It uses the highest-resolution monotonic
5349 * time source on each supported platform.
5350 *
5351 * @return The current time, in seconds, or zero if an
5352 * [error](@ref error_handling) occurred.
5353 *
5354 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5355 *
5356 * @thread_safety This function may be called from any thread. Reading and
5357 * writing of the internal base time is not atomic, so it needs to be
5358 * externally synchronized with calls to @ref glfwSetTime.
5359 *
5360 * @sa @ref time
5361 *
5362 * @since Added in version 1.0.
5363 *
5364 * @ingroup input
5365 */
5366GLFWAPI double glfwGetTime(void);
5367
5368/*! @brief Sets the GLFW time.
5369 *
5370 * This function sets the current GLFW time, in seconds. The value must be
5371 * a positive finite number less than or equal to 18446744073.0, which is
5372 * approximately 584.5 years.
5373 *
5374 * This function and @ref glfwGetTime are helper functions on top of @ref
5375 * glfwGetTimerFrequency and @ref glfwGetTimerValue.
5376 *
5377 * @param[in] time The new value, in seconds.
5378 *
5379 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5380 * GLFW_INVALID_VALUE.
5381 *
5382 * @remark The upper limit of GLFW time is calculated as
5383 * floor((2<sup>64</sup> - 1) / 10<sup>9</sup>) and is due to implementations
5384 * storing nanoseconds in 64 bits. The limit may be increased in the future.
5385 *
5386 * @thread_safety This function may be called from any thread. Reading and
5387 * writing of the internal base time is not atomic, so it needs to be
5388 * externally synchronized with calls to @ref glfwGetTime.
5389 *
5390 * @sa @ref time
5391 *
5392 * @since Added in version 2.2.
5393 *
5394 * @ingroup input
5395 */
5396GLFWAPI void glfwSetTime(double time);
5397
5398/*! @brief Returns the current value of the raw timer.
5399 *
5400 * This function returns the current value of the raw timer, measured in
5401 * 1&nbsp;/&nbsp;frequency seconds. To get the frequency, call @ref
5402 * glfwGetTimerFrequency.
5403 *
5404 * @return The value of the timer, or zero if an
5405 * [error](@ref error_handling) occurred.
5406 *
5407 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5408 *
5409 * @thread_safety This function may be called from any thread.
5410 *
5411 * @sa @ref time
5412 * @sa @ref glfwGetTimerFrequency
5413 *
5414 * @since Added in version 3.2.
5415 *
5416 * @ingroup input
5417 */
5418GLFWAPI uint64_t glfwGetTimerValue(void);
5419
5420/*! @brief Returns the frequency, in Hz, of the raw timer.
5421 *
5422 * This function returns the frequency, in Hz, of the raw timer.
5423 *
5424 * @return The frequency of the timer, in Hz, or zero if an
5425 * [error](@ref error_handling) occurred.
5426 *
5427 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5428 *
5429 * @thread_safety This function may be called from any thread.
5430 *
5431 * @sa @ref time
5432 * @sa @ref glfwGetTimerValue
5433 *
5434 * @since Added in version 3.2.
5435 *
5436 * @ingroup input
5437 */
5438GLFWAPI uint64_t glfwGetTimerFrequency(void);
5439
5440/*! @brief Makes the context of the specified window current for the calling
5441 * thread.
5442 *
5443 * This function makes the OpenGL or OpenGL ES context of the specified window
5444 * current on the calling thread. A context must only be made current on
5445 * a single thread at a time and each thread can have only a single current
5446 * context at a time.
5447 *
5448 * When moving a context between threads, you must make it non-current on the
5449 * old thread before making it current on the new one.
5450 *
5451 * By default, making a context non-current implicitly forces a pipeline flush.
5452 * On machines that support `GL_KHR_context_flush_control`, you can control
5453 * whether a context performs this flush by setting the
5454 * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint)
5455 * hint.
5456 *
5457 * The specified window must have an OpenGL or OpenGL ES context. Specifying
5458 * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT
5459 * error.
5460 *
5461 * @param[in] window The window whose context to make current, or `NULL` to
5462 * detach the current context.
5463 *
5464 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5465 * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
5466 *
5467 * @thread_safety This function may be called from any thread.
5468 *
5469 * @sa @ref context_current
5470 * @sa @ref glfwGetCurrentContext
5471 *
5472 * @since Added in version 3.0.
5473 *
5474 * @ingroup context
5475 */
5476GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window);
5477
5478/*! @brief Returns the window whose context is current on the calling thread.
5479 *
5480 * This function returns the window whose OpenGL or OpenGL ES context is
5481 * current on the calling thread.
5482 *
5483 * @return The window whose context is current, or `NULL` if no window's
5484 * context is current.
5485 *
5486 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5487 *
5488 * @thread_safety This function may be called from any thread.
5489 *
5490 * @sa @ref context_current
5491 * @sa @ref glfwMakeContextCurrent
5492 *
5493 * @since Added in version 3.0.
5494 *
5495 * @ingroup context
5496 */
5497GLFWAPI GLFWwindow* glfwGetCurrentContext(void);
5498
5499/*! @brief Swaps the front and back buffers of the specified window.
5500 *
5501 * This function swaps the front and back buffers of the specified window when
5502 * rendering with OpenGL or OpenGL ES. If the swap interval is greater than
5503 * zero, the GPU driver waits the specified number of screen updates before
5504 * swapping the buffers.
5505 *
5506 * The specified window must have an OpenGL or OpenGL ES context. Specifying
5507 * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT
5508 * error.
5509 *
5510 * This function does not apply to Vulkan. If you are rendering with Vulkan,
5511 * see `vkQueuePresentKHR` instead.
5512 *
5513 * @param[in] window The window whose buffers to swap.
5514 *
5515 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5516 * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
5517 *
5518 * @remark __EGL:__ The context of the specified window must be current on the
5519 * calling thread.
5520 *
5521 * @thread_safety This function may be called from any thread.
5522 *
5523 * @sa @ref buffer_swap
5524 * @sa @ref glfwSwapInterval
5525 *
5526 * @since Added in version 1.0.
5527 * @glfw3 Added window handle parameter.
5528 *
5529 * @ingroup window
5530 */
5531GLFWAPI void glfwSwapBuffers(GLFWwindow* window);
5532
5533/*! @brief Sets the swap interval for the current context.
5534 *
5535 * This function sets the swap interval for the current OpenGL or OpenGL ES
5536 * context, i.e. the number of screen updates to wait from the time @ref
5537 * glfwSwapBuffers was called before swapping the buffers and returning. This
5538 * is sometimes called _vertical synchronization_, _vertical retrace
5539 * synchronization_ or just _vsync_.
5540 *
5541 * A context that supports either of the `WGL_EXT_swap_control_tear` and
5542 * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap
5543 * intervals, which allows the driver to swap immediately even if a frame
5544 * arrives a little bit late. You can check for these extensions with @ref
5545 * glfwExtensionSupported.
5546 *
5547 * A context must be current on the calling thread. Calling this function
5548 * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.
5549 *
5550 * This function does not apply to Vulkan. If you are rendering with Vulkan,
5551 * see the present mode of your swapchain instead.
5552 *
5553 * @param[in] interval The minimum number of screen updates to wait for
5554 * until the buffers are swapped by @ref glfwSwapBuffers.
5555 *
5556 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5557 * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR.
5558 *
5559 * @remark This function is not called during context creation, leaving the
5560 * swap interval set to whatever is the default on that platform. This is done
5561 * because some swap interval extensions used by GLFW do not allow the swap
5562 * interval to be reset to zero once it has been set to a non-zero value.
5563 *
5564 * @remark Some GPU drivers do not honor the requested swap interval, either
5565 * because of a user setting that overrides the application's request or due to
5566 * bugs in the driver.
5567 *
5568 * @thread_safety This function may be called from any thread.
5569 *
5570 * @sa @ref buffer_swap
5571 * @sa @ref glfwSwapBuffers
5572 *
5573 * @since Added in version 1.0.
5574 *
5575 * @ingroup context
5576 */
5577GLFWAPI void glfwSwapInterval(int interval);
5578
5579/*! @brief Returns whether the specified extension is available.
5580 *
5581 * This function returns whether the specified
5582 * [API extension](@ref context_glext) is supported by the current OpenGL or
5583 * OpenGL ES context. It searches both for client API extension and context
5584 * creation API extensions.
5585 *
5586 * A context must be current on the calling thread. Calling this function
5587 * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.
5588 *
5589 * As this functions retrieves and searches one or more extension strings each
5590 * call, it is recommended that you cache its results if it is going to be used
5591 * frequently. The extension strings will not change during the lifetime of
5592 * a context, so there is no danger in doing this.
5593 *
5594 * This function does not apply to Vulkan. If you are using Vulkan, see @ref
5595 * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties`
5596 * and `vkEnumerateDeviceExtensionProperties` instead.
5597 *
5598 * @param[in] extension The ASCII encoded name of the extension.
5599 * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE`
5600 * otherwise.
5601 *
5602 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5603 * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref
5604 * GLFW_PLATFORM_ERROR.
5605 *
5606 * @thread_safety This function may be called from any thread.
5607 *
5608 * @sa @ref context_glext
5609 * @sa @ref glfwGetProcAddress
5610 *
5611 * @since Added in version 1.0.
5612 *
5613 * @ingroup context
5614 */
5615GLFWAPI int glfwExtensionSupported(const char* extension);
5616
5617/*! @brief Returns the address of the specified function for the current
5618 * context.
5619 *
5620 * This function returns the address of the specified OpenGL or OpenGL ES
5621 * [core or extension function](@ref context_glext), if it is supported
5622 * by the current context.
5623 *
5624 * A context must be current on the calling thread. Calling this function
5625 * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.
5626 *
5627 * This function does not apply to Vulkan. If you are rendering with Vulkan,
5628 * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and
5629 * `vkGetDeviceProcAddr` instead.
5630 *
5631 * @param[in] procname The ASCII encoded name of the function.
5632 * @return The address of the function, or `NULL` if an
5633 * [error](@ref error_handling) occurred.
5634 *
5635 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5636 * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR.
5637 *
5638 * @remark The address of a given function is not guaranteed to be the same
5639 * between contexts.
5640 *
5641 * @remark This function may return a non-`NULL` address despite the
5642 * associated version or extension not being available. Always check the
5643 * context version or extension string first.
5644 *
5645 * @pointer_lifetime The returned function pointer is valid until the context
5646 * is destroyed or the library is terminated.
5647 *
5648 * @thread_safety This function may be called from any thread.
5649 *
5650 * @sa @ref context_glext
5651 * @sa @ref glfwExtensionSupported
5652 *
5653 * @since Added in version 1.0.
5654 *
5655 * @ingroup context
5656 */
5657GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);
5658
5659/*! @brief Returns whether the Vulkan loader and an ICD have been found.
5660 *
5661 * This function returns whether the Vulkan loader and any minimally functional
5662 * ICD have been found.
5663 *
5664 * The availability of a Vulkan loader and even an ICD does not by itself guarantee that
5665 * surface creation or even instance creation is possible. Call @ref
5666 * glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan
5667 * surface creation are available and @ref glfwGetPhysicalDevicePresentationSupport to
5668 * check whether a queue family of a physical device supports image presentation.
5669 *
5670 * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE`
5671 * otherwise.
5672 *
5673 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
5674 *
5675 * @thread_safety This function may be called from any thread.
5676 *
5677 * @sa @ref vulkan_support
5678 *
5679 * @since Added in version 3.2.
5680 *
5681 * @ingroup vulkan
5682 */
5683GLFWAPI int glfwVulkanSupported(void);
5684
5685/*! @brief Returns the Vulkan instance extensions required by GLFW.
5686 *
5687 * This function returns an array of names of Vulkan instance extensions required
5688 * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the
5689 * list will always contain `VK_KHR_surface`, so if you don't require any
5690 * additional extensions you can pass this list directly to the
5691 * `VkInstanceCreateInfo` struct.
5692 *
5693 * If Vulkan is not available on the machine, this function returns `NULL` and
5694 * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
5695 * to check whether Vulkan is at least minimally available.
5696 *
5697 * If Vulkan is available but no set of extensions allowing window surface
5698 * creation was found, this function returns `NULL`. You may still use Vulkan
5699 * for off-screen rendering and compute work.
5700 *
5701 * @param[out] count Where to store the number of extensions in the returned
5702 * array. This is set to zero if an error occurred.
5703 * @return An array of ASCII encoded extension names, or `NULL` if an
5704 * [error](@ref error_handling) occurred.
5705 *
5706 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5707 * GLFW_API_UNAVAILABLE.
5708 *
5709 * @remark Additional extensions may be required by future versions of GLFW.
5710 * You should check if any extensions you wish to enable are already in the
5711 * returned array, as it is an error to specify an extension more than once in
5712 * the `VkInstanceCreateInfo` struct.
5713 *
5714 * @remark @macos GLFW currently supports both the `VK_MVK_macos_surface` and
5715 * the newer `VK_EXT_metal_surface` extensions.
5716 *
5717 * @pointer_lifetime The returned array is allocated and freed by GLFW. You
5718 * should not free it yourself. It is guaranteed to be valid only until the
5719 * library is terminated.
5720 *
5721 * @thread_safety This function may be called from any thread.
5722 *
5723 * @sa @ref vulkan_ext
5724 * @sa @ref glfwCreateWindowSurface
5725 *
5726 * @since Added in version 3.2.
5727 *
5728 * @ingroup vulkan
5729 */
5730GLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count);
5731
5732#if defined(VK_VERSION_1_0)
5733
5734/*! @brief Returns the address of the specified Vulkan instance function.
5735 *
5736 * This function returns the address of the specified Vulkan core or extension
5737 * function for the specified instance. If instance is set to `NULL` it can
5738 * return any function exported from the Vulkan loader, including at least the
5739 * following functions:
5740 *
5741 * - `vkEnumerateInstanceExtensionProperties`
5742 * - `vkEnumerateInstanceLayerProperties`
5743 * - `vkCreateInstance`
5744 * - `vkGetInstanceProcAddr`
5745 *
5746 * If Vulkan is not available on the machine, this function returns `NULL` and
5747 * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
5748 * to check whether Vulkan is at least minimally available.
5749 *
5750 * This function is equivalent to calling `vkGetInstanceProcAddr` with
5751 * a platform-specific query of the Vulkan loader as a fallback.
5752 *
5753 * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve
5754 * functions related to instance creation.
5755 * @param[in] procname The ASCII encoded name of the function.
5756 * @return The address of the function, or `NULL` if an
5757 * [error](@ref error_handling) occurred.
5758 *
5759 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
5760 * GLFW_API_UNAVAILABLE.
5761 *
5762 * @pointer_lifetime The returned function pointer is valid until the library
5763 * is terminated.
5764 *
5765 * @thread_safety This function may be called from any thread.
5766 *
5767 * @sa @ref vulkan_proc
5768 *
5769 * @since Added in version 3.2.
5770 *
5771 * @ingroup vulkan
5772 */
5773GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);
5774
5775/*! @brief Returns whether the specified queue family can present images.
5776 *
5777 * This function returns whether the specified queue family of the specified
5778 * physical device supports presentation to the platform GLFW was built for.
5779 *
5780 * If Vulkan or the required window surface creation instance extensions are
5781 * not available on the machine, or if the specified instance was not created
5782 * with the required extensions, this function returns `GLFW_FALSE` and
5783 * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
5784 * to check whether Vulkan is at least minimally available and @ref
5785 * glfwGetRequiredInstanceExtensions to check what instance extensions are
5786 * required.
5787 *
5788 * @param[in] instance The instance that the physical device belongs to.
5789 * @param[in] device The physical device that the queue family belongs to.
5790 * @param[in] queuefamily The index of the queue family to query.
5791 * @return `GLFW_TRUE` if the queue family supports presentation, or
5792 * `GLFW_FALSE` otherwise.
5793 *
5794 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5795 * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
5796 *
5797 * @remark @macos This function currently always returns `GLFW_TRUE`, as the
5798 * `VK_MVK_macos_surface` and `VK_EXT_metal_surface` extensions do not provide
5799 * a `vkGetPhysicalDevice*PresentationSupport` type function.
5800 *
5801 * @thread_safety This function may be called from any thread. For
5802 * synchronization details of Vulkan objects, see the Vulkan specification.
5803 *
5804 * @sa @ref vulkan_present
5805 *
5806 * @since Added in version 3.2.
5807 *
5808 * @ingroup vulkan
5809 */
5810GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
5811
5812/*! @brief Creates a Vulkan surface for the specified window.
5813 *
5814 * This function creates a Vulkan surface for the specified window.
5815 *
5816 * If the Vulkan loader or at least one minimally functional ICD were not found,
5817 * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref
5818 * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether
5819 * Vulkan is at least minimally available.
5820 *
5821 * If the required window surface creation instance extensions are not
5822 * available or if the specified instance was not created with these extensions
5823 * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and
5824 * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref
5825 * glfwGetRequiredInstanceExtensions to check what instance extensions are
5826 * required.
5827 *
5828 * The window surface cannot be shared with another API so the window must
5829 * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib)
5830 * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error
5831 * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`.
5832 *
5833 * The window surface must be destroyed before the specified Vulkan instance.
5834 * It is the responsibility of the caller to destroy the window surface. GLFW
5835 * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the
5836 * surface.
5837 *
5838 * @param[in] instance The Vulkan instance to create the surface in.
5839 * @param[in] window The window to create the surface for.
5840 * @param[in] allocator The allocator to use, or `NULL` to use the default
5841 * allocator.
5842 * @param[out] surface Where to store the handle of the surface. This is set
5843 * to `VK_NULL_HANDLE` if an error occurred.
5844 * @return `VK_SUCCESS` if successful, or a Vulkan error code if an
5845 * [error](@ref error_handling) occurred.
5846 *
5847 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
5848 * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE
5849 *
5850 * @remark If an error occurs before the creation call is made, GLFW returns
5851 * the Vulkan error code most appropriate for the error. Appropriate use of
5852 * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should
5853 * eliminate almost all occurrences of these errors.
5854 *
5855 * @remark @macos This function currently only supports the
5856 * `VK_MVK_macos_surface` extension from MoltenVK.
5857 *
5858 * @remark @macos This function creates and sets a `CAMetalLayer` instance for
5859 * the window content view, which is required for MoltenVK to function.
5860 *
5861 * @thread_safety This function may be called from any thread. For
5862 * synchronization details of Vulkan objects, see the Vulkan specification.
5863 *
5864 * @sa @ref vulkan_surface
5865 * @sa @ref glfwGetRequiredInstanceExtensions
5866 *
5867 * @since Added in version 3.2.
5868 *
5869 * @ingroup vulkan
5870 */
5871GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
5872
5873#endif /*VK_VERSION_1_0*/
5874
5875
5876/*************************************************************************
5877 * Global definition cleanup
5878 *************************************************************************/
5879
5880/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */
5881
5882#ifdef GLFW_WINGDIAPI_DEFINED
5883 #undef WINGDIAPI
5884 #undef GLFW_WINGDIAPI_DEFINED
5885#endif
5886
5887#ifdef GLFW_CALLBACK_DEFINED
5888 #undef CALLBACK
5889 #undef GLFW_CALLBACK_DEFINED
5890#endif
5891
5892/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally
5893 * defined by some gl.h variants (OpenBSD) so define it after if needed.
5894 */
5895#ifndef GLAPIENTRY
5896 #define GLAPIENTRY APIENTRY
5897#endif
5898
5899/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */
5900
5901
5902#ifdef __cplusplus
5903}
5904#endif
5905
5906#endif /* _glfw3_h_ */
5907
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h b/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h
new file mode 100644
index 0000000..fe74c73
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h
@@ -0,0 +1,594 @@
1/*************************************************************************
2 * GLFW 3.3 - www.glfw.org
3 * A library for OpenGL, window and input
4 *------------------------------------------------------------------------
5 * Copyright (c) 2002-2006 Marcus Geelnard
6 * Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>
7 *
8 * This software is provided 'as-is', without any express or implied
9 * warranty. In no event will the authors be held liable for any damages
10 * arising from the use of this software.
11 *
12 * Permission is granted to anyone to use this software for any purpose,
13 * including commercial applications, and to alter it and redistribute it
14 * freely, subject to the following restrictions:
15 *
16 * 1. The origin of this software must not be misrepresented; you must not
17 * claim that you wrote the original software. If you use this software
18 * in a product, an acknowledgment in the product documentation would
19 * be appreciated but is not required.
20 *
21 * 2. Altered source versions must be plainly marked as such, and must not
22 * be misrepresented as being the original software.
23 *
24 * 3. This notice may not be removed or altered from any source
25 * distribution.
26 *
27 *************************************************************************/
28
29#ifndef _glfw3_native_h_
30#define _glfw3_native_h_
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36
37/*************************************************************************
38 * Doxygen documentation
39 *************************************************************************/
40
41/*! @file glfw3native.h
42 * @brief The header of the native access functions.
43 *
44 * This is the header file of the native access functions. See @ref native for
45 * more information.
46 */
47/*! @defgroup native Native access
48 * @brief Functions related to accessing native handles.
49 *
50 * **By using the native access functions you assert that you know what you're
51 * doing and how to fix problems caused by using them. If you don't, you
52 * shouldn't be using them.**
53 *
54 * Before the inclusion of @ref glfw3native.h, you may define zero or more
55 * window system API macro and zero or more context creation API macros.
56 *
57 * The chosen backends must match those the library was compiled for. Failure
58 * to do this will cause a link-time error.
59 *
60 * The available window API macros are:
61 * * `GLFW_EXPOSE_NATIVE_WIN32`
62 * * `GLFW_EXPOSE_NATIVE_COCOA`
63 * * `GLFW_EXPOSE_NATIVE_X11`
64 * * `GLFW_EXPOSE_NATIVE_WAYLAND`
65 *
66 * The available context API macros are:
67 * * `GLFW_EXPOSE_NATIVE_WGL`
68 * * `GLFW_EXPOSE_NATIVE_NSGL`
69 * * `GLFW_EXPOSE_NATIVE_GLX`
70 * * `GLFW_EXPOSE_NATIVE_EGL`
71 * * `GLFW_EXPOSE_NATIVE_OSMESA`
72 *
73 * These macros select which of the native access functions that are declared
74 * and which platform-specific headers to include. It is then up your (by
75 * definition platform-specific) code to handle which of these should be
76 * defined.
77 */
78
79
80/*************************************************************************
81 * System headers and types
82 *************************************************************************/
83
84#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)
85 // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
86 // example to allow applications to correctly declare a GL_KHR_debug callback)
87 // but windows.h assumes no one will define APIENTRY before it does
88 #if defined(GLFW_APIENTRY_DEFINED)
89 #undef APIENTRY
90 #undef GLFW_APIENTRY_DEFINED
91 #endif
92 #include <windows.h>
93#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)
94 #if defined(__OBJC__)
95 #import <Cocoa/Cocoa.h>
96 #else
97 #include <ApplicationServices/ApplicationServices.h>
98 typedef void* id;
99 #endif
100#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)
101 #include <X11/Xlib.h>
102 #include <X11/extensions/Xrandr.h>
103#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)
104 #include <wayland-client.h>
105#endif
106
107#if defined(GLFW_EXPOSE_NATIVE_WGL)
108 /* WGL is declared by windows.h */
109#endif
110#if defined(GLFW_EXPOSE_NATIVE_NSGL)
111 /* NSGL is declared by Cocoa.h */
112#endif
113#if defined(GLFW_EXPOSE_NATIVE_GLX)
114 #include <GL/glx.h>
115#endif
116#if defined(GLFW_EXPOSE_NATIVE_EGL)
117 #include <EGL/egl.h>
118#endif
119#if defined(GLFW_EXPOSE_NATIVE_OSMESA)
120 #include <GL/osmesa.h>
121#endif
122
123
124/*************************************************************************
125 * Functions
126 *************************************************************************/
127
128#if defined(GLFW_EXPOSE_NATIVE_WIN32)
129/*! @brief Returns the adapter device name of the specified monitor.
130 *
131 * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`)
132 * of the specified monitor, or `NULL` if an [error](@ref error_handling)
133 * occurred.
134 *
135 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
136 *
137 * @thread_safety This function may be called from any thread. Access is not
138 * synchronized.
139 *
140 * @since Added in version 3.1.
141 *
142 * @ingroup native
143 */
144GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
145
146/*! @brief Returns the display device name of the specified monitor.
147 *
148 * @return The UTF-8 encoded display device name (for example
149 * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an
150 * [error](@ref error_handling) occurred.
151 *
152 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
153 *
154 * @thread_safety This function may be called from any thread. Access is not
155 * synchronized.
156 *
157 * @since Added in version 3.1.
158 *
159 * @ingroup native
160 */
161GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
162
163/*! @brief Returns the `HWND` of the specified window.
164 *
165 * @return The `HWND` of the specified window, or `NULL` if an
166 * [error](@ref error_handling) occurred.
167 *
168 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
169 *
170 * @remark The `HDC` associated with the window can be queried with the
171 * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)
172 * function.
173 * @code
174 * HDC dc = GetDC(glfwGetWin32Window(window));
175 * @endcode
176 * This DC is private and does not need to be released.
177 *
178 * @thread_safety This function may be called from any thread. Access is not
179 * synchronized.
180 *
181 * @since Added in version 3.0.
182 *
183 * @ingroup native
184 */
185GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
186#endif
187
188#if defined(GLFW_EXPOSE_NATIVE_WGL)
189/*! @brief Returns the `HGLRC` of the specified window.
190 *
191 * @return The `HGLRC` of the specified window, or `NULL` if an
192 * [error](@ref error_handling) occurred.
193 *
194 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
195 * GLFW_NOT_INITIALIZED.
196 *
197 * @remark The `HDC` associated with the window can be queried with the
198 * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)
199 * function.
200 * @code
201 * HDC dc = GetDC(glfwGetWin32Window(window));
202 * @endcode
203 * This DC is private and does not need to be released.
204 *
205 * @thread_safety This function may be called from any thread. Access is not
206 * synchronized.
207 *
208 * @since Added in version 3.0.
209 *
210 * @ingroup native
211 */
212GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
213#endif
214
215#if defined(GLFW_EXPOSE_NATIVE_COCOA)
216/*! @brief Returns the `CGDirectDisplayID` of the specified monitor.
217 *
218 * @return The `CGDirectDisplayID` of the specified monitor, or
219 * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred.
220 *
221 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
222 *
223 * @thread_safety This function may be called from any thread. Access is not
224 * synchronized.
225 *
226 * @since Added in version 3.1.
227 *
228 * @ingroup native
229 */
230GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
231
232/*! @brief Returns the `NSWindow` of the specified window.
233 *
234 * @return The `NSWindow` of the specified window, or `nil` if an
235 * [error](@ref error_handling) occurred.
236 *
237 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
238 *
239 * @thread_safety This function may be called from any thread. Access is not
240 * synchronized.
241 *
242 * @since Added in version 3.0.
243 *
244 * @ingroup native
245 */
246GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
247#endif
248
249#if defined(GLFW_EXPOSE_NATIVE_NSGL)
250/*! @brief Returns the `NSOpenGLContext` of the specified window.
251 *
252 * @return The `NSOpenGLContext` of the specified window, or `nil` if an
253 * [error](@ref error_handling) occurred.
254 *
255 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
256 * GLFW_NOT_INITIALIZED.
257 *
258 * @thread_safety This function may be called from any thread. Access is not
259 * synchronized.
260 *
261 * @since Added in version 3.0.
262 *
263 * @ingroup native
264 */
265GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
266#endif
267
268#if defined(GLFW_EXPOSE_NATIVE_X11)
269/*! @brief Returns the `Display` used by GLFW.
270 *
271 * @return The `Display` used by GLFW, or `NULL` if an
272 * [error](@ref error_handling) occurred.
273 *
274 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
275 *
276 * @thread_safety This function may be called from any thread. Access is not
277 * synchronized.
278 *
279 * @since Added in version 3.0.
280 *
281 * @ingroup native
282 */
283GLFWAPI Display* glfwGetX11Display(void);
284
285/*! @brief Returns the `RRCrtc` of the specified monitor.
286 *
287 * @return The `RRCrtc` of the specified monitor, or `None` if an
288 * [error](@ref error_handling) occurred.
289 *
290 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
291 *
292 * @thread_safety This function may be called from any thread. Access is not
293 * synchronized.
294 *
295 * @since Added in version 3.1.
296 *
297 * @ingroup native
298 */
299GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
300
301/*! @brief Returns the `RROutput` of the specified monitor.
302 *
303 * @return The `RROutput` of the specified monitor, or `None` if an
304 * [error](@ref error_handling) occurred.
305 *
306 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
307 *
308 * @thread_safety This function may be called from any thread. Access is not
309 * synchronized.
310 *
311 * @since Added in version 3.1.
312 *
313 * @ingroup native
314 */
315GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
316
317/*! @brief Returns the `Window` of the specified window.
318 *
319 * @return The `Window` of the specified window, or `None` if an
320 * [error](@ref error_handling) occurred.
321 *
322 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
323 *
324 * @thread_safety This function may be called from any thread. Access is not
325 * synchronized.
326 *
327 * @since Added in version 3.0.
328 *
329 * @ingroup native
330 */
331GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
332
333/*! @brief Sets the current primary selection to the specified string.
334 *
335 * @param[in] string A UTF-8 encoded string.
336 *
337 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
338 * GLFW_PLATFORM_ERROR.
339 *
340 * @pointer_lifetime The specified string is copied before this function
341 * returns.
342 *
343 * @thread_safety This function must only be called from the main thread.
344 *
345 * @sa @ref clipboard
346 * @sa glfwGetX11SelectionString
347 * @sa glfwSetClipboardString
348 *
349 * @since Added in version 3.3.
350 *
351 * @ingroup native
352 */
353GLFWAPI void glfwSetX11SelectionString(const char* string);
354
355/*! @brief Returns the contents of the current primary selection as a string.
356 *
357 * If the selection is empty or if its contents cannot be converted, `NULL`
358 * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated.
359 *
360 * @return The contents of the selection as a UTF-8 encoded string, or `NULL`
361 * if an [error](@ref error_handling) occurred.
362 *
363 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
364 * GLFW_PLATFORM_ERROR.
365 *
366 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
367 * should not free it yourself. It is valid until the next call to @ref
368 * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the
369 * library is terminated.
370 *
371 * @thread_safety This function must only be called from the main thread.
372 *
373 * @sa @ref clipboard
374 * @sa glfwSetX11SelectionString
375 * @sa glfwGetClipboardString
376 *
377 * @since Added in version 3.3.
378 *
379 * @ingroup native
380 */
381GLFWAPI const char* glfwGetX11SelectionString(void);
382#endif
383
384#if defined(GLFW_EXPOSE_NATIVE_GLX)
385/*! @brief Returns the `GLXContext` of the specified window.
386 *
387 * @return The `GLXContext` of the specified window, or `NULL` if an
388 * [error](@ref error_handling) occurred.
389 *
390 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
391 * GLFW_NOT_INITIALIZED.
392 *
393 * @thread_safety This function may be called from any thread. Access is not
394 * synchronized.
395 *
396 * @since Added in version 3.0.
397 *
398 * @ingroup native
399 */
400GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
401
402/*! @brief Returns the `GLXWindow` of the specified window.
403 *
404 * @return The `GLXWindow` of the specified window, or `None` if an
405 * [error](@ref error_handling) occurred.
406 *
407 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
408 * GLFW_NOT_INITIALIZED.
409 *
410 * @thread_safety This function may be called from any thread. Access is not
411 * synchronized.
412 *
413 * @since Added in version 3.2.
414 *
415 * @ingroup native
416 */
417GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
418#endif
419
420#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
421/*! @brief Returns the `struct wl_display*` used by GLFW.
422 *
423 * @return The `struct wl_display*` used by GLFW, or `NULL` if an
424 * [error](@ref error_handling) occurred.
425 *
426 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
427 *
428 * @thread_safety This function may be called from any thread. Access is not
429 * synchronized.
430 *
431 * @since Added in version 3.2.
432 *
433 * @ingroup native
434 */
435GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
436
437/*! @brief Returns the `struct wl_output*` of the specified monitor.
438 *
439 * @return The `struct wl_output*` of the specified monitor, or `NULL` if an
440 * [error](@ref error_handling) occurred.
441 *
442 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
443 *
444 * @thread_safety This function may be called from any thread. Access is not
445 * synchronized.
446 *
447 * @since Added in version 3.2.
448 *
449 * @ingroup native
450 */
451GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
452
453/*! @brief Returns the main `struct wl_surface*` of the specified window.
454 *
455 * @return The main `struct wl_surface*` of the specified window, or `NULL` if
456 * an [error](@ref error_handling) occurred.
457 *
458 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
459 *
460 * @thread_safety This function may be called from any thread. Access is not
461 * synchronized.
462 *
463 * @since Added in version 3.2.
464 *
465 * @ingroup native
466 */
467GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
468#endif
469
470#if defined(GLFW_EXPOSE_NATIVE_EGL)
471/*! @brief Returns the `EGLDisplay` used by GLFW.
472 *
473 * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an
474 * [error](@ref error_handling) occurred.
475 *
476 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
477 *
478 * @thread_safety This function may be called from any thread. Access is not
479 * synchronized.
480 *
481 * @since Added in version 3.0.
482 *
483 * @ingroup native
484 */
485GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
486
487/*! @brief Returns the `EGLContext` of the specified window.
488 *
489 * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an
490 * [error](@ref error_handling) occurred.
491 *
492 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
493 * GLFW_NOT_INITIALIZED.
494 *
495 * @thread_safety This function may be called from any thread. Access is not
496 * synchronized.
497 *
498 * @since Added in version 3.0.
499 *
500 * @ingroup native
501 */
502GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
503
504/*! @brief Returns the `EGLSurface` of the specified window.
505 *
506 * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an
507 * [error](@ref error_handling) occurred.
508 *
509 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
510 * GLFW_NOT_INITIALIZED.
511 *
512 * @thread_safety This function may be called from any thread. Access is not
513 * synchronized.
514 *
515 * @since Added in version 3.0.
516 *
517 * @ingroup native
518 */
519GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
520#endif
521
522#if defined(GLFW_EXPOSE_NATIVE_OSMESA)
523/*! @brief Retrieves the color buffer associated with the specified window.
524 *
525 * @param[in] window The window whose color buffer to retrieve.
526 * @param[out] width Where to store the width of the color buffer, or `NULL`.
527 * @param[out] height Where to store the height of the color buffer, or `NULL`.
528 * @param[out] format Where to store the OSMesa pixel format of the color
529 * buffer, or `NULL`.
530 * @param[out] buffer Where to store the address of the color buffer, or
531 * `NULL`.
532 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
533 * [error](@ref error_handling) occurred.
534 *
535 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
536 * GLFW_NOT_INITIALIZED.
537 *
538 * @thread_safety This function may be called from any thread. Access is not
539 * synchronized.
540 *
541 * @since Added in version 3.3.
542 *
543 * @ingroup native
544 */
545GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
546
547/*! @brief Retrieves the depth buffer associated with the specified window.
548 *
549 * @param[in] window The window whose depth buffer to retrieve.
550 * @param[out] width Where to store the width of the depth buffer, or `NULL`.
551 * @param[out] height Where to store the height of the depth buffer, or `NULL`.
552 * @param[out] bytesPerValue Where to store the number of bytes per depth
553 * buffer element, or `NULL`.
554 * @param[out] buffer Where to store the address of the depth buffer, or
555 * `NULL`.
556 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
557 * [error](@ref error_handling) occurred.
558 *
559 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
560 * GLFW_NOT_INITIALIZED.
561 *
562 * @thread_safety This function may be called from any thread. Access is not
563 * synchronized.
564 *
565 * @since Added in version 3.3.
566 *
567 * @ingroup native
568 */
569GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
570
571/*! @brief Returns the `OSMesaContext` of the specified window.
572 *
573 * @return The `OSMesaContext` of the specified window, or `NULL` if an
574 * [error](@ref error_handling) occurred.
575 *
576 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
577 * GLFW_NOT_INITIALIZED.
578 *
579 * @thread_safety This function may be called from any thread. Access is not
580 * synchronized.
581 *
582 * @since Added in version 3.3.
583 *
584 * @ingroup native
585 */
586GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
587#endif
588
589#ifdef __cplusplus
590}
591#endif
592
593#endif /* _glfw3_native_h_ */
594
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.dll b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.dll
new file mode 100644
index 0000000..1d9f9a2
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.dll
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.lib b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.lib
new file mode 100644
index 0000000..66bbc85
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3.lib
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3_mt.lib b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3_mt.lib
new file mode 100644
index 0000000..0f64909
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3_mt.lib
Binary files differ
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3dll.lib b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3dll.lib
new file mode 100644
index 0000000..bd74b2e
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/lib-vc2019/glfw3dll.lib
Binary files differ
diff --git a/dxcommon/CMakeLists.txt b/dxcommon/CMakeLists.txt
new file mode 100644
index 0000000..ad8e2b6
--- /dev/null
+++ b/dxcommon/CMakeLists.txt
@@ -0,0 +1,12 @@
1cmake_minimum_required(VERSION 3.0)
2
3add_library(dxcommon
4 src/dxcommon.cc)
5
6target_include_directories(dxcommon PUBLIC
7 ${CMAKE_CURRENT_SOURCE_DIR}/include)
8
9target_link_libraries(dxcommon PUBLIC
10 DirectX-Headers
11 D3D12.lib
12 DXGI.lib)
diff --git a/dxcommon/include/dxcommon.h b/dxcommon/include/dxcommon.h
new file mode 100644
index 0000000..0270629
--- /dev/null
+++ b/dxcommon/include/dxcommon.h
@@ -0,0 +1,55 @@
1#pragma once
2
3#include <wrl.h>
4
5#include <stdexcept>
6
7//#define IID_PPV_ARGS(ppType) __uuidof(**(ppType)), static_cast<void**>(ppType)
8
9namespace dx {
10
11using Microsoft::WRL::ComPtr;
12
13class exception : public std::exception {
14public:
15 exception() noexcept {}
16
17 exception(HRESULT result, const char* file, int line) noexcept
18 {
19 sprintf_s(m_error, sizeof(m_error), "%s:%d Failed with HRESULT = %08X",
20 file, line, static_cast<unsigned int>(result));
21 }
22
23 exception(const char* error, const char* file, int line) noexcept
24 {
25 sprintf_s(m_error, sizeof(m_error), "%s:%d %s", file, line, error);
26 }
27
28 const char* what() const noexcept
29 {
30 return m_error;
31 }
32
33private:
34 static char m_error[1024];
35};
36
37#define THROW(error) throw exception(error, __FILE__, __LINE__)
38
39#define ThrowIfFailed(result) {\
40 if (result != S_OK) {\
41 THROW(result);\
42 }\
43}
44
45template <typename T>
46void SafeRelease(ComPtr<T>& ptr)
47{
48 if (ptr)
49 {
50 ptr->Release();
51 ptr = nullptr;
52 }
53}
54
55} // dx
diff --git a/dxcommon/src/dxcommon.cc b/dxcommon/src/dxcommon.cc
new file mode 100644
index 0000000..841ebcd
--- /dev/null
+++ b/dxcommon/src/dxcommon.cc
@@ -0,0 +1,8 @@
1#include "dxcommon.h"
2
3namespace dx
4{
5
6char exception::m_error[1024];
7
8} // namespace dx
diff --git a/dxwindow/CMakeLists.txt b/dxwindow/CMakeLists.txt
new file mode 100644
index 0000000..c29e098
--- /dev/null
+++ b/dxwindow/CMakeLists.txt
@@ -0,0 +1,10 @@
1cmake_minimum_required(VERSION 3.0)
2
3add_library(dxwindow
4 src/dxwindow.cc)
5
6target_include_directories(dxwindow PUBLIC
7 include/)
8
9target_link_libraries(dxwindow PUBLIC
10 glfw)
diff --git a/dxwindow/include/dxwindow.h b/dxwindow/include/dxwindow.h
new file mode 100644
index 0000000..e8f551a
--- /dev/null
+++ b/dxwindow/include/dxwindow.h
@@ -0,0 +1,50 @@
1#pragma once
2
3// Include Windows.h before GLFW to avoid macro redefinition warnings.
4#define WIN32_LEAN_AND_MEAN
5#include <Windows.h>
6
7#define GLFW_INCLUDE_NONE // Do not include OpenGL headers.
8#include <GLFW/glfw3.h>
9
10namespace dx
11{
12
13class Window
14{
15public:
16 ~Window();
17
18 /// Creates the window.
19 bool Initialise(int width, int height, const char* title);
20
21 /// Returns the native window handle.
22 /// If the window has not been initialized, returns an invalid handle.
23 HWND GetWindowHandle();
24
25 /// Updates the window by polling for user input.
26 void Update();
27
28 /// Returns true if the user tried to close the window, false otherwise.
29 bool ShouldClose() const;
30
31private:
32 GLFWwindow* m_window = nullptr;
33};
34
35/// Initialise the window subsystem.
36///
37/// This function must be called at the start of your application before any
38/// Windows are created.
39bool WindowInitialise();
40
41/// Terminate the window subsystem.
42///
43/// This function should be called at the end of your application. Any existing
44/// Windows are destroyed and are invalid beyond this call.
45void WindowTerminate();
46
47/// Returns the last Window error.
48const char* GetWindowError();
49
50} // namespace dx
diff --git a/dxwindow/src/dxwindow.cc b/dxwindow/src/dxwindow.cc
new file mode 100644
index 0000000..8848a7e
--- /dev/null
+++ b/dxwindow/src/dxwindow.cc
@@ -0,0 +1,80 @@
1#include "dxwindow.h"
2
3#define GLFW_EXPOSE_NATIVE_WIN32
4#include <GLFW/glfw3native.h>
5
6#include <cassert>
7#include <cstdio>
8
9namespace dx
10{
11
12static char glfw_error[1024] = {};
13
14static void glfw_error_callback(int error, const char* description)
15{
16 sprintf_s(glfw_error, sizeof(glfw_error),
17 "GLFW error %d: %s", error, description);
18}
19
20Window::~Window()
21{
22 if (m_window != nullptr)
23 {
24 glfwDestroyWindow(m_window);
25 }
26}
27
28bool Window::Initialise(int width, int height, const char* title)
29{
30 // GLFW by default creates an OpenGL context with the window.
31 // Use GLFW_NO_API to tell it not to do so.
32 glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
33
34 if ((m_window = glfwCreateWindow(
35 width, height, title, /*monitor=*/NULL, /*share=*/NULL)) == nullptr)
36 {
37 return false;
38 }
39
40 return true;
41}
42
43HWND Window::GetWindowHandle()
44{
45 if (!m_window)
46 {
47 return NULL;
48 }
49 return glfwGetWin32Window(m_window);
50}
51
52void Window::Update()
53{
54 assert(m_window);
55 glfwPollEvents();
56}
57
58bool Window::ShouldClose() const
59{
60 assert(m_window);
61 return glfwWindowShouldClose(m_window) == GLFW_TRUE;
62}
63
64bool WindowInitialise()
65{
66 glfwSetErrorCallback(glfw_error_callback);
67 return glfwInit() == GLFW_TRUE;
68}
69
70void WindowTerminate()
71{
72 glfwTerminate();
73}
74
75const char* GetWindowError()
76{
77 return glfw_error;
78}
79
80} // namespace dx
diff --git a/hello/CMakeLists.txt b/hello/CMakeLists.txt
new file mode 100644
index 0000000..9ace20f
--- /dev/null
+++ b/hello/CMakeLists.txt
@@ -0,0 +1,7 @@
1cmake_minimum_required(VERSION 3.0)
2
3add_executable(hello main.cc)
4
5target_link_libraries(hello
6 dxcommon
7 dxwindow)
diff --git a/hello/main.cc b/hello/main.cc
new file mode 100644
index 0000000..1b94cf6
--- /dev/null
+++ b/hello/main.cc
@@ -0,0 +1,439 @@
1#include <dxcommon.h>
2#include <dxwindow.h>
3
4#include <d3d12.h>
5#include <dxgi1_4.h>
6#include <directx/d3dx12.h>
7
8#include <cassert>
9#include <cstdio>
10
11using namespace dx;
12
13struct D3DSettings
14{
15 int width = 0;
16 int height = 0;
17};
18
19class D3D
20{
21public:
22 void Initialise(Window* window, const D3DSettings& settings)
23 {
24 m_window = window;
25 m_settings = settings;
26
27 UINT dxgiFactoryFlags = 0;
28#ifdef DEBUG
29 {
30 ComPtr<ID3D12Debug> debug;
31 D3D12GetDebugInterface(IID_PPV_ARGS(&debug));
32 debug->EnableDebugLayer();
33 dxgiFactoryFlags |= DXGI_CREATE_FACTORY_DEBUG;
34 }
35#endif
36 ThrowIfFailed(CreateDXGIFactory2(
37 dxgiFactoryFlags, IID_PPV_ARGS(&m_dxgi_factory)));
38
39 // Prevent Alt+Enter from going into fullscreen.
40 ThrowIfFailed(m_dxgi_factory->MakeWindowAssociation(
41 m_window->GetWindowHandle(),
42 DXGI_MWA_NO_ALT_ENTER));
43
44 ThrowIfFailed(D3D12CreateDevice(
45 /*pAdapter=*/nullptr, // Default adapter.
46 D3D_FEATURE_LEVEL_11_0,
47 IID_PPV_ARGS(&m_device)));
48
49 m_rtv_descriptor_size = m_device->GetDescriptorHandleIncrementSize(
50 D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
51 m_dsv_descriptor_size = m_device->GetDescriptorHandleIncrementSize(
52 D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
53 m_cbv_descriptor_size = m_device->GetDescriptorHandleIncrementSize(
54 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
55
56 const D3D12_COMMAND_QUEUE_DESC queue_desc =
57 {
58 .Type = D3D12_COMMAND_LIST_TYPE_DIRECT,
59 .Flags = D3D12_COMMAND_QUEUE_FLAG_NONE,
60 };
61 ThrowIfFailed(m_device->CreateCommandQueue(
62 &queue_desc,
63 IID_PPV_ARGS(&m_command_queue)));
64
65 ThrowIfFailed(m_device->CreateCommandAllocator(
66 queue_desc.Type,
67 IID_PPV_ARGS(&m_command_allocator)));
68
69 // The command allocator is the memory backing for the command list.
70 // It is in the allocator's memory where the commands are stored.
71 ThrowIfFailed(m_device->CreateCommandList(
72 /*nodeMask=*/0,
73 queue_desc.Type,
74 m_command_allocator.Get(),
75 /*pInitialState=*/nullptr, // Pipeline state.
76 IID_PPV_ARGS(&m_command_list)));
77
78 // Command lists are in the "open" state after they are created. It is
79 // easier to assume that they start in the "closed" state at each
80 // iteration of the main loop, however. The Reset() method, which we'll
81 // use later, also expects the command list to be closed.
82 ThrowIfFailed(m_command_list->Close());
83
84 CreateDescriptorHeaps();
85
86 CreateSwapChain();
87 CreateSwapChainBufferRenderTargetViews();
88 CreateDepthStencilBufferAndView();
89
90 ThrowIfFailed(m_device->CreateFence(
91 /*InitialValue=*/m_fence_value,
92 D3D12_FENCE_FLAG_NONE,
93 IID_PPV_ARGS(&m_fence)));
94
95 if ((m_fence_event = CreateEvent(
96 /*lpEventAttributes=*/nullptr,
97 /*bManualReset=*/FALSE,
98 /*bInitialState=*/FALSE,
99 /*lpName=*/nullptr)) == 0)
100 {
101 ThrowIfFailed(HRESULT_FROM_WIN32(GetLastError()));
102 }
103 }
104
105 void Render()
106 {
107 PopulateCommandList();
108
109 ID3D12CommandList* command_lists[] = { m_command_list.Get() };
110 m_command_queue->ExecuteCommandLists(
111 _countof(command_lists), command_lists);
112
113 ThrowIfFailed(m_swap_chain->Present(/*SyncInterval=*/1, /*Flags=*/0));
114 m_current_back_buffer = m_swap_chain->GetCurrentBackBufferIndex();
115
116 // It is not efficient to wait for the frame to complete here, but it
117 // is simple and sufficient for this application.
118 WaitForPreviousFrame();
119 }
120
121private:
122 void PopulateCommandList()
123 {
124 /// Note that we skip the following two items:
125 ///
126 /// 1. RSSetViewports()
127 /// 2. OMSetRenderTargets()
128 ///
129 /// This application does not render anything useful, it simply clears
130 /// the back buffer and depth/stencil view. Clearing both resources
131 /// does not require a viewport to be set or the OM (output-merger
132 /// stage) to be configured.
133
134 // A command allocator can only be reset when its associated command
135 // lists are finished executing on the GPU. This requires
136 // synchronisation.
137 ThrowIfFailed(m_command_allocator->Reset());
138
139 // A command list can be reset as soon as it is executed with
140 // ExecuteCommandList(). Reset() does require that the command list is
141 // in a "closed" state, however, which is why we close it right away
142 // after creation.
143 ThrowIfFailed(m_command_list->Reset(
144 m_command_allocator.Get(),
145 /*pInitialState=*/nullptr));
146
147 // Indicate that we intend to use the back buffer as a render target.
148 const auto render_barrier = CD3DX12_RESOURCE_BARRIER::Transition(
149 GetCurrentBackBuffer(),
150 D3D12_RESOURCE_STATE_PRESENT,
151 D3D12_RESOURCE_STATE_RENDER_TARGET);
152 m_command_list->ResourceBarrier(1, &render_barrier);
153
154 // Record commands.
155 const float clear_colour[] = { 0.0f, 0.0f, 0.0f, 0.0f };
156 m_command_list->ClearRenderTargetView(
157 GetCurrentBackBufferView(),
158 clear_colour,
159 0, // Number of rectangles in the following array.
160 nullptr); // No rectangles; clear the entire resource.
161
162 m_command_list->ClearDepthStencilView(
163 GetDepthStencilView(),
164 D3D12_CLEAR_FLAG_DEPTH | D3D12_CLEAR_FLAG_STENCIL,
165 1.0f, // Depth.
166 0, // Stencil.
167 0, // Number of rectangles in the following array.
168 nullptr); // No rectangles; clear the entire resource view.
169
170 // Indicate that we now intend to use the back buffer to present.
171 const auto present_barrier = CD3DX12_RESOURCE_BARRIER::Transition(
172 GetCurrentBackBuffer(),
173 D3D12_RESOURCE_STATE_RENDER_TARGET,
174 D3D12_RESOURCE_STATE_PRESENT);
175 m_command_list->ResourceBarrier(1, &present_barrier);
176
177 ThrowIfFailed(m_command_list->Close());
178 }
179
180 void WaitForPreviousFrame()
181 {
182 // Advance the fence value to mark commands up to this fence point.
183 m_fence_value++;
184
185 // The command queue will signal the new fence value when all commands
186 // up to this point have finished execution.
187 ThrowIfFailed(m_command_queue->Signal(m_fence.Get(), m_fence_value));
188
189 // Wait for commands to finish execution.
190 // It is possible that execution has already finished by the time we
191 // get here, so first check the fence's completed value.
192 if (m_fence->GetCompletedValue() < m_fence_value)
193 {
194 // Commands are still being executed. Configure a Windows event
195 // and wait for it. The event fires when the commands have finished
196 // execution.
197
198 // Indicate that |m_fence_event| is to be fired when |m_fence|
199 // reaches the |fence| value.
200 ThrowIfFailed(m_fence->SetEventOnCompletion(
201 m_fence_value, m_fence_event));
202
203 WaitForSingleObject(m_fence_event, INFINITE);
204 }
205 }
206
207 /// Creates RTV and DSV descriptor heaps.
208 void CreateDescriptorHeaps()
209 {
210 assert(m_device);
211
212 // The RTV heap must hold as many descriptors as we have buffers in the
213 // swap chain.
214 const D3D12_DESCRIPTOR_HEAP_DESC rtv_heap_desc =
215 {
216 .Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
217 .NumDescriptors = SWAP_CHAIN_BUFFER_COUNT,
218 .Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE,
219 .NodeMask = 0,
220 };
221 ThrowIfFailed(m_device->CreateDescriptorHeap(
222 &rtv_heap_desc, IID_PPV_ARGS(&m_rtv_heap)));
223
224 // For the depth/stencil buffer, we just need one view.
225 const D3D12_DESCRIPTOR_HEAP_DESC dsv_heap_desc =
226 {
227 .Type = D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
228 .NumDescriptors = 1,
229 .Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE,
230 .NodeMask = 0,
231 };
232 ThrowIfFailed(m_device->CreateDescriptorHeap(
233 &dsv_heap_desc, IID_PPV_ARGS(&m_dsv_heap)));
234 }
235
236 /// Creates the application's swap chain.
237 ///
238 /// This method can be called multiple times to re-create the swap chain.
239 void CreateSwapChain()
240 {
241 assert(m_dxgi_factory);
242 assert(m_command_queue);
243
244 SafeRelease(m_swap_chain);
245
246 DXGI_SWAP_CHAIN_DESC1 desc =
247 {
248 .Width = static_cast<UINT>(m_settings.width),
249 .Height = static_cast<UINT>(m_settings.height),
250 .Format = DXGI_FORMAT_R8G8B8A8_UNORM,
251 .SampleDesc = DXGI_SAMPLE_DESC
252 {
253 .Count = 1,
254 .Quality = 0,
255 },
256 .BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT,
257 .BufferCount = SWAP_CHAIN_BUFFER_COUNT,
258 .SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD,
259 };
260 ComPtr<IDXGISwapChain1> swap_chain;
261 ThrowIfFailed(m_dxgi_factory->CreateSwapChainForHwnd(
262 m_command_queue.Get(), // Swap chain uses queue to perform flush.
263 m_window->GetWindowHandle(),
264 &desc,
265 /*pFullScreenDesc=*/nullptr, // Running in windowed mode.
266 /*pRestrictToOutput=*/nullptr,
267 &swap_chain));
268 ThrowIfFailed(swap_chain.As(&m_swap_chain));
269
270 m_current_back_buffer = m_swap_chain->GetCurrentBackBufferIndex();
271 }
272
273 /// Creates RTVs for all of the swap chain's buffers.
274 void CreateSwapChainBufferRenderTargetViews()
275 {
276 assert(m_device);
277 assert(m_swap_chain);
278 assert(m_rtv_heap);
279
280 // Create the new buffer views.
281 CD3DX12_CPU_DESCRIPTOR_HANDLE rtv_heap_handle(
282 m_rtv_heap->GetCPUDescriptorHandleForHeapStart());
283 for (int i = 0; i < SWAP_CHAIN_BUFFER_COUNT; ++i)
284 {
285 ThrowIfFailed(m_swap_chain->GetBuffer(
286 i, IID_PPV_ARGS(&m_swap_chain_buffer[i])));
287
288 m_device->CreateRenderTargetView(
289 m_swap_chain_buffer[i].Get(), /*pDesc=*/nullptr, rtv_heap_handle);
290
291 rtv_heap_handle.Offset(1, m_rtv_descriptor_size);
292 }
293 }
294
295 /// Creates a depth/stencil buffer and its view.
296 void CreateDepthStencilBufferAndView()
297 {
298 assert(m_device);
299
300 const D3D12_RESOURCE_DESC depth_stencil_desc =
301 {
302 .Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D,
303 .Alignment = 0,
304 .Width = static_cast<UINT64>(m_settings.width),
305 .Height = static_cast<UINT>(m_settings.height),
306 .DepthOrArraySize = 1,
307 .MipLevels = 1,
308 .Format = DXGI_FORMAT_D24_UNORM_S8_UINT,
309 .SampleDesc = DXGI_SAMPLE_DESC
310 {
311 .Count = 1,
312 .Quality = 0,
313 },
314 .Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
315 .Flags = D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL,
316 };
317 const D3D12_CLEAR_VALUE opt_clear_value =
318 {
319 .Format = depth_stencil_desc.Format,
320 .DepthStencil = D3D12_DEPTH_STENCIL_VALUE
321 {
322 .Depth = 1.0f,
323 .Stencil = 0,
324 },
325 };
326 const CD3DX12_HEAP_PROPERTIES depth_stencil_heap_properties(
327 D3D12_HEAP_TYPE_DEFAULT);
328 ThrowIfFailed(m_device->CreateCommittedResource(
329 &depth_stencil_heap_properties,
330 D3D12_HEAP_FLAG_NONE,
331 &depth_stencil_desc,
332 D3D12_RESOURCE_STATE_COMMON,
333 &opt_clear_value,
334 IID_PPV_ARGS(&m_depth_stencil_buffer)));
335
336 m_device->CreateDepthStencilView(
337 m_depth_stencil_buffer.Get(),
338 /*pDesc=*/nullptr,
339 GetDepthStencilView());
340 }
341
342 ID3D12Resource* GetCurrentBackBuffer() const
343 {
344 return m_swap_chain_buffer[m_current_back_buffer].Get();
345 }
346
347 D3D12_CPU_DESCRIPTOR_HANDLE GetCurrentBackBufferView() const
348 {
349 assert(m_rtv_heap);
350 assert(m_rtv_descriptor_size > 0);
351 return CD3DX12_CPU_DESCRIPTOR_HANDLE(
352 m_rtv_heap->GetCPUDescriptorHandleForHeapStart(),
353 m_current_back_buffer,
354 m_rtv_descriptor_size);
355 }
356
357 D3D12_CPU_DESCRIPTOR_HANDLE GetDepthStencilView() const
358 {
359 assert(m_dsv_heap);
360 return m_dsv_heap->GetCPUDescriptorHandleForHeapStart();
361 }
362
363private:
364 static constexpr int SWAP_CHAIN_BUFFER_COUNT = 2; // Double-buffering.
365
366 Window* m_window = nullptr;
367 D3DSettings m_settings;
368
369 ComPtr<IDXGIFactory4> m_dxgi_factory;
370 ComPtr<ID3D12Device> m_device;
371
372 ComPtr<ID3D12CommandQueue> m_command_queue;
373 ComPtr<ID3D12CommandAllocator> m_command_allocator;
374 ComPtr<ID3D12GraphicsCommandList> m_command_list;
375
376 ComPtr<IDXGISwapChain3> m_swap_chain;
377
378 ComPtr<ID3D12DescriptorHeap> m_rtv_heap;
379 ComPtr<ID3D12DescriptorHeap> m_dsv_heap;
380
381 ComPtr<ID3D12Resource> m_swap_chain_buffer[SWAP_CHAIN_BUFFER_COUNT];
382 ComPtr<ID3D12Resource> m_depth_stencil_buffer;
383
384 ComPtr<ID3D12Fence> m_fence;
385 HANDLE m_fence_event = 0;
386 UINT64 m_fence_value = 0;
387
388 // Index to the buffer in the RTV descriptor heap that represents the
389 // current back buffer.
390 int m_current_back_buffer = 0;
391
392 UINT m_rtv_descriptor_size = 0;
393 UINT m_dsv_descriptor_size = 0;
394 UINT m_cbv_descriptor_size = 0;
395};
396
397int main()
398{
399 try
400 {
401 const D3DSettings settings =
402 {
403 // TODO: use 960x600 or 1920x1200 depending on native resolution.
404 .width = 1920,
405 .height = 1200,
406 };
407
408 if (!WindowInitialise())
409 {
410 THROW("Failed to initialise the window subsystem");
411 }
412 {
413 Window window;
414 if (!window.Initialise(
415 settings.width, settings.height, /*title=*/"D3D Application"))
416 {
417 THROW(GetWindowError());
418 }
419
420 D3D d3d;
421 d3d.Initialise(&window, settings);
422
423 while (!window.ShouldClose())
424 {
425 window.Update();
426 d3d.Render();
427 Sleep(10);
428 }
429 }
430 WindowTerminate();
431
432 return 0;
433 }
434 catch (const std::exception& e)
435 {
436 fprintf(stderr, "Exception caught: %s\n", e.what());
437 return 1;
438 }
439}