vulkan-ruby 0.1.0 → 1.3.207.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +6 -4
  3. data/README.md +9 -0
  4. data/lib/vulkan/conversions.rb +13 -2
  5. data/lib/vulkan/generated/commands.rb +469 -291
  6. data/lib/vulkan/generated/enums.rb +3442 -250
  7. data/lib/vulkan/generated/structs.rb +2860 -297
  8. data/lib/vulkan/generated/types.rb +601 -341
  9. data/lib/vulkan/generated/version.rb +16 -0
  10. data/lib/vulkan/generated/vk.xml +13685 -3301
  11. data/lib/vulkan/generated.rb +3 -33
  12. data/lib/vulkan/manual_types.rb +44 -0
  13. data/lib/vulkan/version.rb +8 -1
  14. data/tasks/fetch.rake +2 -1
  15. data/tasks/generate/enums.rake +94 -25
  16. data/tasks/generate/extensions.rake +26 -27
  17. data/tasks/generate/types.rake +97 -75
  18. data/tasks/generate/version.rake +32 -0
  19. data/tasks/generate.rake +7 -1
  20. data/vulkan-ruby.gemspec +5 -5
  21. metadata +14 -257
  22. data/lib/vulkan/generated/extensions/reserved_do_not_use_146.rb +0 -8
  23. data/lib/vulkan/generated/extensions/reserved_do_not_use_94.rb +0 -8
  24. data/lib/vulkan/generated/extensions/vk_amd_buffer_marker.rb +0 -10
  25. data/lib/vulkan/generated/extensions/vk_amd_draw_indirect_count.rb +0 -10
  26. data/lib/vulkan/generated/extensions/vk_amd_extension_134.rb +0 -10
  27. data/lib/vulkan/generated/extensions/vk_amd_extension_135.rb +0 -10
  28. data/lib/vulkan/generated/extensions/vk_amd_extension_136.rb +0 -10
  29. data/lib/vulkan/generated/extensions/vk_amd_extension_140.rb +0 -10
  30. data/lib/vulkan/generated/extensions/vk_amd_extension_142.rb +0 -10
  31. data/lib/vulkan/generated/extensions/vk_amd_extension_143.rb +0 -10
  32. data/lib/vulkan/generated/extensions/vk_amd_extension_17.rb +0 -10
  33. data/lib/vulkan/generated/extensions/vk_amd_extension_18.rb +0 -10
  34. data/lib/vulkan/generated/extensions/vk_amd_extension_182.rb +0 -10
  35. data/lib/vulkan/generated/extensions/vk_amd_extension_183.rb +0 -10
  36. data/lib/vulkan/generated/extensions/vk_amd_extension_184.rb +0 -10
  37. data/lib/vulkan/generated/extensions/vk_amd_extension_187.rb +0 -10
  38. data/lib/vulkan/generated/extensions/vk_amd_extension_188.rb +0 -10
  39. data/lib/vulkan/generated/extensions/vk_amd_extension_189.rb +0 -10
  40. data/lib/vulkan/generated/extensions/vk_amd_extension_20.rb +0 -10
  41. data/lib/vulkan/generated/extensions/vk_amd_extension_214.rb +0 -10
  42. data/lib/vulkan/generated/extensions/vk_amd_extension_226.rb +0 -10
  43. data/lib/vulkan/generated/extensions/vk_amd_extension_227.rb +0 -10
  44. data/lib/vulkan/generated/extensions/vk_amd_extension_228.rb +0 -10
  45. data/lib/vulkan/generated/extensions/vk_amd_extension_229.rb +0 -10
  46. data/lib/vulkan/generated/extensions/vk_amd_extension_230.rb +0 -10
  47. data/lib/vulkan/generated/extensions/vk_amd_extension_231.rb +0 -10
  48. data/lib/vulkan/generated/extensions/vk_amd_extension_232.rb +0 -10
  49. data/lib/vulkan/generated/extensions/vk_amd_extension_233.rb +0 -10
  50. data/lib/vulkan/generated/extensions/vk_amd_extension_234.rb +0 -10
  51. data/lib/vulkan/generated/extensions/vk_amd_extension_235.rb +0 -10
  52. data/lib/vulkan/generated/extensions/vk_amd_extension_236.rb +0 -10
  53. data/lib/vulkan/generated/extensions/vk_amd_extension_24.rb +0 -10
  54. data/lib/vulkan/generated/extensions/vk_amd_extension_25.rb +0 -10
  55. data/lib/vulkan/generated/extensions/vk_amd_extension_32.rb +0 -10
  56. data/lib/vulkan/generated/extensions/vk_amd_extension_33.rb +0 -10
  57. data/lib/vulkan/generated/extensions/vk_amd_extension_35.rb +0 -10
  58. data/lib/vulkan/generated/extensions/vk_amd_extension_39.rb +0 -10
  59. data/lib/vulkan/generated/extensions/vk_amd_extension_40.rb +0 -10
  60. data/lib/vulkan/generated/extensions/vk_amd_extension_41.rb +0 -10
  61. data/lib/vulkan/generated/extensions/vk_amd_extension_44.rb +0 -10
  62. data/lib/vulkan/generated/extensions/vk_amd_extension_45.rb +0 -10
  63. data/lib/vulkan/generated/extensions/vk_amd_extension_46.rb +0 -10
  64. data/lib/vulkan/generated/extensions/vk_amd_gcn_shader.rb +0 -10
  65. data/lib/vulkan/generated/extensions/vk_amd_gpu_shader_half_float.rb +0 -10
  66. data/lib/vulkan/generated/extensions/vk_amd_gpu_shader_int16.rb +0 -10
  67. data/lib/vulkan/generated/extensions/vk_amd_memory_overallocation_behavior.rb +0 -11
  68. data/lib/vulkan/generated/extensions/vk_amd_mixed_attachment_samples.rb +0 -10
  69. data/lib/vulkan/generated/extensions/vk_amd_negative_viewport_height.rb +0 -10
  70. data/lib/vulkan/generated/extensions/vk_amd_rasterization_order.rb +0 -11
  71. data/lib/vulkan/generated/extensions/vk_amd_shader_ballot.rb +0 -10
  72. data/lib/vulkan/generated/extensions/vk_amd_shader_core_properties.rb +0 -11
  73. data/lib/vulkan/generated/extensions/vk_amd_shader_explicit_vertex_parameter.rb +0 -10
  74. data/lib/vulkan/generated/extensions/vk_amd_shader_fragment_mask.rb +0 -10
  75. data/lib/vulkan/generated/extensions/vk_amd_shader_image_load_store_lod.rb +0 -10
  76. data/lib/vulkan/generated/extensions/vk_amd_shader_info.rb +0 -10
  77. data/lib/vulkan/generated/extensions/vk_amd_shader_trinary_minmax.rb +0 -10
  78. data/lib/vulkan/generated/extensions/vk_amd_texture_gather_bias_lod.rb +0 -11
  79. data/lib/vulkan/generated/extensions/vk_android_external_memory_android_hardware_buffer.rb +0 -17
  80. data/lib/vulkan/generated/extensions/vk_android_native_buffer.rb +0 -12
  81. data/lib/vulkan/generated/extensions/vk_arm_extension_01.rb +0 -10
  82. data/lib/vulkan/generated/extensions/vk_arm_extension_198.rb +0 -10
  83. data/lib/vulkan/generated/extensions/vk_ext_acquire_xlib_display.rb +0 -10
  84. data/lib/vulkan/generated/extensions/vk_ext_astc_decode_mode.rb +0 -12
  85. data/lib/vulkan/generated/extensions/vk_ext_blend_operation_advanced.rb +0 -60
  86. data/lib/vulkan/generated/extensions/vk_ext_calibrated_timestamps.rb +0 -11
  87. data/lib/vulkan/generated/extensions/vk_ext_conditional_rendering.rb +0 -16
  88. data/lib/vulkan/generated/extensions/vk_ext_conservative_rasterization.rb +0 -12
  89. data/lib/vulkan/generated/extensions/vk_ext_debug_marker.rb +0 -13
  90. data/lib/vulkan/generated/extensions/vk_ext_debug_report.rb +0 -16
  91. data/lib/vulkan/generated/extensions/vk_ext_debug_utils.rb +0 -16
  92. data/lib/vulkan/generated/extensions/vk_ext_depth_range_unrestricted.rb +0 -10
  93. data/lib/vulkan/generated/extensions/vk_ext_descriptor_indexing.rb +0 -18
  94. data/lib/vulkan/generated/extensions/vk_ext_direct_mode_display.rb +0 -10
  95. data/lib/vulkan/generated/extensions/vk_ext_discard_rectangles.rb +0 -13
  96. data/lib/vulkan/generated/extensions/vk_ext_display_control.rb +0 -14
  97. data/lib/vulkan/generated/extensions/vk_ext_display_surface_counter.rb +0 -12
  98. data/lib/vulkan/generated/extensions/vk_ext_extension_160.rb +0 -10
  99. data/lib/vulkan/generated/extensions/vk_ext_extension_176.rb +0 -10
  100. data/lib/vulkan/generated/extensions/vk_ext_extension_177.rb +0 -10
  101. data/lib/vulkan/generated/extensions/vk_ext_extension_219.rb +0 -15
  102. data/lib/vulkan/generated/extensions/vk_ext_extension_220.rb +0 -10
  103. data/lib/vulkan/generated/extensions/vk_ext_extension_222.rb +0 -10
  104. data/lib/vulkan/generated/extensions/vk_ext_extension_223.rb +0 -10
  105. data/lib/vulkan/generated/extensions/vk_ext_extension_28.rb +0 -10
  106. data/lib/vulkan/generated/extensions/vk_ext_external_memory_dma_buf.rb +0 -11
  107. data/lib/vulkan/generated/extensions/vk_ext_external_memory_host.rb +0 -15
  108. data/lib/vulkan/generated/extensions/vk_ext_global_priority.rb +0 -12
  109. data/lib/vulkan/generated/extensions/vk_ext_hdr_metadata.rb +0 -11
  110. data/lib/vulkan/generated/extensions/vk_ext_image_drm_format_modifier.rb +0 -24
  111. data/lib/vulkan/generated/extensions/vk_ext_inline_uniform_block.rb +0 -15
  112. data/lib/vulkan/generated/extensions/vk_ext_macos_ios_window.rb +0 -10
  113. data/lib/vulkan/generated/extensions/vk_ext_pci_bus_info.rb +0 -11
  114. data/lib/vulkan/generated/extensions/vk_ext_post_depth_coverage.rb +0 -10
  115. data/lib/vulkan/generated/extensions/vk_ext_queue_family_foreign.rb +0 -11
  116. data/lib/vulkan/generated/extensions/vk_ext_sample_locations.rb +0 -17
  117. data/lib/vulkan/generated/extensions/vk_ext_sampler_filter_minmax.rb +0 -13
  118. data/lib/vulkan/generated/extensions/vk_ext_shader_stencil_export.rb +0 -10
  119. data/lib/vulkan/generated/extensions/vk_ext_shader_subgroup_ballot.rb +0 -10
  120. data/lib/vulkan/generated/extensions/vk_ext_shader_subgroup_vote.rb +0 -10
  121. data/lib/vulkan/generated/extensions/vk_ext_shader_viewport_index_layer.rb +0 -10
  122. data/lib/vulkan/generated/extensions/vk_ext_swapchain_colorspace.rb +0 -24
  123. data/lib/vulkan/generated/extensions/vk_ext_transform_feedback.rb +0 -20
  124. data/lib/vulkan/generated/extensions/vk_ext_validation_cache.rb +0 -13
  125. data/lib/vulkan/generated/extensions/vk_ext_validation_flags.rb +0 -11
  126. data/lib/vulkan/generated/extensions/vk_ext_vertex_attribute_divisor.rb +0 -13
  127. data/lib/vulkan/generated/extensions/vk_fuchsia_imagepipe_surface.rb +0 -11
  128. data/lib/vulkan/generated/extensions/vk_google_decorate_string.rb +0 -10
  129. data/lib/vulkan/generated/extensions/vk_google_display_timing.rb +0 -11
  130. data/lib/vulkan/generated/extensions/vk_google_extension_192.rb +0 -10
  131. data/lib/vulkan/generated/extensions/vk_google_extension_193.rb +0 -10
  132. data/lib/vulkan/generated/extensions/vk_google_extension_194.rb +0 -10
  133. data/lib/vulkan/generated/extensions/vk_google_extension_195.rb +0 -10
  134. data/lib/vulkan/generated/extensions/vk_google_extension_196.rb +0 -10
  135. data/lib/vulkan/generated/extensions/vk_google_extension_216.rb +0 -10
  136. data/lib/vulkan/generated/extensions/vk_google_extension_217.rb +0 -10
  137. data/lib/vulkan/generated/extensions/vk_google_extension_49.rb +0 -10
  138. data/lib/vulkan/generated/extensions/vk_google_extension_50.rb +0 -10
  139. data/lib/vulkan/generated/extensions/vk_google_hlsl_functionality1.rb +0 -10
  140. data/lib/vulkan/generated/extensions/vk_img_extension_107.rb +0 -10
  141. data/lib/vulkan/generated/extensions/vk_img_extension_108.rb +0 -10
  142. data/lib/vulkan/generated/extensions/vk_img_extension_109.rb +0 -10
  143. data/lib/vulkan/generated/extensions/vk_img_extension_111.rb +0 -10
  144. data/lib/vulkan/generated/extensions/vk_img_extension_69.rb +0 -10
  145. data/lib/vulkan/generated/extensions/vk_img_filter_cubic.rb +0 -12
  146. data/lib/vulkan/generated/extensions/vk_img_format_pvrtc.rb +0 -18
  147. data/lib/vulkan/generated/extensions/vk_intel_extension_210.rb +0 -10
  148. data/lib/vulkan/generated/extensions/vk_intel_extension_211.rb +0 -10
  149. data/lib/vulkan/generated/extensions/vk_intel_extension_243.rb +0 -10
  150. data/lib/vulkan/generated/extensions/vk_khr_16bit_storage.rb +0 -11
  151. data/lib/vulkan/generated/extensions/vk_khr_8bit_storage.rb +0 -11
  152. data/lib/vulkan/generated/extensions/vk_khr_android_surface.rb +0 -11
  153. data/lib/vulkan/generated/extensions/vk_khr_bind_memory2.rb +0 -13
  154. data/lib/vulkan/generated/extensions/vk_khr_create_renderpass2.rb +0 -17
  155. data/lib/vulkan/generated/extensions/vk_khr_dedicated_allocation.rb +0 -12
  156. data/lib/vulkan/generated/extensions/vk_khr_descriptor_update_template.rb +0 -15
  157. data/lib/vulkan/generated/extensions/vk_khr_device_group.rb +0 -33
  158. data/lib/vulkan/generated/extensions/vk_khr_device_group_creation.rb +0 -14
  159. data/lib/vulkan/generated/extensions/vk_khr_display.rb +0 -14
  160. data/lib/vulkan/generated/extensions/vk_khr_display_swapchain.rb +0 -12
  161. data/lib/vulkan/generated/extensions/vk_khr_draw_indirect_count.rb +0 -10
  162. data/lib/vulkan/generated/extensions/vk_khr_driver_properties.rb +0 -13
  163. data/lib/vulkan/generated/extensions/vk_khr_extension_117.rb +0 -10
  164. data/lib/vulkan/generated/extensions/vk_khr_extension_119.rb +0 -10
  165. data/lib/vulkan/generated/extensions/vk_khr_extension_200.rb +0 -10
  166. data/lib/vulkan/generated/extensions/vk_khr_extension_201.rb +0 -10
  167. data/lib/vulkan/generated/extensions/vk_khr_extension_208.rb +0 -10
  168. data/lib/vulkan/generated/extensions/vk_khr_extension_209.rb +0 -10
  169. data/lib/vulkan/generated/extensions/vk_khr_extension_221.rb +0 -11
  170. data/lib/vulkan/generated/extensions/vk_khr_extension_237.rb +0 -10
  171. data/lib/vulkan/generated/extensions/vk_khr_extension_238.rb +0 -10
  172. data/lib/vulkan/generated/extensions/vk_khr_extension_239.rb +0 -10
  173. data/lib/vulkan/generated/extensions/vk_khr_extension_240.rb +0 -10
  174. data/lib/vulkan/generated/extensions/vk_khr_extension_83.rb +0 -10
  175. data/lib/vulkan/generated/extensions/vk_khr_external_fence.rb +0 -12
  176. data/lib/vulkan/generated/extensions/vk_khr_external_fence_capabilities.rb +0 -19
  177. data/lib/vulkan/generated/extensions/vk_khr_external_fence_fd.rb +0 -12
  178. data/lib/vulkan/generated/extensions/vk_khr_external_fence_win32.rb +0 -13
  179. data/lib/vulkan/generated/extensions/vk_khr_external_memory.rb +0 -15
  180. data/lib/vulkan/generated/extensions/vk_khr_external_memory_capabilities.rb +0 -26
  181. data/lib/vulkan/generated/extensions/vk_khr_external_memory_fd.rb +0 -13
  182. data/lib/vulkan/generated/extensions/vk_khr_external_memory_win32.rb +0 -14
  183. data/lib/vulkan/generated/extensions/vk_khr_external_semaphore.rb +0 -12
  184. data/lib/vulkan/generated/extensions/vk_khr_external_semaphore_capabilities.rb +0 -20
  185. data/lib/vulkan/generated/extensions/vk_khr_external_semaphore_fd.rb +0 -12
  186. data/lib/vulkan/generated/extensions/vk_khr_external_semaphore_win32.rb +0 -14
  187. data/lib/vulkan/generated/extensions/vk_khr_get_display_properties2.rb +0 -15
  188. data/lib/vulkan/generated/extensions/vk_khr_get_memory_requirements2.rb +0 -15
  189. data/lib/vulkan/generated/extensions/vk_khr_get_physical_device_properties2.rb +0 -19
  190. data/lib/vulkan/generated/extensions/vk_khr_get_surface_capabilities2.rb +0 -13
  191. data/lib/vulkan/generated/extensions/vk_khr_image_format_list.rb +0 -11
  192. data/lib/vulkan/generated/extensions/vk_khr_incremental_present.rb +0 -11
  193. data/lib/vulkan/generated/extensions/vk_khr_maintenance1.rb +0 -14
  194. data/lib/vulkan/generated/extensions/vk_khr_maintenance2.rb +0 -22
  195. data/lib/vulkan/generated/extensions/vk_khr_maintenance3.rb +0 -12
  196. data/lib/vulkan/generated/extensions/vk_khr_mir_surface.rb +0 -10
  197. data/lib/vulkan/generated/extensions/vk_khr_multiview.rb +0 -14
  198. data/lib/vulkan/generated/extensions/vk_khr_push_descriptor.rb +0 -13
  199. data/lib/vulkan/generated/extensions/vk_khr_relaxed_block_layout.rb +0 -10
  200. data/lib/vulkan/generated/extensions/vk_khr_sampler_mirror_clamp_to_edge.rb +0 -11
  201. data/lib/vulkan/generated/extensions/vk_khr_sampler_ycbcr_conversion.rb +0 -73
  202. data/lib/vulkan/generated/extensions/vk_khr_shader_atomic_int64.rb +0 -11
  203. data/lib/vulkan/generated/extensions/vk_khr_shader_draw_parameters.rb +0 -10
  204. data/lib/vulkan/generated/extensions/vk_khr_shared_presentable_image.rb +0 -14
  205. data/lib/vulkan/generated/extensions/vk_khr_storage_buffer_storage_class.rb +0 -10
  206. data/lib/vulkan/generated/extensions/vk_khr_surface.rb +0 -13
  207. data/lib/vulkan/generated/extensions/vk_khr_swapchain.rb +0 -24
  208. data/lib/vulkan/generated/extensions/vk_khr_variable_pointers.rb +0 -11
  209. data/lib/vulkan/generated/extensions/vk_khr_vulkan_memory_model.rb +0 -11
  210. data/lib/vulkan/generated/extensions/vk_khr_wayland_surface.rb +0 -11
  211. data/lib/vulkan/generated/extensions/vk_khr_win32_keyed_mutex.rb +0 -11
  212. data/lib/vulkan/generated/extensions/vk_khr_win32_surface.rb +0 -11
  213. data/lib/vulkan/generated/extensions/vk_khr_xcb_surface.rb +0 -11
  214. data/lib/vulkan/generated/extensions/vk_khr_xlib_surface.rb +0 -11
  215. data/lib/vulkan/generated/extensions/vk_mesa_extension_244.rb +0 -10
  216. data/lib/vulkan/generated/extensions/vk_mvk_ios_surface.rb +0 -11
  217. data/lib/vulkan/generated/extensions/vk_mvk_macos_surface.rb +0 -11
  218. data/lib/vulkan/generated/extensions/vk_mvk_moltenvk.rb +0 -10
  219. data/lib/vulkan/generated/extensions/vk_nn_vi_surface.rb +0 -11
  220. data/lib/vulkan/generated/extensions/vk_nv_clip_space_w_scaling.rb +0 -12
  221. data/lib/vulkan/generated/extensions/vk_nv_compute_shader_derivatives.rb +0 -11
  222. data/lib/vulkan/generated/extensions/vk_nv_corner_sampled_image.rb +0 -12
  223. data/lib/vulkan/generated/extensions/vk_nv_dedicated_allocation.rb +0 -13
  224. data/lib/vulkan/generated/extensions/vk_nv_device_diagnostic_checkpoints.rb +0 -12
  225. data/lib/vulkan/generated/extensions/vk_nv_extension_101.rb +0 -10
  226. data/lib/vulkan/generated/extensions/vk_nv_extension_103.rb +0 -10
  227. data/lib/vulkan/generated/extensions/vk_nv_extension_104.rb +0 -10
  228. data/lib/vulkan/generated/extensions/vk_nv_extension_151.rb +0 -10
  229. data/lib/vulkan/generated/extensions/vk_nv_extension_152.rb +0 -10
  230. data/lib/vulkan/generated/extensions/vk_nv_extension_155.rb +0 -10
  231. data/lib/vulkan/generated/extensions/vk_nv_extension_164.rb +0 -10
  232. data/lib/vulkan/generated/extensions/vk_nv_extension_168.rb +0 -10
  233. data/lib/vulkan/generated/extensions/vk_nv_extension_241.rb +0 -10
  234. data/lib/vulkan/generated/extensions/vk_nv_extension_242.rb +0 -10
  235. data/lib/vulkan/generated/extensions/vk_nv_extension_245.rb +0 -10
  236. data/lib/vulkan/generated/extensions/vk_nv_extension_53.rb +0 -10
  237. data/lib/vulkan/generated/extensions/vk_nv_external_memory.rb +0 -12
  238. data/lib/vulkan/generated/extensions/vk_nv_external_memory_capabilities.rb +0 -10
  239. data/lib/vulkan/generated/extensions/vk_nv_external_memory_win32.rb +0 -12
  240. data/lib/vulkan/generated/extensions/vk_nv_fill_rectangle.rb +0 -11
  241. data/lib/vulkan/generated/extensions/vk_nv_fragment_coverage_to_color.rb +0 -11
  242. data/lib/vulkan/generated/extensions/vk_nv_fragment_shader_barycentric.rb +0 -11
  243. data/lib/vulkan/generated/extensions/vk_nv_framebuffer_mixed_samples.rb +0 -11
  244. data/lib/vulkan/generated/extensions/vk_nv_geometry_shader_passthrough.rb +0 -10
  245. data/lib/vulkan/generated/extensions/vk_nv_glsl_shader.rb +0 -11
  246. data/lib/vulkan/generated/extensions/vk_nv_mesh_shader.rb +0 -16
  247. data/lib/vulkan/generated/extensions/vk_nv_ray_tracing.rb +0 -40
  248. data/lib/vulkan/generated/extensions/vk_nv_representative_fragment_test.rb +0 -12
  249. data/lib/vulkan/generated/extensions/vk_nv_sample_mask_override_coverage.rb +0 -10
  250. data/lib/vulkan/generated/extensions/vk_nv_scissor_exclusive.rb +0 -13
  251. data/lib/vulkan/generated/extensions/vk_nv_shader_image_footprint.rb +0 -11
  252. data/lib/vulkan/generated/extensions/vk_nv_shader_subgroup_partitioned.rb +0 -11
  253. data/lib/vulkan/generated/extensions/vk_nv_shading_rate_image.rb +0 -20
  254. data/lib/vulkan/generated/extensions/vk_nv_viewport_array2.rb +0 -10
  255. data/lib/vulkan/generated/extensions/vk_nv_viewport_swizzle.rb +0 -11
  256. data/lib/vulkan/generated/extensions/vk_nv_win32_keyed_mutex.rb +0 -11
  257. data/lib/vulkan/generated/extensions/vk_nvx_device_generated_commands.rb +0 -21
  258. data/lib/vulkan/generated/extensions/vk_nvx_extension_30.rb +0 -10
  259. data/lib/vulkan/generated/extensions/vk_nvx_extension_31.rb +0 -10
  260. data/lib/vulkan/generated/extensions/vk_nvx_extension_48.rb +0 -10
  261. data/lib/vulkan/generated/extensions/vk_nvx_extension_52.rb +0 -10
  262. data/lib/vulkan/generated/extensions/vk_nvx_multiview_per_view_attributes.rb +0 -13
  263. data/lib/vulkan/generated/extensions/vk_qcom_extension_171.rb +0 -10
  264. data/lib/vulkan/generated/extensions/vk_qcom_extension_172.rb +0 -10
  265. data/lib/vulkan/generated/extensions/vk_qcom_extension_173.rb +0 -10
  266. data/lib/vulkan/generated/extensions/vk_qcom_extension_174.rb +0 -10
  267. data/lib/vulkan/generated/extensions.rb +0 -251
