rngine 0.8.0 → 0.8.2

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 (585) hide show
  1. package/README.md +50 -25
  2. package/android/CMakeLists.txt +45 -2
  3. package/android/build.gradle +1 -3
  4. package/android/kls_database.db +0 -0
  5. package/android/src/main/cpp/game-view.cpp +29 -0
  6. package/android/src/main/java/com/margelo/nitro/rngine/GameEngine.kt +1 -28
  7. package/android/src/main/java/com/margelo/nitro/rngine/GameView.kt +22 -166
  8. package/android/src/main/java/com/margelo/nitro/rngine/SvgLoaderHelper.kt +24 -0
  9. package/lib/module/GameMethods.js +44 -0
  10. package/lib/module/GameMethods.js.map +1 -1
  11. package/lib/module/GameMethods.nitro.js.map +1 -1
  12. package/lib/module/index.js +0 -1
  13. package/lib/module/index.js.map +1 -1
  14. package/lib/typescript/src/GameMethods.d.ts +1 -0
  15. package/lib/typescript/src/GameMethods.d.ts.map +1 -1
  16. package/lib/typescript/src/GameMethods.nitro.d.ts +3 -0
  17. package/lib/typescript/src/GameMethods.nitro.d.ts.map +1 -1
  18. package/lib/typescript/src/index.d.ts +0 -1
  19. package/lib/typescript/src/index.d.ts.map +1 -1
  20. package/lib/typescript/src/nativeTypes.d.ts +6 -0
  21. package/lib/typescript/src/nativeTypes.d.ts.map +1 -1
  22. package/nitro.json +0 -10
  23. package/nitrogen/generated/android/rngine+autolinking.cmake +0 -2
  24. package/nitrogen/generated/android/rngineOnLoad.cpp +0 -16
  25. package/nitrogen/generated/ios/Rngine-Swift-Cxx-Bridge.cpp +0 -33
  26. package/nitrogen/generated/ios/Rngine-Swift-Cxx-Bridge.hpp +0 -96
  27. package/nitrogen/generated/ios/Rngine-Swift-Cxx-Umbrella.hpp +0 -9
  28. package/nitrogen/generated/ios/RngineAutolinking.mm +0 -8
  29. package/nitrogen/generated/ios/RngineAutolinking.swift +0 -12
  30. package/nitrogen/generated/shared/c++/Entity.hpp +13 -1
  31. package/nitrogen/generated/shared/c++/EntityUpdate.hpp +13 -1
  32. package/nitrogen/generated/shared/c++/HybridGameMethodsSpec.cpp +3 -0
  33. package/nitrogen/generated/shared/c++/HybridGameMethodsSpec.hpp +4 -0
  34. package/nitrogen/generated/shared/c++/Screen.hpp +14 -2
  35. package/package.json +4 -1
  36. package/shared/CollisionUtils.hpp +1 -6
  37. package/{android/src/main/cpp/ColorUtils.hpp → shared/ColorUtils.cpp} +8 -12
  38. package/shared/ColorUtils.hpp +7 -0
  39. package/shared/GameLoop.cpp +45 -27
  40. package/shared/GameLoop.hpp +1 -11
  41. package/shared/GameMethods.cpp +103 -6
  42. package/shared/GameMethods.hpp +17 -0
  43. package/shared/GameRenderer.cpp +431 -0
  44. package/shared/GameRenderer.hpp +65 -0
  45. package/shared/GameStats.hpp +3 -3
  46. package/shared/Overlap.hpp +9 -0
  47. package/shared/skia/include/android/AHardwareBufferUtils.h +26 -0
  48. package/shared/skia/include/android/GrAHardwareBufferUtils.h +97 -0
  49. package/shared/skia/include/android/SkAndroidFrameworkUtils.h +83 -0
  50. package/shared/skia/include/android/SkAnimatedImage.h +193 -0
  51. package/shared/skia/include/android/SkCanvasAndroid.h +20 -0
  52. package/shared/skia/include/android/SkImageAndroid.h +100 -0
  53. package/shared/skia/include/android/SkSurfaceAndroid.h +50 -0
  54. package/shared/skia/include/android/graphite/SurfaceAndroid.h +59 -0
  55. package/shared/skia/include/android/vk/AndroidVulkanMemoryAllocator.h +31 -0
  56. package/shared/skia/include/codec/SkAndroidCodec.h +302 -0
  57. package/shared/skia/include/codec/SkAvifDecoder.h +80 -0
  58. package/shared/skia/include/codec/SkBmpDecoder.h +44 -0
  59. package/shared/skia/include/codec/SkBmpRustDecoder.h +42 -0
  60. package/shared/skia/include/codec/SkCodec.h +1178 -0
  61. package/shared/skia/include/codec/SkCodecAnimation.h +61 -0
  62. package/shared/skia/include/codec/SkEncodedImageFormat.h +33 -0
  63. package/shared/skia/include/codec/SkEncodedOrigin.h +71 -0
  64. package/shared/skia/include/codec/SkGifDecoder.h +44 -0
  65. package/shared/skia/include/codec/SkIcoDecoder.h +44 -0
  66. package/shared/skia/include/codec/SkJpegDecoder.h +51 -0
  67. package/shared/skia/include/codec/SkJpegxlDecoder.h +44 -0
  68. package/shared/skia/include/codec/SkPixmapUtils.h +31 -0
  69. package/shared/skia/include/codec/SkPngChunkReader.h +45 -0
  70. package/shared/skia/include/codec/SkPngDecoder.h +51 -0
  71. package/shared/skia/include/codec/SkPngRustDecoder.h +30 -0
  72. package/shared/skia/include/codec/SkRawDecoder.h +50 -0
  73. package/shared/skia/include/codec/SkWbmpDecoder.h +44 -0
  74. package/shared/skia/include/codec/SkWebpDecoder.h +51 -0
  75. package/shared/skia/include/config/SkUserConfig.h +141 -0
  76. package/shared/skia/include/core/SkAlphaType.h +45 -0
  77. package/shared/skia/include/core/SkAnnotation.h +52 -0
  78. package/shared/skia/include/core/SkArc.h +69 -0
  79. package/shared/skia/include/core/SkBBHFactory.h +67 -0
  80. package/shared/skia/include/core/SkBitmap.h +1264 -0
  81. package/shared/skia/include/core/SkBlendMode.h +112 -0
  82. package/shared/skia/include/core/SkBlender.h +30 -0
  83. package/shared/skia/include/core/SkBlurTypes.h +20 -0
  84. package/shared/skia/include/core/SkCPUContext.h +31 -0
  85. package/shared/skia/include/core/SkCPURecorder.h +76 -0
  86. package/shared/skia/include/core/SkCanvas.h +2770 -0
  87. package/shared/skia/include/core/SkCanvasVirtualEnforcer.h +61 -0
  88. package/shared/skia/include/core/SkCapabilities.h +35 -0
  89. package/shared/skia/include/core/SkClipOp.h +19 -0
  90. package/shared/skia/include/core/SkColor.h +469 -0
  91. package/shared/skia/include/core/SkColorFilter.h +150 -0
  92. package/shared/skia/include/core/SkColorSpace.h +432 -0
  93. package/shared/skia/include/core/SkColorTable.h +62 -0
  94. package/shared/skia/include/core/SkColorType.h +159 -0
  95. package/shared/skia/include/core/SkContourMeasure.h +215 -0
  96. package/shared/skia/include/core/SkCoverageMode.h +28 -0
  97. package/shared/skia/include/core/SkCubicMap.h +47 -0
  98. package/shared/skia/include/core/SkData.h +225 -0
  99. package/shared/skia/include/core/SkDataTable.h +122 -0
  100. package/shared/skia/include/core/SkDocument.h +93 -0
  101. package/shared/skia/include/core/SkDrawable.h +178 -0
  102. package/shared/skia/include/core/SkExecutor.h +59 -0
  103. package/shared/skia/include/core/SkFlattenable.h +115 -0
  104. package/shared/skia/include/core/SkFont.h +536 -0
  105. package/shared/skia/include/core/SkFontArguments.h +116 -0
  106. package/shared/skia/include/core/SkFontMetrics.h +139 -0
  107. package/shared/skia/include/core/SkFontMgr.h +178 -0
  108. package/shared/skia/include/core/SkFontParameters.h +43 -0
  109. package/shared/skia/include/core/SkFontScanner.h +45 -0
  110. package/shared/skia/include/core/SkFontStyle.h +84 -0
  111. package/shared/skia/include/core/SkFontTypes.h +25 -0
  112. package/shared/skia/include/core/SkFourByteTag.h +19 -0
  113. package/shared/skia/include/core/SkGraphics.h +169 -0
  114. package/shared/skia/include/core/SkImage.h +918 -0
  115. package/shared/skia/include/core/SkImageFilter.h +119 -0
  116. package/shared/skia/include/core/SkImageGenerator.h +140 -0
  117. package/shared/skia/include/core/SkImageInfo.h +634 -0
  118. package/shared/skia/include/core/SkM44.h +442 -0
  119. package/shared/skia/include/core/SkMallocPixelRef.h +45 -0
  120. package/shared/skia/include/core/SkMaskFilter.h +45 -0
  121. package/shared/skia/include/core/SkMatrix.h +1887 -0
  122. package/shared/skia/include/core/SkMesh.h +429 -0
  123. package/shared/skia/include/core/SkMilestone.h +9 -0
  124. package/shared/skia/include/core/SkOpenTypeSVGDecoder.h +30 -0
  125. package/shared/skia/include/core/SkOverdrawCanvas.h +94 -0
  126. package/shared/skia/include/core/SkPaint.h +698 -0
  127. package/shared/skia/include/core/SkPath.h +1145 -0
  128. package/shared/skia/include/core/SkPathBuilder.h +1052 -0
  129. package/shared/skia/include/core/SkPathEffect.h +88 -0
  130. package/shared/skia/include/core/SkPathIter.h +90 -0
  131. package/shared/skia/include/core/SkPathMeasure.h +96 -0
  132. package/shared/skia/include/core/SkPathTypes.h +71 -0
  133. package/shared/skia/include/core/SkPathUtils.h +39 -0
  134. package/shared/skia/include/core/SkPicture.h +291 -0
  135. package/shared/skia/include/core/SkPictureRecorder.h +115 -0
  136. package/shared/skia/include/core/SkPixelRef.h +120 -0
  137. package/shared/skia/include/core/SkPixmap.h +736 -0
  138. package/shared/skia/include/core/SkPoint.h +560 -0
  139. package/shared/skia/include/core/SkPoint3.h +149 -0
  140. package/shared/skia/include/core/SkRRect.h +548 -0
  141. package/shared/skia/include/core/SkRSXform.h +71 -0
  142. package/shared/skia/include/core/SkRasterHandleAllocator.h +94 -0
  143. package/shared/skia/include/core/SkRecorder.h +49 -0
  144. package/shared/skia/include/core/SkRect.h +1419 -0
  145. package/shared/skia/include/core/SkRefCnt.h +391 -0
  146. package/shared/skia/include/core/SkRegion.h +701 -0
  147. package/shared/skia/include/core/SkSamplingOptions.h +107 -0
  148. package/shared/skia/include/core/SkScalar.h +148 -0
  149. package/shared/skia/include/core/SkSerialProcs.h +127 -0
  150. package/shared/skia/include/core/SkShader.h +123 -0
  151. package/shared/skia/include/core/SkSize.h +93 -0
  152. package/shared/skia/include/core/SkSpan.h +174 -0
  153. package/shared/skia/include/core/SkStream.h +524 -0
  154. package/shared/skia/include/core/SkStrikeRef.h +96 -0
  155. package/shared/skia/include/core/SkString.h +297 -0
  156. package/shared/skia/include/core/SkStrokeRec.h +160 -0
  157. package/shared/skia/include/core/SkSurface.h +689 -0
  158. package/shared/skia/include/core/SkSurfaceProps.h +122 -0
  159. package/shared/skia/include/core/SkSwizzle.h +21 -0
  160. package/shared/skia/include/core/SkTextBlob.h +541 -0
  161. package/shared/skia/include/core/SkTextureCompressionType.h +30 -0
  162. package/shared/skia/include/core/SkTileMode.h +41 -0
  163. package/shared/skia/include/core/SkTiledImageUtils.h +125 -0
  164. package/shared/skia/include/core/SkTraceMemoryDump.h +121 -0
  165. package/shared/skia/include/core/SkTypeface.h +468 -0
  166. package/shared/skia/include/core/SkTypes.h +193 -0
  167. package/shared/skia/include/core/SkUnPreMultiply.h +55 -0
  168. package/shared/skia/include/core/SkVertices.h +136 -0
  169. package/shared/skia/include/core/SkYUVAInfo.h +311 -0
  170. package/shared/skia/include/core/SkYUVAPixmaps.h +335 -0
  171. package/shared/skia/include/docs/SkMultiPictureDocument.h +53 -0
  172. package/shared/skia/include/docs/SkPDFDocument.h +277 -0
  173. package/shared/skia/include/docs/SkPDFJpegHelpers.h +41 -0
  174. package/shared/skia/include/docs/SkXPSDocument.h +43 -0
  175. package/shared/skia/include/effects/Sk1DPathEffect.h +40 -0
  176. package/shared/skia/include/effects/Sk2DPathEffect.h +33 -0
  177. package/shared/skia/include/effects/SkBlenders.h +27 -0
  178. package/shared/skia/include/effects/SkBlurMaskFilter.h +35 -0
  179. package/shared/skia/include/effects/SkColorMatrix.h +57 -0
  180. package/shared/skia/include/effects/SkColorMatrixFilter.h +22 -0
  181. package/shared/skia/include/effects/SkCornerPathEffect.h +32 -0
  182. package/shared/skia/include/effects/SkDashPathEffect.h +43 -0
  183. package/shared/skia/include/effects/SkDiscretePathEffect.h +37 -0
  184. package/shared/skia/include/effects/SkGradient.h +206 -0
  185. package/shared/skia/include/effects/SkHighContrastFilter.h +84 -0
  186. package/shared/skia/include/effects/SkImageFilters.h +641 -0
  187. package/shared/skia/include/effects/SkLumaColorFilter.h +37 -0
  188. package/shared/skia/include/effects/SkOverdrawColorFilter.h +33 -0
  189. package/shared/skia/include/effects/SkPerlinNoiseShader.h +53 -0
  190. package/shared/skia/include/effects/SkRuntimeEffect.h +503 -0
  191. package/shared/skia/include/effects/SkShaderMaskFilter.h +28 -0
  192. package/shared/skia/include/effects/SkTableMaskFilter.h +47 -0
  193. package/shared/skia/include/effects/SkTrimPathEffect.h +45 -0
  194. package/shared/skia/include/encode/SkEncoder.h +63 -0
  195. package/shared/skia/include/encode/SkICC.h +36 -0
  196. package/shared/skia/include/encode/SkJpegEncoder.h +127 -0
  197. package/shared/skia/include/encode/SkPngEncoder.h +132 -0
  198. package/shared/skia/include/encode/SkPngRustEncoder.h +121 -0
  199. package/shared/skia/include/encode/SkWebpEncoder.h +87 -0
  200. package/shared/skia/include/gpu/GpuTypes.h +98 -0
  201. package/shared/skia/include/gpu/MutableTextureState.h +68 -0
  202. package/shared/skia/include/gpu/ShaderErrorHandler.h +46 -0
  203. package/shared/skia/include/gpu/ganesh/GrBackendSemaphore.h +50 -0
  204. package/shared/skia/include/gpu/ganesh/GrBackendSurface.h +257 -0
  205. package/shared/skia/include/gpu/ganesh/GrContextOptions.h +384 -0
  206. package/shared/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
  207. package/shared/skia/include/gpu/ganesh/GrDirectContext.h +1027 -0
  208. package/shared/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
  209. package/shared/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +49 -0
  210. package/shared/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +54 -0
  211. package/shared/skia/include/gpu/ganesh/GrRecordingContext.h +300 -0
  212. package/shared/skia/include/gpu/ganesh/GrTypes.h +193 -0
  213. package/shared/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
  214. package/shared/skia/include/gpu/ganesh/SkImageGanesh.h +361 -0
  215. package/shared/skia/include/gpu/ganesh/SkMeshGanesh.h +57 -0
  216. package/shared/skia/include/gpu/ganesh/SkSurfaceGanesh.h +218 -0
  217. package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
  218. package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendSemaphore.h +20 -0
  219. package/shared/skia/include/gpu/ganesh/d3d/GrD3DBackendSurface.h +59 -0
  220. package/shared/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h +28 -0
  221. package/shared/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
  222. package/shared/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
  223. package/shared/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
  224. package/shared/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +64 -0
  225. package/shared/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
  226. package/shared/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +30 -0
  227. package/shared/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
  228. package/shared/skia/include/gpu/ganesh/gl/GrGLFunctions.h +313 -0
  229. package/shared/skia/include/gpu/ganesh/gl/GrGLInterface.h +337 -0
  230. package/shared/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
  231. package/shared/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
  232. package/shared/skia/include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h +23 -0
  233. package/shared/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
  234. package/shared/skia/include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h +23 -0
  235. package/shared/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
  236. package/shared/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
  237. package/shared/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
  238. package/shared/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h +59 -0
  239. package/shared/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
  240. package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h +21 -0
  241. package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
  242. package/shared/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
  243. package/shared/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
  244. package/shared/skia/include/gpu/ganesh/mtl/GrMtlTypes.h +61 -0
  245. package/shared/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +73 -0
  246. package/shared/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +44 -0
  247. package/shared/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +20 -0
  248. package/shared/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +71 -0
  249. package/shared/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +33 -0
  250. package/shared/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
  251. package/shared/skia/include/gpu/graphite/BackendSemaphore.h +60 -0
  252. package/shared/skia/include/gpu/graphite/BackendTexture.h +65 -0
  253. package/shared/skia/include/gpu/graphite/Context.h +440 -0
  254. package/shared/skia/include/gpu/graphite/ContextOptions.h +239 -0
  255. package/shared/skia/include/gpu/graphite/GraphiteTypes.h +315 -0
  256. package/shared/skia/include/gpu/graphite/Image.h +428 -0
  257. package/shared/skia/include/gpu/graphite/ImageProvider.h +68 -0
  258. package/shared/skia/include/gpu/graphite/PersistentPipelineStorage.h +45 -0
  259. package/shared/skia/include/gpu/graphite/PrecompileContext.h +109 -0
  260. package/shared/skia/include/gpu/graphite/Recorder.h +355 -0
  261. package/shared/skia/include/gpu/graphite/Recording.h +100 -0
  262. package/shared/skia/include/gpu/graphite/Surface.h +121 -0
  263. package/shared/skia/include/gpu/graphite/TextureInfo.h +133 -0
  264. package/shared/skia/include/gpu/graphite/YUVABackendTextures.h +148 -0
  265. package/shared/skia/include/gpu/graphite/dawn/DawnBackendContext.h +77 -0
  266. package/shared/skia/include/gpu/graphite/dawn/DawnGraphiteTypes.h +163 -0
  267. package/shared/skia/include/gpu/graphite/dawn/DawnTypes.h +9 -0
  268. package/shared/skia/include/gpu/graphite/dawn/DawnUtils.h +9 -0
  269. package/shared/skia/include/gpu/graphite/mtl/MtlBackendContext.h +34 -0
  270. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +73 -0
  271. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypesUtils.h +10 -0
  272. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h +50 -0
  273. package/shared/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h +9 -0
  274. package/shared/skia/include/gpu/graphite/precompile/PaintOptions.h +211 -0
  275. package/shared/skia/include/gpu/graphite/precompile/Precompile.h +59 -0
  276. package/shared/skia/include/gpu/graphite/precompile/PrecompileBase.h +76 -0
  277. package/shared/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
  278. package/shared/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +95 -0
  279. package/shared/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +116 -0
  280. package/shared/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +49 -0
  281. package/shared/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
  282. package/shared/skia/include/gpu/graphite/precompile/PrecompileShader.h +268 -0
  283. package/shared/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h +31 -0
  284. package/shared/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +104 -0
  285. package/shared/skia/include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h +39 -0
  286. package/shared/skia/include/gpu/mtl/MtlMemoryAllocator.h +41 -0
  287. package/shared/skia/include/gpu/vk/VulkanBackendContext.h +57 -0
  288. package/shared/skia/include/gpu/vk/VulkanExtensions.h +73 -0
  289. package/shared/skia/include/gpu/vk/VulkanMemoryAllocator.h +117 -0
  290. package/shared/skia/include/gpu/vk/VulkanMutableTextureState.h +26 -0
  291. package/shared/skia/include/gpu/vk/VulkanPreferredFeatures.h +225 -0
  292. package/shared/skia/include/gpu/vk/VulkanTypes.h +245 -0
  293. package/shared/skia/include/pathops/SkPathOps.h +150 -0
  294. package/shared/skia/include/ports/SkCFObject.h +180 -0
  295. package/shared/skia/include/ports/SkFontConfigInterface.h +112 -0
  296. package/shared/skia/include/ports/SkFontMgr_FontConfigInterface.h +24 -0
  297. package/shared/skia/include/ports/SkFontMgr_Fontations.h +20 -0
  298. package/shared/skia/include/ports/SkFontMgr_android.h +48 -0
  299. package/shared/skia/include/ports/SkFontMgr_android_ndk.h +27 -0
  300. package/shared/skia/include/ports/SkFontMgr_data.h +22 -0
  301. package/shared/skia/include/ports/SkFontMgr_directory.h +21 -0
  302. package/shared/skia/include/ports/SkFontMgr_empty.h +21 -0
  303. package/shared/skia/include/ports/SkFontMgr_fontconfig.h +24 -0
  304. package/shared/skia/include/ports/SkFontMgr_fuchsia.h +21 -0
  305. package/shared/skia/include/ports/SkFontMgr_mac_ct.h +27 -0
  306. package/shared/skia/include/ports/SkFontScanner_Fontations.h +15 -0
  307. package/shared/skia/include/ports/SkFontScanner_FreeType.h +15 -0
  308. package/shared/skia/include/ports/SkImageGeneratorCG.h +28 -0
  309. package/shared/skia/include/ports/SkImageGeneratorNDK.h +40 -0
  310. package/shared/skia/include/ports/SkImageGeneratorWIC.h +41 -0
  311. package/shared/skia/include/ports/SkTypeface_fontations.h +24 -0
  312. package/shared/skia/include/ports/SkTypeface_mac.h +44 -0
  313. package/shared/skia/include/ports/SkTypeface_win.h +63 -0
  314. package/shared/skia/include/private/SingleOwner.h +75 -0
  315. package/shared/skia/include/private/SkAPI.h +52 -0
  316. package/shared/skia/include/private/SkASAN.h +56 -0
  317. package/shared/skia/include/private/SkAlign.h +51 -0
  318. package/shared/skia/include/private/SkAlignedStorage.h +32 -0
  319. package/shared/skia/include/private/SkAnySubclass.h +79 -0
  320. package/shared/skia/include/private/SkAssert.h +203 -0
  321. package/shared/skia/include/private/SkAttributes.h +96 -0
  322. package/shared/skia/include/private/SkCPUTypes.h +25 -0
  323. package/shared/skia/include/private/SkContainers.h +54 -0
  324. package/shared/skia/include/private/SkDebug.h +27 -0
  325. package/shared/skia/include/private/SkDeque.h +138 -0
  326. package/shared/skia/include/private/SkEncodedInfo.h +249 -0
  327. package/shared/skia/include/private/SkEnumBitMask.h +92 -0
  328. package/shared/skia/include/private/SkExif.h +69 -0
  329. package/shared/skia/include/private/SkFeatures.h +173 -0
  330. package/shared/skia/include/private/SkFixed.h +143 -0
  331. package/shared/skia/include/private/SkFloatingPoint.h +183 -0
  332. package/shared/skia/include/private/SkGainmapInfo.h +140 -0
  333. package/shared/skia/include/private/SkGainmapShader.h +60 -0
  334. package/shared/skia/include/private/SkHdrMetadata.h +357 -0
  335. package/shared/skia/include/private/SkIDChangeListener.h +76 -0
  336. package/shared/skia/include/private/SkJpegGainmapEncoder.h +48 -0
  337. package/shared/skia/include/private/SkJpegMetadataDecoder.h +103 -0
  338. package/shared/skia/include/private/SkLoadUserConfig.h +64 -0
  339. package/shared/skia/include/private/SkLog.h +62 -0
  340. package/shared/skia/include/private/SkLogPriority.h +34 -0
  341. package/shared/skia/include/private/SkMacros.h +170 -0
  342. package/shared/skia/include/private/SkMalloc.h +152 -0
  343. package/shared/skia/include/private/SkMath.h +77 -0
  344. package/shared/skia/include/private/SkMutex.h +72 -0
  345. package/shared/skia/include/private/SkNoncopyable.h +30 -0
  346. package/shared/skia/include/private/SkOnce.h +55 -0
  347. package/shared/skia/include/private/SkPathRef.h +90 -0
  348. package/shared/skia/include/private/SkPixelStorage.h +52 -0
  349. package/shared/skia/include/private/SkSLSampleUsage.h +85 -0
  350. package/shared/skia/include/private/SkSafe32.h +49 -0
  351. package/shared/skia/include/private/SkSemaphore.h +84 -0
  352. package/shared/skia/include/private/SkTArray.h +823 -0
  353. package/shared/skia/include/private/SkTDArray.h +247 -0
  354. package/shared/skia/include/private/SkTFitsIn.h +92 -0
  355. package/shared/skia/include/private/SkTLogic.h +56 -0
  356. package/shared/skia/include/private/SkTPin.h +23 -0
  357. package/shared/skia/include/private/SkTemplates.h +500 -0
  358. package/shared/skia/include/private/SkThreadAnnotations.h +104 -0
  359. package/shared/skia/include/private/SkThreadID.h +23 -0
  360. package/shared/skia/include/private/SkTo.h +39 -0
  361. package/shared/skia/include/private/SkTypeTraits.h +53 -0
  362. package/shared/skia/include/private/SkWeakRefCnt.h +173 -0
  363. package/shared/skia/include/private/SkXmp.h +62 -0
  364. package/shared/skia/include/private/chromium/GrDeferredDisplayList.h +120 -0
  365. package/shared/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +62 -0
  366. package/shared/skia/include/private/chromium/GrPromiseImageTexture.h +43 -0
  367. package/shared/skia/include/private/chromium/GrSurfaceCharacterization.h +211 -0
  368. package/shared/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +131 -0
  369. package/shared/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +150 -0
  370. package/shared/skia/include/private/chromium/SkCodecsICCProfileChromium.h +52 -0
  371. package/shared/skia/include/private/chromium/SkDiscardableMemory.h +70 -0
  372. package/shared/skia/include/private/chromium/SkExifChromium.h +26 -0
  373. package/shared/skia/include/private/chromium/SkImageChromium.h +117 -0
  374. package/shared/skia/include/private/chromium/SkPMColor.h +38 -0
  375. package/shared/skia/include/private/chromium/Slug.h +72 -0
  376. package/shared/skia/include/private/gpu/ganesh/GrContext_Base.h +104 -0
  377. package/shared/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +60 -0
  378. package/shared/skia/include/private/gpu/ganesh/GrImageContext.h +56 -0
  379. package/shared/skia/include/private/gpu/ganesh/GrTextureGenerator.h +66 -0
  380. package/shared/skia/include/private/gpu/ganesh/GrTypesPriv.h +959 -0
  381. package/shared/skia/include/private/gpu/vk/SkiaVulkan.h +36 -0
  382. package/shared/skia/include/sksl/SkSLDebugTrace.h +25 -0
  383. package/shared/skia/include/sksl/SkSLVersion.h +27 -0
  384. package/shared/skia/include/svg/SkSVGCanvas.h +62 -0
  385. package/shared/skia/include/third_party/vulkan/vulkan/vk_icd.h +245 -0
  386. package/shared/skia/include/third_party/vulkan/vulkan/vk_layer.h +192 -0
  387. package/shared/skia/include/third_party/vulkan/vulkan/vk_platform.h +84 -0
  388. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h +394 -0
  389. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h +109 -0
  390. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h +143 -0
  391. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +312 -0
  392. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
  393. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h +147 -0
  394. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +446 -0
  395. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
  396. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h +157 -0
  397. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h +151 -0
  398. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h +68 -0
  399. package/shared/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +36 -0
  400. package/shared/skia/include/third_party/vulkan/vulkan/vulkan.h +103 -0
  401. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_android.h +159 -0
  402. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_beta.h +375 -0
  403. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_core.h +25896 -0
  404. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h +59 -0
  405. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h +282 -0
  406. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h +62 -0
  407. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +50 -0
  408. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +50 -0
  409. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_metal.h +244 -0
  410. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h +120 -0
  411. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_screen.h +114 -0
  412. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_vi.h +50 -0
  413. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h +59 -0
  414. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +372 -0
  415. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +60 -0
  416. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h +60 -0
  417. package/shared/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h +50 -0
  418. package/shared/skia/include/utils/SkCamera.h +109 -0
  419. package/shared/skia/include/utils/SkCanvasStateUtils.h +81 -0
  420. package/shared/skia/include/utils/SkCustomTypeface.h +70 -0
  421. package/shared/skia/include/utils/SkEventTracer.h +93 -0
  422. package/shared/skia/include/utils/SkNWayCanvas.h +123 -0
  423. package/shared/skia/include/utils/SkNoDrawCanvas.h +78 -0
  424. package/shared/skia/include/utils/SkNullCanvas.h +22 -0
  425. package/shared/skia/include/utils/SkOrderedFontMgr.h +66 -0
  426. package/shared/skia/include/utils/SkPaintFilterCanvas.h +140 -0
  427. package/shared/skia/include/utils/SkParse.h +36 -0
  428. package/shared/skia/include/utils/SkParsePath.h +33 -0
  429. package/shared/skia/include/utils/SkShadowUtils.h +102 -0
  430. package/shared/skia/include/utils/SkTextUtils.h +43 -0
  431. package/shared/skia/include/utils/SkTraceEventPhase.h +19 -0
  432. package/shared/skia/include/utils/mac/SkCGUtils.h +90 -0
  433. package/shared/skia/modules/jsonreader/SkJSONReader.cpp +996 -0
  434. package/shared/skia/modules/jsonreader/SkJSONReader.h +389 -0
  435. package/shared/skia/modules/skcms/skcms.h +10 -0
  436. package/shared/skia/modules/skcms/src/Transform_inl.h +1600 -0
  437. package/shared/skia/modules/skcms/src/skcms_Transform.h +167 -0
  438. package/shared/skia/modules/skcms/src/skcms_internals.h +157 -0
  439. package/shared/skia/modules/skcms/src/skcms_public.h +496 -0
  440. package/shared/skia/modules/skottie/include/ExternalLayer.h +56 -0
  441. package/shared/skia/modules/skottie/include/Skottie.h +324 -0
  442. package/shared/skia/modules/skottie/include/SkottieProperty.h +190 -0
  443. package/shared/skia/modules/skottie/include/SlotManager.h +113 -0
  444. package/shared/skia/modules/skottie/include/TextShaper.h +197 -0
  445. package/shared/skia/modules/skottie/src/SkottieValue.h +56 -0
  446. package/shared/skia/modules/skottie/src/animator/Animator.h +89 -0
  447. package/shared/skia/modules/skottie/src/text/Font.h +82 -0
  448. package/shared/skia/modules/skottie/src/text/TextAdapter.h +155 -0
  449. package/shared/skia/modules/skottie/src/text/TextAnimator.h +122 -0
  450. package/shared/skia/modules/skottie/src/text/TextValue.h +28 -0
  451. package/shared/skia/modules/skparagraph/include/DartTypes.h +153 -0
  452. package/shared/skia/modules/skparagraph/include/FontArguments.h +46 -0
  453. package/shared/skia/modules/skparagraph/include/FontCollection.h +76 -0
  454. package/shared/skia/modules/skparagraph/include/Metrics.h +98 -0
  455. package/shared/skia/modules/skparagraph/include/Paragraph.h +289 -0
  456. package/shared/skia/modules/skparagraph/include/ParagraphBuilder.h +94 -0
  457. package/shared/skia/modules/skparagraph/include/ParagraphCache.h +52 -0
  458. package/shared/skia/modules/skparagraph/include/ParagraphPainter.h +63 -0
  459. package/shared/skia/modules/skparagraph/include/ParagraphStyle.h +160 -0
  460. package/shared/skia/modules/skparagraph/include/TextShadow.h +30 -0
  461. package/shared/skia/modules/skparagraph/include/TextStyle.h +392 -0
  462. package/shared/skia/modules/skparagraph/include/TypefaceFontProvider.h +78 -0
  463. package/shared/skia/modules/skresources/include/SkResources.h +291 -0
  464. package/shared/skia/modules/sksg/include/SkSGClipEffect.h +61 -0
  465. package/shared/skia/modules/sksg/include/SkSGColorFilter.h +135 -0
  466. package/shared/skia/modules/sksg/include/SkSGDraw.h +57 -0
  467. package/shared/skia/modules/sksg/include/SkSGEffectNode.h +50 -0
  468. package/shared/skia/modules/sksg/include/SkSGGeometryEffect.h +207 -0
  469. package/shared/skia/modules/sksg/include/SkSGGeometryNode.h +54 -0
  470. package/shared/skia/modules/sksg/include/SkSGGradient.h +108 -0
  471. package/shared/skia/modules/sksg/include/SkSGGroup.h +65 -0
  472. package/shared/skia/modules/sksg/include/SkSGImage.h +59 -0
  473. package/shared/skia/modules/sksg/include/SkSGInvalidationController.h +46 -0
  474. package/shared/skia/modules/sksg/include/SkSGMaskEffect.h +65 -0
  475. package/shared/skia/modules/sksg/include/SkSGMerge.h +74 -0
  476. package/shared/skia/modules/sksg/include/SkSGNode.h +128 -0
  477. package/shared/skia/modules/sksg/include/SkSGOpacityEffect.h +54 -0
  478. package/shared/skia/modules/sksg/include/SkSGPaint.h +112 -0
  479. package/shared/skia/modules/sksg/include/SkSGPath.h +68 -0
  480. package/shared/skia/modules/sksg/include/SkSGPlane.h +47 -0
  481. package/shared/skia/modules/sksg/include/SkSGRect.h +122 -0
  482. package/shared/skia/modules/sksg/include/SkSGRenderEffect.h +283 -0
  483. package/shared/skia/modules/sksg/include/SkSGRenderNode.h +157 -0
  484. package/shared/skia/modules/sksg/include/SkSGScene.h +47 -0
  485. package/shared/skia/modules/sksg/include/SkSGText.h +82 -0
  486. package/shared/skia/modules/sksg/include/SkSGTransform.h +127 -0
  487. package/shared/skia/modules/skshaper/include/SkShaper.h +318 -0
  488. package/shared/skia/modules/skshaper/include/SkShaper_coretext.h +26 -0
  489. package/shared/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
  490. package/shared/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
  491. package/shared/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
  492. package/shared/skia/modules/skunicode/include/SkUnicode.h +321 -0
  493. package/shared/skia/modules/skunicode/include/SkUnicode_icu.h +18 -0
  494. package/shared/skia/modules/skunicode/include/SkUnicode_libgrapheme.h +19 -0
  495. package/shared/skia/modules/svg/include/SkSVGAttribute.h +110 -0
  496. package/shared/skia/modules/svg/include/SkSVGAttributeParser.h +170 -0
  497. package/shared/skia/modules/svg/include/SkSVGCircle.h +56 -0
  498. package/shared/skia/modules/svg/include/SkSVGClipPath.h +41 -0
  499. package/shared/skia/modules/svg/include/SkSVGContainer.h +52 -0
  500. package/shared/skia/modules/svg/include/SkSVGDOM.h +111 -0
  501. package/shared/skia/modules/svg/include/SkSVGDefs.h +23 -0
  502. package/shared/skia/modules/svg/include/SkSVGEllipse.h +51 -0
  503. package/shared/skia/modules/svg/include/SkSVGFe.h +93 -0
  504. package/shared/skia/modules/svg/include/SkSVGFeBlend.h +54 -0
  505. package/shared/skia/modules/svg/include/SkSVGFeColorMatrix.h +55 -0
  506. package/shared/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
  507. package/shared/skia/modules/svg/include/SkSVGFeComposite.h +55 -0
  508. package/shared/skia/modules/svg/include/SkSVGFeDisplacementMap.h +56 -0
  509. package/shared/skia/modules/svg/include/SkSVGFeFlood.h +42 -0
  510. package/shared/skia/modules/svg/include/SkSVGFeGaussianBlur.h +50 -0
  511. package/shared/skia/modules/svg/include/SkSVGFeImage.h +44 -0
  512. package/shared/skia/modules/svg/include/SkSVGFeLightSource.h +93 -0
  513. package/shared/skia/modules/svg/include/SkSVGFeLighting.h +131 -0
  514. package/shared/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
  515. package/shared/skia/modules/svg/include/SkSVGFeMorphology.h +55 -0
  516. package/shared/skia/modules/svg/include/SkSVGFeOffset.h +44 -0
  517. package/shared/skia/modules/svg/include/SkSVGFeTurbulence.h +49 -0
  518. package/shared/skia/modules/svg/include/SkSVGFilter.h +48 -0
  519. package/shared/skia/modules/svg/include/SkSVGFilterContext.h +69 -0
  520. package/shared/skia/modules/svg/include/SkSVGG.h +23 -0
  521. package/shared/skia/modules/svg/include/SkSVGGradient.h +56 -0
  522. package/shared/skia/modules/svg/include/SkSVGHiddenContainer.h +23 -0
  523. package/shared/skia/modules/svg/include/SkSVGIDMapper.h +19 -0
  524. package/shared/skia/modules/svg/include/SkSVGImage.h +67 -0
  525. package/shared/skia/modules/svg/include/SkSVGLine.h +53 -0
  526. package/shared/skia/modules/svg/include/SkSVGLinearGradient.h +47 -0
  527. package/shared/skia/modules/svg/include/SkSVGMask.h +49 -0
  528. package/shared/skia/modules/svg/include/SkSVGNode.h +235 -0
  529. package/shared/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +37 -0
  530. package/shared/skia/modules/svg/include/SkSVGPath.h +46 -0
  531. package/shared/skia/modules/svg/include/SkSVGPattern.h +61 -0
  532. package/shared/skia/modules/svg/include/SkSVGPoly.h +56 -0
  533. package/shared/skia/modules/svg/include/SkSVGRadialGradient.h +48 -0
  534. package/shared/skia/modules/svg/include/SkSVGRect.h +56 -0
  535. package/shared/skia/modules/svg/include/SkSVGRenderContext.h +229 -0
  536. package/shared/skia/modules/svg/include/SkSVGSVG.h +60 -0
  537. package/shared/skia/modules/svg/include/SkSVGShape.h +40 -0
  538. package/shared/skia/modules/svg/include/SkSVGStop.h +36 -0
  539. package/shared/skia/modules/svg/include/SkSVGText.h +128 -0
  540. package/shared/skia/modules/svg/include/SkSVGTransformableNode.h +48 -0
  541. package/shared/skia/modules/svg/include/SkSVGTypes.h +740 -0
  542. package/shared/skia/modules/svg/include/SkSVGUse.h +49 -0
  543. package/shared/skia/modules/svg/include/SkSVGValue.h +85 -0
  544. package/shared/skia/src/core/SkArenaAlloc.h +371 -0
  545. package/shared/skia/src/core/SkAutoLocaleSetter.h +94 -0
  546. package/shared/skia/src/core/SkChecksum.h +118 -0
  547. package/shared/skia/src/core/SkLRUCache.h +143 -0
  548. package/shared/skia/src/core/SkMathPriv.h +225 -0
  549. package/shared/skia/src/core/SkTHash.h +714 -0
  550. package/shared/skia/src/core/SkTInternalLList.h +304 -0
  551. package/shared/skia/src/core/SkTLazy.h +216 -0
  552. package/shared/skia/src/core/SkUTF.h +102 -0
  553. package/shared/skia/src/gpu/ganesh/gl/GrGLDefines.h +1162 -0
  554. package/src/GameMethods.nitro.ts +4 -0
  555. package/src/GameMethods.ts +55 -0
  556. package/src/index.tsx +0 -1
  557. package/src/nativeTypes.ts +6 -0
  558. package/android/src/main/cpp/GameLoopJNI.cpp +0 -132
  559. package/android/src/main/java/com/margelo/nitro/rngine/Asset.kt +0 -9
  560. package/android/src/main/java/com/margelo/nitro/rngine/GameAssets.kt +0 -61
  561. package/android/src/main/java/com/margelo/nitro/rngine/Screen.kt +0 -9
  562. package/android/src/main/java/com/margelo/nitro/rngine/Shape.kt +0 -26
  563. package/android/src/main/java/com/margelo/nitro/rngine/Snapshot.kt +0 -3
  564. package/android/src/main/java/com/margelo/nitro/rngine/SnapshotSerializer.kt +0 -53
  565. package/lib/module/GameAssets.js +0 -41
  566. package/lib/module/GameAssets.js.map +0 -1
  567. package/lib/module/GameAssets.nitro.js +0 -5
  568. package/lib/module/GameAssets.nitro.js.map +0 -1
  569. package/lib/typescript/src/GameAssets.d.ts +0 -2
  570. package/lib/typescript/src/GameAssets.d.ts.map +0 -1
  571. package/lib/typescript/src/GameAssets.nitro.d.ts +0 -12
  572. package/lib/typescript/src/GameAssets.nitro.d.ts.map +0 -1
  573. package/nitrogen/generated/android/c++/JHybridGameAssetsSpec.cpp +0 -86
  574. package/nitrogen/generated/android/c++/JHybridGameAssetsSpec.hpp +0 -65
  575. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngine/HybridGameAssetsSpec.kt +0 -63
  576. package/nitrogen/generated/ios/c++/HybridGameAssetsSpecSwift.cpp +0 -11
  577. package/nitrogen/generated/ios/c++/HybridGameAssetsSpecSwift.hpp +0 -99
  578. package/nitrogen/generated/ios/swift/Func_void.swift +0 -46
  579. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -46
  580. package/nitrogen/generated/ios/swift/HybridGameAssetsSpec.swift +0 -57
  581. package/nitrogen/generated/ios/swift/HybridGameAssetsSpec_cxx.swift +0 -176
  582. package/nitrogen/generated/shared/c++/HybridGameAssetsSpec.cpp +0 -23
  583. package/nitrogen/generated/shared/c++/HybridGameAssetsSpec.hpp +0 -65
  584. package/src/GameAssets.nitro.ts +0 -14
  585. package/src/GameAssets.ts +0 -47
