Black screen: no shaders are compiled when "Separate shader objects: yes"

Description

It seems like any Ogre-based application (e.g. the sample browser) displays nothing but a black screen on the Asus Transformer (Tegra 3). There are no GL errors, log output looks normal. In particular, textures are loaded just fine and draw calls are issued by Ogre.

By comparing OpenGL ES Traces between the Transformer and a Galaxy S2, it turned out that no shader programs are loaded on the former device. Ogre uses a different code path for creating shader programs depending on whether separate shader object support is enabled (RSC_SEPARATE_SHADER_OBJECTS).

The Transformer supports separate shader objects, however it seems that at no point a shader is compiled. I'm using RTSS (w/ and w/out glsl_optimizer).

As a workaround one can remove the capability in a render system listener to force Ogre to execute the working code path:

1 2 3 4 5 6 7 8 9 class TweakCaps : public Ogre::RenderSystem::Listener { public: virtual void eventOccurred(const Ogre::String &eventName, const Ogre::NameValuePairList *parameters=0) { // TODO check event name Ogre::Root::getSingleton().getRenderSystem()->getMutableCapabilities()->unsetCapability(Ogre::RSC_SEPARATE_SHADER_OBJECTS); } };

If it helps, I can provide the traces, they're a bit large though because of the textures.

Environment

Asus Transformer Pad TF700T, Android 4.2.1

Status

Assignee

M

Reporter

Robert Huitl

Labels

None

Components

Fix versions

Affects versions

1.9.0

Priority

Major