@@ -1,38 +1,8 @@
1
- require 'fiddle/types'
1
+ require 'vulkan/manual_types'
2
2
 
3
3
  module Vulkan
4
4
  load_vulkan_library
5
-
6
- typealias 'int8_t', 'char'
7
- typealias 'int16_t', 'short'
8
- typealias 'int32_t', 'int'
9
- typealias 'int64_t', 'long'
10
- typealias 'uint8_t', 'unsigned char'
11
- typealias 'uint16_t', 'unsigned short'
12
- typealias 'uint32_t', 'unsigned int'
13
- typealias 'uint64_t', 'unsigned long'
14
-
15
- # platform-specific definitions, but we need them even on alternatives,
16
- # or else things get complicated when parsing vk.xml
17
- # X11
18
- typealias 'Display', 'void' # HACK: since only pointers to this type are used, its size need not be known
19
- typealias 'VisualID', 'unsigned long'
20
- typealias 'XID', 'unsigned long'
21
- typealias 'Window', 'XID'
22
- typealias 'RROutput', 'XID'
23
- # Wayland
24
- typealias 'wl_display', 'void' # HACK: since only pointers to this type are used, its size need not be known
25
- typealias 'wl_surface', 'void' # HACK: since only pointers to this type are used, its size need not be known
26
- # Windows
27
- include Fiddle::Win32Types
28
- typealias 'WCHAR', 'unsigned short'
29
- typealias 'LPCWSTR', 'WCHAR *'
30
- # XCB
31
- typealias 'xcb_connection_t', 'void' # HACK: since only pointers to this type are used, its size need not be known
32
- typealias 'xcb_visualid_t', 'uint32_t'
33
- typealias 'xcb_window_t', 'uint32_t'
34
- # Zircon
35
- typealias 'zx_handle_t', 'uint32_t'
5
+ include Vulkan::ManualTypes
36
6
 
