This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Latest Mali OpenGL ES Emulator 3.0.4 doesn't support GL_ARM_shader_framebuffer_fetch or gl_LastFragColorARM

OpenGL ES Emulator Version 3.0.4 Windows 64-bit Windows 64-bit
Released: November 29, 2019

downloaded from here:

A demo that can reproduce that issue:
https://github.com/zwcloud/OpenGLES-FrameBufferFetch

Just open DeferredShading/DeferredShading.sln in VS2019, build and run it. A red vec4(1,0,0,0) triangle will show up: it means that GL_ARM_shader_framebuffer_fetch are not defined.

See the fragment shader here:
https://github.com/zwcloud/OpenGLES-FrameBufferFetch/blob/f117b8e412db909774fea7951a45e809112b62b0/DeferredShading/DeferredShading.cpp#L24

#version 310 es
#extension GL_ARM_shader_framebuffer_fetch : enable
precision mediump float;
layout(location = 0) uniform vec4 uBlend0;
layout(location = 1) uniform vec4 uBlend1;
layout(location = 0) out vec4 fragColor;
void main ( void )
{
#ifdef GL_ARM_shader_framebuffer_fetch
	vec4 Color = gl_LastFragColorARM;
	Color = mix(Color, uBlend0, Color.w*uBlend0.w);
	Color *= uBlend1;
#else
	vec4 Color = vec4(1,0,0,0) + 0.001*uBlend0*uBlend1;
#endif
	fragColor = Color;
}

You can also remove #if GL_ARM_shader_framebuffer_fetch to be convinced:

> error C1503: undefined variable "gl_LastFragColorARM"

I cannot understand why an ARM OpenGLES emulator doesn't support its own extension GL_ARM_shader_framebuffer_fetch, that's ridiculous.

Parents
  • Hi zwcloud, 

    The emulator is an API translator which turns OpenGL ES into host OpenGL API calls running on the host graphics driver and hardware. For shader extensions we are only able to expose functionality that the underlying graphics driver is able to support.

    Kind regards, 
    Pete

Reply
  • Hi zwcloud, 

    The emulator is an API translator which turns OpenGL ES into host OpenGL API calls running on the host graphics driver and hardware. For shader extensions we are only able to expose functionality that the underlying graphics driver is able to support.

    Kind regards, 
    Pete

Children