Report #96 validation
No hardware proof (handheld) valid Supreme supporter
The app said this device cannot make a hardware proof (key attestation). Makers of gaming handhelds often do not set that up, so this is common on them and says nothing about the driver. No device of this model has ever sent a hardware proof, so the site counts this report as it is. Its results can be listed as leading, and become confirmed only when a device with a hardware proof agrees.
GPU Mali-G57 MC4 Driver panvk_faux123_rg556_v0.13.0 Mesa 26.3.0-devel (git-48835cc38d) Device Anbernic RG556 Chip T820
CPU 4 x 2.18 GHz + 3 x 2.30 GHz + 1 x 2.70 GHz, arm64-v8a Memory 7.7 GB
Reported as Anbernic / RG556 Received 2026-10-10 11:33 UTC
Android 13
Library SHA-256 df170aac357fb9f0d3330e527b39c5439ba936ce8c2911764085a6e7b6808e15
Raw JSON
Harness checks (1)
pass harness.baseline_draw
Check Pixel Expected Got Match
drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
Core checks (21)
pass core.readback_same_command_buffer
Check Pixel Expected Got Match
drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass push.max_combined_image_samplers
Check Pixel Expected Got Match
combined image samplers pushed in one set (the driver's stated limit) , 32 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half: the pushed texture 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass core.resubmit_command_buffer
Check Pixel Expected Got Match
first submit: drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass second submit of the same command buffer: drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass second submit of the same command buffer: cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass core.compute_udiv
Check Pixel Expected Got Match
703787787 / 47721859 , [14] [14] pass 703787787 % 47721859 , [35681761] [35681761] pass 4294967295 / 2147483649 , [1] [1] pass 4294967295 % 2147483649 , [2147483646] [2147483646] pass 4294967295 / 3 , [1431655765] [1431655765] pass 4294967295 % 3 , [0] [0] pass 4000000000 / 3 , [1333333333] [1333333333] pass 4000000000 % 3 , [1] [1] pass 2147483648 / 65537 , [32767] [32767] pass 2147483648 % 65537 , [32769] [32769] pass 2147483647 / 46341 , [46340] [46340] pass 2147483647 % 46341 , [41707] [41707] pass 1000000007 / 31607 , [31638] [31638] pass 1000000007 % 31607 , [17741] [17741] pass 16777217 / 4097 , [4095] [4095] pass 16777217 % 4097 , [2] [2] pass 16777216 / 4096 , [4096] [4096] pass 16777216 % 4096 , [0] [0] pass 4294967295 / 4294967295 , [1] [1] pass 4294967295 % 4294967295 , [0] [0] pass 3000000000 / 1500000001 , [1] [1] pass 3000000000 % 1500000001 , [1499999999] [1499999999] pass 123456789 / 10007 , [12337] [12337] pass 123456789 % 10007 , [430] [430] pass 4294967294 / 2 , [2147483647] [2147483647] pass 4294967294 % 2 , [0] [0] pass 65536 / 65537 , [0] [0] pass 65536 % 65537 , [65536] [65536] pass 99999999 / 4294967295 , [0] [0] pass 99999999 % 4294967295 , [99999999] [99999999] pass 1 / 1 , [1] [1] pass 1 % 1 , [0] [0] pass
pass core.texel_fetch_beside_ubo
Check Pixel Expected Got Match
left half: texel (1, 0) 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass right half: texel (0, 1) 48,32 [0, 0, 255, 255] [0, 0, 255, 255] pass
pass push.max_uniform_buffers
Check Pixel Expected Got Match
uniform buffers pushed in one set (the driver's stated limit) , 32 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half: element 5 of the pushed buffer 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass limit.uniform_buffer_range
Check Pixel Expected Got Match
bytes in one uniform buffer binding (the driver's stated limit) , 1048576 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half: element 127 of the block 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass limit.dynamic_uniform_buffers
Check Pixel Expected Got Match
dynamic uniform buffers in one set, bound with as many offsets (the driver's stated limit) , 16 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half: the block the dynamic offset selects 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass stress.multi_draw_indirect_large
Check Pixel Expected Got Match
draws in one vkCmdDrawIndirect call (capped by this check, below the stated limit) , 16384 pass drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass stress.compute_after_render
Check Pixel Expected Got Match
wrong answers in 3200 divisions over 200 rounds , [0] [0] pass the last render pass: drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass
pass stress.submit_memory
Check Pixel Expected Got Match
KiB of memory gained over 4000 submits (limit 16384) , 0 pass the last submit: drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass
pass core.copy_wide_row_length
Check Pixel Expected Got Match
first copied row (the last green row) 16,0 [0, 255, 0, 255] [0, 255, 0, 255] pass second copied row, 4,210,688 bytes later (the first black row) 16,1 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass core.mediump_mul_extended
Check Pixel Expected Got Match
low half of 255 * 3 , [765] [765] pass low half of 242 * 19 , [4598] [4598] pass low half of 229 * 35 , [8015] [8015] pass low half of 216 * 51 , [11016] [11016] pass low half of 203 * 67 , [13601] [13601] pass low half of 190 * 83 , [15770] [15770] pass low half of 177 * 99 , [17523] [17523] pass low half of 164 * 115 , [18860] [18860] pass low half of 151 * 131 , [19781] [19781] pass low half of 138 * 147 , [20286] [20286] pass low half of 125 * 163 , [20375] [20375] pass low half of 112 * 179 , [20048] [20048] pass low half of 99 * 195 , [19305] [19305] pass low half of 86 * 211 , [18146] [18146] pass low half of 73 * 227 , [16571] [16571] pass low half of 60 * 243 , [14580] [14580] pass high half of the first product , [0] [0] pass
pass core.msaa_resolve
Check Pixel Expected Got Match
resolved image: drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass resolved image: cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass limit.color_attachments
Check Pixel Expected Got Match
colour attachments in one render pass (the driver's stated limit) , 8 pass bytes changed in memory next to the driver's allocations , 0 pass first attachment: drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass first attachment: cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass limit.vertex_input
Check Pixel Expected Got Match
vertex buffer bindings in one pipeline, bound in one call (the driver's stated limit) , 16 pass vertex attributes in one pipeline (the driver's stated limit) , 16 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass limit.push_constants_size
Check Pixel Expected Got Match
push constant bytes pushed in one call (the driver's stated limit) , 256 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half: the colour in the first 16 bytes 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass limit.per_stage_samplers
Check Pixel Expected Got Match
combined image samplers in one descriptor set, bound and drawn with (capped by this check, below the stated limit) , 4096 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half: the texture in element 0 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass limit.bound_descriptor_sets
Check Pixel Expected Got Match
descriptor sets bound in one call (the driver's stated limit) , 7 pass bytes changed in memory next to the driver's allocations , 0 pass drawn half: the texture in set 0 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass stress.pipeline_cache_threads
Check Pixel Expected Got Match
every vkCreateGraphicsPipelines call returned VK_SUCCESS , 0 pass pipelines asked for in 8 seconds, at least one from each thread , 1024 pass pipelines built, the same number , 1024 pass every save made while compiling returned VK_SUCCESS or VK_INCOMPLETE , 0 pass saves made while compiling , 68 pass bytes a save reported beyond the buffer size it was given , 0 pass bytes a save wrote past the end of the buffer it was given , 0 pass final save size in bytes holds a header , 2021408 pass header names this device , 32 pass drawn half, after every pipeline drew it 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
pass stress.pipeline_threads_no_cache
Check Pixel Expected Got Match
every vkCreateGraphicsPipelines call returned VK_SUCCESS , 0 pass pipelines asked for in 8 seconds, at least one from each thread , 1024 pass pipelines built, the same number , 1024 pass drawn half, after every pipeline drew it 16,32 [0, 255, 0, 255] [0, 255, 0, 255] pass cleared half 48,32 [0, 0, 0, 255] [0, 0, 0, 255] pass
Feature results
VkPhysicalDeviceFeatures (9 tested)
geometryShader pass tessellationShader pass multiDrawIndirect pass drawIndirectFirstInstance pass multiViewport pass textureCompressionETC2 pass textureCompressionASTC_LDR pass textureCompressionBC pass occlusionQueryPrecise pass
VK_EXT_extended_dynamic_state (1 tested)
extendedDynamicState pass
VK_EXT_extended_dynamic_state2 (2 tested)
extendedDynamicState2 pass extendedDynamicState2LogicOp pass
VK_EXT_extended_dynamic_state3 (5 tested)
extendedDynamicState3DepthClampEnable pass extendedDynamicState3LogicOpEnable pass extendedDynamicState3ColorBlendEnable pass extendedDynamicState3ColorBlendEquation pass extendedDynamicState3ColorWriteMask pass
VK_EXT_vertex_input_dynamic_state (1 tested)
vertexInputDynamicState pass
VK_EXT_custom_border_color (1 tested)
customBorderColors pass
VK_EXT_border_color_swizzle (1 tested)
borderColorSwizzle pass
VK_EXT_depth_clip_control (1 tested)
depthClipControl pass
VK_EXT_transform_feedback (1 tested)
transformFeedback pass
VK_EXT_color_write_enable (1 tested)
colorWriteEnable pass
VK_EXT_inline_uniform_block (1 tested)
inlineUniformBlock pass
VK_KHR_timeline_semaphore (1 tested)
timelineSemaphore pass
VK_KHR_shader_atomic_int64 (1 tested)
shaderBufferInt64Atomics pass
VK_EXT_robustness2 (1 tested)
robustBufferAccess2 pass
Features that were unsupported or had no check are not listed here.