Quick answer: Vulkan validation reporting storage image format mismatch on compute dispatch? Image format must match the shader's qualifier - use VK_FORMAT_R32_UINT for atomic ops, not generic R8.
Compute shader uses imageAtomicAdd on a R8_UNORM image. Validation: format does not support atomic ops.
Match format to op
Atomic ops require R32_UINT or R32_SINT. Storage images that need atomics can't be R8 regardless of how little range you actually use.
Specify format in shader
layout(r32ui, binding=0) uniform uimage2D tex;Format qualifier makes the requirement explicit and the validator can check it earlier.
Validate with VkFormatProperties
vkGetPhysicalDeviceFormatProperties(...)Check optimalTilingFeatures for VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT before assuming the format supports your op.
“Storage image formats are not freely choosable. Capability checks come first.”
Build a format-features dump tool. Run on each driver/GPU combo; you'll catch mobile-specific format gaps early.