37
7
  class << self
38
8
  @@lookup_map = {}
@@ -73,5 +43,5 @@ module Vulkan
73
43
 
74
44
  extern "PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* pName)", :stdcall
75
45
  require_relative 'generated/commands'
76
- require_relative 'generated/extensions'
46
+ # require_relative 'generated/extensions'
77
47
  end
@@ -0,0 +1,44 @@
1
+ require 'fiddle/import'
2
+ require 'fiddle/types'
3
+
4
+ module Vulkan
5
+ # Defines types manually that could not be auto generated from vk.xml.
6
+ # A type defined here will be skipped if encountered while processing
7
+ # vk.xml.
8
+ module ManualTypes
9
+ def self.included(base)
10
+ base.module_eval do
11
+ typealias 'int8_t', 'char'
12
+ typealias 'int16_t', 'short'
13
+ typealias 'int32_t', 'int'
14
+ typealias 'int64_t', 'long'
15
+ typealias 'uint8_t', 'unsigned char'
16
+ typealias 'uint16_t', 'unsigned short'
17
+ typealias 'uint32_t', 'unsigned int'
18
+ typealias 'uint64_t', 'unsigned long'
19
+
20
+ # platform-specific definitions, but we need them even on alternatives,
21
+ # or else things get complicated when parsing vk.xml
22
+ # X11
23
+ typealias 'Display', 'void' # HACK: since only pointers to this type are used, its size need not be known
24
+ typealias 'VisualID', 'unsigned long'
25
+ typealias 'XID', 'unsigned long'
26
+ typealias 'Window', 'XID'
27
+ typealias 'RROutput', 'XID'
28
+ # Wayland
29
+ typealias 'wl_display', 'void' # HACK: since only pointers to this type are used, its size need not be known
30
+ typealias 'wl_surface', 'void' # HACK: since only pointers to this type are used, its size need not be known
31
+ # Windows
32
+ include Fiddle::Win32Types
33
+ typealias 'WCHAR', 'unsigned short'
34
+ typealias 'LPCWSTR', 'WCHAR *'
35
+ # XCB
36
+ typealias 'xcb_connection_t', 'void' # HACK: since only pointers to this type are used, its size need not be known
37
+ typealias 'xcb_visualid_t', 'uint32_t'
38
+ typealias 'xcb_window_t', 'uint32_t'
39
+ # Zircon
40
+ typealias 'zx_handle_t', 'uint32_t'
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,3 +1,10 @@
1
+ require 'vulkan/generated/version'
2
+
1
3
  module Vulkan
