react-native-wgpu 0.1.9 → 0.1.11

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 +148 -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
+ }
24
50
 
25
- void flushTextureToSurface() {
26
- // 1.a flush texture to the onscreen surface
27
- if (texture) {
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
+ }
64
+
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,129 @@ 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
-
54
- class SurfaceRegistry {
55
- private:
56
- std::unordered_map<int, SurfaceInfo> _registry;
57
- mutable std::shared_mutex _mutex;
58
101
 
59
- // Private constructor to prevent instantiation
60
- SurfaceRegistry() {}
102
+ void resize(int newWidth, int newHeight) {
103
+ std::unique_lock<std::shared_mutex> lock(_mutex);
104
+ width = newWidth;
105
+ height = newHeight;
106
+ }
61
107
 
62
- void updateSurface(const int contextId, SurfaceInfo &info) {
63
- auto it = _registry.find(contextId);
64
- if (it != _registry.end()) {
65
- it->second = info;
108
+ void present() {
109
+ std::unique_lock<std::shared_mutex> lock(_mutex);
110
+ if (surface) {
111
+ surface.Present();
66
112
  }
67
113
  }
68
114
 
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
- // }
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;
123
+ }
124
+ }
77
125
 
78
- bool hasSurfaceInfo(const int contextId) const {
79
- return _registry.find(contextId) != _registry.end();
126
+ NativeInfo getNativeInfo() {
127
+ std::shared_lock<std::shared_mutex> lock(_mutex);
128
+ return {.nativeSurface = nativeSurface, .width = width, .height = height};
80
129
  }
81
130
 
82
- public:
83
- // Delete copy constructor and assignment operator
84
- SurfaceRegistry(const SurfaceRegistry &) = delete;
85
- SurfaceRegistry &operator=(const SurfaceRegistry &) = delete;
131
+ Size getSize() {
132
+ std::shared_lock<std::shared_mutex> lock(_mutex);
133
+ return {.width = width, .height = height};
134
+ }
86
135
 
87
- // Static method to get the singleton instance
88
- static SurfaceRegistry &getInstance() {
89
- static SurfaceRegistry instance;
90
- return instance;
136
+ wgpu::SurfaceConfiguration getConfig() {
137
+ std::shared_lock<std::shared_mutex> lock(_mutex);
138
+ return config;
91
139
  }
92
140
 
93
- void removeSurface(const int contextId) {
94
- std::unique_lock<std::shared_mutex> lock(_mutex);
95
- _registry.erase(contextId);
141
+ wgpu::Device getDevice() {
142
+ std::shared_lock<std::shared_mutex> lock(_mutex);
143
+ return config.device;
96
144
  }
97
145
 
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;
146
+ private:
147
+ void _configure() {
148
+ if (surface) {
149
+ surface.Configure(&config);
150
+ } else {
151
+ wgpu::TextureDescriptor textureDesc;
152
+ textureDesc.format = config.format;
153
+ textureDesc.size.width = config.width;
154
+ textureDesc.size.height = config.height;
155
+ textureDesc.usage = wgpu::TextureUsage::RenderAttachment |
156
+ wgpu::TextureUsage::CopySrc |
157
+ wgpu::TextureUsage::TextureBinding;
158
+ texture = config.device.CreateTexture(&textureDesc);
103
159
  }
104
- return std::nullopt;
105
160
  }
106
161
 
107
- SurfaceInfo getSurface(const int contextId) const {
108
- auto it = _registry.find(contextId);
162
+ mutable std::shared_mutex _mutex;
163
+ void *nativeSurface = nullptr;
164
+ wgpu::Surface surface = nullptr;
165
+ wgpu::Texture texture = nullptr;
166
+ wgpu::Instance gpu;
167
+ wgpu::SurfaceConfiguration config;
168
+ int width;
169
+ int height;
170
+ };
171
+
172
+ class SurfaceRegistry {
173
+ public:
174
+ static SurfaceRegistry &getInstance() {
175
+ static SurfaceRegistry instance;
176
+ return instance;
177
+ }
178
+
179
+ SurfaceRegistry(const SurfaceRegistry &) = delete;
180
+ SurfaceRegistry &operator=(const SurfaceRegistry &) = delete;
181
+
182
+ std::shared_ptr<SurfaceInfo> getSurfaceInfo(int id) {
183
+ std::shared_lock<std::shared_mutex> lock(_mutex);
184
+ auto it = _registry.find(id);
109
185
  if (it != _registry.end()) {
110
186
  return it->second;
111
187
  }
112
- throw std::out_of_range("Surface not found");
188
+ return nullptr;
113
189
  }
114
190
 
115
- void setSize(const int contextId, int width, int height) {
191
+ void removeSurfaceInfo(int id) {
116
192
  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
- }
193
+ _registry.erase(id);
122
194
  }
123
195
 
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;
196
+ std::shared_ptr<SurfaceInfo> addSurfaceInfo(int id, wgpu::Instance gpu,
197
+ int width, int height) {
134
198
  std::unique_lock<std::shared_mutex> lock(_mutex);
135
- _registry[contextId] = info;
199
+ auto info = std::make_shared<SurfaceInfo>(gpu, width, height);
200
+ _registry[id] = info;
201
+ return info;
136
202
  }
137
203
 
138
- void createSurface(const int contextId, void *nativeSurface, int width,
139
- int height,
140
- std::shared_ptr<PlatformContext> platformContext) {
204
+ std::shared_ptr<SurfaceInfo>
205
+ getSurfaceInfoOrCreate(int id, wgpu::Instance gpu, int width, int height) {
141
206
  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;
207
+ auto it = _registry.find(id);
208
+ if (it != _registry.end()) {
209
+ return it->second;
166
210
  }
211
+ auto info = std::make_shared<SurfaceInfo>(gpu, width, height);
212
+ _registry[id] = info;
213
+ return info;
167
214
  }
215
+
216
+ private:
217
+ SurfaceRegistry() = default;
218
+ mutable std::shared_mutex _mutex;
219
+ std::unordered_map<int, std::shared_ptr<SurfaceInfo>> _registry;
168
220
  };
169
221
 
170
222
  } // 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->getConfig();
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.11",
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"}