@@ -0,0 +1,428 @@
1
+ /*
2
+ * Copyright 2023 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef skgpu_graphite_Image_DEFINED
9
+ #define skgpu_graphite_Image_DEFINED
10
+
11
+ #include "include/core/SkColorSpace.h"
12
+ #include "include/core/SkImage.h"
13
+ #include "include/core/SkRefCnt.h"
14
+ #include "include/core/SkSpan.h"
15
+ #include "include/gpu/GpuTypes.h"
16
+
17
+ #include <string_view>
18
+ #include <tuple>
19
+
20
+ class SkYUVAInfo;
21
+ class SkYUVAPixmaps;
22
+ struct SkIRect;
23
+
24
+ namespace skgpu::graphite {
25
+ class BackendTexture;
26
+ class Recorder;
27
+ class TextureInfo;
28
+ class YUVABackendTextureInfo;
29
+ class YUVABackendTextures;
30
+ enum class Volatile : bool;
31
+ }
32
+
33
+ namespace SkImages {
34
+ enum class GenerateMipmapsFromBase : bool { kNo, kYes };
35
+
36
+ using TextureReleaseProc = void (*)(ReleaseContext);
37
+
38
+ // Passed to imageRelease
39
+ using GraphitePromiseImageContext = void*;
40
+ // Passed to fulfill; for non-YUVA promise images, the image context is used as the fulfill context,
41
+ // while YUVA promise images have a per-plane fulfill context.
42
+ using GraphitePromiseTextureFulfillContext = void*;
43
+ // Returned from fulfill and passed into textureRelease
44
+ using GraphitePromiseTextureReleaseContext = void*;
45
+
46
+ using GraphitePromiseTextureFulfillProc =
47
+ std::tuple<skgpu::graphite::BackendTexture, GraphitePromiseTextureReleaseContext> (*)(
48
+ GraphitePromiseTextureFulfillContext);
49
+ using GraphitePromiseImageReleaseProc = void (*)(GraphitePromiseImageContext);
50
+ using GraphitePromiseTextureReleaseProc = void (*)(GraphitePromiseTextureReleaseContext);
51
+
52
+ /** Creates an SkImage from a GPU texture associated with the recorder. The client is still
53
+ responsible for managing the backend texture's lifetime.
54
+
55
+ SkImage is returned if the format of backendTexture is recognized and supported. Recognized
56
+ formats vary by GPU back-end.
57
+
58
+ The provided `alphaType` determines how the wrapped texture is sampled:
59
+ - kUnknown_SkAlphaType: Sampled as RGB1, ignoring any alpha data. G and B are automatically
60
+ treated as 0 if the format does not provide them. Single channel
61
+ texture formats are interpretd as the "red" SkColorTypes instead of
62
+ the "alpha-only" SkColorTypes.
63
+ - kOpaque_SkAlphaType: Sampled as RGBA but higher-level logic *assumes* that all A values are
64
+ equal to 1. Single channel texture formats are interpeted as "red"
65
+ instead of "alpha-only" for disambiguating SkColorTypes.
66
+ - kPremul_SkAlphaType: Sampled as RGBA and higher-level logic assumes the RGB values have
67
+ been premultiplied with the A value. Single channel texture formats
68
+ are interpreted as "alpha-only" color types (e.g. 000A or 000R
69
+ swizzles depending on the texture format).
70
+ - kUnpremul_SkAlphaType: Sampled as RGBA and higher-level logic assumes the RGB values have not
71
+ been multiplied with A yet. Single channel texture formats are
72
+ interpreted as "alpha-only" color types the same as
73
+ kPremul_SkAlphaType.
74
+
75
+ The SkColorType of the returned SkImage is selected to best match the bit depth and
76
+ representation of the texture format of the backend texture. This is not necessarily an exact
77
+ match since texture formats may have more options than SkColorType. Any mismatch between the
78
+ format and the SkColorType is handled automatically for read/write operations on the image (the
79
+ SkColorType represents how the image data will be made available on the CPU).
80
+
81
+ If possible, the color type will also take into account the behavior of `alphaType`, such as
82
+ using kRGB_888x_SkColorType for an RGBA8 texture with kUnknown_SkAlphaType. For single-channel
83
+ textures with kUnknown|kOpaque_SkAlphaType, the best "red-only" color type is chosen, e.g.
84
+ kR8_unorm_SkColorType. For single-channel textures with kPremul|kUnpremul_SkAlphaType, the best
85
+ "alpha-only" color type is chosen, e.g. kAlpha_8_SkColorType. This preserves the semantic
86
+ behaviors in Skia's high-level shading logic that treats red formats as color data, and
87
+ automatically colorizes alpha formats based on the paint's color or shader.
88
+
89
+ When using such a single-channel texture in a runtime effect, this semantic distinction defines
90
+ which channel of the float4 shader value has the interesting data (R001 vs 000A). When combining
91
+ multiple single-channel textures into a multiplaner YUV[A] SkImage, either colortype behaves the
92
+ same. The most significant distinction occurs when the SkImage is used in
93
+ SkCanvas::drawImageRect() or combined into a non-runtime SkShader.
94
+
95
+ @param recorder The recorder
96
+ @param backendTexture texture residing on GPU
97
+ @param alphaType The nature of alpha channel data provided in the texture.
98
+ @param colorSpace This describes the color space of this image's contents, as seen
99
+ after sampling. In general, if the format of the backend texture
100
+ is SRGB, some linear colorSpace should be supplied (e.g.,
101
+ SkColorSpace::MakeSRGBLinear()). If the format of the backend
102
+ texture is linear, then the colorSpace should include a
103
+ description of the transfer function as well (e.g.,
104
+ SkColorSpace::MakeSRGB()).
105
+ @param origin Whether the Texture logically treats the origin as TopLeft or
106
+ BottomLeft
107
+ @param generateMipmapsFromBase If kYes then the pixel contents of the textures upper mipmap
108
+ levels are generated by successive downsampling of the base
109
+ level. If the texture is not mipmapped or isn't renderable then
110
+ image creation will fail. If kNo and the texture is mipmapped
111
+ then the contents of upper levels are assumed to already be
112
+ valid.
113
+ @return created SkImage, or nullptr
114
+ */
115
+ SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
116
+ const skgpu::graphite::BackendTexture&,
117
+ SkAlphaType alphaType,
118
+ sk_sp<SkColorSpace> colorSpace,
119
+ skgpu::Origin origin,
120
+ GenerateMipmapsFromBase genMipmaps,
121
+ TextureReleaseProc = nullptr,
122
+ ReleaseContext = nullptr,
123
+ std::string_view label = {});
124
+
125
+ SK_API inline sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder* recorder,
126
+ const skgpu::graphite::BackendTexture& backendTex,
127
+ SkAlphaType alphaType,
128
+ sk_sp<SkColorSpace> colorSpace,
129
+ skgpu::Origin origin,
130
+ TextureReleaseProc releaseP = nullptr,
131
+ ReleaseContext releaseC = nullptr,
132
+ std::string_view label = {}) {
133
+ return WrapTexture(recorder, backendTex, alphaType, std::move(colorSpace), origin,
134
+ GenerateMipmapsFromBase::kNo, releaseP, releaseC, label);
135
+ }
136
+
137
+ SK_API inline sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder* recorder,
138
+ const skgpu::graphite::BackendTexture& backendTex,
139
+ SkAlphaType alphaType,
140
+ sk_sp<SkColorSpace> colorSpace,
141
+ TextureReleaseProc releaseP = nullptr,
142
+ ReleaseContext releaseC = nullptr,
143
+ std::string_view label = {}) {
144
+ return WrapTexture(recorder, backendTex, alphaType, std::move(colorSpace),
145
+ skgpu::Origin::kTopLeft, releaseP, releaseC, label);
146
+ }
147
+
148
+ // DEPRECATED: The WrapTexture calls that take an SkColorType are deprecated. Use the new versions
149
+ // that automatically pick a compatible color type from the texture's format.
150
+ SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
151
+ const skgpu::graphite::BackendTexture&,
152
+ SkColorType colorType,
153
+ SkAlphaType alphaType,
154
+ sk_sp<SkColorSpace> colorSpace,
155
+ skgpu::Origin origin,
156
+ GenerateMipmapsFromBase generateMipmapsFromBase,
157
+ TextureReleaseProc = nullptr,
158
+ ReleaseContext = nullptr,
159
+ std::string_view label = {});
160
+
161
+ SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
162
+ const skgpu::graphite::BackendTexture&,
163
+ SkColorType colorType,
164
+ SkAlphaType alphaType,
165
+ sk_sp<SkColorSpace> colorSpace,
166
+ skgpu::Origin origin,
167
+ TextureReleaseProc = nullptr,
168
+ ReleaseContext = nullptr,
169
+ std::string_view label = {});
170
+
171
+ SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
172
+ const skgpu::graphite::BackendTexture&,
173
+ SkColorType colorType,
174
+ SkAlphaType alphaType,
175
+ sk_sp<SkColorSpace> colorSpace,
176
+ TextureReleaseProc = nullptr,
177
+ ReleaseContext = nullptr,
178
+ std::string_view label = {});
179
+
180
+ /** Create a new SkImage that is very similar to an SkImage created by WrapTexture. The difference
181
+ is that the caller need not have created the backend texture nor populated it with data when
182
+ creating the image. Instead of passing a BackendTexture to the factory the client supplies a
183
+ description of the texture consisting of dimensions, TextureInfo, SkColorInfo and Volatility.
184
+
185
+ In general, 'fulfill' must return a BackendTexture that matches the properties provided at
186
+ SkImage creation time. The BackendTexture must refer to a valid existing texture in the backend
187
+ API context/device, and already be populated with data. The texture cannot be deleted until
188
+ 'textureRelease' is called. 'textureRelease' will be called with the textureReleaseContext
189
+ returned by 'fulfill'.
190
+
191
+ Wrt when and how often the fulfill, imageRelease, and textureRelease callbacks will be called:
192
+
193
+ For non-volatile promise images, 'fulfill' will be called at Context::insertRecording time.
194
+ Regardless of whether 'fulfill' succeeded or failed, 'imageRelease' will always be called only
195
+ once - when Skia will no longer try calling 'fulfill' to get a backend texture. If 'fulfill'
196
+ failed (i.e., it didn't return a valid backend texture) then 'textureRelease' will never be
197
+ called. If 'fulfill' was successful then 'textureRelease' will be called only once when the GPU
198
+ is done with the contents of the promise image. This will usually occur during a Context::submit
199
+ call but it could occur earlier due to error conditions. 'fulfill' can be called multiple times
200
+ if the promise image is used in multiple recordings. If 'fulfill' fails, the insertRecording
201
+ itself will fail. Subsequent insertRecording calls (with Recordings that use the promise image)
202
+ will keep calling 'fulfill' until it succeeds.
203
+
204
+ For volatile promise images, 'fulfill' will be called each time the Recording is inserted into a
205
+ Context. Regardless of whether 'fulfill' succeeded or failed, 'imageRelease' will always be
206
+ called only once just like the non-volatile case. If 'fulfill' fails at insertRecording-time,
207
+ 'textureRelease' will never be called. If 'fulfill' was successful then a 'textureRelease'
208
+ matching that 'fulfill' will be called when the GPU is done with the contents of the promise
209
+ image. This will usually occur during a Context::submit call but it could occur earlier due to
210
+ error conditions.
211
+
212
+ @param recorder the recorder that will capture the commands creating the image
213
+ @param dimensions width & height of promised gpu texture
214
+ @param textureInfo structural information for the promised gpu texture
215
+ @param colorInfo color type, alpha type and colorSpace information for the image
216
+ @param origin Whether the Texture logically treats the origin as TopLeft or BottomLeft
217
+ @param isVolatile volatility of the promise image
218
+ @param fulfill function called to get the actual backend texture,
219
+ and the instance for the GraphitePromiseTextureReleaseProc
220
+ @param imageRelease function called when any image-centric data can be deleted
221
+ @param textureRelease function called when the backend texture can be deleted
222
+ @param imageContext state passed to fulfill and imageRelease
223
+ @return created SkImage, or nullptr
224
+ */
225
+ SK_API sk_sp<SkImage> PromiseTextureFrom(skgpu::graphite::Recorder*,
226
+ SkISize dimensions,
227
+ const skgpu::graphite::TextureInfo&,
228
+ const SkColorInfo&,
229
+ skgpu::Origin origin,
230
+ skgpu::graphite::Volatile,
231
+ GraphitePromiseTextureFulfillProc,
232
+ GraphitePromiseImageReleaseProc,
233
+ GraphitePromiseTextureReleaseProc,
234
+ GraphitePromiseImageContext,
235
+ std::string_view label = {});
236
+
237
+ SK_API sk_sp<SkImage> PromiseTextureFrom(skgpu::graphite::Recorder*,
238
+ SkISize dimensions,
239
+ const skgpu::graphite::TextureInfo&,
240
+ const SkColorInfo&,
241
+ skgpu::graphite::Volatile,
242
+ GraphitePromiseTextureFulfillProc,
243
+ GraphitePromiseImageReleaseProc,
244
+ GraphitePromiseTextureReleaseProc,
245
+ GraphitePromiseImageContext);
246
+
247
+ /** This is similar to 'PromiseTextureFrom' but it creates a GPU-backed SkImage from YUV[A] data.
248
+ The source data may be planar (i.e. spread across multiple textures). In the extreme Y, U, V,
249
+ and A are all in different planes and thus the image is specified by four textures.
250
+ 'backendTextureInfo' describes the planar arrangement, texture formats, and conversion to RGB.
251
+ Separate 'fulfill' and 'textureRelease' calls are made for each texture. Each texture has its
252
+ own GraphitePromiseFulfillContext. The GraphitePromiseImageReleaseProc will be made even on
253
+ failure. 'planeContexts' has one entry for each of the up to four textures, as indicated by
254
+ 'backendTextureInfo'. Currently the mipmapped property of 'backendTextureInfo' is ignored.
255
+ However, in the near future it will be required that if it is kYes then the fulfillProc must
256
+ return a mip mapped texture for each plane in order to successfully draw the image.
257
+
258
+ @param recorder the recorder that will capture the commands creating the image
259
+ @param backendTextureInfo info about the promised yuva gpu texture(s)
260
+ @param imageColorSpace range of colors; may be nullptr
261
+ @param isVolatile volatility of the promise image
262
+ @param fulfill function called to get the actual backend texture for
263
+ a given GraphitePromiseTextureContext, and the instance
264
+ for the GraphitePromiseTextureReleaseProc
265
+ @param imageRelease function called when any image-centric data can be deleted
266
+ @param textureRelease function called when the backend texture can be deleted
267
+ @param imageContext state passed to imageRelease
268
+ @param planeContexts states passed to fulfill for each plane
269
+ @return created SkImage, or nullptr
270
+ */
271
+ SK_API sk_sp<SkImage> PromiseTextureFromYUVA(skgpu::graphite::Recorder*,
272
+ const skgpu::graphite::YUVABackendTextureInfo&,
273
+ sk_sp<SkColorSpace> imageColorSpace,
274
+ skgpu::graphite::Volatile,
275
+ GraphitePromiseTextureFulfillProc,
276
+ GraphitePromiseImageReleaseProc,
277
+ GraphitePromiseTextureReleaseProc,
278
+ GraphitePromiseImageContext imageContext,
279
+ GraphitePromiseTextureFulfillContext planeContexts[],
280
+ std::string_view label = {});
281
+
282
+
283
+ /** Returns an SkImage backed by a Graphite texture, using the provided Recorder for creation and
284
+ uploads if necessary. The returned SkImage respects the required image properties' mipmap
285
+ setting for non-Graphite SkImages; i.e., if mipmapping is required, the backing Graphite texture
286
+ will have allocated mip map levels.
287
+
288
+ It is assumed that MIP maps are always supported by the GPU.
289
+
290
+ Returns original SkImage if the image is already Graphite-backed and the required mipmapping is
291
+ compatible with the backing Graphite texture. If the required mipmapping is not compatible,
292
+ nullptr will be returned.
293
+
294
+ Returns nullptr if no Recorder is provided, or if SkImage was created with another Recorder and
295
+ work on that Recorder has not been submitted.
296
+
297
+ @param Recorder the Recorder to use for storing commands
298
+ @param RequiredProperties properties the returned SkImage must possess (e.g. mipmaps)
299
+ @return created SkImage, or nullptr
300
+ */
301
+ SK_API sk_sp<SkImage> TextureFromImage(skgpu::graphite::Recorder*,
302
+ const SkImage*,
303
+ SkImage::RequiredProperties = {});
304
+
305
+ inline sk_sp<SkImage> TextureFromImage(skgpu::graphite::Recorder* r,
306
+ const sk_sp<const SkImage>& img,
307
+ SkImage::RequiredProperties props = {}) {
308
+ return TextureFromImage(r, img.get(), props);
309
+ }
310
+
311
+ /** Creates SkImage from SkYUVAPixmaps.
312
+
313
+ The image will remain planar with each plane converted to a texture using the passed Recorder.
314
+
315
+ SkYUVAPixmaps has a SkYUVAInfo which specifies the transformation from YUV to RGB. The
316
+ SkColorSpace of the resulting RGB values is specified by imgColorSpace. This will be the
317
+ SkColorSpace reported by the image and when drawn the RGB values will be converted from this
318
+ space into the destination space (if the destination is tagged).
319
+
320
+ This is only supported using the GPU backend and will fail if recorder is nullptr.
321
+
322
+ SkYUVAPixmaps does not need to remain valid after this returns.
323
+
324
+ @param Recorder The Recorder to use for storing commands
325
+ @param pixmaps The planes as pixmaps with supported SkYUVAInfo that
326
+ specifies conversion to RGB.
327
+ @param RequiredProperties Properties the returned SkImage must possess (e.g. mipmaps)
328
+ @param limitToMaxTextureSize Downscale image to GPU maximum texture size, if necessary
329
+ @param imgColorSpace Range of colors of the resulting image; may be nullptr
330
+ @return Created SkImage, or nullptr
331
+ */
332
+ SK_API sk_sp<SkImage> TextureFromYUVAPixmaps(skgpu::graphite::Recorder*,
333
+ const SkYUVAPixmaps& pixmaps,
334
+ SkImage::RequiredProperties = {},
335
+ bool limitToMaxTextureSize = false,
336
+ sk_sp<SkColorSpace> imgColorSpace = nullptr,
337
+ std::string_view label = {});
338
+
339
+ /** Creates an SkImage from YUV[A] planar textures associated with the recorder.
340
+ @param recorder The recorder.
341
+ @param yuvaBackendTextures A set of textures containing YUVA data and a description of the
342
+ data and transformation to RGBA.
343
+ @param imageColorSpace range of colors of the resulting image after conversion to RGB;
344
+ may be nullptr
345
+ @param TextureReleaseProc called when the backend textures can be released
346
+ @param ReleaseContext state passed to TextureReleaseProc
347
+ @return created SkImage, or nullptr
348
+ */
349
+ SK_API sk_sp<SkImage> TextureFromYUVATextures(
350
+ skgpu::graphite::Recorder* recorder,
351
+ const skgpu::graphite::YUVABackendTextures& yuvaBackendTextures,
352
+ sk_sp<SkColorSpace> imageColorSpace,
353
+ TextureReleaseProc = nullptr,
354
+ ReleaseContext = nullptr,
355
+ std::string_view label = {});
356
+
357
+ /** Creates an SkImage from YUV[A] planar SkImages associated with the recorder.
358
+
359
+ The images should have kGraphite type, and the result will be nullptr if any are not. The
360
+ resulting SkImage will not take a ref on the given SkImages but will take a ref on the
361
+ underlying TextureProxies. The releaseProcs, if any, for those Textures will be the ones set
362
+ when the given SkImages were created.
363
+
364
+ @param recorder The recorder.
365
+ @param yuvaInfo Structure describing the YUVA format
366
+ @param images A set of SkImages containing YUVA data
367
+ @param imageColorSpace Range of colors of the resulting image after conversion to RGB;
368
+ may be nullptr
369
+ @return created SkImage, or nullptr
370
+ */
371
+ SK_API sk_sp<SkImage> TextureFromYUVAImages(
372
+ skgpu::graphite::Recorder* recorder,
373
+ const SkYUVAInfo& yuvaInfo,
374
+ SkSpan<const sk_sp<SkImage>> images,
375
+ sk_sp<SkColorSpace> imageColorSpace);
376
+
377
+ /** Returns subset of this image as a texture-backed image.
378
+
379
+ Returns nullptr if any of the following are true:
380
+ - Subset is empty
381
+ - Subset is not contained inside the image's bounds
382
+ - Pixels in the source image could not be read or copied
383
+ - The source image is texture-backed and context does not match the source image's context.
384
+
385
+ @param recorder the non-null recorder in which to create the new image.
386
+ @param img Source image
387
+ @param subset bounds of returned SkImage
388
+ @param props properties the returned SkImage must possess (e.g. mipmaps)
389
+ @return the subsetted image, uploaded as a texture, or nullptr
390
+ */
391
+ SK_API sk_sp<SkImage> SubsetTextureFrom(skgpu::graphite::Recorder* recorder,
392
+ const SkImage* img,
393
+ const SkIRect& subset,
394
+ SkImage::RequiredProperties props = {});
395
+
396
+ /** Creates a filtered SkImage on the GPU. filter processes the src image, potentially changing
397
+ color, position, and size. subset is the bounds of src that are processed by filter. clipBounds
398
+ is the expected bounds of the filtered SkImage. outSubset is required storage for the actual
399
+ bounds of the filtered SkImage. offset is required storage for translation of returned SkImage.
400
+
401
+ Returns nullptr if SkImage could not be created. If nullptr is returned, outSubset and offset
402
+ are undefined.
403
+
404
+ Useful for animation of SkImageFilter that varies size from frame to frame. Returned SkImage is
405
+ created larger than required by filter so that GPU texture can be reused with different sized
406
+ effects. outSubset describes the valid bounds of GPU texture returned. offset translates the
407
+ returned SkImage to keep subsequent animation frames aligned with respect to each other.
408
+
409
+ @param recorder the recorder in which the filtering operation is to be performed
410
+ @param filter how SkImage is sampled when transformed
411
+ @param subset bounds of SkImage processed by filter
412
+ @param clipBounds expected bounds of filtered SkImage
413
+ @param outSubset storage for returned SkImage bounds
414
+ @param offset storage for returned SkImage translation
415
+ @return filtered SkImage, or nullptr
416
+ */
417
+ SK_API sk_sp<SkImage> MakeWithFilter(skgpu::graphite::Recorder* recorder,
418
+ sk_sp<SkImage> src,
419
+ const SkImageFilter* filter,
420
+ const SkIRect& subset,
421
+ const SkIRect& clipBounds,
422
+ SkIRect* outSubset,
423
+ SkIPoint* offset);
424
+
425
+ } // namespace SkImages
426
+
427
+
428
+ #endif // skgpu_graphite_Image_DEFINED
@@ -0,0 +1,68 @@
1
+ /*
2
+ * Copyright 2022 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef skgpu_graphite_ImageProvider_DEFINED
9
+ #define skgpu_graphite_ImageProvider_DEFINED
10
+
11
+ #include "include/core/SkImage.h"
12
+ #include "include/core/SkRefCnt.h"
13
+
14
+ namespace skgpu::graphite {
15
+
16
+ class Recorder;
17
+
18
+ /*
19
+ * This class provides a centralized location for clients to perform any caching of images
20
+ * they desire. Whenever Graphite encounters an SkImage which is not Graphite-backed
21
+ * it will call ImageProvider::findOrCreate. The client's derived version of this class should
22
+ * return a Graphite-backed version of the provided SkImage that meets the specified
23
+ * requirements.
24
+ *
25
+ * Skia requires that 'findOrCreate' return a Graphite-backed image that preserves the
26
+ * dimensions and alpha type of the original image. The bit depth of the
27
+ * individual channels can change (e.g., 4444 -> 8888 is allowed) as well as the channels - as
28
+ * long as the returned image has a superset of the original image's channels
29
+ * (e.g., 565 -> 8888 opaque is allowed).
30
+ *
31
+ * Wrt mipmapping, the returned image can have different mipmap settings than requested. If
32
+ * mipmapping was requested but not returned, the sampling level will be reduced to linear.
33
+ * If the requirements are not met by the returned image (modulo the flexibility wrt mipmapping)
34
+ * Graphite will drop the draw.
35
+ *
36
+ * All returned images must be backed by textures that have a TopLeft origin. If Skia is used to
37
+ * create the texture (e.g. using makeTextureImage) then this is always guaranteed. If the client
38
+ * returns a texture they created themselves and wrapped in Skia, they must ensure that texture has
39
+ * a TopLeft origin.
40
+ *
41
+ * Note: by default, Graphite will not perform any caching of images
42
+ *
43
+ * Threading concerns:
44
+ * If the same ImageProvider is given to multiple Recorders it is up to the
45
+ * client to handle any required thread synchronization. This is not limited to just
46
+ * restricting access to whatever map a derived class may have but extends to ensuring
47
+ * that an image created on one Recorder has had its creation work submitted before it
48
+ * is used by any work submitted by another Recording. Please note, this requirement
49
+ * (re the submission of creation work and image usage on different threads) is common to all
50
+ * graphite SkImages and isn't unique to SkImages returned by the ImageProvider.
51
+ *
52
+ * TODO(b/240996632): add documentation re shutdown order.
53
+ * TODO(b/240997067): add unit tests
54
+ */
55
+ class SK_API ImageProvider : public SkRefCnt {
56
+ public:
57
+ // If the client's derived class already has a Graphite-backed image that has the same
58
+ // contents as 'image' and meets the requirements, then it can be returned.
59
+ // makeTextureImage can always be called to create an acceptable Graphite-backed image
60
+ // which could then be cached.
61
+ virtual sk_sp<SkImage> findOrCreate(Recorder* recorder,
62
+ const SkImage* image,
63
+ SkImage::RequiredProperties) = 0;
64
+ };
65
+
66
+ } // namespace skgpu::graphite
67
+
68
+ #endif // skgpu_graphite_ImageProvider_DEFINED
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Copyright 2025 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef skgpu_graphite_PersistentPipelineStorage_DEFINED
9
+ #define skgpu_graphite_PersistentPipelineStorage_DEFINED
10
+
11
+ #include "include/core/SkRefCnt.h"
12
+ #include "include/private/SkAPI.h"
13
+
14
+ class SkData;
15
+
16
+ namespace skgpu::graphite {
17
+
18
+ /**
19
+ * Abstract class which can be implemented to allow Graphite to persist Pipeline data across
20
+ * Context lifetimes
21
+ */
22
+ class SK_API PersistentPipelineStorage {
23
+ public:
24
+ virtual ~PersistentPipelineStorage() = default;
25
+
26
+ /**
27
+ * Should return the data that had been previously stored. It should return null if there
28
+ * is no prior data.
29
+ */
30
+ virtual sk_sp<SkData> load() = 0;
31
+
32
+ /**
33
+ * Should persist the provided Pipeline data.
34
+ */
35
+ virtual void store(const SkData& data) = 0;
36
+
37
+ protected:
38
+ PersistentPipelineStorage() = default;
39
+ PersistentPipelineStorage(const PersistentPipelineStorage&) = delete;
40
+ PersistentPipelineStorage& operator=(const PersistentPipelineStorage&) = delete;
41
+ };
42
+
43
+ } // namespace skgpu::graphite
44
+
45
+ #endif // skgpu_graphite_PersistentPipelineStorage_DEFINED
@@ -0,0 +1,109 @@
1
+ /*
2
+ * Copyright 2024 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef skgpu_graphite_PrecompileContext_DEFINED
9
+ #define skgpu_graphite_PrecompileContext_DEFINED
10
+
11
+ #include "include/core/SkRefCnt.h"
12
+ #include "include/private/SingleOwner.h"
13
+ #include "include/private/SkAPI.h"
14
+
15
+ #include <chrono>
16
+ #include <memory>
17
+ #include <string>
18
+
19
+ class SkData;
20
+
21
+ namespace skgpu::graphite {
22
+
23
+ class SharedContext;
24
+ class PrecompileContextPriv;
25
+ class ResourceProvider;
26
+
27
+ class SK_API PrecompileContext {
28
+ public:
29
+ ~PrecompileContext();
30
+
31
+ /**
32
+ * Purge Pipelines that haven't been used in the past 'msNotUsed' milliseconds
33
+ * regardless of whether the pipeline cache is under budget.
34
+ *
35
+ * @param msNotUsed Pipelines not used in these last milliseconds will be cleaned up.
36
+ */
37
+ void purgePipelinesNotUsedInMs(std::chrono::milliseconds msNotUsed);
38
+
39
+ enum class StatOptions {
40
+ // Emit histograms (using the SK_HISTOGRAM* macros) for Skia's Precompiled Pipeline
41
+ // usage:
42
+ // Skia.Graphite.Precompile.NormalPreemptedByPrecompile
43
+ // Skia.Graphite.Precompile.UnpreemptedPrecompilePipelines
44
+ // Skia.Graphite.Precompile.UnusedPrecompiledPipelines
45
+ kPrecompile,
46
+ // Emit histograms (using the SK_HISTOGRAM* macros) for Skia's Pipeline cache usage:
47
+ // Skia.Graphite.PipelineCache.PipelineUsesInEpoch
48
+ kPipelineCache,
49
+ };
50
+
51
+ /**
52
+ * Emit histograms histograms related to Skia's Pipelines (c.f. the StatOptions enum).
53
+ */
54
+ void reportPipelineStats(StatOptions option = StatOptions::kPrecompile);
55
+
56
+ /**
57
+ * Precompile one specific Pipeline that has been previously serialized. Serialized pipeline
58
+ * keys can be acquired via the ContextOptions::PipelineCallback.
59
+ *
60
+ * @param serializedPipelineKey serialized Pipeline key.
61
+ * @return true if a Pipeline was created from the key; false otherwise
62
+ */
63
+ bool precompile(sk_sp<SkData> serializedPipelineKey);
64
+
65
+ /**
66
+ * Get a human-readable version of a serialized pipeline key and, optionally, the unique
67
+ * hash of the Pipeline.
68
+ *
69
+ * @param serializedPipelineKey serialized Pipeline key.
70
+ * @param uniqueHash If non-null, this will be filled in with the unique hash.
71
+ * Note that the uniqueHash is only valid for the lifetime
72
+ * of the Context used to create this PrecompileContext.
73
+ * @return A human-readable version of the provided key; "" on failure.
74
+ */
75
+ std::string getPipelineLabel(sk_sp<SkData> serializedPipelineKey,
76
+ uint32_t* uniqueHash = nullptr);
77
+
78
+ enum class ExternalFormatResult {
79
+ kInvalid, // the serialized key was invalid
80
+ kNoExternalFormat,
81
+ kHasExternalFormat
82
+ };
83
+
84
+ /**
85
+ * Determine if a serialized pipeline key contains a usage of an external texture format.
86
+ *
87
+ * @param serializedPipelineKey serialized Pipeline key.
88
+ * @return a tri-state value (see ExternalFormatResult)
89
+ */
90
+ ExternalFormatResult containsExternalFormat(sk_sp<SkData> serializedPipelineKey) const;
91
+
92
+ // Provides access to functions that aren't part of the public API.
93
+ PrecompileContextPriv priv();
94
+ const PrecompileContextPriv priv() const; // NOLINT(readability-const-return-type)
95
+
96
+ private:
97
+ friend class PrecompileContextPriv;
98
+ friend class Context; // for ctor
99
+
100
+ explicit PrecompileContext(sk_sp<SharedContext>);
101
+
102
+ mutable SingleOwner fSingleOwner;
103
+ sk_sp<SharedContext> fSharedContext;
104
+ std::unique_ptr<ResourceProvider> fResourceProvider;
105
+ };
106
+
107
+ } // namespace skgpu::graphite
108
+
109
+ #endif // skgpu_graphite_PrecompileContext_DEFINED