2
- VERSION = "0.1.0"
4
+ VULKAN_RUBY_VERSION = [ 1 ]
5
+
6
+ VERSION = [ VK_API_VERSION_MAJOR,
7
+ VK_API_VERSION_MINOR,
8
+ VK_API_VERSION_PATCH,
9
+ *VULKAN_RUBY_VERSION ].join('.')
3
10
  end
data/tasks/fetch.rake CHANGED
@@ -4,6 +4,7 @@ task :fetch do
4
4
  require 'openssl'
5
5
  require 'vulkan/version'
6
6
  open(vk_xml_path, 'wb') do |file|
7
- file << open("https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/master/registry/vk.xml", :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE).read
7
+ file << URI.open("https://raw.githubusercontent.com/KhronosGroup/Vulkan-Docs/main/xml/vk.xml",
8
+ :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE).read
8
9
  end
9
10
  end
@@ -1,40 +1,109 @@
1
+ ALL_ENUMS = {}
2
+
3
+ def enum_offset(extnum, offset, dir = 1)
4
+ base_value = 1000000000
5
+ range_size = 1000
6
+ (base_value + (extnum - 1) * range_size + offset) * dir
7
+ end
8
+
9
+ def find_enum_value(name)
10
+ ALL_ENUMS.each do |category, enums|
11
+ return enums[name] if enums.keys.include?(name)
12
+ end
13
+ nil
14
+ end
15
+
16
+ def resolve_enum_alias(name)
17
+ val = find_enum_value(name)
18
+ if val.kind_of?(Hash) && val[:alias]
19
+ return resolve_enum_alias(val[:alias])
20
+ else
21
+ return val
22
+ end
23
+ end
24
+
25
+ def process_literal_value(value)
26
+ value.sub(/(\d+)[fFuUlL]+/, '\1')
27
+ end
28
+
1
29
  namespace :generate do
