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

100 views
Skip to first unread message

朱国豪

unread,
Feb 22, 2025, 1:27:36 PMFeb 22
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 PMFeb 22
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 PMFeb 22
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 PMFeb 22
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