react-native-wgpu 0.1.9 → 0.1.10

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 (39) hide show
  1. package/android/cpp/cpp-adapter.cpp +18 -9
  2. package/android/src/main/java/com/webgpu/WebGPUView.java +10 -1
  3. package/cpp/rnwgpu/RNWebGPUManager.cpp +1 -0
  4. package/cpp/rnwgpu/RNWebGPUManager.h +1 -0
  5. package/cpp/rnwgpu/SurfaceRegistry.h +143 -96
  6. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +14 -82
  7. package/cpp/rnwgpu/api/GPUCanvasContext.h +7 -13
  8. package/cpp/rnwgpu/api/RNWebGPU.h +7 -3
  9. package/ios/MetalView.mm +2 -0
  10. package/ios/SurfaceUtils.mm +7 -8
  11. package/lib/commonjs/{utils.js → hooks.js} +13 -7
  12. package/lib/commonjs/hooks.js.map +1 -0
  13. package/lib/commonjs/index.js +12 -4
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/module/{utils.js → hooks.js} +11 -5
  16. package/lib/module/hooks.js.map +1 -0
  17. package/lib/module/index.js +6 -1
  18. package/lib/module/index.js.map +1 -1
  19. package/lib/typescript/lib/commonjs/{utils.d.ts → hooks.d.ts} +5 -2
  20. package/lib/typescript/lib/commonjs/hooks.d.ts.map +1 -0
  21. package/lib/typescript/lib/commonjs/index.d.ts +1 -0
  22. package/lib/typescript/lib/commonjs/index.d.ts.map +1 -1
  23. package/lib/typescript/lib/module/{utils.d.ts → hooks.d.ts} +5 -2
  24. package/lib/typescript/lib/module/hooks.d.ts.map +1 -0
  25. package/lib/typescript/lib/module/index.d.ts +2 -1
  26. package/lib/typescript/lib/module/index.d.ts.map +1 -1
  27. package/lib/typescript/src/{utils.d.ts → hooks.d.ts} +6 -3
  28. package/lib/typescript/src/hooks.d.ts.map +1 -0
  29. package/lib/typescript/src/index.d.ts +2 -1
  30. package/lib/typescript/src/index.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/{utils.ts → hooks.ts} +8 -7
  33. package/src/index.tsx +9 -1
  34. package/cpp/rnwgpu/api/OffscreenSurface.h +0 -49
  35. package/lib/commonjs/utils.js.map +0 -1
  36. package/lib/module/utils.js.map +0 -1
  37. package/lib/typescript/lib/commonjs/utils.d.ts.map +0 -1
  38. package/lib/typescript/lib/module/utils.d.ts.map +0 -1
  39. package/lib/typescript/src/utils.d.ts.map +0 -1
@@ -31,9 +31,8 @@ extern "C" JNIEXPORT void JNICALL Java_com_webgpu_WebGPUView_onSurfaceChanged(
31
31
  JNIEnv *env, jobject thiz, jobject surface, jint contextId, jfloat width,
32
32
  jfloat height) {
33
33
  auto &registry = rnwgpu::SurfaceRegistry::getInstance();
34
- auto info = registry.getSurface(contextId);
35
- registry.setSize(contextId, static_cast<int>(width),
36
- static_cast<int>(height));
34
+ registry.getSurfaceInfo(contextId)->resize(static_cast<int>(width),
35
+ static_cast<int>(height));
37
36
  }
38
37
 
39
38
  extern "C" JNIEXPORT void JNICALL Java_com_webgpu_WebGPUView_onSurfaceCreate(
@@ -42,15 +41,25 @@ extern "C" JNIEXPORT void JNICALL Java_com_webgpu_WebGPUView_onSurfaceCreate(
42
41
  auto window = ANativeWindow_fromSurface(env, jSurface);
43
42
  // ANativeWindow_acquire(window);
44
43
  auto &registry = rnwgpu::SurfaceRegistry::getInstance();
45
- registry.createSurface(contextId, window, static_cast<int>(width),
46
- static_cast<int>(height), manager->_platformContext);
44
+ auto gpu = manager->_gpu;
45
+ auto surface = manager->_platformContext->makeSurface(
46
+ gpu, window, static_cast<int>(width), static_cast<int>(height));
47
+ registry
48
+ .getSurfaceInfoOrCreate(contextId, gpu, static_cast<int>(width),
49
+ static_cast<int>(height))
50
+ ->switchToOnscreen(window, surface);
51
+ }
52
+
53
+ extern "C" JNIEXPORT void JNICALL
54
+ Java_com_webgpu_WebGPUView_switchToOffscreenSurface(JNIEnv *env, jobject thiz,
55
+ jint contextId) {
56
+ auto &registry = rnwgpu::SurfaceRegistry::getInstance();
57
+ auto nativeSurface = registry.getSurfaceInfo(contextId)->switchToOffscreen();
58
+ ANativeWindow_release(reinterpret_cast<ANativeWindow *>(nativeSurface));
47
59
  }
48
60
 
49
61
  extern "C" JNIEXPORT void JNICALL Java_com_webgpu_WebGPUView_onSurfaceDestroy(
50
62
  JNIEnv *env, jobject thiz, jint contextId) {
51
63
  auto &registry = rnwgpu::SurfaceRegistry::getInstance();
52
- auto canvas = registry.getSurface(contextId);
53
- ANativeWindow_release(
54
- reinterpret_cast<ANativeWindow *>(canvas.nativeSurface));
55
- registry.removeSurface(contextId);
64
+ registry.removeSurfaceInfo(contextId);
56
65
  }
@@ -52,10 +52,16 @@ public class WebGPUView extends SurfaceView implements SurfaceHolder.Callback {
52
52
  }
53
53
 
54
54
  @Override
55
- public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
55
+ protected void onDetachedFromWindow() {
56
+ super.onDetachedFromWindow();
56
57
  onSurfaceDestroy(mContextId);
57
58
  }
58
59
 
60
+ @Override
61
+ public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
62
+ switchToOffscreenSurface(mContextId);
63
+ }
64
+
59
65
  @DoNotStrip