2
30
  desc 'generate enums'
3
31
  task :enums do
32
+ vk_xml.xpath('/registry/enums').each do |enums|
33
+ raise "duplicate enums? #{enums}" if ALL_ENUMS[enums['name']]
34
+ _enums = ALL_ENUMS[enums['name']] = {}
35
+ enums.xpath('enum').each do |enum|
36
+ raise "duplicate enum? #{enum}" if _enums[enum['name']]
37
+ value = nil
38
+ if enum['value'] then value = process_literal_value(enum['value'])
39
+ elsif enum['alias'] then value = { alias: enum['alias'] }
40
+ elsif enum['bitpos'] then value = 1 << enum['bitpos'].to_i
41
+ end
42
+ raise "could not compute enum value: #{enum}" unless value
43
+ _enums[enum['name']] = value
44
+ end
45
+ end
46
+
47
+ process_enum = proc do |enum, extnum = nil|
48
+ extnumber = enum['extnumber'] || extnum
49
+ if enum['extends'] && enum['offset']
50
+ category = ALL_ENUMS[enum['extends']] || raise("Enum category not found for #{enum}")
51
+ raise "No extnumber" unless extnumber
52
+ value = enum_offset(extnumber.to_i, enum['offset'].to_i, enum['dir'] == '-' ? -1 : 1)
53
+ raise "Could not compute offset for #{enum}" unless value
54
+ elsif enum['extends'] && enum['bitpos']
55
+ category = ALL_ENUMS[enum['extends']] || raise("Enum category not found for #{enum}")
56
+ value = 1 << enum['bitpos'].to_i
57
+ elsif enum['alias']
58
+ category = ALL_ENUMS[enum['extends']] || ALL_ENUMS[nil] ||= {}
59
+ value = { alias: enum['alias'] }
60
+ elsif enum['extends'] && enum['value']
61
+ category = ALL_ENUMS[enum['extends']] || raise("Enum category not found for #{enum}")
62
+ value = process_literal_value(enum['value'])
63
+ elsif enum['value']
64
+ category = ALL_ENUMS[nil] ||= {}
65
+ value = process_literal_value(enum['value'])
66
+ else
67
+ if find_enum_value(enum['name'])
68
+ next # we already have a value for this so carry on
69
+ else
70
+ raise "Unhandled enum: #{enum}"
71
+ end
72
+ end
73
+
74
+ raise "no category for #{enum}" unless category
75
+ raise "no value for #{enum}" unless value
76
+ existing_value = category[enum['name']]
77
+ raise "duplicate enum? #{enum} (current: #{existing_value})" if existing_value && existing_value != value
78
+ category[enum['name']] = value
79
+ end
80
+
81
+ vk_xml.xpath('/registry/feature/require/enum').each do |enum|
82
+ process_enum.call(enum)
83
+ end
84
+
85
+ vk_xml.xpath('/registry/extensions/extension').each do |extension|
86
+ extension.xpath('require/enum').each do |enum|
87
+ process_enum.call(enum, extension['number'])
88
+ end
89
+ end
90
+
4
91
  open(generate_dir.join('enums.rb'), 'w') do |f|
