@luma.gl/core 9.3.0-alpha.4 → 9.3.0-alpha.6

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 (102) hide show
  1. package/dist/adapter/canvas-context.d.ts +6 -182
  2. package/dist/adapter/canvas-context.d.ts.map +1 -1
  3. package/dist/adapter/canvas-context.js +5 -481
  4. package/dist/adapter/canvas-context.js.map +1 -1
  5. package/dist/adapter/canvas-observer.d.ts +32 -0
  6. package/dist/adapter/canvas-observer.d.ts.map +1 -0
  7. package/dist/adapter/canvas-observer.js +90 -0
  8. package/dist/adapter/canvas-observer.js.map +1 -0
  9. package/dist/adapter/canvas-surface.d.ts +150 -0
  10. package/dist/adapter/canvas-surface.d.ts.map +1 -0
  11. package/dist/adapter/canvas-surface.js +392 -0
  12. package/dist/adapter/canvas-surface.js.map +1 -0
  13. package/dist/adapter/device.d.ts +64 -9
  14. package/dist/adapter/device.d.ts.map +1 -1
  15. package/dist/adapter/device.js +108 -4
  16. package/dist/adapter/device.js.map +1 -1
  17. package/dist/adapter/luma.js +1 -1
  18. package/dist/adapter/presentation-context.d.ts +11 -0
  19. package/dist/adapter/presentation-context.d.ts.map +1 -0
  20. package/dist/adapter/presentation-context.js +12 -0
  21. package/dist/adapter/presentation-context.js.map +1 -0
  22. package/dist/adapter/resources/buffer.d.ts +1 -1
  23. package/dist/adapter/resources/buffer.d.ts.map +1 -1
  24. package/dist/adapter/resources/buffer.js +14 -6
  25. package/dist/adapter/resources/buffer.js.map +1 -1
  26. package/dist/adapter/resources/command-encoder.d.ts +22 -1
  27. package/dist/adapter/resources/command-encoder.d.ts.map +1 -1
  28. package/dist/adapter/resources/command-encoder.js +65 -1
  29. package/dist/adapter/resources/command-encoder.js.map +1 -1
  30. package/dist/adapter/resources/fence.d.ts +1 -1
  31. package/dist/adapter/resources/fence.d.ts.map +1 -1
  32. package/dist/adapter/resources/fence.js +3 -1
  33. package/dist/adapter/resources/fence.js.map +1 -1
  34. package/dist/adapter/resources/query-set.d.ts +17 -1
  35. package/dist/adapter/resources/query-set.d.ts.map +1 -1
  36. package/dist/adapter/resources/query-set.js.map +1 -1
  37. package/dist/adapter/resources/render-pipeline.d.ts +19 -7
  38. package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
  39. package/dist/adapter/resources/render-pipeline.js +20 -2
  40. package/dist/adapter/resources/render-pipeline.js.map +1 -1
  41. package/dist/adapter/resources/resource.d.ts +8 -0
  42. package/dist/adapter/resources/resource.d.ts.map +1 -1
  43. package/dist/adapter/resources/resource.js +240 -14
  44. package/dist/adapter/resources/resource.js.map +1 -1
  45. package/dist/adapter/resources/shared-render-pipeline.d.ts +22 -0
  46. package/dist/adapter/resources/shared-render-pipeline.d.ts.map +1 -0
  47. package/dist/adapter/resources/shared-render-pipeline.js +25 -0
  48. package/dist/adapter/resources/shared-render-pipeline.js.map +1 -0
  49. package/dist/adapter/resources/texture.d.ts +78 -12
  50. package/dist/adapter/resources/texture.d.ts.map +1 -1
  51. package/dist/adapter/resources/texture.js +182 -30
  52. package/dist/adapter/resources/texture.js.map +1 -1
  53. package/dist/dist.dev.js +952 -193
  54. package/dist/dist.min.js +6 -6
  55. package/dist/index.cjs +918 -190
  56. package/dist/index.cjs.map +4 -4
  57. package/dist/index.d.ts +4 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +2 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/shadertypes/data-types/decode-shader-types.d.ts +2 -2
  62. package/dist/shadertypes/data-types/decode-shader-types.d.ts.map +1 -1
  63. package/dist/shadertypes/data-types/decode-shader-types.js +11 -2
  64. package/dist/shadertypes/data-types/decode-shader-types.js.map +1 -1
  65. package/dist/shadertypes/textures/texture-format-decoder.d.ts.map +1 -1
  66. package/dist/shadertypes/textures/texture-format-decoder.js +51 -6
  67. package/dist/shadertypes/textures/texture-format-decoder.js.map +1 -1
  68. package/dist/shadertypes/textures/texture-format-table.d.ts.map +1 -1
  69. package/dist/shadertypes/textures/texture-format-table.js +10 -9
  70. package/dist/shadertypes/textures/texture-format-table.js.map +1 -1
  71. package/dist/shadertypes/textures/texture-formats.d.ts +5 -2
  72. package/dist/shadertypes/textures/texture-formats.d.ts.map +1 -1
  73. package/dist/shadertypes/textures/texture-formats.js.map +1 -1
  74. package/dist/shadertypes/textures/texture-layout.d.ts +1 -1
  75. package/dist/utils/array-equal.d.ts +1 -1
  76. package/dist/utils/array-equal.d.ts.map +1 -1
  77. package/dist/utils/array-equal.js +15 -9
  78. package/dist/utils/array-equal.js.map +1 -1
  79. package/dist/utils/stats-manager.d.ts.map +1 -1
  80. package/dist/utils/stats-manager.js +61 -1
  81. package/dist/utils/stats-manager.js.map +1 -1
  82. package/package.json +3 -3
  83. package/src/adapter/canvas-context.ts +7 -623
  84. package/src/adapter/canvas-observer.ts +130 -0
  85. package/src/adapter/canvas-surface.ts +521 -0
  86. package/src/adapter/device.ts +174 -13
  87. package/src/adapter/presentation-context.ts +16 -0
  88. package/src/adapter/resources/buffer.ts +13 -5
  89. package/src/adapter/resources/command-encoder.ts +91 -2
  90. package/src/adapter/resources/fence.ts +3 -1
  91. package/src/adapter/resources/query-set.ts +17 -1
  92. package/src/adapter/resources/render-pipeline.ts +42 -13
  93. package/src/adapter/resources/resource.ts +284 -14
  94. package/src/adapter/resources/shared-render-pipeline.ts +40 -0
  95. package/src/adapter/resources/texture.ts +267 -38
  96. package/src/index.ts +7 -0
  97. package/src/shadertypes/data-types/decode-shader-types.ts +13 -4
  98. package/src/shadertypes/textures/texture-format-decoder.ts +71 -6
  99. package/src/shadertypes/textures/texture-format-table.ts +10 -9
  100. package/src/shadertypes/textures/texture-formats.ts +6 -1
  101. package/src/utils/array-equal.ts +21 -9
  102. package/src/utils/stats-manager.ts +76 -2
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/adapter/resources/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/adapter/resources/resource.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,GAAG,EAAC,2BAAwB;AAEpC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAC3D,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AACpD,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AACvD,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AACxD,MAAM,yBAAyB,GAAG;IAChC,WAAW;IACX,SAAS;IACT,UAAU;IACV,UAAU;IACV,cAAc;IACd,cAAc;IACd,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;IACjB,cAAc;IACd,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,gBAAgB;CACR,CAAC;AACX,MAAM,0BAA0B,GAAG;IACjC,WAAW;IACX,SAAS;IACT,UAAU;IACV,UAAU;IACV,cAAc;IACd,cAAc;IACd,WAAW;IACX,SAAS;IACT,iBAAiB;IACjB,uBAAuB;IACvB,kBAAkB;IAClB,iBAAiB;IACjB,cAAc;IACd,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,gBAAgB;CACR,CAAC;AACX,MAAM,8BAA8B,GAAG,yBAAyB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IACvF,GAAG,YAAY,UAAU;IACzB,GAAG,YAAY,SAAS;CACzB,CAAC,CAAC;AACH,MAAM,+BAA+B,GAAG,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IACzF,GAAG,YAAY,UAAU;IACzB,GAAG,YAAY,SAAS;CACzB,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAGpC,CAAC;AACJ,MAAM,2BAA2B,GAAG,IAAI,OAAO,EAAkC,CAAC;AAuBlF;;GAEG;AACH,MAAM,OAAgB,QAAQ;IAC5B,sCAAsC;IACtC,MAAM,CAAC,YAAY,GAA4B;QAC7C,EAAE,EAAE,WAAW;QACf,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,SAAU;KACrB,CAAC;IAIF,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC;IAC7E,CAAC;IAED,+BAA+B;IAC/B,EAAE,CAAS;IACX,oDAAoD;IAC3C,KAAK,CAAkB;IAChC,qDAAqD;IAC5C,QAAQ,GAA4B,EAAE,CAAC;IAKhD,sFAAsF;IAC9E,OAAO,CAAS;IAExB,+CAA+C;IAC/C,SAAS,GAAY,KAAK,CAAC;IAC3B,6CAA6C;IACrC,cAAc,GAAW,CAAC,CAAC;IACnC,4DAA4D;IACpD,kBAAkB,GAAkB,IAAI,CAAC;IACjD,iHAAiH;IACzG,kBAAkB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEhE;;OAEG;IACH,YAAY,MAAc,EAAE,KAAY,EAAE,YAA6B;QACrE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAQ,KAAK,EAAE,YAAY,CAAC,CAAC;QAE1D,MAAM,EAAE,GACN,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,EAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,gCAAgC;IAChC,MAAM;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,qBAAqB;IAErB;;;OAGG;IACH,cAAc,CAAC,QAAiC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAiC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,QAAiC;QACvD,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,wBAAwB;QACtB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,sCAAsC;QACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC/D,CAAC;IAED,oBAAoB;IAEpB,8FAA8F;IACpF,eAAe;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,mGAAmG;IACzF,WAAW;QACnB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG;YACnB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SACjE,CAAC;QACF,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,cAAc,EAAE,CAAC;YAC/C,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,qBAAqB,GAAG,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3E,QAAQ,CAAC,sBAAsB;gBAC7B,CAAC,QAAQ,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,qDAAqD;IAC3C,oBAAoB,CAAC,KAAa,EAAE,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QACtE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACvD,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3D,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpF,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,qBAAqB,GAAG,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3E,QAAQ,CAAC,sBAAsB;gBAC7B,CAAC,QAAQ,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,qGAAqG;IAC3F,qBAAqB,CAAC,KAAa,EAAE,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QACvE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,uDAAuD;IAC7C,sBAAsB,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QACzD,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAC5E,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1F,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,qBAAqB,GAAG,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3E,QAAQ,CAAC,sBAAsB;gBAC7B,CAAC,QAAQ,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,gGAAgG;IACtF,gCAAgC,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QACnE,IAAI,CAAC,sBAAsB,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,8DAA8D;IACtD,QAAQ;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG;YACnB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SACjE,CAAC;QACF,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,cAAc,EAAE,CAAC;YAChD,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,cAAc,EAAE,CAAC;YAC/C,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,cAAc,EAAE,CAAC;YAC/C,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,qBAAqB,GAAG,CAAC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3E,QAAQ,CAAC,sBAAsB;gBAC7B,CAAC,QAAQ,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;QAC1E,CAAC;QACD,mCAAmC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,sDAAsD;IAC5C,YAAY;QACpB,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AAGH;;;;;GAKG;AACH,SAAS,gBAAgB,CAAQ,KAAY,EAAE,YAA6B;IAC1E,MAAM,WAAW,GAAG,EAAC,GAAG,YAAY,EAAC,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,KAAY,EAAE,gBAAmC;IACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;IAC7B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpB,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnD,IACE,CAAC,gBAAgB;QACjB,WAAW,EAAE,gBAAgB,KAAK,gBAAgB;QAClD,WAAW,CAAC,SAAS,KAAK,SAAS,EACnC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAyB,EAAE,CAAC;IAChD,IAAI,mBAAmB,GAAG,2BAA2B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5E,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,mBAAmB,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChD,2BAA2B,CAAC,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,cAAc,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACxC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAC,gBAAgB,EAAE,SAAS,EAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC/C,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,8BAA8B,CAAC;AACpG,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAmC,CAAC;IAChG,OAAO,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,mCAAmC,CAAC,MAAc,EAAE,IAAY;IACvE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,oCAAoC,EAAE,CAAC;QAChE,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,8BAA8B,GAAG,CAAC,QAAQ,CAAC,8BAA8B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE7F,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,QAAQ,CAAC,6BAA6B,GAAG,CAAC,QAAQ,CAAC,6BAA6B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3F,MAAM;QACR,KAAK,aAAa;YAChB,QAAQ,CAAC,iCAAiC;gBACxC,CAAC,QAAQ,CAAC,iCAAiC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,SAAS;YACZ,QAAQ,CAAC,6BAA6B,GAAG,CAAC,QAAQ,CAAC,6BAA6B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3F,MAAM;QACR,KAAK,aAAa;YAChB,QAAQ,CAAC,iCAAiC;gBACxC,CAAC,QAAQ,CAAC,iCAAiC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACxD,MAAM;QACR;YACE,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAuB;IACvD,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEhD,OAAO,SAAS,EAAE,CAAC;QACjB,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,IAAI,eAAe,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC/D,OAAO,CACL,uBAAuB,CAAC,SAAS,CAAC;gBAClC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAC1B,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,eAAe,CAAC;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAiB;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAClF,IAAI,OAAO,UAAU,EAAE,GAAG,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,UAAU,EAAE,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Device } from "../device.js";
2
+ import type { Shader } from "./shader.js";
3
+ import { Resource, type ResourceProps } from "./resource.js";
4
+ export type SharedRenderPipelineProps = ResourceProps & {
5
+ handle?: unknown;
6
+ vs: Shader;
7
+ fs: Shader;
8
+ varyings?: string[];
9
+ bufferMode?: number;
10
+ };
11
+ /**
12
+ * Internal base class for backend-specific shared render-pipeline implementations.
13
+ * Backends may use this to share expensive linked/program state across multiple
14
+ * `RenderPipeline` wrappers.
15
+ */
16
+ export declare abstract class SharedRenderPipeline extends Resource<SharedRenderPipelineProps> {
17
+ get [Symbol.toStringTag](): string;
18
+ abstract readonly device: Device;
19
+ abstract readonly handle: unknown;
20
+ constructor(device: Device, props: SharedRenderPipelineProps);
21
+ }
22
+ //# sourceMappingURL=shared-render-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/shared-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,qBAAkB;AACtC,OAAO,KAAK,EAAC,MAAM,EAAC,oBAAiB;AACrC,OAAO,EAAC,QAAQ,EAAE,KAAK,aAAa,EAAC,sBAAmB;AAExD,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,8BAAsB,oBAAqB,SAAQ,QAAQ,CAAC,yBAAyB,CAAC;IACpF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,kBAA2B,MAAM,EAAE,MAAM,CAAC;IAC1C,kBAA2B,MAAM,EAAE,OAAO,CAAC;gBAE/B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB;CAU7D"}
@@ -0,0 +1,25 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { Resource } from "./resource.js";
5
+ /**
6
+ * Internal base class for backend-specific shared render-pipeline implementations.
7
+ * Backends may use this to share expensive linked/program state across multiple
8
+ * `RenderPipeline` wrappers.
9
+ */
10
+ export class SharedRenderPipeline extends Resource {
11
+ get [Symbol.toStringTag]() {
12
+ return 'SharedRenderPipeline';
13
+ }
14
+ constructor(device, props) {
15
+ super(device, props, {
16
+ ...Resource.defaultProps,
17
+ handle: undefined,
18
+ vs: undefined,
19
+ fs: undefined,
20
+ varyings: undefined,
21
+ bufferMode: undefined
22
+ });
23
+ }
24
+ }
25
+ //# sourceMappingURL=shared-render-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-render-pipeline.js","sourceRoot":"","sources":["../../../src/adapter/resources/shared-render-pipeline.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,QAAQ,EAAqB,sBAAmB;AAUxD;;;;GAIG;AACH,MAAM,OAAgB,oBAAqB,SAAQ,QAAmC;IACpF,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC;QAC/B,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAKD,YAAY,MAAc,EAAE,KAAgC;QAC1D,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;YACnB,GAAG,QAAQ,CAAC,YAAY;YACxB,MAAM,EAAE,SAAU;YAClB,EAAE,EAAE,SAAU;YACd,EAAE,EAAE,SAAU;YACd,QAAQ,EAAE,SAAU;YACpB,UAAU,EAAE,SAAU;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { type TypedArray } from '@math.gl/types';
2
2
  import { type Device } from "../device.js";
