diff --git a/.gitignore b/.gitignore index 60de60316..d5d3804d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -!packages/webgpu/scripts/build # Yarn .package/.yarn/* .yarn/* @@ -65,11 +64,6 @@ package/lib # Externals -packages/webgpu/libs -packages/webgpu/cpp/dawn/ -packages/webgpu/cpp/webgpu/ -packages/webgpu/lib -!packages/webgpu/scripts/build artifacts/ diff --git a/packages/webgpu/.gitignore b/packages/webgpu/.gitignore index 1cc9e5603..6887d69b7 100644 --- a/packages/webgpu/.gitignore +++ b/packages/webgpu/.gitignore @@ -1,11 +1,7 @@ -!scripts/build # OSX # .DS_Store -# XDE -.expo/ - # VSCode .vscode/ jsconfig.json @@ -71,3 +67,8 @@ android/keystores/debug.keystore # generated by bob lib/ + +libs/ +cpp/dawn/ +cpp/webgpu/ +scripts/build diff --git a/packages/webgpu/android/src/main/java/com/webgpu/WebGPUAHBView.java b/packages/webgpu/android/src/main/java/com/webgpu/WebGPUAHBView.java index 073b7351e..d7dbed87f 100644 --- a/packages/webgpu/android/src/main/java/com/webgpu/WebGPUAHBView.java +++ b/packages/webgpu/android/src/main/java/com/webgpu/WebGPUAHBView.java @@ -32,22 +32,27 @@ public WebGPUAHBView(Context context, WebGPUAPI api) { mApi = api; } - private ImageReader createReader() { - ImageReader reader = ImageReader.newInstance(getWidth(), getHeight(), PixelFormat.RGBA_8888, 2, HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE | + private static ImageReader createReader(int width, int height, ImageReader.OnImageAvailableListener listener) { + ImageReader reader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2, HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE | HardwareBuffer.USAGE_GPU_COLOR_OUTPUT); - reader.setOnImageAvailableListener(this, null); + reader.setOnImageAvailableListener(listener, null); return reader; } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); + if (mReader == null) { - mReader = createReader(); - mApi.surfaceCreated(mReader.getSurface()); - } else { - mApi.surfaceChanged(mReader.getSurface()); + int width = getWidth(); + int height = getHeight(); + + if (width == 0 || height == 0) return; + + mReader = WebGPUAHBView.createReader(width, height, this); } + + mApi.surfaceChanged(mReader.getSurface()); } @Override diff --git a/packages/webgpu/android/src/main/java/com/webgpu/WebGPUView.java b/packages/webgpu/android/src/main/java/com/webgpu/WebGPUView.java index 1531befac..e526dbc3f 100644 --- a/packages/webgpu/android/src/main/java/com/webgpu/WebGPUView.java +++ b/packages/webgpu/android/src/main/java/com/webgpu/WebGPUView.java @@ -32,11 +32,11 @@ public void setContextId(int contextId) { } public void setTransparent(boolean value) { - Context ctx = getContext(); if (value != mTransparent || mView == null) { if (mView != null) { removeView(mView); } + Context ctx = getContext(); mTransparent = value; if (mTransparent) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {