Hi
I have several #version 300 es shaders using gl_VertexID as only input (no vertex buffer)
the "driver" reports
Tag : Adreno-ES20 (shouldn't it be 30 ?)
Text : <validate_vertex_attrib_state:55> : validate_vertex_attrib_state : No vertex attrib is enabled in a draw call
and the drawcall seems to be discarded.
I add some dummy GL_ARRAY_BUFFER and dummy AttribPointer, no more output from the driver, but the result is not valid.
Two questions:
Is it possible to issue a drawcall with a (3.0) vertexshader using only gl_VertexID as input ? (without dummy buffer)
Are there any known issues with gl_VertexID on Adreno (330) devices ?
BTW : as sample shader code (used to draw a fullscreen triangle, scissoring transforming the zone to a fullscreen quad)
Ronan - We had a made a driver fix earlier this year for a similar problem.
\Do you have a test apk we can try out and see if it works?
Also can you confirm that you are setting up an ES3.0 context in your app and is there a "#version 300 es" line in your shader?
Also which device and build date are you running on?
-thanks
thanks for your fast answer.
I can make an APK, is there a way to send a "private file" please ?
This code is running on other Android 4.4 devices.
There is a #version 300 es (1st line of all my shaders)
With an OpenGL ES 3.0 context created this way (maybe it's the problem)
Hi.
Just ran several tests on several devices (OpenGL ES 3.0)
The shader listed on the previous post runs fine on all devices (which implies both computation & transformfeedback process)
Changing the shader code (not the CPU code) with :
outputs only values "0", only on Adreno devices (Samsung Galaxy Tab Pro 8.4 & Kindle fire HDX), on other Android devices (Asus K010) it outputs correct values
(I'm not sure that the output buffer is overwritten with "0" or not updated at all)(will do other tests)
I made the following test :
Shader1 : takes a VB as input, outputs results in a buffer
Shader2 : uses only gl_VertexID, outputs results in a buffer
on non-Adreno, both Shaders output correct values.
on Adreno, Shader1 outputs correct values, Shader2 outputs ZERO
on Adreno, running Shader1, then Shader2 with the same output buffer, gives correct values (values from Shader1)
so I assume that on Adreno, Shader2 outputs nothing (since output from Shader1 is not overwritten), thus Shader2 is not executed.
Am I correct ?