3
- import { type TextureFormat, type TextureMemoryLayout } from "../../shadertypes/textures/texture-formats.js";
3
+ import { type TextureFormat, type TextureMemoryLayout, type TextureFormatInfo } from "../../shadertypes/textures/texture-formats.js";
4
4
  import { type ExternalImage } from "../../image-utils/image-types.js";
5
5
  import { type TextureView, type TextureViewProps } from "./texture-view.js";
6
6
  import { Resource, type ResourceProps } from "./resource.js";
@@ -43,10 +43,18 @@ export type CopyImageDataOptions = {
43
43
  data: ArrayBuffer | SharedArrayBuffer | ArrayBufferView;
44
44
  /** Offset into the data (in addition to any offset built-in to the ArrayBufferView) */
45
45
  byteOffset?: number;
46
- /** The stride, in bytes, between the beginning of each texel block row and the subsequent texel block row. Required if there are multiple texel block rows (i.e. the copy height or depth is more than one block). */
46
+ /** The stride, in bytes, between successive texel rows in the CPU source data. Tightly packed uploads can omit this. */
47
47
  bytesPerRow?: number;
48
- /** Number or rows per image (needed if multiple images are being set) */
48
+ /** Number of rows that make up one image when uploading multiple layers or depth slices from CPU memory. */
49
49
  rowsPerImage?: number;
50
+ /** Width to copy */
51
+ width?: number;
52
+ /** Height to copy */
53
+ height?: number;
54
+ /** Copy depth or number of layers */
55
+ depthOrArrayLayers?: number;
56
+ /** @deprecated Use `depthOrArrayLayers` */
57
+ depth?: number;
50
58
  /** Start copying into offset x (default 0) */
51
59
  x?: number;
52
60
  /** Start copying into offset y (default 0) */
@@ -59,23 +67,45 @@ export type CopyImageDataOptions = {
59
67
  aspect?: 'all' | 'stencil-only' | 'depth-only';
60
68
  };
61
69
  export type TextureReadOptions = {
70
+ /** Start reading from offset x (default 0) */
62
71
  x?: number;
72
+ /** Start reading from offset y (default 0) */
63
73
  y?: number;
74
+ /** Start reading from layer / depth slice z (default 0) */
64
75
  z?: number;
76
+ /** Width of the region to read. Defaults to the mip width. */
65
77
  width?: number;
78
+ /** Height of the region to read. Defaults to the mip height. */
66
79
  height?: number;
80
+ /** Number of array layers or depth slices to read. Defaults to 1. */
67
81
  depthOrArrayLayers?: number;
82
+ /** Which mip-level to read from (default 0) */
68
83
  mipLevel?: number;
84
+ /** When reading from depth stencil textures (default 'all') */
69
85
  aspect?: 'all' | 'stencil-only' | 'depth-only';
70
86
  };
71
87
  export type TextureWriteOptions = {
88
+ /** Offset into the source data or buffer, in bytes. */
89
+ byteOffset?: number;
90
+ /** The stride, in bytes, between successive texel rows in the source data or buffer. */
91
+ bytesPerRow?: number;
92
+ /** The number of rows that make up one image when writing multiple layers or slices. */
93
+ rowsPerImage?: number;
94
+ /** Start writing into offset x (default 0) */
72
95
  x?: number;
96
+ /** Start writing into offset y (default 0) */
73
97
  y?: number;
98
+ /** Start writing into layer / depth slice z (default 0) */
74
99
  z?: number;
100
+ /** Width of the region to write. Defaults to the mip width. */
75
101
  width?: number;
102
+ /** Height of the region to write. Defaults to the mip height. */
76
103
  height?: number;
104
+ /** Number of array layers or depth slices to write. Defaults to 1, or the full mip depth for 3D textures. */
77
105
  depthOrArrayLayers?: number;
106
+ /** Which mip-level to write into (default 0) */
78
107
  mipLevel?: number;
108
+ /** When writing into depth stencil textures (default 'all') */
79
109
  aspect?: 'all' | 'stencil-only' | 'depth-only';
80
110
  };
81
111
  /** Texture properties */
@@ -137,6 +167,8 @@ export declare abstract class Texture extends Resource<TextureProps> {
137
167
  readonly depth: number;
138
168
  /** mip levels in this texture */
139
169
  readonly mipLevels: number;
170
+ /** sample count */
171
+ readonly samples: number;
140
172
  /** Rows are multiples of this length, padded with extra bytes if needed */
141
173
  readonly byteAlignment: number;
142
174
  /** Default sampler for this texture */
@@ -173,11 +205,19 @@ export declare abstract class Texture extends Resource<TextureProps> {
173
205
  width: number;
174
206
  height: number;
175
207
  };
176
- /** Copy raw image data (bytes) into the texture */
177
- abstract copyImageData(options: CopyImageDataOptions): void;
208
+ /**
209
+ * Copy raw image data (bytes) into the texture.
210
+ *
211
+ * @note Deprecated compatibility wrapper over {@link writeData}.
212
+ * @note Uses the same layout defaults and alignment rules as {@link writeData}.
213
+ * @note Tightly packed CPU uploads can omit `bytesPerRow` and `rowsPerImage`.
214
+ * @note If the CPU source rows are padded, pass explicit `bytesPerRow` and `rowsPerImage`.
215
+ * @deprecated Use writeData()
216
+ */
217
+ copyImageData(options: CopyImageDataOptions): void;
178
218
  /**
179
219
  * Calculates the memory layout of the texture, required when reading and writing data.
180
- * @return the memory layout of the texture, in particular bytesPerRow which includes required padding
220
+ * @return the backend-aligned linear layout, in particular bytesPerRow which includes any required padding for buffer copy/read paths
181
221
  */
182
222
  computeMemoryLayout(options_?: TextureReadOptions): TextureMemoryLayout;
183
223
  /**
@@ -185,9 +225,11 @@ export declare abstract class Texture extends Resource<TextureProps> {
185
225
  * @returns A Buffer containing the texture data.
186
226
  *
187
227
  * @note The memory layout of the texture data is determined by the texture format and dimensions.
188
- * @note The application can call Texture.computeMemoryLayout() to compute the layout.
228
+ * @note The application can call Texture.computeMemoryLayout() to compute the backend-aligned layout.
189
229
  * @note The application can call Buffer.readAsync()
190
230
  * @note If not supplied a buffer will be created and the application needs to call Buffer.destroy
231
+ * @note On WebGPU this corresponds to a texture-to-buffer copy and uses buffer-copy alignment rules.
232
+ * @note On WebGL, luma.gl emulates the same logical readback behavior.
191
233
  */
192
234
  readBuffer(options?: TextureReadOptions, buffer?: Buffer): Buffer;
193
235
  /**
@@ -199,19 +241,26 @@ export declare abstract class Texture extends Resource<TextureProps> {
199
241
  */
200
242
  readDataAsync(options?: TextureReadOptions): Promise<ArrayBuffer>;
201
243
  /**
202
- * Writes an GPU Buffer into a texture.
244
+ * Writes a GPU Buffer into a texture.
203
245
  *
246
+ * @param buffer - Source GPU buffer.
247
+ * @param options - Destination subresource, extent, and source layout options.
204
248
  * @note The memory layout of the texture data is determined by the texture format and dimensions.
205
- * @note The application can call Texture.computeMemoryLayout() to compute the layout.
249
+ * @note The application can call Texture.computeMemoryLayout() to compute the backend-aligned layout.
250
+ * @note On WebGPU this corresponds to a buffer-to-texture copy and uses buffer-copy alignment rules.
251
+ * @note On WebGL, luma.gl emulates the same destination and layout semantics.
206
252
  */
207
253
  writeBuffer(buffer: Buffer, options?: TextureWriteOptions): void;
208
254
  /**
209
255
  * Writes an array buffer into a texture.
210
256
  *
211
- * @note The memory layout of the texture data is determined by the texture format and dimensions.
212
- * @note The application can call Texture.computeMemoryLayout() to compute the layout.
257
+ * @param data - Source texel data.
258
+ * @param options - Destination subresource, extent, and source layout options.
259
+ * @note If `bytesPerRow` and `rowsPerImage` are omitted, luma.gl computes a tightly packed CPU-memory layout for the requested region.
260
+ * @note On WebGPU this corresponds to `GPUQueue.writeTexture()` and does not implicitly pad rows to 256 bytes.
261
+ * @note On WebGL, padded CPU data is supported via the same `bytesPerRow` and `rowsPerImage` options.
213
262
  */
214
- writeData(data: ArrayBuffer | ArrayBufferView, options?: TextureWriteOptions): void;
263
+ writeData(data: ArrayBuffer | SharedArrayBuffer | ArrayBufferView, options?: TextureWriteOptions): void;
215
264
  /**
216
265
  * WebGL can read data synchronously.
217
266
  * @note While it is convenient, the performance penalty is very significant
@@ -226,11 +275,28 @@ export declare abstract class Texture extends Resource<TextureProps> {
226
275
  _normalizeCopyImageDataOptions(options_: CopyImageDataOptions): Required<CopyImageDataOptions>;
227
276
  _normalizeCopyExternalImageOptions(options_: CopyExternalImageOptions): Required<CopyExternalImageOptions>;
228
277
  _normalizeTextureReadOptions(options_: TextureReadOptions): Required<TextureReadOptions>;
278
+ /**
279
+ * Normalizes a texture read request and validates the color-only readback contract used by the
280
+ * current texture read APIs. Supported dimensions are `2d`, `cube`, `cube-array`,
281
+ * `2d-array`, and `3d`.
282
+ *
283
+ * @throws if the texture format, aspect, or dimension is not supported by the first-pass
284
+ * color-read implementation.
285
+ */
286
+ protected _getSupportedColorReadOptions(options_: TextureReadOptions): Required<TextureReadOptions>;
287
+ /** Validates that a read request targets the full color aspect of the texture. */
288
+ protected _validateColorReadAspect(options: Required<TextureReadOptions>): void;
289
+ /** Validates that a read request targets an uncompressed color-renderable texture format. */
290
+ protected _validateColorReadFormat(formatInfo: TextureFormatInfo): void;
229
291
  _normalizeTextureWriteOptions(options_: TextureWriteOptions): Required<TextureWriteOptions>;
292
+ protected _getMipLevelSize(mipLevel: number): Required<Pick<TextureReadOptions, 'width' | 'height' | 'depthOrArrayLayers'>>;
293
+ protected getAllocatedByteLength(): number;
294
+ protected static _omitUndefined<T extends object>(options: T): Partial<T>;
230
295
  static defaultProps: Required<TextureProps>;
231
296
  protected static defaultCopyDataOptions: Required<CopyImageDataOptions>;
232
297
  /** Default options */
233
298
  protected static defaultCopyExternalImageOptions: Required<CopyExternalImageOptions>;
234
299
  protected static defaultTextureReadOptions: Required<TextureReadOptions>;
300
+ protected static defaultTextureWriteOptions: Required<TextureWriteOptions>;
235
301
  }
236
302
  //# sourceMappingURL=texture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/texture.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,8 @@ export class Texture extends Resource {
47
47
  depth;
48
48
  /** mip levels in this texture */
49
49
  mipLevels;
50
+ /** sample count */
51
+ samples;
50
52
  /** Rows are multiples of this length, padded with extra bytes if needed */
51
53
  byteAlignment;
52
54
  /** The ready promise is always resolved. It is provided for type compatibility with DynamicTexture. */
@@ -73,6 +75,7 @@ export class Texture extends Resource {
73
75
  this.height = this.props.height;
74
76
  this.depth = this.props.depth;
75
77
  this.mipLevels = this.props.mipLevels;
78
+ this.samples = this.props.samples || 1;
76
79
  if (this.dimension === 'cube') {
77
80
  this.depth = 6;
78
81
  }
@@ -107,9 +110,25 @@ export class Texture extends Resource {
107
110
  setSampler(sampler) {
108
111
  this.sampler = sampler instanceof Sampler ? sampler : this.device.createSampler(sampler);
109
112
  }
113
+ /**
114
+ * Copy raw image data (bytes) into the texture.
115
+ *
116
+ * @note Deprecated compatibility wrapper over {@link writeData}.
117
+ * @note Uses the same layout defaults and alignment rules as {@link writeData}.
118
+ * @note Tightly packed CPU uploads can omit `bytesPerRow` and `rowsPerImage`.
119
+ * @note If the CPU source rows are padded, pass explicit `bytesPerRow` and `rowsPerImage`.
120
+ * @deprecated Use writeData()
121
+ */
122
+ copyImageData(options) {
123
+ const { data, depth, ...writeOptions } = options;
124
+ this.writeData(data, {
125
+ ...writeOptions,
126
+ depthOrArrayLayers: writeOptions.depthOrArrayLayers ?? depth
127
+ });
128
+ }
110
129
  /**
111
130
  * Calculates the memory layout of the texture, required when reading and writing data.
112
- * @return the memory layout of the texture, in particular bytesPerRow which includes required padding
131
+ * @return the backend-aligned linear layout, in particular bytesPerRow which includes any required padding for buffer copy/read paths
113
132
  */
114
133
  computeMemoryLayout(options_ = {}) {
115
134
  const options = this._normalizeTextureReadOptions(options_);
@@ -130,9 +149,11 @@ export class Texture extends Resource {
130
149
  * @returns A Buffer containing the texture data.
131
150
  *
132
151
  * @note The memory layout of the texture data is determined by the texture format and dimensions.
133
- * @note The application can call Texture.computeMemoryLayout() to compute the layout.
152
+ * @note The application can call Texture.computeMemoryLayout() to compute the backend-aligned layout.
134
153
  * @note The application can call Buffer.readAsync()
135
154
  * @note If not supplied a buffer will be created and the application needs to call Buffer.destroy
155
+ * @note On WebGPU this corresponds to a texture-to-buffer copy and uses buffer-copy alignment rules.
156
+ * @note On WebGL, luma.gl emulates the same logical readback behavior.
136
157
  */
137
158
  readBuffer(options, buffer) {
138
159
  throw new Error('readBuffer not implemented');
@@ -148,10 +169,14 @@ export class Texture extends Resource {
148
169
  throw new Error('readBuffer not implemented');
149
170
  }
150
171
  /**
151
- * Writes an GPU Buffer into a texture.
172
+ * Writes a GPU Buffer into a texture.
152
173
  *
174
+ * @param buffer - Source GPU buffer.
175
+ * @param options - Destination subresource, extent, and source layout options.
153
176
  * @note The memory layout of the texture data is determined by the texture format and dimensions.
154
- * @note The application can call Texture.computeMemoryLayout() to compute the layout.
177
+ * @note The application can call Texture.computeMemoryLayout() to compute the backend-aligned layout.
178
+ * @note On WebGPU this corresponds to a buffer-to-texture copy and uses buffer-copy alignment rules.
179
+ * @note On WebGL, luma.gl emulates the same destination and layout semantics.
155
180
  */
156
181
  writeBuffer(buffer, options) {
157
182
  throw new Error('readBuffer not implemented');
@@ -159,8 +184,11 @@ export class Texture extends Resource {
159
184
  /**
160
185
  * Writes an array buffer into a texture.
161
186
  *
162
- * @note The memory layout of the texture data is determined by the texture format and dimensions.
163
- * @note The application can call Texture.computeMemoryLayout() to compute the layout.
187
+ * @param data - Source texel data.
188
+ * @param options - Destination subresource, extent, and source layout options.
189
+ * @note If `bytesPerRow` and `rowsPerImage` are omitted, luma.gl computes a tightly packed CPU-memory layout for the requested region.
190
+ * @note On WebGPU this corresponds to `GPUQueue.writeTexture()` and does not implicitly pad rows to 256 bytes.
191
+ * @note On WebGL, padded CPU data is supported via the same `bytesPerRow` and `rowsPerImage` options.
164
192
  */
165
193
  writeData(data, options) {
166
194
  throw new Error('readBuffer not implemented');
@@ -226,43 +254,150 @@ export class Texture extends Resource {
226
254
  }
227
255
  }
228
256
  _normalizeCopyImageDataOptions(options_) {
229
- const { width, height, depth } = this;
230
- const options = { ...Texture.defaultCopyDataOptions, width, height, depth, ...options_ };
231
- const info = this.device.getTextureFormatInfo(this.format);
232
- if (!options_.bytesPerRow && !info.bytesPerPixel) {
233
- throw new Error(`bytesPerRow must be provided for texture format ${this.format}`);
234
- }
235
- options.bytesPerRow = options_.bytesPerRow || width * (info.bytesPerPixel || 4);
236
- options.rowsPerImage = options_.rowsPerImage || height;
237
- // WebGL will error if we try to copy outside the bounds of the texture
238
- // options.width = Math.min(options.width, this.width - options.x);
239
- // options.height = Math.min(options.height, this.height - options.y);
240
- return options;
257
+ const { data, depth, ...writeOptions } = options_;
258
+ const options = this._normalizeTextureWriteOptions({
259
+ ...writeOptions,
260
+ depthOrArrayLayers: writeOptions.depthOrArrayLayers ?? depth
261
+ });
262
+ return { data, depth: options.depthOrArrayLayers, ...options };
241
263
  }
242
264
  _normalizeCopyExternalImageOptions(options_) {
265
+ const optionsWithoutUndefined = Texture._omitUndefined(options_);
266
+ const mipLevel = optionsWithoutUndefined.mipLevel ?? 0;
267
+ const mipLevelSize = this._getMipLevelSize(mipLevel);
243
268
  const size = this.device.getExternalImageSize(options_.image);
244
- const options = { ...Texture.defaultCopyExternalImageOptions, ...size, ...options_ };
269
+ const options = {
270
+ ...Texture.defaultCopyExternalImageOptions,
271
+ ...mipLevelSize,
272
+ ...size,
273
+ ...optionsWithoutUndefined
274
+ };
245
275
  // WebGL will error if we try to copy outside the bounds of the texture
246
- options.width = Math.min(options.width, this.width - options.x);
247
- options.height = Math.min(options.height, this.height - options.y);
276
+ options.width = Math.min(options.width, mipLevelSize.width - options.x);
277
+ options.height = Math.min(options.height, mipLevelSize.height - options.y);
278
+ options.depth = Math.min(options.depth, mipLevelSize.depthOrArrayLayers - options.z);
248
279
  return options;
249
280
  }
250
281
  _normalizeTextureReadOptions(options_) {
251
- const { width, height } = this;
252
- const options = { ...Texture.defaultTextureReadOptions, width, height, ...options_ };
282
+ const optionsWithoutUndefined = Texture._omitUndefined(options_);
283
+ const mipLevel = optionsWithoutUndefined.mipLevel ?? 0;
284
+ const mipLevelSize = this._getMipLevelSize(mipLevel);
285
+ const options = {
286
+ ...Texture.defaultTextureReadOptions,
287
+ ...mipLevelSize,
288
+ ...optionsWithoutUndefined
289
+ };
253
290
  // WebGL will error if we try to copy outside the bounds of the texture
254
- options.width = Math.min(options.width, this.width - options.x);
255
- options.height = Math.min(options.height, this.height - options.y);
291
+ options.width = Math.min(options.width, mipLevelSize.width - options.x);
292
+ options.height = Math.min(options.height, mipLevelSize.height - options.y);
293
+ options.depthOrArrayLayers = Math.min(options.depthOrArrayLayers, mipLevelSize.depthOrArrayLayers - options.z);
256
294
  return options;
257
295
  }
296
+ /**
297
+ * Normalizes a texture read request and validates the color-only readback contract used by the
298
+ * current texture read APIs. Supported dimensions are `2d`, `cube`, `cube-array`,
299
+ * `2d-array`, and `3d`.
300
+ *
301
+ * @throws if the texture format, aspect, or dimension is not supported by the first-pass
302
+ * color-read implementation.
303
+ */
304
+ _getSupportedColorReadOptions(options_) {
305
+ const options = this._normalizeTextureReadOptions(options_);
306
+ const formatInfo = textureFormatDecoder.getInfo(this.format);
307
+ this._validateColorReadAspect(options);
308
+ this._validateColorReadFormat(formatInfo);
309
+ switch (this.dimension) {
310
+ case '2d':
311
+ case 'cube':
312
+ case 'cube-array':
313
+ case '2d-array':
314
+ case '3d':
315
+ return options;
316
+ default:
317
+ throw new Error(`${this} color readback does not support ${this.dimension} textures`);
318
+ }
319
+ }
320
+ /** Validates that a read request targets the full color aspect of the texture. */
321
+ _validateColorReadAspect(options) {
322
+ if (options.aspect !== 'all') {
323
+ throw new Error(`${this} color readback only supports aspect 'all'`);
324
+ }
325
+ }
326
+ /** Validates that a read request targets an uncompressed color-renderable texture format. */
327
+ _validateColorReadFormat(formatInfo) {
328
+ if (formatInfo.compressed) {
329
+ throw new Error(`${this} color readback does not support compressed formats (${this.format})`);
330
+ }
331
+ switch (formatInfo.attachment) {
332
+ case 'color':
333
+ return;
334
+ case 'depth':
335
+ throw new Error(`${this} color readback does not support depth formats (${this.format})`);
336
+ case 'stencil':
337
+ throw new Error(`${this} color readback does not support stencil formats (${this.format})`);
338
+ case 'depth-stencil':
339
+ throw new Error(`${this} color readback does not support depth-stencil formats (${this.format})`);
340
+ default:
341
+ throw new Error(`${this} color readback does not support format ${this.format}`);
342
+ }
343
+ }
258
344
  _normalizeTextureWriteOptions(options_) {
259
- const { width, height } = this;
260
- const options = { ...Texture.defaultTextureReadOptions, width, height, ...options_ };
261
- // WebGL will error if we try to copy outside the bounds of the texture
262
- options.width = Math.min(options.width, this.width - options.x);
263
- options.height = Math.min(options.height, this.height - options.y);
345
+ const optionsWithoutUndefined = Texture._omitUndefined(options_);
346
+ const mipLevel = optionsWithoutUndefined.mipLevel ?? 0;
347
+ const mipLevelSize = this._getMipLevelSize(mipLevel);
348
+ const options = {
349
+ ...Texture.defaultTextureWriteOptions,
350
+ ...mipLevelSize,
351
+ ...optionsWithoutUndefined
352
+ };
353
+ options.width = Math.min(options.width, mipLevelSize.width - options.x);
354
+ options.height = Math.min(options.height, mipLevelSize.height - options.y);
355
+ options.depthOrArrayLayers = Math.min(options.depthOrArrayLayers, mipLevelSize.depthOrArrayLayers - options.z);
356
+ const layout = textureFormatDecoder.computeMemoryLayout({
357
+ format: this.format,
358
+ width: options.width,
359
+ height: options.height,
360
+ depth: options.depthOrArrayLayers,
361
+ byteAlignment: this.byteAlignment
362
+ });
363
+ const minimumBytesPerRow = layout.bytesPerPixel * options.width;
364
+ options.bytesPerRow = optionsWithoutUndefined.bytesPerRow ?? layout.bytesPerRow;
365
+ options.rowsPerImage = optionsWithoutUndefined.rowsPerImage ?? options.height;
366
+ if (options.bytesPerRow < minimumBytesPerRow) {
367
+ throw new Error(`bytesPerRow (${options.bytesPerRow}) must be at least ${minimumBytesPerRow} for ${this.format}`);
368
+ }
369
+ if (options.rowsPerImage < options.height) {
370
+ throw new Error(`rowsPerImage (${options.rowsPerImage}) must be at least ${options.height} for ${this.format}`);
371
+ }
372
+ const bytesPerPixel = this.device.getTextureFormatInfo(this.format).bytesPerPixel;
373
+ if (bytesPerPixel && options.bytesPerRow % bytesPerPixel !== 0) {
374
+ throw new Error(`bytesPerRow (${options.bytesPerRow}) must be a multiple of bytesPerPixel (${bytesPerPixel}) for ${this.format}`);
375
+ }
264
376
  return options;
265
377
  }
378
+ _getMipLevelSize(mipLevel) {
379
+ const width = Math.max(1, this.width >> mipLevel);
380
+ const height = this.baseDimension === '1d' ? 1 : Math.max(1, this.height >> mipLevel);
381
+ const depthOrArrayLayers = this.dimension === '3d' ? Math.max(1, this.depth >> mipLevel) : this.depth;
382
+ return { width, height, depthOrArrayLayers };
383
+ }
384
+ getAllocatedByteLength() {
385
+ let allocatedByteLength = 0;
386
+ for (let mipLevel = 0; mipLevel < this.mipLevels; mipLevel++) {
387
+ const { width, height, depthOrArrayLayers } = this._getMipLevelSize(mipLevel);
388
+ allocatedByteLength += textureFormatDecoder.computeMemoryLayout({
389
+ format: this.format,
390
+ width,
391
+ height,
392
+ depth: depthOrArrayLayers,
393
+ byteAlignment: 1
394
+ }).byteLength;
395
+ }
396
+ return allocatedByteLength * this.samples;
397
+ }
398
+ static _omitUndefined(options) {
399
+ return Object.fromEntries(Object.entries(options).filter(([, value]) => value !== undefined));
400
+ }
266
401
  static defaultProps = {
267
402
  ...Resource.defaultProps,
268
403
  data: null,
@@ -282,6 +417,10 @@ export class Texture extends Resource {
282
417
  byteOffset: 0,
283
418
  bytesPerRow: undefined,
284
419
  rowsPerImage: undefined,
420
+ width: undefined,
421
+ height: undefined,
422
+ depthOrArrayLayers: undefined,
423
+ depth: 1,
285
424
  mipLevel: 0,
286
425
  x: 0,
287
426
  y: 0,
@@ -315,5 +454,18 @@ export class Texture extends Resource {
315
454
  mipLevel: 0,
316
455
  aspect: 'all'
317
456
  };
457
+ static defaultTextureWriteOptions = {
458
+ byteOffset: 0,
459
+ bytesPerRow: undefined,
460
+ rowsPerImage: undefined,
461
+ x: 0,
462
+ y: 0,
463
+ z: 0,
464
+ width: undefined,
465
+ height: undefined,
466
+ depthOrArrayLayers: 1,
467
+ mipLevel: 0,
468
+ aspect: 'all'
469
+ };
318
470
  }
319
471
  //# sourceMappingURL=texture.js.map