Imagination PowerVR SDK Blog

GL_EXT_separate_shader_objects issue in OpenGL ES 3.0


#1

Hi, I’m facing many issues trying to run some OpenGL ES 3.0 code on a PowerVR 6430 (device = Asus Fonepad 7)

One of this issues happens while trying to use the GL_EXT_separate_shader_objects feature.

I first compile a shader as usual, then call glCreateProgram()

then try to set it as SEPARABLE raise an error code 0x500



GLuint ui_ProgramId = glCreateProgram();

ReportError( “glCreateProgram” );

glProgramParameteri( ui_ProgramId, GL_PROGRAM_SEPARABLE, GL_TRUE);

ReportError( “ProgramParameteri GL_PROGRAM_SEPARABLE” );



All of this is running fine on Windows platform (AMD, NVidia, Intel), and Android (Intel, Qualcomm, Mali) devices I can use.

re-re-taking a look at glProgramParameteri documentation states that in OpenGL ES 3.0, the only valid argument is GL_PROGRAM_BINARY_RETRIEVABLE_HINT

so this error (InvalidEnum) is valid

BUT as the driver reports the implementation of GL_EXT_separate_shader_objects, I understand that calling glProgramParameteri with GL_PROGRAM_SEPARABLE as argument should be valid, am I wrong ?

It works on everything I tried before, and if it’s not legal, how can I use the GL_PROGRAM_SEPARABLE feature without telling the driver via a call to glProgramParameteri ?


#2

Hi Ronan,



Please try calling the extension version of the function “ProgramParameteriEXT”, as detailed in the spec: www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt



Kind regards,

Paul.


#3

Thank you very much Paul, it works fine now :smiley:

(other vendor implementation, I mean using the base ProgramParameteri function is easier to use, only one function)

Thanks again :smile: