Imagination PowerVR SDK Blog

PVRFrame issue with shader and program binaries



I am trying to use shader and program binaries with PVRFrame and I have issues with both.

First, querying GL_NUM_SHADER_BINARY_FORMATS reports 0, even though GL_IMG_shader_binary extension is advertised. Thus I get no supported shader binary formats.

Second, if I pretend that GL_SGX_BINARY_IMG (0x8c0a) is supported, glShaderBinary() rejects it.

Third, querying program binary formats appears to return host GL program binary formats, not IMG program binary formats. Maybe this is what happens with shader binary formats as well?

PVRFrame documentation claims that both IMG_shader_binary and IMG_program_binary extensions are supported. Can you confirm if they should work or not?

Tested with SDK 4.0:
GL vendor: Imagination Technologies (Host: NVIDIA Corporation)
GL renderer: PVRVFrame 10.2 - PowerVR G6X00 (Host : GeForce GTX 760/PCIe/SSE2) (SDK Build: 4.0@3835662)
GL version: OpenGL ES 3.0 (Host : 4.5.0 NVIDIA 355.82) (300)


Hi Timo

I’m not sure why we’re claiming support for these extensions as we do not emulate any platform-specific binary formats. I will file a bug report to remove them from the extensions string. Thank you for reporting it.

Many graphics cards don’t support binary shaders and will return zero for GL_NUM_SHADER_BINARY_FORMATS.

The only program binary formats which will work with PVRVFrame are those supported by the host system, so you can’t output a binary program on a PowerVR device and load it on a desktop, for example. I thought we used to have a note in the manual describing this limitation but looking at the docs now I see it’s not there. I’ll get something added to the PVRVFrame documentation about this.