From 2b2c5556e15179a3a713cd69cde334cc440c5d7c Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Sun, 3 May 2026 16:55:22 +0200 Subject: [PATCH 1/3] Exclude Pixel 10 from GPU preprocessing support --- .../bevy_render/src/batching/gpu_preprocessing.rs | 2 ++ crates/bevy_render/src/lib.rs | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/crates/bevy_render/src/batching/gpu_preprocessing.rs b/crates/bevy_render/src/batching/gpu_preprocessing.rs index 4e955df6b3003..1126824f99306 100644 --- a/crates/bevy_render/src/batching/gpu_preprocessing.rs +++ b/crates/bevy_render/src/batching/gpu_preprocessing.rs @@ -1328,9 +1328,11 @@ impl FromWorld for GpuPreprocessingSupport { // - We filter out Adreno 730 and earlier GPUs (except 720, as it's newer // than 730). // - We filter out Mali GPUs with driver versions lower than 48. + // - We filter out Pixel 10 GPUs (all versions for now) fn is_non_supported_android_device(adapter_info: &RenderAdapterInfo) -> bool { crate::get_adreno_model(adapter_info).is_some_and(|model| model != 720 && model <= 730) || crate::get_mali_driver_version(adapter_info).is_some_and(|version| version < 48) + || crate::get_pixel10_driver_version(adapter_info).is_some() } let culling_feature_support = device diff --git a/crates/bevy_render/src/lib.rs b/crates/bevy_render/src/lib.rs index d9a7f033c0358..9febbfff70d30 100644 --- a/crates/bevy_render/src/lib.rs +++ b/crates/bevy_render/src/lib.rs @@ -566,6 +566,19 @@ pub fn get_mali_driver_version(adapter_info: &RenderAdapterInfo) -> Option None } +pub fn get_pixel10_driver_version(adapter_info: &RenderAdapterInfo) -> Option { + if !cfg!(target_os = "android") { + return None; + } + + if adapter_info.name != "PowerVR D-Series DXT-48-1536 MC1" { + return None; + } + + let (_, driver_version) = adapter_info.driver_info.split_once('@')?; + driver_version.parse::().ok() +} + /// Returns true if storage buffers are unsupported on this platform or false /// if they are supported. pub fn storage_buffers_are_unsupported(limits: &WgpuLimits) -> bool { From 2dec7fd6dc1268848cda90547066b8037ad30703 Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Sun, 3 May 2026 18:00:09 +0200 Subject: [PATCH 2/3] Limit Pixel 10 to preprocessing only (no culling) --- crates/bevy_render/src/batching/gpu_preprocessing.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/crates/bevy_render/src/batching/gpu_preprocessing.rs b/crates/bevy_render/src/batching/gpu_preprocessing.rs index 1126824f99306..9b30abe3fb03d 100644 --- a/crates/bevy_render/src/batching/gpu_preprocessing.rs +++ b/crates/bevy_render/src/batching/gpu_preprocessing.rs @@ -1328,11 +1328,13 @@ impl FromWorld for GpuPreprocessingSupport { // - We filter out Adreno 730 and earlier GPUs (except 720, as it's newer // than 730). // - We filter out Mali GPUs with driver versions lower than 48. - // - We filter out Pixel 10 GPUs (all versions for now) + // - We limit Pixel 10 GPUs (all versions for now) to preprocessing only (no culling) fn is_non_supported_android_device(adapter_info: &RenderAdapterInfo) -> bool { crate::get_adreno_model(adapter_info).is_some_and(|model| model != 720 && model <= 730) || crate::get_mali_driver_version(adapter_info).is_some_and(|version| version < 48) - || crate::get_pixel10_driver_version(adapter_info).is_some() + } + fn is_preprocessing_only_android_device(adapter_info: &RenderAdapterInfo) -> bool { + crate::get_pixel10_driver_version(&adapter_info).is_some() } let culling_feature_support = device @@ -1364,7 +1366,9 @@ impl FromWorld for GpuPreprocessingSupport { Falling back to CPU preprocessing.", ); GpuPreprocessingMode::None - } else if !(culling_feature_support && limit_support && downlevel_support) { + } else if !(culling_feature_support && limit_support && downlevel_support) + || is_preprocessing_only_android_device(&adapter_info) + { info_once!("Some GPU preprocessing are limited on this device."); GpuPreprocessingMode::PreprocessingOnly } else { From ba1b81bcfc59c578e7be5ca09f962aac42568558 Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Sun, 3 May 2026 18:34:58 +0200 Subject: [PATCH 3/3] Fix lint --- crates/bevy_render/src/batching/gpu_preprocessing.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/bevy_render/src/batching/gpu_preprocessing.rs b/crates/bevy_render/src/batching/gpu_preprocessing.rs index 9b30abe3fb03d..95e0b3d804efc 100644 --- a/crates/bevy_render/src/batching/gpu_preprocessing.rs +++ b/crates/bevy_render/src/batching/gpu_preprocessing.rs @@ -1334,7 +1334,7 @@ impl FromWorld for GpuPreprocessingSupport { || crate::get_mali_driver_version(adapter_info).is_some_and(|version| version < 48) } fn is_preprocessing_only_android_device(adapter_info: &RenderAdapterInfo) -> bool { - crate::get_pixel10_driver_version(&adapter_info).is_some() + crate::get_pixel10_driver_version(adapter_info).is_some() } let culling_feature_support = device