60
66
  private native void onSurfaceCreate(
61
67
  Surface surface,
@@ -75,4 +81,7 @@ public class WebGPUView extends SurfaceView implements SurfaceHolder.Callback {
75
81
 
76
82
  @DoNotStrip
77
83
  private native void onSurfaceDestroy(int contextId);
84
+
85
+ @DoNotStrip
86
+ private native void switchToOffscreenSurface(int contextId);
78
87
  }
@@ -24,6 +24,7 @@ RNWebGPUManager::RNWebGPUManager(
24
24
 
25
25
  auto gpu = std::make_shared<GPU>();
26
26
  auto rnWebGPU = std::make_shared<RNWebGPU>(gpu, _platformContext);
27
+ _gpu = gpu->get();
27
28
  _jsRuntime->global().setProperty(
28
29
  *_jsRuntime, "RNWebGPU",
29
30
  jsi::Object::createFromHostObject(*_jsRuntime, rnWebGPU));
@@ -32,6 +32,7 @@ private:
32
32
  std::shared_ptr<facebook::react::CallInvoker> _jsCallInvoker;
33
33
 
34
34
  public:
35
+ wgpu::Instance _gpu;
35
36
  std::shared_ptr<PlatformContext> _platformContext;
36
37
  };
37
38
 
@@ -8,23 +8,71 @@
8
8
 
9
9
  namespace rnwgpu {
10
10
 
11
- struct ISize {
11
+ struct NativeInfo {
12
+ void *nativeSurface;
12
13
  int width;
13
14
  int height;
14
15
  };
15
16
 
16
- struct SurfaceInfo {
17
- void *nativeSurface = nullptr;
18
- wgpu::Surface surface;
17
+ struct Size {
19
18
  int width;
20
19
  int height;
21
- wgpu::Texture texture;
22
- wgpu::Instance gpu;
23
- wgpu::SurfaceConfiguration config;
20
+ };
21
+
22
+ class SurfaceInfo {
23
+ public:
24
+ SurfaceInfo(wgpu::Instance gpu, int width, int height)
25
+ : gpu(gpu), width(width), height(height) {}
26
+
27
+ void reconfigure(int newWidth, int newHeight) {
28
+ std::unique_lock<std::shared_mutex> lock(_mutex);
29
+ config.width = newWidth;
30
+ config.height = newHeight;
31
+ _configure();
32
+ }
33
+
34
+ void configure(wgpu::SurfaceConfiguration &newConfig) {
35
+ std::unique_lock<std::shared_mutex> lock(_mutex);
36
+ config = newConfig;
37
+ config.width = width;
38
+ config.height = height;
39
+ _configure();
40
+ }
41
+
42
+ void unconfigure() {
43
+ std::unique_lock<std::shared_mutex> lock(_mutex);
44
+ if (surface) {
45
+ surface.Unconfigure();
46
+ } else {
47
+ texture = nullptr;
48
+ }
49
+ }
50
+
51
+ void *switchToOffscreen() {
52
+ std::unique_lock<std::shared_mutex> lock(_mutex);
53
+ wgpu::TextureDescriptor textureDesc;
54
+ textureDesc.usage = wgpu::TextureUsage::RenderAttachment |
55
+ wgpu::TextureUsage::CopySrc |
56
+ wgpu::TextureUsage::TextureBinding;
57
+ textureDesc.format = config.format;
58
+ textureDesc.size.width = config.width;
59
+ textureDesc.size.height = config.height;
60
+ texture = config.device.CreateTexture(&textureDesc);
61
+ surface = nullptr;
62
+ return nativeSurface;
63
+ }
24
64
 
25
- void flushTextureToSurface() {
26
- // 1.a flush texture to the onscreen surface
27
- if (texture) {
65
+ void switchToOnscreen(void *newNativeSurface, wgpu::Surface newSurface) {
66
+ std::unique_lock<std::shared_mutex> lock(_mutex);
67
+ nativeSurface = newNativeSurface;
68
+ surface = std::move(newSurface);
69
+ // If we are comming from an offscreen context, we need to configure the new
70
+ // surface
71
+ if (texture != nullptr) {
72
+ config.usage = config.usage | wgpu::TextureUsage::CopyDst;
73
+ _configure();
74
+ // We flush the offscreen texture to the onscreen one
75
+ // TODO: there is a faster way to do this without validation?
28
76
  wgpu::CommandEncoderDescriptor encoderDesc;
29
77
  auto device = config.device;
30
78
  wgpu::CommandEncoder encoder = device.CreateCommandEncoder(&encoderDesc);
@@ -46,125 +94,124 @@ struct SurfaceInfo {
46
94
  wgpu::CommandBuffer commands = encoder.Finish();
47
95
  wgpu::Queue queue = device.GetQueue();
48
96
  queue.Submit(1, &commands);
97
+ surface.Present();
49
98
  texture = nullptr;
50
99
  }
51
100
  }
52
- };
53
101
 
54
- class SurfaceRegistry {
55
- private:
56
- std::unordered_map<int, SurfaceInfo> _registry;
57
- mutable std::shared_mutex _mutex;
102
+ void resize(int newWidth, int newHeight) {
103
+ std::unique_lock<std::shared_mutex> lock(_mutex);
104
+ width = newWidth;
105
+ height = newHeight;
106
+ }
58
107
 
59
- // Private constructor to prevent instantiation
60
- SurfaceRegistry() {}
108
+ void present() {
109
+ std::unique_lock<std::shared_mutex> lock(_mutex);
110
+ if (surface) {
111
+ surface.Present();
112
+ }
113
+ }
61
114
 
62
- void updateSurface(const int contextId, SurfaceInfo &info) {
63
- auto it = _registry.find(contextId);
64
- if (it != _registry.end()) {
65
- it->second = info;
115
+ wgpu::Texture getCurrentTexture() {
116
+ std::shared_lock<std::shared_mutex> lock(_mutex);
117
+ if (surface) {
118
+ wgpu::SurfaceTexture surfaceTexture;
119
+ surface.GetCurrentTexture(&surfaceTexture);
120
+ return surfaceTexture.texture;
121
+ } else {
122
+ return texture;
66
123
  }
67
124
  }
68
125
 
69
- // bool hasOnScreenSurface(const int contextId) const {
70
- // std::shared_lock<std::shared_mutex> lock(_mutex);
71
- // auto it = _registry.find(contextId);
72
- // if (it != _registry.end()) {
73
- // return it->second.nativeSurface != nullptr;
74
- // }
75
- // return false;
76
- // }
126
+ NativeInfo getNativeInfo() {
127
+ std::shared_lock<std::shared_mutex> lock(_mutex);
128
+ return {.nativeSurface = nativeSurface, .width = width, .height = height};
129
+ }
130
+
131
+ Size getSize() {
132
+ std::shared_lock<std::shared_mutex> lock(_mutex);
133
+ return {.width = width, .height = height};
134
+ }
77
135
 
78
- bool hasSurfaceInfo(const int contextId) const {
79
- return _registry.find(contextId) != _registry.end();
136
+ wgpu::Device getDevice() {
137
+ std::shared_lock<std::shared_mutex> lock(_mutex);
138
+ return config.device;
80
139
  }
81
140
 
82
- public:
83
- // Delete copy constructor and assignment operator
84
- SurfaceRegistry(const SurfaceRegistry &) = delete;
85
- SurfaceRegistry &operator=(const SurfaceRegistry &) = delete;
141
+ private:
142
+ void _configure() {
143
+ if (surface) {
144
+ surface.Configure(&config);
145
+ } else {
146
+ wgpu::TextureDescriptor textureDesc;
147
+ textureDesc.format = config.format;
148
+ textureDesc.size.width = config.width;
149
+ textureDesc.size.height = config.height;
150
+ textureDesc.usage = wgpu::TextureUsage::RenderAttachment |
151
+ wgpu::TextureUsage::CopySrc |
152
+ wgpu::TextureUsage::TextureBinding;
153
+ texture = config.device.CreateTexture(&textureDesc);
154
+ }
155
+ }
86
156
 
87
- // Static method to get the singleton instance
157
+ mutable std::shared_mutex _mutex;
158
+ void *nativeSurface = nullptr;
159
+ wgpu::Surface surface = nullptr;
160
+ wgpu::Texture texture = nullptr;
161
+ wgpu::Instance gpu;
162
+ wgpu::SurfaceConfiguration config;
163
+ int width;
164
+ int height;
165
+ };
166
+
167
+ class SurfaceRegistry {
168
+ public:
88
169
  static SurfaceRegistry &getInstance() {
89
170
  static SurfaceRegistry instance;
90
171
  return instance;
91
172
  }
92
173
 
93
- void removeSurface(const int contextId) {
94
- std::unique_lock<std::shared_mutex> lock(_mutex);
95
- _registry.erase(contextId);
96
- }
97
-
98
- std::optional<SurfaceInfo> getSurfaceMaybe(const int contextId) {
99
- std::unique_lock<std::shared_mutex> lock(_mutex);
100
- auto it = _registry.find(contextId);
101
- if (it != _registry.end()) {
102
- return it->second;
103
- }
104
- return std::nullopt;
105
- }
174
+ SurfaceRegistry(const SurfaceRegistry &) = delete;
175
+ SurfaceRegistry &operator=(const SurfaceRegistry &) = delete;
106
176
 
107
- SurfaceInfo getSurface(const int contextId) const {
108
- auto it = _registry.find(contextId);
177
+ std::shared_ptr<SurfaceInfo> getSurfaceInfo(int id) {
178
+ std::shared_lock<std::shared_mutex> lock(_mutex);
179
+ auto it = _registry.find(id);
109
180
  if (it != _registry.end()) {
110
181
  return it->second;
111
182
  }
112
- throw std::out_of_range("Surface not found");
183
+ return nullptr;
113
184
  }
114
185
 
115
- void setSize(const int contextId, int width, int height) {
186
+ void removeSurfaceInfo(int id) {
116
187
  std::unique_lock<std::shared_mutex> lock(_mutex);
117
- auto it = _registry.find(contextId);
118
- if (it != _registry.end()) {
119
- it->second.width = width;
120
- it->second.height = height;
121
- }
188
+ _registry.erase(id);
122
189
  }
123
190
 
124
- void
125
- configureOffscreenSurface(const int contextId, wgpu::Instance gpu,
126
- wgpu::Texture texture,
127
- wgpu::SurfaceConfiguration surfaceConfiguration) {
128
- SurfaceInfo info;
129
- info.width = surfaceConfiguration.width;
130
- info.height = surfaceConfiguration.height;
131
- info.texture = texture;
132
- info.gpu = gpu;
133
- info.config = surfaceConfiguration;
191
+ std::shared_ptr<SurfaceInfo> addSurfaceInfo(int id, wgpu::Instance gpu,
192
+ int width, int height) {
134
193
  std::unique_lock<std::shared_mutex> lock(_mutex);
135
- _registry[contextId] = info;
194
+ auto info = std::make_shared<SurfaceInfo>(gpu, width, height);
195
+ _registry[id] = info;
196
+ return info;
136
197
  }
137
198
 
138
- void createSurface(const int contextId, void *nativeSurface, int width,
139
- int height,
140
- std::shared_ptr<PlatformContext> platformContext) {
199
+ std::shared_ptr<SurfaceInfo>
200
+ getSurfaceInfoOrCreate(int id, wgpu::Instance gpu, int width, int height) {
141
201
  std::unique_lock<std::shared_mutex> lock(_mutex);
142
- // 1. The scene has already be drawn offscreen
143
- if (hasSurfaceInfo(contextId)) {
144
- auto info = getSurface(contextId);
145
- auto surface =
146
- platformContext->makeSurface(info.gpu, nativeSurface, width, height);
147
- info.config.usage = info.config.usage | wgpu::TextureUsage::CopyDst;
148
- surface.Configure(&info.config);
149
- info.nativeSurface = nativeSurface;
150
- info.surface = surface;
151
- info.width = width;
152
- info.height = height;
153
- info.flushTextureToSurface();
154
- surface.Present();
155
- updateSurface(contextId, info);
156
- } else {
157
- // 2. The scene has not been drawn offscreen yet, we will draw onscreen
158
- // directly
159
- rnwgpu::SurfaceInfo info;
160
- info.nativeSurface = nativeSurface;
161
- info.surface =
162
- platformContext->makeSurface(info.gpu, nativeSurface, width, height);
163
- info.width = width;
164
- info.height = height;
165
- _registry[contextId] = info;
202
+ auto it = _registry.find(id);
203
+ if (it != _registry.end()) {
204
+ return it->second;
166
205
  }
206
+ auto info = std::make_shared<SurfaceInfo>(gpu, width, height);
207
+ _registry[id] = info;
208
+ return info;
167
209
  }
210
+
211
+ private:
212
+ SurfaceRegistry() = default;
213
+ mutable std::shared_mutex _mutex;
214
+ std::unordered_map<int, std::shared_ptr<SurfaceInfo>> _registry;
168
215
  };
169
216
 
170
217
  } // namespace rnwgpu
@@ -9,7 +9,6 @@ void GPUCanvasContext::configure(
9
9
  Convertor conv;
10
10
  wgpu::SurfaceConfiguration surfaceConfiguration;
11
11
  surfaceConfiguration.device = configuration->device->get();
12
- _device = configuration->device->get();
13
12
  if (configuration->viewFormats.has_value()) {
14
13
  if (!conv(surfaceConfiguration.viewFormats,
15
14
  surfaceConfiguration.viewFormatCount,
@@ -23,99 +22,32 @@ void GPUCanvasContext::configure(
23
22
  if (!conv(surfaceConfiguration.usage, configuration->usage)) {
24
23
  throw std::runtime_error("Error with SurfaceConfiguration");
25
24
  }
26
- auto width = _canvas->getWidth();
27
- auto height = _canvas->getHeight();
28
- surfaceConfiguration.width = width;
29
- surfaceConfiguration.height = height;
30
- _surfaceConfiguration = surfaceConfiguration;
31
- // Are we onscreen now?
32
- auto &registry = rnwgpu::SurfaceRegistry::getInstance();
33
- auto infoVal = registry.getSurfaceMaybe(_contextId);
34
- if (infoVal.has_value()) {
35
- auto info = infoVal.value();
36
- if (info.surface) {
37
- _instance = info.surface;
38
- _offscreenSurface = nullptr;
39
- }
40
- }
41
-
42
- if (_instance) {
43
- _instance.Configure(&surfaceConfiguration);
44
- } else {
45
- _offscreenSurface->configure(_surfaceConfiguration);
46
- // Add texture to the surface registry, when the native surface is
47
- // available, we will copy its content there This only makes sense if the on
48
- // screen native surface is not available yet
49
- registry.configureOffscreenSurface(_contextId, _gpu->get(),
50
- _offscreenSurface->getCurrentTexture(),
51
- _surfaceConfiguration);
52
- }
25
+ _surfaceInfo->configure(surfaceConfiguration);
53
26
  }
54
27
 
55
- void GPUCanvasContext::unconfigure() {
56
- if (_instance) {
57
- _instance.Unconfigure();
58
- } else if (_offscreenSurface) {
59
- _offscreenSurface = nullptr;
60
- }
61
- }
28
+ void GPUCanvasContext::unconfigure() {}
62
29
 
63
30
  std::shared_ptr<GPUTexture> GPUCanvasContext::getCurrentTexture() {
31
+ auto prevSize = _surfaceInfo->getSize();
64
32
  auto width = _canvas->getWidth();
65
33
  auto height = _canvas->getHeight();
66
-
67
- auto prevWidth = _surfaceConfiguration.width;
68
- auto prevHeight = _surfaceConfiguration.height;
69
- auto sizeHasChanged = prevWidth != width || prevHeight != height;
70
- _surfaceConfiguration.width = width;
71
- _surfaceConfiguration.height = height;
72
- // Get onscreen texture
73
- if (_instance) {
74
- // Did the surface resize?
75
- if (sizeHasChanged) {
76
- _instance.Configure(&_surfaceConfiguration);
77
- }
78
- // Get onscreen texture
79
- wgpu::SurfaceTexture surfaceTexture;
80
- _instance.GetCurrentTexture(&surfaceTexture);
81
- auto texture = surfaceTexture.texture;
82
- if (texture == nullptr) {
83
- throw std::runtime_error("Couldn't get current texture");
84
- }
85
- return std::make_shared<GPUTexture>(texture, "");
86
- } else {
87
- // Did the surface resize?
88
- if (sizeHasChanged) {
89
- _offscreenSurface->configure(_surfaceConfiguration);
90
- }
91
- // Get offscreen texture
92
- auto tex = _offscreenSurface->getCurrentTexture();
93
- return std::make_shared<GPUTexture>(tex, "");
34
+ auto sizeHasChanged = prevSize.width != width || prevSize.height != height;
35
+ if (sizeHasChanged) {
36
+ _surfaceInfo->reconfigure(width, height);
94
37
  }
38
+ auto texture = _surfaceInfo->getCurrentTexture();
39
+ return std::make_shared<GPUTexture>(texture, "");
95
40
  }
96
41
 
97
42
  void GPUCanvasContext::present() {
98
43
  #ifdef __APPLE__
99
- dawn::native::metal::WaitForCommandsToBeScheduled(_device.Get());
44
+ dawn::native::metal::WaitForCommandsToBeScheduled(
45
+ _surfaceInfo->getDevice().Get());
100
46
  #endif
101
- auto &registry = rnwgpu::SurfaceRegistry::getInstance();
102
- auto infoVal = registry.getSurfaceMaybe(_contextId);
103
- if (infoVal.has_value()) {
104
- auto info = infoVal.value();
105
- // We are starting a new frame, this is a good time to update the client
106
- _canvas->setClientWidth(info.width);
107
- _canvas->setClientHeight(info.height);
108
- if (_offscreenSurface) {
109
- // Are we onscreen now?
110
- if (info.surface) {
111
- _instance = info.surface;
112
- _offscreenSurface = nullptr;
113
- }
114
- }
115
- }
116
- if (_instance) {
117
- _instance.Present();
118
- }
47
+ auto size = _surfaceInfo->getSize();
48
+ _canvas->setClientWidth(size.width);
49
+ _canvas->setClientHeight(size.height);
50
+ _surfaceInfo->present();
119
51
  }
120
52
 
121
53
  } // namespace rnwgpu
@@ -15,7 +15,6 @@
15
15
  #include "GPU.h"
16
16
  #include "GPUCanvasConfiguration.h"
17
17
  #include "GPUTexture.h"
18
- #include "OffscreenSurface.h"
19
18
  #include "SurfaceRegistry.h"
20
19
 
21
20
  #ifdef __APPLE__
@@ -40,13 +39,13 @@ namespace m = margelo;
40
39
 
41
40
  class GPUCanvasContext : public m::HybridObject {
42
41
  public:
43
- // TODO: platformContext no necessary here
44
42
  GPUCanvasContext(std::shared_ptr<GPU> gpu, int contextId, int width,
45
43
  int height)
46
- : HybridObject("GPUCanvasContext"), _contextId(contextId),
47
- _gpu(std::move(gpu)) {
44
+ : HybridObject("GPUCanvasContext"), _gpu(std::move(gpu)) {
48
45
  _canvas = std::make_shared<Canvas>(nullptr, width, height);
49
- _offscreenSurface = std::make_shared<OffscreenSurface>(_canvas);
46
+ auto &registry = rnwgpu::SurfaceRegistry::getInstance();
47
+ _surfaceInfo =
48
+ registry.getSurfaceInfoOrCreate(contextId, _gpu->get(), width, height);
50
49
  }
51
50
 
52
51
  public:
@@ -64,22 +63,17 @@ public:
64
63
  registerHybridMethod("present", &GPUCanvasContext::present, this);
65
64
  }
66
65
 
67
- inline const wgpu::Surface get() { return _instance; }
66
+ // TODO: is this ok?
67
+ inline const wgpu::Surface get() { return nullptr; }
68
68
  void configure(std::shared_ptr<GPUCanvasConfiguration> configuration);
69
69
  void unconfigure();
70
70
  std::shared_ptr<GPUTexture> getCurrentTexture();
71
71
  void present();
72
72
 
73
73
  private:
74
- std::shared_ptr<OffscreenSurface> _offscreenSurface;
75
- wgpu::Surface _instance = nullptr;
76
- wgpu::Device _device;
77
74
  std::shared_ptr<Canvas> _canvas;
78
- int _contextId;
79
-
75
+ std::shared_ptr<SurfaceInfo> _surfaceInfo;
80
76
  std::shared_ptr<GPU> _gpu;
81
- // TODO: do we need this or can it be stored in the surface registry?
82
- wgpu::SurfaceConfiguration _surfaceConfiguration;
83
77
  };
84
78
 
85
79
  } // namespace rnwgpu
@@ -54,9 +54,13 @@ public:
54
54
 
55
55
  std::shared_ptr<Canvas> getNativeSurface(int contextId) {
56
56
  auto &registry = rnwgpu::SurfaceRegistry::getInstance();
57
- auto info = registry.getSurface(contextId);
58
- return std::make_shared<Canvas>(info.nativeSurface, info.width,
59
- info.height);
57
+ auto info = registry.getSurfaceInfo(contextId);
58
+ if (info == nullptr) {
59
+ return std::make_shared<Canvas>(nullptr, 0, 0);
60
+ }
61
+ auto nativeInfo = info->getNativeInfo();
62
+ return std::make_shared<Canvas>(nativeInfo.nativeSurface, nativeInfo.width,
63
+ nativeInfo.height);
60
64
  }
61
65
 
62
66
  void loadHybridMethods() override {
package/ios/MetalView.mm CHANGED
@@ -12,6 +12,8 @@
12
12
  }
13
13
 
14
14
  // Paper only method
15
+ // TODO: this method is wrong, it appears to call configureSurface instead of
16
+ // updateSurface sometimes
15
17
  - (void)reactSetFrame:(CGRect)frame {
16
18
  [super reactSetFrame:frame];
17
19
  if (!_isConfigured) {
@@ -3,7 +3,6 @@
3
3
  #import "WebGPUModule.h"
4
4
  #import "WebGPUView.h"
5
5
 
6
- // TODO: to delete now
7
6
  @implementation SurfaceUtils
8
7
 
9
8
  + (void)configureSurface:(CALayer *)layer
@@ -12,24 +11,24 @@
12
11
  std::shared_ptr<rnwgpu::RNWebGPUManager> manager = [WebGPUModule getManager];
13
12
  void *nativeSurface = (__bridge void *)layer;
14
13
  auto &registry = rnwgpu::SurfaceRegistry::getInstance();
15
- registry.createSurface(contextId, nativeSurface, size.width, size.height,
16
- manager->_platformContext);
14
+ auto gpu = manager->_gpu;
15
+ auto surface = manager->_platformContext->makeSurface(
16
+ gpu, nativeSurface, size.width, size.height);
17
+ registry.getSurfaceInfoOrCreate(contextId, gpu, size.width, size.height)
18
+ ->switchToOnscreen(nativeSurface, surface);
17
19
  }
18
20
 
19
21
  + (void)updateSurface:(int)contextId size:(CGSize)size {
20
22
  // std::shared_ptr<rnwgpu::RNWebGPUManager> manager = [WebGPUModule
21
23
  // getManager];
22
24
  auto &registry = rnwgpu::SurfaceRegistry::getInstance();
23
- auto info = registry.getSurface(contextId);
24
- info.width = size.width;
25
- info.height = size.height;
26
- registry.setSize(contextId, size.width, size.height);
25
+ registry.getSurfaceInfo(contextId)->resize(size.width, size.height);
27
26
  }
28
27
 
29
28
  + (void)cleanupSurface:(int)contextId {
30
29
  auto &registry = rnwgpu::SurfaceRegistry::getInstance();
31
30
  // Remove the surface info from the registry
32
- registry.removeSurface(contextId);
31
+ registry.removeSurfaceInfo(contextId);
33
32
  }
34
33
 
35
34
  @end
@@ -3,14 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.warnIfNotHardwareAccelerated = exports.useGPUContext = exports.useCanvasEffect = void 0;
6
+ exports.useSurface = exports.useGPUContext = exports.useCanvasEffect = void 0;
7
7
  var _react = require("react");
8
- const warnIfNotHardwareAccelerated = adapter => {
9
- if (adapter.info.architecture === "swiftshader") {
10
- console.warn("GPUAdapter is not hardware accelerated. This is common on Android emulators. Rendering will be slow.");
11
- }
8
+ const useSurface = () => {
9
+ const [surface, setSurface] = (0, _react.useState)(null);
10
+ const ref = useCanvasEffect(() => {
11
+ const sur = ref.current.getNativeSurface();
12
+ setSurface(sur);
13
+ });
14
+ return {
15
+ ref,
16
+ surface
17
+ };
12
18
  };
13
- exports.warnIfNotHardwareAccelerated = warnIfNotHardwareAccelerated;
19
+ exports.useSurface = useSurface;
14
20
  const useGPUContext = () => {
15
21
  const [context, setContext] = (0, _react.useState)(null);
16
22
  const ref = useCanvasEffect(() => {
@@ -47,4 +53,4 @@ const useCanvasEffect = effect => {
47
53
  return ref;
48
54
  };
49
55
  exports.useCanvasEffect = useCanvasEffect;
50
- //# sourceMappingURL=utils.js.map
56
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","useSurface","surface","setSurface","useState","ref","useCanvasEffect","sur","current","getNativeSurface","exports","useGPUContext","context","setContext","ctx","getContext","effect","unsub","useRef","useEffect","whenReady","sub","Promise","then"],"sourceRoot":"../../src","sources":["hooks.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMO,MAAMC,UAAU,GAAGA,CAAA,KAAM;EAC9B,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAsB,IAAI,CAAC;EACjE,MAAMC,GAAG,GAAGC,eAAe,CAAC,MAAM;IAChC,MAAMC,GAAG,GAAGF,GAAG,CAACG,OAAO,CAAEC,gBAAgB,CAAC,CAAC;IAC3CN,UAAU,CAACI,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,OAAO;IAAEF,GAAG;IAAEH;EAAQ,CAAC;AACzB,CAAC;AAACQ,OAAA,CAAAT,UAAA,GAAAA,UAAA;AAEK,MAAMU,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAT,eAAQ,EAAyB,IAAI,CAAC;EACpE,MAAMC,GAAG,GAAGC,eAAe,CAAC,MAAM;IAChC,MAAMQ,GAAG,GAAGT,GAAG,CAACG,OAAO,CAAEO,UAAU,CAAC,QAAQ,CAAE;IAC9CF,UAAU,CAACC,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,OAAO;IAAET,GAAG;IAAEO;EAAQ,CAAC;AACzB,CAAC;AAACF,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAEK,MAAML,eAAe,GAC1BU,MAIiB,IACd;EACH,MAAMC,KAAK,GAAG,IAAAC,aAAM,EAAmD,IAAI,CAAC;EAC5E,MAAMb,GAAG,GAAG,IAAAa,aAAM,EAAY,IAAI,CAAC;EACnC,IAAAC,gBAAS,EAAC,MAAM;IACdd,GAAG,CAACG,OAAO,CAAEY,SAAS,CAAC,YAAY;MACjC,MAAMC,GAAG,GAAGL,MAAM,CAAC,CAAC;MACpB,IAAIK,GAAG,EAAE;QACPJ,KAAK,CAACT,OAAO,GAAGa,GAAG;MACrB;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACX,IAAIJ,KAAK,CAACT,OAAO,EAAE;QACjB,IAAIS,KAAK,CAACT,OAAO,YAAYc,OAAO,EAAE;UACpCL,KAAK,CAACT,OAAO,CAACe,IAAI,CAAEF,GAAG,IAAKA,GAAG,IAAIA,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,MAAM;UACLJ,KAAK,CAACT,OAAO,CAAC,CAAC;QACjB;MACF;IACF,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EACN,OAAOH,GAAG;AACZ,CAAC;AAACK,OAAA,CAAAJ,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
+ warnIfNotHardwareAccelerated: true,
7
8
  WebGPUModule: true
8
9
  };
9
10
  Object.defineProperty(exports, "WebGPUModule", {
@@ -12,6 +13,7 @@ Object.defineProperty(exports, "WebGPUModule", {
12
13
  return _NativeWebGPUModule.default;
13
14
  }
14
15
  });
16
+ exports.warnIfNotHardwareAccelerated = void 0;
15
17
  var _NativeWebGPUModule = _interopRequireDefault(require("./NativeWebGPUModule"));
16
18
  var _Canvas = require("./Canvas");
17
19
  Object.keys(_Canvas).forEach(function (key) {
@@ -49,21 +51,27 @@ Object.keys(_WebGPUViewNativeComponent).forEach(function (key) {
49
51
  }
50
52
  });
51
53
  });
52
- var _utils = require("./utils");
53
- Object.keys(_utils).forEach(function (key) {
54
+ var _hooks = require("./hooks");
55
+ Object.keys(_hooks).forEach(function (key) {
54
56
  if (key === "default" || key === "__esModule") return;
55
57
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
56
- if (key in exports && exports[key] === _utils[key]) return;
58
+ if (key in exports && exports[key] === _hooks[key]) return;
57
59
  Object.defineProperty(exports, key, {
58
60
  enumerable: true,
59
61
  get: function () {
60
- return _utils[key];
62
+ return _hooks[key];
61
63
  }
62
64
  });
63
65
  });
64
66
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
65
67
  /* eslint-disable @typescript-eslint/no-explicit-any */
66
68
 
69
+ const warnIfNotHardwareAccelerated = adapter => {
70
+ if (adapter.info.architecture === "swiftshader") {
71
+ console.warn("GPUAdapter is not hardware accelerated. This is common on Android emulators. Rendering will be slow.");
72
+ }
73
+ };
74
+ exports.warnIfNotHardwareAccelerated = warnIfNotHardwareAccelerated;
67
75
  const GPU = {};
68
76
  GPU[Symbol.hasInstance] = function (instance) {
69
77
  return "__brand" in instance && instance.__brand === "GPU";
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeWebGPUModule","_interopRequireDefault","require","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_utils","e","__esModule","default","GPU","Symbol","hasInstance","instance","__brand","GPUAdapter","GPUAdapterInfo","GPUBindGroup","GPUBindGroupLayout","GPUBuffer","GPUCanvasContext","GPUCommandBuffer","GPUCommandEncoder","GPUCompilationInfo","GPUCompilationMessage","GPUComputePassEncoder","GPUComputePipeline","GPUDevice","GPUDeviceLostInfo","GPUError","GPUExternalTexture","GPUPipelineLayout","GPUQuerySet","GPUQueue","GPURenderBundle","GPURenderBundleEncoder","GPURenderPassEncoder","GPURenderPipeline","GPUSampler","GPUShaderModule","GPUTexture","GPUTextureView","global","WebGPUNativeModule","install","navigator","gpu","RNWebGPU","userAgent","createImageBitmap","params","Promise","resolve"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_NativeWebGPUModule","_interopRequireDefault","require","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","e","__esModule","default","warnIfNotHardwareAccelerated","adapter","info","architecture","console","warn","GPU","Symbol","hasInstance","instance","__brand","GPUAdapter","GPUAdapterInfo","GPUBindGroup","GPUBindGroupLayout","GPUBuffer","GPUCanvasContext","GPUCommandBuffer","GPUCommandEncoder","GPUCompilationInfo","GPUCompilationMessage","GPUComputePassEncoder","GPUComputePipeline","GPUDevice","GPUDeviceLostInfo","GPUError","GPUExternalTexture","GPUPipelineLayout","GPUQuerySet","GPUQueue","GPURenderBundle","GPURenderBundleEncoder","GPURenderPassEncoder","GPURenderPipeline","GPUSampler","GPUShaderModule","GPUTexture","GPUTextureView","global","WebGPUNativeModule","install","navigator","gpu","RNWebGPU","userAgent","createImageBitmap","params","Promise","resolve"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,14 @@
1
1
  import { useEffect, useRef, useState } from "react";
2
- export const warnIfNotHardwareAccelerated = adapter => {
3
- if (adapter.info.architecture === "swiftshader") {
4
- console.warn("GPUAdapter is not hardware accelerated. This is common on Android emulators. Rendering will be slow.");
5
- }
2
+ export const useSurface = () => {
3
+ const [surface, setSurface] = useState(null);
4
+ const ref = useCanvasEffect(() => {
5
+ const sur = ref.current.getNativeSurface();
6
+ setSurface(sur);
7
+ });
8
+ return {
9
+ ref,
10
+ surface
11
+ };
6
12
  };
7
13
  export const useGPUContext = () => {
8
14
  const [context, setContext] = useState(null);
@@ -38,4 +44,4 @@ export const useCanvasEffect = effect => {
38
44
  }, []);
39
45
  return ref;
40
46
  };
41
- //# sourceMappingURL=utils.js.map
47
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useState","useSurface","surface","setSurface","ref","useCanvasEffect","sur","current","getNativeSurface","useGPUContext","context","setContext","ctx","getContext","effect","unsub","whenReady","sub","Promise","then"],"sourceRoot":"../../src","sources":["hooks.ts"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAMnD,OAAO,MAAMC,UAAU,GAAGA,CAAA,KAAM;EAC9B,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGH,QAAQ,CAAsB,IAAI,CAAC;EACjE,MAAMI,GAAG,GAAGC,eAAe,CAAC,MAAM;IAChC,MAAMC,GAAG,GAAGF,GAAG,CAACG,OAAO,CAAEC,gBAAgB,CAAC,CAAC;IAC3CL,UAAU,CAACG,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,OAAO;IAAEF,GAAG;IAAEF;EAAQ,CAAC;AACzB,CAAC;AAED,OAAO,MAAMO,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGX,QAAQ,CAAyB,IAAI,CAAC;EACpE,MAAMI,GAAG,GAAGC,eAAe,CAAC,MAAM;IAChC,MAAMO,GAAG,GAAGR,GAAG,CAACG,OAAO,CAAEM,UAAU,CAAC,QAAQ,CAAE;IAC9CF,UAAU,CAACC,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,OAAO;IAAER,GAAG;IAAEM;EAAQ,CAAC;AACzB,CAAC;AAED,OAAO,MAAML,eAAe,GAC1BS,MAIiB,IACd;EACH,MAAMC,KAAK,GAAGhB,MAAM,CAAmD,IAAI,CAAC;EAC5E,MAAMK,GAAG,GAAGL,MAAM,CAAY,IAAI,CAAC;EACnCD,SAAS,CAAC,MAAM;IACdM,GAAG,CAACG,OAAO,CAAES,SAAS,CAAC,YAAY;MACjC,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;MACpB,IAAIG,GAAG,EAAE;QACPF,KAAK,CAACR,OAAO,GAAGU,GAAG;MACrB;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACX,IAAIF,KAAK,CAACR,OAAO,EAAE;QACjB,IAAIQ,KAAK,CAACR,OAAO,YAAYW,OAAO,EAAE;UACpCH,KAAK,CAACR,OAAO,CAACY,IAAI,CAAEF,GAAG,IAAKA,GAAG,IAAIA,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,MAAM;UACLF,KAAK,CAACR,OAAO,CAAC,CAAC;QACjB;MACF;IACF,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EACN,OAAOH,GAAG;AACZ,CAAC","ignoreList":[]}
@@ -3,8 +3,13 @@ import WebGPUNativeModule from "./NativeWebGPUModule";
3
3
  export * from "./Canvas";
4
4
  export * from "./Offscreen";
5
5
  export * from "./WebGPUViewNativeComponent";
6
- export * from "./utils";
6
+ export * from "./hooks";
7
7
  export { default as WebGPUModule } from "./NativeWebGPUModule";
8
+ export const warnIfNotHardwareAccelerated = adapter => {
9
+ if (adapter.info.architecture === "swiftshader") {
10
+ console.warn("GPUAdapter is not hardware accelerated. This is common on Android emulators. Rendering will be slow.");
11
+ }
12
+ };
8
13
  const GPU = {};
9
14
  GPU[Symbol.hasInstance] = function (instance) {
10
15
  return "__brand" in instance && instance.__brand === "GPU";
@@ -1 +1 @@
1
- {"version":3,"names":["WebGPUNativeModule","default","WebGPUModule","GPU","Symbol","hasInstance","instance","__brand","GPUAdapter","GPUAdapterInfo","GPUBindGroup","GPUBindGroupLayout","GPUBuffer","GPUCanvasContext","GPUCommandBuffer","GPUCommandEncoder","GPUCompilationInfo","GPUCompilationMessage","GPUComputePassEncoder","GPUComputePipeline","GPUDevice","GPUDeviceLostInfo","GPUError","GPUExternalTexture","GPUPipelineLayout","GPUQuerySet","GPUQueue","GPURenderBundle","GPURenderBundleEncoder","GPURenderPassEncoder","GPURenderPipeline","GPUSampler","GPUShaderModule","GPUTexture","GPUTextureView","global","install","navigator","gpu","RNWebGPU","userAgent","createImageBitmap","params","Promise","resolve"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebGPUNativeModule","default","WebGPUModule","warnIfNotHardwareAccelerated","adapter","info","architecture","console","warn","GPU","Symbol","hasInstance","instance","__brand","GPUAdapter","GPUAdapterInfo","GPUBindGroup","GPUBindGroupLayout","GPUBuffer","GPUCanvasContext","GPUCommandBuffer","GPUCommandEncoder","GPUCompilationInfo","GPUCompilationMessage","GPUComputePassEncoder","GPUComputePipeline","GPUDevice","GPUDeviceLostInfo","GPUError","GPUExternalTexture","GPUPipelineLayout","GPUQuerySet","GPUQueue","GPURenderBundle","GPURenderBundleEncoder","GPURenderPassEncoder","GPURenderPipeline","GPUSampler","GPUShaderModule","GPUTexture","GPUTextureView","global","install","navigator","gpu","RNWebGPU","userAgent","createImageBitmap","params","Promise","resolve"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,12 @@
1
1
  export const __esModule: boolean;
2
- export function warnIfNotHardwareAccelerated(adapter: any): void;
2
+ export function useSurface(): {
3
+ ref: _react.MutableRefObject<null>;
4
+ surface: null;
5
+ };
3
6
  export function useGPUContext(): {
4
7
  ref: _react.MutableRefObject<null>;
5
8
  context: null;
6
9
  };
7
10
  export function useCanvasEffect(effect: any): _react.MutableRefObject<null>;
8
11
  import _react = require("react");
9
- //# sourceMappingURL=utils.d.ts.map
12
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../commonjs/hooks.js"],"names":[],"mappings":";AAOA;;;EAUC;AAED;;;EAUC;AAED,4EAsBC"}
@@ -1,3 +1,4 @@
1
1
  export const __esModule: boolean;
2
2
  export const WebGPUModule: any;
3
+ export function warnIfNotHardwareAccelerated(adapter: any): void;
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../commonjs/index.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../commonjs/index.js"],"names":[],"mappings":";;AAoEA,iEAIC"}
@@ -1,7 +1,10 @@
1
- export function warnIfNotHardwareAccelerated(adapter: any): void;
1
+ export function useSurface(): {
2
+ ref: import("react").MutableRefObject<null>;
3
+ surface: null;
4
+ };
2
5
  export function useGPUContext(): {
3
6
  ref: import("react").MutableRefObject<null>;
4
7
  context: null;
5
8
  };
6
9
  export function useCanvasEffect(effect: any): import("react").MutableRefObject<null>;
7
- //# sourceMappingURL=utils.d.ts.map
10
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../module/hooks.js"],"names":[],"mappings":"AACO;;;EAUN;AACM;;;EAUN;AACM,qFAsBN"}
@@ -1,6 +1,7 @@
1
1
  export * from "./Canvas";
2
2
  export * from "./Offscreen";
3
3
  export * from "./WebGPUViewNativeComponent";
4
- export * from "./utils";
4
+ export * from "./hooks";
5
5
  export { default as WebGPUModule } from "./NativeWebGPUModule";
6
+ export function warnIfNotHardwareAccelerated(adapter: any): void;
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../module/index.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../module/index.js"],"names":[],"mappings":";;;;;AAOO,iEAIN"}
@@ -1,10 +1,13 @@
1
- import type { RNCanvasContext, CanvasRef } from "./Canvas";
1
+ import type { RNCanvasContext, CanvasRef, NativeCanvas } from "./Canvas";
2
2
  type Unsubscribe = () => void;
3
- export declare const warnIfNotHardwareAccelerated: (adapter: GPUAdapter) => void;
3
+ export declare const useSurface: () => {
4
+ ref: import("react").RefObject<CanvasRef>;
5
+ surface: NativeCanvas | null;
6
+ };
4
7
  export declare const useGPUContext: () => {
5
8
  ref: import("react").RefObject<CanvasRef>;
6
9
  context: RNCanvasContext | null;
7
10
  };
8
11
  export declare const useCanvasEffect: (effect: () => void | Unsubscribe | Promise<Unsubscribe | void> | Promise<void>) => import("react").RefObject<CanvasRef>;
9
12
  export {};
10
- //# sourceMappingURL=utils.d.ts.map
13
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzE,KAAK,WAAW,GAAG,MAAM,IAAI,CAAC;AAE9B,eAAO,MAAM,UAAU;;;CAOtB,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAOzB,CAAC;AAEF,eAAO,MAAM,eAAe,WAClB,MACJ,IAAI,GACJ,WAAW,GACX,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,yCAuBlB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export * from "./Canvas";
2
2
  export * from "./Offscreen";
3
3
  export * from "./WebGPUViewNativeComponent";
4
- export * from "./utils";
4
+ export * from "./hooks";
5
5
  export { default as WebGPUModule } from "./NativeWebGPUModule";
6
+ export declare const warnIfNotHardwareAccelerated: (adapter: GPUAdapter) => void;
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE/D,eAAO,MAAM,4BAA4B,YAAa,UAAU,SAM/D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-wgpu",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "React Native WebGPU",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -1,15 +1,16 @@
1
1
  import { useEffect, useRef, useState } from "react";
2
2
 
3
- import type { RNCanvasContext, CanvasRef } from "./Canvas";
3
+ import type { RNCanvasContext, CanvasRef, NativeCanvas } from "./Canvas";
4
4
 
5
5
  type Unsubscribe = () => void;
6
6
 
7
- export const warnIfNotHardwareAccelerated = (adapter: GPUAdapter) => {
8
- if (adapter.info.architecture === "swiftshader") {
9
- console.warn(
10
- "GPUAdapter is not hardware accelerated. This is common on Android emulators. Rendering will be slow.",
11
- );
12
- }
7
+ export const useSurface = () => {
8
+ const [surface, setSurface] = useState<NativeCanvas | null>(null);
9
+ const ref = useCanvasEffect(() => {
10
+ const sur = ref.current!.getNativeSurface();
11
+ setSurface(sur);
12
+ });
13
+ return { ref, surface };
13
14
  };
14
15
 
15
16
  export const useGPUContext = () => {
package/src/index.tsx CHANGED
@@ -4,9 +4,17 @@ import WebGPUNativeModule from "./NativeWebGPUModule";
4
4
  export * from "./Canvas";
5
5
  export * from "./Offscreen";
6
6
  export * from "./WebGPUViewNativeComponent";
7
- export * from "./utils";
7
+ export * from "./hooks";
8
8
  export { default as WebGPUModule } from "./NativeWebGPUModule";
9
9
 
10
+ export const warnIfNotHardwareAccelerated = (adapter: GPUAdapter) => {
11
+ if (adapter.info.architecture === "swiftshader") {
12
+ console.warn(
13
+ "GPUAdapter is not hardware accelerated. This is common on Android emulators. Rendering will be slow.",
14
+ );
15
+ }
16
+ };
17
+
10
18
  const GPU: any = {};
11
19
  GPU[Symbol.hasInstance] = function (instance: object) {
12
20
  return "__brand" in instance && instance.__brand === "GPU";
@@ -1,49 +0,0 @@
1
- #pragma once
2
-
3
- #include "webgpu/webgpu_cpp.h"
4
-
5
- #include "Canvas.h"
6
-
7
- namespace rnwgpu {
8
-
9
- class OffscreenSurface {
10
- public:
11
- explicit OffscreenSurface(std::shared_ptr<Canvas> canvas)
12
- : _canvas(std::move(canvas)) {
13
- #if defined(__ANDROID__)
14
- _textureFormat = wgpu::TextureFormat::RGBA8Unorm;
15
- #else
16
- _textureFormat = wgpu::TextureFormat::BGRA8Unorm;
17
- #endif // defined(__ANDROID__)
18
- }
19
-
20
- void configure(const wgpu::SurfaceConfiguration &config) {
21
- // Configure the canvas context with the device and format
22
- _device = config.device;
23
-
24
- wgpu::TextureDescriptor textureDesc;
25
- textureDesc.size.width = _canvas->getWidth();
26
- textureDesc.size.height = _canvas->getHeight();
27
- textureDesc.format = _textureFormat;
28
- textureDesc.usage = wgpu::TextureUsage::RenderAttachment |
29
- wgpu::TextureUsage::CopySrc |
30
- wgpu::TextureUsage::TextureBinding;
31
-
32
- _texture = _device.CreateTexture(&textureDesc);
33
- }
34
-
35
- wgpu::Texture getCurrentTexture() {
36
- if (!_texture) {
37
- throw std::runtime_error("Texture is not configured");
38
- }
39
- return _texture;
40
- }
41
-
42
- private:
43
- wgpu::TextureFormat _textureFormat;
44
- wgpu::Texture _texture = nullptr;
45
- wgpu::Device _device;
46
- std::shared_ptr<Canvas> _canvas;
47
- };
48
-
49
- } // namespace rnwgpu
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","warnIfNotHardwareAccelerated","adapter","info","architecture","console","warn","exports","useGPUContext","context","setContext","useState","ref","useCanvasEffect","ctx","current","getContext","effect","unsub","useRef","useEffect","whenReady","sub","Promise","then"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAMO,MAAMC,4BAA4B,GAAIC,OAAmB,IAAK;EACnE,IAAIA,OAAO,CAACC,IAAI,CAACC,YAAY,KAAK,aAAa,EAAE;IAC/CC,OAAO,CAACC,IAAI,CACV,sGACF,CAAC;EACH;AACF,CAAC;AAACC,OAAA,CAAAN,4BAAA,GAAAA,4BAAA;AAEK,MAAMO,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAyB,IAAI,CAAC;EACpE,MAAMC,GAAG,GAAGC,eAAe,CAAC,MAAM;IAChC,MAAMC,GAAG,GAAGF,GAAG,CAACG,OAAO,CAAEC,UAAU,CAAC,QAAQ,CAAE;IAC9CN,UAAU,CAACI,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,OAAO;IAAEF,GAAG;IAAEH;EAAQ,CAAC;AACzB,CAAC;AAACF,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAEK,MAAMK,eAAe,GAC1BI,MAIiB,IACd;EACH,MAAMC,KAAK,GAAG,IAAAC,aAAM,EAAmD,IAAI,CAAC;EAC5E,MAAMP,GAAG,GAAG,IAAAO,aAAM,EAAY,IAAI,CAAC;EACnC,IAAAC,gBAAS,EAAC,MAAM;IACdR,GAAG,CAACG,OAAO,CAAEM,SAAS,CAAC,YAAY;MACjC,MAAMC,GAAG,GAAGL,MAAM,CAAC,CAAC;MACpB,IAAIK,GAAG,EAAE;QACPJ,KAAK,CAACH,OAAO,GAAGO,GAAG;MACrB;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACX,IAAIJ,KAAK,CAACH,OAAO,EAAE;QACjB,IAAIG,KAAK,CAACH,OAAO,YAAYQ,OAAO,EAAE;UACpCL,KAAK,CAACH,OAAO,CAACS,IAAI,CAAEF,GAAG,IAAKA,GAAG,IAAIA,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,MAAM;UACLJ,KAAK,CAACH,OAAO,CAAC,CAAC;QACjB;MACF;IACF,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EACN,OAAOH,GAAG;AACZ,CAAC;AAACL,OAAA,CAAAM,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useRef","useState","warnIfNotHardwareAccelerated","adapter","info","architecture","console","warn","useGPUContext","context","setContext","ref","useCanvasEffect","ctx","current","getContext","effect","unsub","whenReady","sub","Promise","then"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAMnD,OAAO,MAAMC,4BAA4B,GAAIC,OAAmB,IAAK;EACnE,IAAIA,OAAO,CAACC,IAAI,CAACC,YAAY,KAAK,aAAa,EAAE;IAC/CC,OAAO,CAACC,IAAI,CACV,sGACF,CAAC;EACH;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EACjC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGT,QAAQ,CAAyB,IAAI,CAAC;EACpE,MAAMU,GAAG,GAAGC,eAAe,CAAC,MAAM;IAChC,MAAMC,GAAG,GAAGF,GAAG,CAACG,OAAO,CAAEC,UAAU,CAAC,QAAQ,CAAE;IAC9CL,UAAU,CAACG,GAAG,CAAC;EACjB,CAAC,CAAC;EACF,OAAO;IAAEF,GAAG;IAAEF;EAAQ,CAAC;AACzB,CAAC;AAED,OAAO,MAAMG,eAAe,GAC1BI,MAIiB,IACd;EACH,MAAMC,KAAK,GAAGjB,MAAM,CAAmD,IAAI,CAAC;EAC5E,MAAMW,GAAG,GAAGX,MAAM,CAAY,IAAI,CAAC;EACnCD,SAAS,CAAC,MAAM;IACdY,GAAG,CAACG,OAAO,CAAEI,SAAS,CAAC,YAAY;MACjC,MAAMC,GAAG,GAAGH,MAAM,CAAC,CAAC;MACpB,IAAIG,GAAG,EAAE;QACPF,KAAK,CAACH,OAAO,GAAGK,GAAG;MACrB;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACX,IAAIF,KAAK,CAACH,OAAO,EAAE;QACjB,IAAIG,KAAK,CAACH,OAAO,YAAYM,OAAO,EAAE;UACpCH,KAAK,CAACH,OAAO,CAACO,IAAI,CAAEF,GAAG,IAAKA,GAAG,IAAIA,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,MAAM;UACLF,KAAK,CAACH,OAAO,CAAC,CAAC;QACjB;MACF;IACF,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EACN,OAAOH,GAAG;AACZ,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../commonjs/utils.js"],"names":[],"mappings":";AAOA,iEAIC;AAED;;;EAUC;AAED,4EAsBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../module/utils.js"],"names":[],"mappings":"AACO,iEAIN;AACM;;;EAUN;AACM,qFAsBN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE3D,KAAK,WAAW,GAAG,MAAM,IAAI,CAAC;AAE9B,eAAO,MAAM,4BAA4B,YAAa,UAAU,SAM/D,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAOzB,CAAC;AAEF,eAAO,MAAM,eAAe,WAClB,MACJ,IAAI,GACJ,WAAW,GACX,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,yCAuBlB,CAAC"}