react-native-wgpu 0.1.16 → 0.1.18

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.
@@ -0,0 +1,79 @@
1
+ package com.webgpu;
2
+
3
+ import android.annotation.SuppressLint;
4
+ import android.content.Context;
5
+ import android.graphics.PixelFormat;
6
+ import android.os.Build;
7
+ import android.view.Surface;
8
+ import android.view.SurfaceControl;
9
+ import android.view.SurfaceHolder;
10
+ import android.view.SurfaceView;
11
+
12
+ import androidx.annotation.NonNull;
13
+ import androidx.annotation.RequiresApi;
14
+
15
+
16
+ @SuppressLint("ViewConstructor")
17
+ @RequiresApi(api = Build.VERSION_CODES.Q)
18
+ public class SurfaceView2 extends SurfaceView implements SurfaceHolder.Callback {
19
+
20
+ WebGPUAPI mApi;
21
+ SurfaceControl mSurfaceControl;
22
+ Surface mSurface;
23
+
24
+ public SurfaceView2(Context context, WebGPUAPI api) {
25
+ super(context);
26
+ mApi = api;
27
+ getHolder().addCallback(this);
28
+ }
29
+
30
+ @Override
31
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
32
+ super.onLayout(changed, left, top, right, bottom);
33
+
34
+ }
35
+
36
+ @Override
37
+ protected void onDetachedFromWindow() {
38
+ super.onDetachedFromWindow();
39
+ }
40
+
41
+ @Override
42
+ public void surfaceCreated(@NonNull SurfaceHolder holder) {
43
+ if (mSurfaceControl != null) {
44
+ SurfaceControl.Transaction tr = new SurfaceControl.Transaction();
45
+ tr.setVisibility(mSurfaceControl, true);
46
+ tr.reparent(mSurfaceControl, getSurfaceControl());
47
+ tr.apply();
48
+ } else {
49
+ SurfaceControl.Builder scb = new SurfaceControl.Builder();
50
+ scb.setName("WebGPUView");
51
+ scb.setOpaque(false);
52
+ scb.setBufferSize(getWidth(), getHeight());
53
+ scb.setParent(getSurfaceControl());
54
+ scb.setFormat(PixelFormat.RGBA_8888);
55
+ mSurfaceControl = scb.build();
56
+ mSurface = new Surface(mSurfaceControl);
57
+ mApi.surfaceCreated(mSurface);
58
+ }
59
+ SurfaceControl.Transaction tr = new SurfaceControl.Transaction();
60
+ tr.setVisibility(mSurfaceControl, true);
61
+ tr.apply();
62
+ }
63
+
64
+ @Override
65
+ public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
66
+ mApi.surfaceChanged(mSurface);
67
+ SurfaceControl.Transaction tr = new SurfaceControl.Transaction();
68
+ tr.setVisibility(mSurfaceControl, true);
69
+ tr.setBufferSize(mSurfaceControl, getWidth(), getHeight());
70
+ tr.apply();
71
+ }
72
+
73
+ @Override
74
+ public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
75
+ SurfaceControl.Transaction tr = new SurfaceControl.Transaction();
76
+ tr.reparent(mSurfaceControl, null);
77
+ tr.apply();
78
+ }
79
+ }
@@ -17,6 +17,7 @@ public class WebGPUTextureView extends TextureView implements TextureView.Surfac
17
17
  public WebGPUTextureView(Context context, WebGPUAPI api) {
18
18
  super(context);
19
19
  mApi = api;
20
+ setOpaque(false);
20
21
  setSurfaceTextureListener(this);
21
22
  }
22
23
 
@@ -5,13 +5,35 @@ import android.os.Build;
5
5
  import android.view.Surface;
6
6
  import android.view.View;
7
7
 
8
+ import androidx.annotation.NonNull;
9
+ import androidx.annotation.Nullable;
10
+ import androidx.annotation.StringDef;
11
+
8
12
  import com.facebook.proguard.annotations.DoNotStrip;
9
13
  import com.facebook.react.uimanager.ThemedReactContext;
10
14
  import com.facebook.react.views.view.ReactViewGroup;
11
15
 