5
92
  f.puts header_comment
6
93
  f.puts
7
94
  f.puts 'module Vulkan'
8
- vk_xml.xpath('//types/type').each do |type|
9
- if type.attributes['category']&.value == 'enum'
10
- name = type.attributes['name']&.value
11
- raise "enum has no name: #{type.to_s.inspect}" unless name
12
- f.puts " typealias #{name.inspect}, 'int'"
13
- end
14
- end
15
95
 
16
- enums.tap do |processed_enums|
17
- vk_xml.xpath('//enums/enum').each do |enum|
18
- name = enum.attributes['name']&.value
19
- value = enum.attributes['value']&.value
20
- bitpos = enum.attributes['bitpos']&.value
21
- alias_name = enum.attributes['alias']&.value
22
- raise "enum has no name: #{enum.to_s.inspect}" unless name
23
- if alias_name
24
- raise "enum alias has not been processed yet: #{enum.to_s.inspect}" unless processed_enums[alias_name]
25
- f.puts " #{name} = #{processed_enums[alias_name]}"
26
- processed_enums[name] = processed_enums[alias_name]
96
+ ALL_ENUMS.each do |category, enums|
97
+ f.puts " # #{category}" unless category.nil?
98
+
99
+ enums.each do |name, value|
100
+ if value.kind_of?(Hash) && value[:alias]
101
+ f.puts " #{name} = #{resolve_enum_alias(value[:alias])} # Alias of #{value[:alias]}"
27
102
  else
28
- if bitpos
29
- value = (1 << bitpos.to_i)
30
- else
31
- value = value.sub(/(\d+)[fUL]+/, '\1') # '1.0f' => '1.0', '100U' => '100'
32
- end
33
- raise "enum has no value: #{enum.to_s.inspect}" unless value
34
103
  f.puts " #{name} = #{value}"
35
- processed_enums[name] = value
36
104
  end
37
105
  end
106
+ f.puts
38
107
  end
39
108
 
40
109
  f.puts 'end'
@@ -1,35 +1,34 @@
1
- def enum_offset(extnum, offset, dir = 1)
2
- base_value = 1000000000
3
- range_size = 1000
4
- (base_value + (extnum - 1) * range_size + offset) * dir
5
- end
6
-
7
1
  namespace :generate do
8
2
  desc 'generate extension enums, types, etc'
9
3
  task :extensions do
10
- rm_rf generate_dir.join('extensions')
11
- mkdir_p generate_dir.join('extensions')
12
- File.open(generate_dir.join('extensions.rb'), 'w') do |extout|
13
- extout.puts header_comment
14
- extout.puts
4
+ # rm_rf generate_dir.join('extensions')
5
+ # mkdir_p generate_dir.join('extensions')
6
+ # File.open(generate_dir.join('extensions.rb'), 'w') do |extout|
7
+ # extout.puts header_comment
8
+ # extout.puts
15
9
 
16
- vk_xml.css('extension').each do |extension|
17
- extout.puts "require 'vulkan/generated/extensions/#{extension['name'].downcase}'"
18
- extnum = extension['number'].to_i
19
- File.open(generate_dir.join('extensions/%s.rb' % extension['name'].downcase), 'w') do |f|
20
- f.puts header_comment
21
- f.puts
22
- f.puts 'module Vulkan'
10
+ # vk_xml.css('extension').each do |extension|
11
+ # extout.puts "require 'vulkan/generated/extensions/#{extension['name'].downcase}'"
12
+ # extnum = extension['number'].to_i
13
+ # File.open(generate_dir.join('extensions/%s.rb' % extension['name'].downcase), 'w') do |f|
14
+ # f.puts header_comment
15
+ # f.puts
16
+ # f.puts 'module Vulkan'
23
17
 
