KhronosGroup / OpenGL-Registry

OpenGL, OpenGL ES, and OpenGL ES-SC API and Extension Registry
677 stars 274 forks source link

TEXTURE_EXTERNAL_OES target with RGB color format as the render target #624

Open shutaozhenzhen opened 1 month ago

shutaozhenzhen commented 1 month ago

In EXT_YUV_target, it says:

To perform the YUV rendering capability in this extension an application will attach a texture to the framebuffer object as the color attachment. If the texture has a target type of TEXTURE_EXTERNAL_OES with YUV color format then the GL driver can use this framebuffer object as the render target, TEXTURE_EXTERNAL_OES target with RGB color format are not allowed with this extension.

So which extension allow TEXTURE_EXTERNAL_OES target with RGB(and RGBA) color format as the render target? I searched the project, can not find infomation.

I'm now work in Mali G52 with EXT_YUV_target and EGL_EXT_image_dma_buf_import.txt, which allow external texture like RA24, and allow bind to framebuffer, write by glClear or shader. But I can not find which extension allow this. Only EXT_YUV_target allow bind TEXTURE_EXTERNAL_OES to framebuffer, but do not allow RGB.

Is it better to provide another extension to ensure this operation?

MarkCallow commented 4 weeks ago

OES_EGL_image_external defines the TEXTURE_EXTERNAL_OES texture target. Any EGLImage can be bound to this target. See the EGL image extensions for which those which let you create an RGB or RGBA EGLImage, e.g. EGL_KHR_gl_image.

shutaozhenzhen commented 4 weeks ago

OES_EGL_image_external defines the TEXTURE_EXTERNAL_OES texture target. Any EGLImage can be bound to this target. See the EGL image extensions for which those which let you create an RGB or RGBA EGLImage, e.g. EGL_KHR_gl_image.

yes, but it seems they are defined as sampler. Framebuffer do not contain in them

zmike commented 4 weeks ago

@stonesthrow Maybe you want to comment here?

stonesthrow commented 4 weeks ago

GL_EXT_YUV_target - talks about rendering (only YUV), but also sampling details.

GL_OES_EGL_image_external - talks about making EGLImage into texture TEXTURE_2D and TEXTURE_EXTERNAL. But only discusses sampling.

TEXTURE_2D already enables RGBA rendering image_external allows for new formats (RGBA and YUV) of EGLImages to texture - sampling. YUV_target is newer and builds on the image_external to allow for a mechanism for YUV rendering.