16
+ import java.lang.annotation.Retention;
17
+ import java.lang.annotation.RetentionPolicy;
18
+
12
19
  public class WebGPUView extends ReactViewGroup implements WebGPUAPI {
20
+
21
+ public static final String SURFACE_VIEW = "SurfaceView";
22
+ public static final String TEXTURE_VIEW = "TextureView";
23
+ public static final String HARDWARE_BUFFER = "HardwareBuffer";
24
+ public static final String SURFACE_VIEW2 = "SurfaceView2";
25
+
26
+ @Retention(RetentionPolicy.SOURCE)
27
+ @StringDef({
28
+ SURFACE_VIEW,
29
+ TEXTURE_VIEW,
30
+ HARDWARE_BUFFER,
31
+ SURFACE_VIEW2
32
+ })
33
+ public @interface ViewType {}
34
+
13
35
  private int mContextId;
14
- private boolean mTransparent;
36
+ private @ViewType String mName = null;
15
37
  private WebGPUModule mModule;
16
38
  private View mView;
17
39
 
@@ -29,21 +51,31 @@ public class WebGPUView extends ReactViewGroup implements WebGPUAPI {
29
51
  mContextId = contextId;
30
52
  }
31
53
 
32
- public void setTransparent(boolean transparent) {
54
+ public void setView(@NonNull @ViewType String name) {
33
55
  Context ctx = getContext();
34
- if (mTransparent != transparent) {
35
- removeAllViews();
36
- }
37
- mTransparent = transparent;
38
- // if (mTransparent && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
39
- // mView = new WebGPUAHBView(ctx, this);
40
- // } else
41
- if (transparent) {
42
- mView = new WebGPUTextureView(ctx, this);
43
- } else {
44
- mView = new WebGPUSurfaceView(ctx, this);
56
+ if (mName == null || !mName.equals(name)) {
57
+ removeView(mView);
58
+ mName = name;
59
+ switch (name) {
60
+ case TEXTURE_VIEW -> mView = new WebGPUTextureView(ctx, this);
61
+ case HARDWARE_BUFFER -> {
62
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
63
+ mView = new WebGPUAHBView(ctx, this);
64
+ } else {
65
+ throw new RuntimeException("HardwareBuffer Canvas implementation is only available on API Level 29 and above");
66
+ }
67
+ }
68
+ case SURFACE_VIEW2 -> {
69
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
70
+ mView = new SurfaceView2(ctx, this);
71
+ } else {
72
+ throw new RuntimeException("HardwareBuffer Canvas implementation is only available on API Level 29 and above");
73
+ }
74
+ }
75
+ default -> mView = new WebGPUSurfaceView(ctx, this);
76
+ }
77
+ addView(mView);
45
78
  }
46
- addView(mView);
47
79
  }
48
80
 
49
81
  @Override
@@ -1,6 +1,7 @@
1
1
  package com.webgpu;
2
2
 
3
3
  import androidx.annotation.NonNull;
4
+ import androidx.annotation.Nullable;
4
5
 
5
6
  import com.facebook.react.module.annotations.ReactModule;
6
7
  import com.facebook.react.uimanager.ThemedReactContext;
@@ -24,9 +25,9 @@ public class WebGPUViewManager extends WebGPUViewManagerSpec<WebGPUView> {
24
25
  }
25
26
 
26
27
  @Override
27
- @ReactProp(name = "androidTransparency")
28
- public void setAndroidTransparency(WebGPUView view, boolean value) {
29
- view.setTransparent(value);
28
+ @ReactProp(name = "androidView")
29
+ public void setAndroidView(WebGPUView view, @Nullable String value) {
30
+ view.setView(value == null ? WebGPUView.SURFACE_VIEW : value);
30
31
  }
31
32
 
32
33
  @Override
@@ -8,5 +8,5 @@ import com.facebook.react.uimanager.SimpleViewManager;
8
8
 
9
9
  public abstract class WebGPUViewManagerSpec<T extends View> extends SimpleViewManager<T> {
10
10
  public abstract void setContextId(T view, int contextId);
11
- public abstract void setAndroidTransparency(T view, boolean transparency);
11
+ public abstract void setAndroidView(T view, @Nullable String name);
12
12
  }
@@ -22,7 +22,11 @@ struct Size {
22
22
  class SurfaceInfo {
23
23
  public:
24
24
  SurfaceInfo(wgpu::Instance gpu, int width, int height)
25
- : gpu(gpu), width(width), height(height) {}
25
+ : gpu(std::move(gpu)), width(width), height(height) {}
26
+
27
+ ~SurfaceInfo() {
28
+ surface = nullptr;
29
+ }
26
30
 
27
31
  void reconfigure(int newWidth, int newHeight) {
28
32
  std::unique_lock<std::shared_mutex> lock(_mutex);
@@ -56,6 +56,7 @@ const useSizePaper = _ref => {
56
56
  const Canvas = exports.Canvas = /*#__PURE__*/(0, _react.forwardRef)(({
57
57
  onLayout: _onLayout,
58
58
  androidTransparency,
59
+ androidExperimental,
59
60
  ...props
60
61
  }, ref) => {
61
62
  const viewRef = (0, _react.useRef)(null);
@@ -106,7 +107,9 @@ const Canvas = exports.Canvas = /*#__PURE__*/(0, _react.forwardRef)(({
106
107
  flex: 1
107
108
  },
108
109
  contextId: contextId,
109
- androidTransparency: !!androidTransparency
110
+ androidView:
111
+ // eslint-disable-next-line no-nested-ternary
112
+ androidExperimental ? androidTransparency ? "HardwareBuffer" : "SurfaceView2" : androidTransparency ? "TextureView" : "SurfaceView"
110
113
  }));
111
114
  });
112
115
  //# sourceMappingURL=Canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_react","_WebGPUViewNativeComponent","_interopRequireDefault","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","CONTEXT_COUNTER","generateContextId","useSizeFabric","ref","size","setSize","useState","useLayoutEffect","current","Error","measureInWindow","_x","_y","width","height","onLayout","undefined","useSizePaper","_ref","useCallback","nativeEvent","layout","Canvas","exports","forwardRef","_onLayout","androidTransparency","props","viewRef","useRef","FABRIC","RNWebGPU","fabric","useSize","contextId","_","cb","useEffect","useImperativeHandle","getContextId","getNativeSurface","whenReady","callback","getContext","contextName","MakeWebGPUCanvasContext","React","createElement","View","collapsable","style","flex"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_react","_WebGPUViewNativeComponent","_interopRequireDefault","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","CONTEXT_COUNTER","generateContextId","useSizeFabric","ref","size","setSize","useState","useLayoutEffect","current","Error","measureInWindow","_x","_y","width","height","onLayout","undefined","useSizePaper","_ref","useCallback","nativeEvent","layout","Canvas","exports","forwardRef","_onLayout","androidTransparency","androidExperimental","props","viewRef","useRef","FABRIC","RNWebGPU","fabric","useSize","contextId","_","cb","useEffect","useImperativeHandle","getContextId","getNativeSurface","whenReady","callback","getContext","contextName","MakeWebGPUCanvasContext","React","createElement","View","collapsable","style","flex","androidView"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
@@ -49,6 +49,7 @@ const useSizePaper = _ref => {
49
49
  export const Canvas = /*#__PURE__*/forwardRef(({
50
50
  onLayout: _onLayout,
51
51
  androidTransparency,
52
+ androidExperimental,
52
53
  ...props
53
54
  }, ref) => {
54
55
  const viewRef = useRef(null);
@@ -99,7 +100,9 @@ export const Canvas = /*#__PURE__*/forwardRef(({
99
100
  flex: 1
100
101
  },
101
102
  contextId: contextId,
102
- androidTransparency: !!androidTransparency
103
+ androidView:
104
+ // eslint-disable-next-line no-nested-ternary
105
+ androidExperimental ? androidTransparency ? "HardwareBuffer" : "SurfaceView2" : androidTransparency ? "TextureView" : "SurfaceView"
103
106
  }));
104
107
  });
105
108
  //# sourceMappingURL=Canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["View","forwardRef","useEffect","useImperativeHandle","useRef","useState","useLayoutEffect","useCallback","WebGPUNativeView","CONTEXT_COUNTER","generateContextId","useSizeFabric","ref","size","setSize","current","Error","measureInWindow","_x","_y","width","height","onLayout","undefined","useSizePaper","_ref","nativeEvent","layout","Canvas","_onLayout","androidTransparency","props","viewRef","FABRIC","RNWebGPU","fabric","useSize","contextId","_","cb","getContextId","getNativeSurface","whenReady","callback","getContext","contextName","MakeWebGPUCanvasContext","React","createElement","_extends","collapsable","style","flex"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["View","forwardRef","useEffect","useImperativeHandle","useRef","useState","useLayoutEffect","useCallback","WebGPUNativeView","CONTEXT_COUNTER","generateContextId","useSizeFabric","ref","size","setSize","current","Error","measureInWindow","_x","_y","width","height","onLayout","undefined","useSizePaper","_ref","nativeEvent","layout","Canvas","_onLayout","androidTransparency","androidExperimental","props","viewRef","FABRIC","RNWebGPU","fabric","useSize","contextId","_","cb","getContextId","getNativeSurface","whenReady","callback","getContext","contextName","MakeWebGPUCanvasContext","React","createElement","_extends","collapsable","style","flex","androidView"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../module/Canvas.js"],"names":[],"mappings":"AAgDA,mGAuDG"}
1
+ {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../module/Canvas.js"],"names":[],"mappings":"AAgDA,mGA0DG"}
@@ -28,6 +28,7 @@ export interface CanvasRef {
28
28
  }
29
29
  export declare const Canvas: import("react").ForwardRefExoticComponent<ViewProps & {
30
30
  androidTransparency?: boolean;
31
+ androidExperimental?: boolean;
31
32
  } & import("react").RefAttributes<CanvasRef>>;
32
33
  export {};
33
34
  //# sourceMappingURL=Canvas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../src/Canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AAoBjE,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,QAAQ,EAAE;QACZ,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,CAAC;QACtD,uBAAuB,EAAE,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,eAAe,CAAC;QACrB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,GAAG,WAAW,KAAK,MAAM,CAAC;QACvE,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;KAC7C,CAAC;CACH;AAED,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,UAAU,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI,CAAC;IAC1D,gBAAgB,EAAE,MAAM,YAAY,CAAC;IACrC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC3C;AAqCD,eAAO,MAAM,MAAM;0BAEmB,OAAO;6CAmD3C,CAAC"}
1
+ {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../src/Canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AAoBjE,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,QAAQ,EAAE;QACZ,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,CAAC;QACtD,uBAAuB,EAAE,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,eAAe,CAAC;QACrB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,GAAG,WAAW,KAAK,MAAM,CAAC;QACvE,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;KAC7C,CAAC;CACH;AAED,KAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG;IAC/C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,UAAU,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI,CAAC;IAC1D,gBAAgB,EAAE,MAAM,YAAY,CAAC;IACrC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC3C;AAqCD,eAAO,MAAM,MAAM;0BAEmB,OAAO;0BAAwB,OAAO;6CAiE3E,CAAC"}
@@ -2,7 +2,7 @@ import type { ViewProps } from "react-native";
2
2
  import type { Int32 } from "react-native/Libraries/Types/CodegenTypes";
3
3
  interface NativeProps extends ViewProps {
4
4
  contextId?: Int32;
5
- androidTransparency?: boolean;
5
+ androidView?: string;
6
6
  }
7
7
  declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
8
8
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"WebGPUViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/WebGPUViewNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAEvE,UAAU,WAAY,SAAQ,SAAS;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;;AAGD,wBAAiE"}
1
+ {"version":3,"file":"WebGPUViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/WebGPUViewNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAEvE,UAAU,WAAY,SAAQ,SAAS;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;AAGD,wBAAiE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-wgpu",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "description": "React Native WebGPU",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
package/src/Canvas.tsx CHANGED
@@ -92,55 +92,69 @@ const useSizePaper = (_ref: RefObject<View>) => {
92
92
 
93
93
  export const Canvas = forwardRef<
94
94
  CanvasRef,
95
- ViewProps & { androidTransparency?: boolean }
96
- >(({ onLayout: _onLayout, androidTransparency, ...props }, ref) => {
97
- const viewRef = useRef(null);
98
- const FABRIC = RNWebGPU.fabric;
99
- const useSize = FABRIC ? useSizeFabric : useSizePaper;
100
- const [contextId, _] = useState(() => generateContextId());
101
- const cb = useRef<() => void>();
102
- const { size, onLayout } = useSize(viewRef);
103
- useEffect(() => {
104
- if (size && cb.current) {
105
- cb.current();
106
- }
107
- }, [size]);
108
- useImperativeHandle(ref, () => ({
109
- getContextId: () => contextId,
110
- getNativeSurface: () => {
111
- if (size === null) {
112
- throw new Error("[WebGPU] Canvas size is not available yet");
113
- }
114
- return RNWebGPU.getNativeSurface(contextId);
115
- },
116
- whenReady(callback: () => void) {
117
- if (size === null) {
118
- cb.current = callback;
119
- } else {
120
- callback();
121
- }
122
- },
123
- getContext(contextName: "webgpu"): RNCanvasContext | null {
124
- if (contextName !== "webgpu") {
125
- throw new Error(`[WebGPU] Unsupported context: ${contextName}`);
95
+ ViewProps & { androidTransparency?: boolean; androidExperimental?: boolean }
96
+ >(
97
+ (
98
+ { onLayout: _onLayout, androidTransparency, androidExperimental, ...props },
99
+ ref,
100
+ ) => {
101
+ const viewRef = useRef(null);
102
+ const FABRIC = RNWebGPU.fabric;
103
+ const useSize = FABRIC ? useSizeFabric : useSizePaper;
104
+ const [contextId, _] = useState(() => generateContextId());
105
+ const cb = useRef<() => void>();
106
+ const { size, onLayout } = useSize(viewRef);
107
+ useEffect(() => {
108
+ if (size && cb.current) {
109
+ cb.current();
126
110
  }
127
- if (size === null) {
128
- throw new Error("[WebGPU] Canvas size is not available yet");
129
- }
130
- return RNWebGPU.MakeWebGPUCanvasContext(
131
- contextId,
132
- size.width,
133
- size.height,
134
- );
135
- },
136
- }));
137
- return (
138
- <View collapsable={false} ref={viewRef} onLayout={onLayout} {...props}>
139
- <WebGPUNativeView
140
- style={{ flex: 1 }}
141
- contextId={contextId}
142
- androidTransparency={!!androidTransparency}
143
- />
144
- </View>
145
- );
146
- });
111
+ }, [size]);
112
+ useImperativeHandle(ref, () => ({
113
+ getContextId: () => contextId,
114
+ getNativeSurface: () => {
115
+ if (size === null) {
116
+ throw new Error("[WebGPU] Canvas size is not available yet");
117
+ }
118
+ return RNWebGPU.getNativeSurface(contextId);
119
+ },
120
+ whenReady(callback: () => void) {
121
+ if (size === null) {
122
+ cb.current = callback;
123
+ } else {
124
+ callback();
125
+ }
126
+ },
127
+ getContext(contextName: "webgpu"): RNCanvasContext | null {
128
+ if (contextName !== "webgpu") {
129
+ throw new Error(`[WebGPU] Unsupported context: ${contextName}`);
130
+ }
131
+ if (size === null) {
132
+ throw new Error("[WebGPU] Canvas size is not available yet");
133
+ }
134
+ return RNWebGPU.MakeWebGPUCanvasContext(
135
+ contextId,
136
+ size.width,
137
+ size.height,
138
+ );
139
+ },
140
+ }));
141
+ return (
142
+ <View collapsable={false} ref={viewRef} onLayout={onLayout} {...props}>
143
+ <WebGPUNativeView
144
+ style={{ flex: 1 }}
145
+ contextId={contextId}
146
+ androidView={
147
+ // eslint-disable-next-line no-nested-ternary
148
+ androidExperimental
149
+ ? androidTransparency
150
+ ? "HardwareBuffer"
151
+ : "SurfaceView2"
152
+ : androidTransparency
153
+ ? "TextureView"
154
+ : "SurfaceView"
155
+ }
156
+ />
157
+ </View>
158
+ );
159
+ },
160
+ );
@@ -4,7 +4,7 @@ import type { Int32 } from "react-native/Libraries/Types/CodegenTypes";
4
4
 
5
5
  interface NativeProps extends ViewProps {
6
6
  contextId?: Int32;
7
- androidTransparency?: boolean;
7
+ androidView?: string;
8
8
  }
9
9
 
10
10
  // eslint-disable-next-line import/no-default-export