24
- extension.css('enum').each do |enum|
25
- dir = enum['dir'] == '-' ? -1 : enum['dir']
26
- value = enum['value'] || enum_offset(extnum, enum['offset'].to_i, (dir || 1).to_i)
27
- f.puts " #{enum['name']} = #{value} unless defined?(#{enum['name']})"
28
- end
18
+ # extension.css('enum').each do |enum|
19
+ # dir = enum['dir'] == '-' ? -1 : enum['dir']
20
+ # alias_name = enum['alias']
21
+ # value = enum['value'] || enum_offset(enum['extnumber'] || extnum, enum['offset'].to_i, (dir || 1).to_i)
22
+ # if alias_name
23
+ # f.puts " #{enum['name']} = #{alias_name} unless defined?(#{enum['name']})"
24
+ # else
25
+ # f.puts " #{enum['name']} = #{value} unless defined?(#{enum['name']})"
26
+ # end
27
+ # end
29
28
 
30
- f.puts 'end'
31
- end
32
- end
33
- end
29
+ # f.puts 'end'
30
+ # end
31
+ # end
32
+ # end
34
33
  end
35
34
  end
@@ -1,80 +1,29 @@
1
- NAME_PADDING = 56
1
+ # Include the manually specified types here, and then we will skip them while
2
+ # processing vk.xml if they are encountered. This way, all special cases need
3
+ # only be added to that file to be properly dealt with everywhere.
4
+ require 'vulkan/manual_types'
5
+ ::ManualTypes = Class.new do
6
+ extend Fiddle::Importer
7
+ # HACK, fiddle only initializes this if we call dlload which we don't need here
8
+ @type_alias = {}
9
+ include Vulkan::ManualTypes
10
+ end.new
2
11
 
3
- def pad_name(name)
4
- name.ljust(NAME_PADDING)
5
- end
6
-
7
- def base_types
8
- @base_types ||= {}.tap do |base_types|
9
- vk_xml.xpath('//types/type').each do |type|
10
- if type.attribute('category')&.value == 'basetype'
11
- name = type.xpath('name').first&.text
12
- ctype = type.xpath('type').first&.text
13
- raise "type has no name: #{type.to_s.inspect}" unless name
14
- raise "type has no ctype: #{type.to_s.inspect}" unless ctype
15
- raise "unknown platform type: #{type.to_s.inspect} (#{ctype.to_s.inspect})" unless platform_type_map[ctype]
16
- base_types[name] = ctype # platform_type_map[ctype]
17
- end
18
- end
19
- end
20
- end
21
-
22
- def platform_types
23
- @platform_types ||= {}.tap do |platform_types|
24
- vk_xml.xpath('//types/type').each do |type|
25
- if type.attribute('requires')&.value == 'vk_platform'
26
- name = type.attribute('name').value
27
- raise "type has no name: #{type.to_s.inspect}" unless name
28
- raise "unknown platform type: #{type.to_s.inspect} (#{name.inspect})" unless platform_type_map[name]
29
- platform_types[name] = platform_type_map[name]
30
- end
31
- end
32
- end
33
- end
12
+ TYPE_ALIASES = {}
34
13
 
35
- def generate_type_map(out)
36
- base_types.each do |name, type|
37
- out.puts " typealias #{pad_name name.inspect}, '#{type}'"
38
- end
39
- @types = {}.tap do |processed_types|
40
- vk_xml.xpath('//types/type').each do |type|
41
- if type.attributes['category']&.value == 'bitmask'
42
- alias_name = type.attributes['alias']&.value
43
- name = (type.xpath('name').first&.text) ||
44
- (type.attributes['name']&.value)
45
- raise "type has no name: #{type.to_s.inspect}" unless name
46
- if alias_name
47
- raise "type alias not yet processed: #{type.to_s.inspect}" unless processed_types[alias_name]
48
- btype = processed_types[alias_name]
49
- else
50
- btype = type.xpath('type').first&.text
51
- raise "type has no base type: #{type.to_s.inspect}" unless btype
52
- raise "unknown base type: #{type.to_s.inspect} (#{btype.to_s.inspect})" unless base_types[btype]
53
- # btype = base_types[btype]
54
- end
55
- out.puts " typealias #{pad_name name.inspect}, #{base_types[btype].inspect}"
56
- processed_types[name] = btype
57
- elsif type.attributes['category']&.value == 'handle'
58
- name = (type.xpath('name').first&.text) || (type.attributes['name']&.value)
59
- raise "type has no name: #{type.to_s.inspect}" unless name
60
- out.puts " typealias #{pad_name name.inspect}, 'void *'"
61
- processed_types[name] = 'void *'
62
- elsif type.attributes['category']&.value == 'funcpointer'
63
- # we'll just treat function pointers as void pointers, shouldn't matter
64
- # as long as the signatures are correct, which we'll call a programmer
65
- # responsibility.
66
- name = (type.xpath('name').first&.text) || (type.attributes['name']&.value)
67
- raise "type has no name: #{type.to_s.inspect}" unless name
68
- out.puts " typealias #{pad_name name.inspect}, 'void *'"
69
- processed_types[name] = 'void *'
70
- end
71
- end
14
+ # Returns an array whose entries are 2-element arrays containing first the
15
+ # name of the type to be created, and second the name of the type that it is
16
+ # an alias of. The return value is sorted such that types that depend on
17
+ # other types appear later.
18
+ def resolve_type_aliases(aliases = TYPE_ALIASES.dup)
19
+ result = []
20
+ aliases.dup.each do |name, alias_of|
21
+ next if aliases[alias_of] # we want only leaf nodes
22
+ aliases.delete name
23
+ result << [name, alias_of]
72
24
  end
73
- @types.each do |name, alias_name_or_type|
74
- out.puts " typealias #{pad_name name.inspect}, #{alias_name_or_type.inspect}"
75
- end
76
-
77
- # out.puts ' }'
25
+ result.concat resolve_type_aliases(aliases) unless aliases.empty?
26
+ result
78
27
  end
79
28
 
80
29
  namespace :generate do
@@ -84,7 +33,80 @@ namespace :generate do
84
33
  f.puts header_comment
85
34
  f.puts
86
35
  f.puts 'module Vulkan'
