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.
- package/android/cpp/cpp-adapter.cpp +18 -9
- package/android/src/main/java/com/webgpu/WebGPUView.java +10 -1
- package/cpp/rnwgpu/RNWebGPUManager.cpp +1 -0
- package/cpp/rnwgpu/RNWebGPUManager.h +1 -0
- package/cpp/rnwgpu/SurfaceRegistry.h +143 -96
- package/cpp/rnwgpu/api/GPUCanvasContext.cpp +14 -82
- package/cpp/rnwgpu/api/GPUCanvasContext.h +7 -13
- package/cpp/rnwgpu/api/RNWebGPU.h +7 -3
- package/ios/MetalView.mm +2 -0
- package/ios/SurfaceUtils.mm +7 -8
- package/lib/commonjs/{utils.js → hooks.js} +13 -7
- package/lib/commonjs/hooks.js.map +1 -0
- package/lib/commonjs/index.js +12 -4
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/{utils.js → hooks.js} +11 -5
- package/lib/module/hooks.js.map +1 -0
- package/lib/module/index.js +6 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/lib/commonjs/{utils.d.ts → hooks.d.ts} +5 -2
- package/lib/typescript/lib/commonjs/hooks.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/index.d.ts +1 -0
- package/lib/typescript/lib/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/lib/module/{utils.d.ts → hooks.d.ts} +5 -2
- package/lib/typescript/lib/module/hooks.d.ts.map +1 -0
- package/lib/typescript/lib/module/index.d.ts +2 -1
- package/lib/typescript/lib/module/index.d.ts.map +1 -1
- package/lib/typescript/src/{utils.d.ts → hooks.d.ts} +6 -3
- package/lib/typescript/src/hooks.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +2 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/{utils.ts → hooks.ts} +8 -7
- package/src/index.tsx +9 -1
- package/cpp/rnwgpu/api/OffscreenSurface.h +0 -49
- package/lib/commonjs/utils.js.map +0 -1
- package/lib/module/utils.js.map +0 -1
- package/lib/typescript/lib/commonjs/utils.d.ts.map +0 -1
- package/lib/typescript/lib/module/utils.d.ts.map +0 -1
- 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 ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
34
|
-
|
|
35
|
-
|
|
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 ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
45
|
-
|
|
46
|
-
|
|
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 ®istry = 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 ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
52
|
-
|
|
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
|
-
|
|
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));
|
|
@@ -8,23 +8,71 @@
|
|
|
8
8
|
|
|
9
9
|
namespace rnwgpu {
|
|
10
10
|
|
|
11
|
-
struct
|
|
11
|
+
struct NativeInfo {
|
|
12
|
+
void *nativeSurface;
|
|
12
13
|
int width;
|
|
13
14
|
int height;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
|
-
struct
|
|
17
|
-
void *nativeSurface = nullptr;
|
|
18
|
-
wgpu::Surface surface;
|
|
17
|
+
struct Size {
|
|
19
18
|
int width;
|
|
20
19
|
int height;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
60
|
-
|
|
108
|
+
void present() {
|
|
109
|
+
std::unique_lock<std::shared_mutex> lock(_mutex);
|
|
110
|
+
if (surface) {
|
|
111
|
+
surface.Present();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
61
114
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (
|
|
65
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
79
|
-
|
|
136
|
+
wgpu::Device getDevice() {
|
|
137
|
+
std::shared_lock<std::shared_mutex> lock(_mutex);
|
|
138
|
+
return config.device;
|
|
80
139
|
}
|
|
81
140
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
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
|
-
|
|
94
|
-
|
|
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
|
|
108
|
-
|
|
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
|
-
|
|
183
|
+
return nullptr;
|
|
113
184
|
}
|
|
114
185
|
|
|
115
|
-
void
|
|
186
|
+
void removeSurfaceInfo(int id) {
|
|
116
187
|
std::unique_lock<std::shared_mutex> lock(_mutex);
|
|
117
|
-
|
|
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
|
-
|
|
125
|
-
|
|
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
|
-
|
|
194
|
+
auto info = std::make_shared<SurfaceInfo>(gpu, width, height);
|
|
195
|
+
_registry[id] = info;
|
|
196
|
+
return info;
|
|
136
197
|
}
|
|
137
198
|
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
143
|
-
if (
|
|
144
|
-
|
|
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
|
-
|
|
27
|
-
auto height = _canvas->getHeight();
|
|
28
|
-
surfaceConfiguration.width = width;
|
|
29
|
-
surfaceConfiguration.height = height;
|
|
30
|
-
_surfaceConfiguration = surfaceConfiguration;
|
|
31
|
-
// Are we onscreen now?
|
|
32
|
-
auto ®istry = 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
|
-
|
|
68
|
-
|
|
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(
|
|
44
|
+
dawn::native::metal::WaitForCommandsToBeScheduled(
|
|
45
|
+
_surfaceInfo->getDevice().Get());
|
|
100
46
|
#endif
|
|
101
|
-
auto
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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"),
|
|
47
|
-
_gpu(std::move(gpu)) {
|
|
44
|
+
: HybridObject("GPUCanvasContext"), _gpu(std::move(gpu)) {
|
|
48
45
|
_canvas = std::make_shared<Canvas>(nullptr, width, height);
|
|
49
|
-
|
|
46
|
+
auto ®istry = 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
|
-
|
|
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
|
-
|
|
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 ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
57
|
-
auto info = registry.
|
|
58
|
-
|
|
59
|
-
|
|
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
package/ios/SurfaceUtils.mm
CHANGED
|
@@ -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 ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
15
|
-
|
|
16
|
-
|
|
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 ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
23
|
-
|
|
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 ®istry = rnwgpu::SurfaceRegistry::getInstance();
|
|
31
30
|
// Remove the surface info from the registry
|
|
32
|
-
registry.
|
|
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.
|
|
6
|
+
exports.useSurface = exports.useGPUContext = exports.useCanvasEffect = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
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.
|
|
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=
|
|
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":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -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
|
|
53
|
-
Object.keys(
|
|
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] ===
|
|
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
|
|
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","
|
|
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
|
|
3
|
-
|
|
4
|
-
|
|
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=
|
|
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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -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 "./
|
|
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";
|
package/lib/module/index.js.map
CHANGED
|
@@ -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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
|
|
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
|
|
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=
|
|
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 +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
|
|
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=
|
|
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 "./
|
|
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
|
|
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=
|
|
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 "./
|
|
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,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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 "./
|
|
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":[]}
|
package/lib/module/utils.js.map
DELETED
|
@@ -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"}
|