E/AHardwareBuffer(16806): GraphicBuffer(w=4, h=4, lc=1) failed (Unknown error -5), handle=0x0 Warning

177 views
Skip to first unread message

朱国豪

unread,
Feb 22, 2025, 1:27:36 PM2/22/25
to angleproject
Thank you for the great work and maintaining ANGLE, really appreciate that.

On my Samsung device, with Adreno 730 GPU. During the very basic EGL initialization steps, I often see this warning:

E/qdgralloc(16806): GetSize: Unrecognized pixel format: 0x38
E/Gralloc4(16806): isSupported(1, 1, 56, 1, ...) failed with 5
E/GraphicBufferAllocator(16806): Failed to allocate (4 x 4) layerCount 1 format 56 usage b00: 5
E/AHardwareBuffer(16806): GraphicBuffer(w=4, h=4, lc=1) failed (Unknown error -5), handle=0x0
E/qdgralloc(16806): GetSize: Unrecognized pixel format: 0x3b
E/Gralloc4(16806): isSupported(1, 1, 59, 1, ...) failed with 5
E/GraphicBufferAllocator(16806): Failed to allocate (4 x 4) layerCount 1 format 59 usage b00: 5
E/AHardwareBuffer(16806): GraphicBuffer(w=4, h=4, lc=1) failed (Unknown error -5), handle=0x0
E/qdgralloc(16806): GetSize: Unrecognized pixel format: 0x38
E/Gralloc4(16806): isSupported(1, 1, 56, 1, ...) failed with 5
E/GraphicBufferAllocator(16806): Failed to allocate (4 x 4) layerCount 1 format 56 usage b00: 5
E/AHardwareBuffer(16806): GraphicBuffer(w=4, h=4, lc=1) failed (Unknown error -5), handle=0x0
E/qdgralloc(16806): GetSize: Unrecognized pixel format: 0x3b
E/Gralloc4(16806): isSupported(1, 1, 59, 1, ...) failed with 5
E/GraphicBufferAllocator(16806): Failed to allocate (4 x 4) layerCount 1 format 59 usage b00: 5

This is my configs
"    const EGLint configAttribs[] = {
            EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT_KHR,
            EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
            EGL_RED_SIZE, 8,
            EGL_GREEN_SIZE, 8,
            EGL_BLUE_SIZE, 8,
            EGL_ALPHA_SIZE, 8,
            EGL_DEPTH_SIZE, 24,
            EGL_STENCIL_SIZE, 8,
            EGL_NONE
    };"

Things run without any problem so far. But seeing this warning all the time is a bit uneasy for me. Any comments and help would be appreciated, thank you.

Shahbaz Youssefi

unread,
Feb 22, 2025, 1:30:03 PM2/22/25
to angleproject
Hi,

I've seen similar logs with a Pixel phone (ARM GPU). I don't know what the cause is, but it seems unrelated to ANGLE; I've seen it with another Vulkan project too.

朱国豪

unread,
Feb 22, 2025, 7:58:43 PM2/22/25
to angleproject

Hi there,

Really appreciate the quick response. Another quick question, while you see the above "GraphicBuffer failed Warning", have you encountered another warning " VKDBGUTILWARN003" ? The warning looks like "E/ANGLE   (26928): ERR: vk_renderer.cpp:926 (DebugUtilsMessenger): The following warning was triggered: VKDBGUTILWARN003. Please refer to the Adreno Game Developer Guide for more information: https://developer.qualcomm.com/docs/adreno-gpu/developer-guide/index.html", from qualcomm the warning is described as "VKDBGUTILWARN003 - Renderpass is not qualified for multipass due to a given subpass". 

I guess Pixel has nothing to do with qualcomm architecture, but I only saw this warning on my high-end qualcomm gpu device, I had this warning on Adreno 730, at the time when a complete rendering pipeline finishes on a Pbuffer. I did not see both  "GraphicBuffer failed Warning" on S7+ tablet, S9 + and vivo X60 pro. 

best

Shahbaz Youssefi

unread,
Feb 22, 2025, 8:08:59 PM2/22/25
to angleproject
Hi,

No I haven't seen that. The description is somewhat cryptic, but if I were to guess, I'd say it's trying to tell that a multi-pass render pass has an implicit render pass split; meaning that the subpasses aren't merged (effectively what this extension lets you query: VK_EXT_subpass_merge_feedback). In ANGLE, there's only a single situation where we use multipass render passes, and that is in the implementation of GL_EXT_multisampled_render_to_texture, and only done if the device does not support VK_EXT_multisampled_render_to_single_sampled. Are you using GL_EXT_multisampled_render_to_texture?

If that's the case, I'm not really sure why the subpasses wouldn't be merged. That said, you can avoid the inefficient multi-pass situation by making sure that the start of a "render pass" does not lead to a "load" from the color or depth/stencil attachment. That is, if you have a set of draws, you should either start it with a glClear, or a glInvalidateFramebuffer. Please see this article for more details: https://medium.com/p/21794c479cb9

Cheers,

Reply all
Reply to author
Forward
0 new messages