87
- generate_type_map(f)
36
+
37
+ vk_xml.xpath('/registry/types/type').each do |type|
38
+ raise "duplicate type? #{type}" if TYPE_ALIASES[type['name']]
39
+ value = nil
40
+ # skip types we can't make use of
41
+ next if type['category'] == 'include'
42
+
43
+ name = type['name'] || type.xpath('name')&.text.to_s
44
+ name = nil if name.size == 0
45
+ if name
46
+ # skip C types defined by Fiddle (see lib/fiddle/cparser.rb #parse_ctype)
47
+ next if %w( char void int double float size_t ssize_t short ).include?(name)
48
+ # skip types we manually defined
49
+ next if ::ManualTypes.class.send(:type_alias).key?(name)
50
+ end
51
+
52
+ # types that depend on an external dependency, which we don't have access
53
+ # to. Try to define a default for them, which may or may not be correct.
54
+ # Note they won't be defined if they are already typealias'ed everywhere.
55
+ # We do this for a few known types in lib/vulkan/generated.rb.
56
+ # FIXME is there a better solution? Do nothing? Always manually define them?
57
+ if type['requires'] && type['requires'][/\.h/]
58
+ raise "No type name for #{type}" unless name
59
+ f.puts " typealias '#{name}', 'void *' unless send(:type_alias).key?('#{name}') # defined in #{type['requires']}"
60
+ elsif type['category'] == 'define'
61
+ raise "No type name for #{type}" unless name
62
+ next if name['VERSION']
63
+ f.puts " #{name} = 0 # dummy value, its real value could not be converted"
64
+ elsif type['category'] == 'basetype'
65
+ _type = type.xpath('type')&.text
66
+ raise "No type name for #{type}" unless name
67
+ if _type.size == 0
68
+ # we are about to choose type 'void' in hopes that it will only ever
69
+ # be used as a pointer (void *). In case we are wrong, check whether
70
+ # it was manually specified in lib/vulkan/generated.rb first. Then
71
+ # we can address these on a case by case basis.
72
+ f.puts " typealias '#{name}', 'void' unless send(:type_alias).key?('#{name}')"
73
+ else
74
+ f.puts " typealias '#{name}', '#{_type}'"
75
+ end
76
+ elsif type['category'] == 'bitmask'
77
+ _type = type.xpath('type')&.text
78
+ _type = nil if _type&.size == 0
79
+ raise "No type name for #{type}" unless name.size > 0
80
+ if _type
81
+ f.puts " typealias '#{name}', '#{_type}'"
82
+ elsif type['alias']
83
+ TYPE_ALIASES[name] = type['alias']
84
+ end
85
+ elsif type['category'] == 'handle'
86
+ # all handles are pointers
87
+ raise "No type name for #{type}" unless name.size > 0
88
+ f.puts " typealias '#{name}', 'void *' # handle"
89
+ elsif type['category'] == 'enum'
90
+ # FIXME we shouldn't assume an enum is an int, it could be smaller
91
+ # depending on the compiler.
92
+ raise "No type name for #{type}" unless name.size > 0
93
+ f.puts " typealias '#{name}', 'int' # enum"
94
+ elsif type['category'] == 'funcpointer'
95
+ # function pointers are pointers.
96
+ # TODO do something with the arguments? Not sure fiddle knows/cares.
97
+ raise "No type name for #{type}" unless name.size > 0
98
+ f.puts " typealias '#{name}', 'void *' # function pointer"
99
+ elsif type['category'] == 'struct' || type['category'] == 'union'
100
+ # structs and unions are handled by the generate:structs task.
101
+ else
102
+ raise "Unhandled type: #{type.to_s}"
103
+ end
104
+ end
105
+
106
+ resolve_type_aliases.each do |type_alias|
107
+ f.puts " typealias '#{type_alias[0]}', '#{type_alias[1]}'"
108
+ end
109
+
88
110
  f.puts 'end'
89
111
  end
90
112
  end
@@ -0,0 +1,32 @@
1
+ namespace :generate do
2
+ desc "Regenerate Vulkan API version info"
3
+ task :version do
4
+ header_version = nil
5
+ vk_xml.xpath("/registry/types/type[@category='define']").each do |type|
6
+ name = type.xpath('name')&.text.to_s
7
+ # we are relying on VK_HEADER_VERSION to appear before VK_HEADER_VERSION_COMPLETE
8
+ if name == 'VK_HEADER_VERSION'
9
+ raise "could not parse header version: #{type.text}" unless type.text =~ /\s+(\d+)$/
10
+ header_version = $1.to_i
11
+ elsif name == 'VK_HEADER_VERSION_COMPLETE'
12
+ raise "no header version" unless header_version
13
+ raise "can't parse version" unless type.text =~ /\((\d+), (\d+), (\d+), VK_HEADER_VERSION/m
14
+ full_version = [$1.to_i, $2.to_i, $3.to_i, header_version]
15
+ open(generate_dir.join('version.rb'), 'w') do |f|
16
+ f.puts header_comment
17
+ f.puts
18
+ f.puts 'module Vulkan'
19
+ f.puts " VK_API_VERSION_VARIANT = #{full_version[0].inspect}"
20
+ f.puts " VK_API_VERSION_MAJOR = #{full_version[1].inspect}"
21
+ f.puts " VK_API_VERSION_MINOR = #{full_version[2].inspect}"
22
+ f.puts " VK_API_VERSION_PATCH = #{header_version.inspect}"
23
+ f.puts ' VK_HEADER_VERSION_COMPLETE = [VK_API_VERSION_VARIANT,'
24
+ f.puts ' VK_API_VERSION_MAJOR,'
25
+ f.puts ' VK_API_VERSION_MINOR,'
26
+ f.puts ' VK_API_VERSION_PATCH]'
27
+ f.puts 'end'
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
data/tasks/generate.rake CHANGED
@@ -1,2 +1,8 @@
1
1
  desc 'regenerate everything'
2
- task :generate => ['generate:types', 'generate:enums', 'generate:structs', 'generate:extensions']
2
+ task :generate => %w( generate:types
3
+ generate:enums
4
+ generate:structs
5
+ generate:extensions
6
+ generate:commands
7
+ generate:version
8
+ )
data/vulkan-ruby.gemspec CHANGED
@@ -34,12 +34,12 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency "bundler", "~> 2.1"
35
35
  spec.add_development_dependency "rake", "~> 13.0"
36
36
  spec.add_development_dependency "minitest", "~> 5.15"
37
+ spec.add_development_dependency 'simplecov', '~> 0.16'
37
38
  spec.add_development_dependency "nokogiri", '~> 1.8' # used to process vk.xml
38
39
  spec.add_development_dependency 'sdl2_vulkan', '~> 0.1' # used by the examples
39
- spec.add_development_dependency 'cglm', '~> 0.1'
40
- spec.add_development_dependency 'simplecov', '~> 0.16'
41
- spec.add_development_dependency 'chunky_png', '~> 1.3'
42
- spec.add_development_dependency 'oily_png', '~> 1.2'
43
- spec.add_development_dependency 'tiny_obj', '~> 0.2'
40
+ spec.add_development_dependency 'cglm', '~> 0.1' # used by the examples
41
+ spec.add_development_dependency 'chunky_png', '~> 1.3' # used by the examples
42
+ spec.add_development_dependency 'oily_png', '~> 1.2' # used by the examples
43
+ spec.add_development_dependency 'tiny_obj', '~> 0.2' # used by the examples
44
44
  spec.add_dependency 'sorted_set'
45
45
  end