cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

temtaime
Journeyman III

SSBOs in geometry shader

Hi !

When i try to access ssbo from geometry shader(i pass draw id from vertex shader) then shader cannot link:

Geometry shader(s) failed to link.
Geometry link error: HW_UNSUPPORTED.
ERROR: Internal compile error, error code: E_SC_NOTSUPPORTED
Geometry shader not supported by hardware

I'm running on 7850. Is it really doesn't support ssbos in geometry shader???

0 Likes
3 Replies
temtaime
Journeyman III

Re: SSBOs in geometry shader

Okay guys, i figured out a problem.

Geometry shader:

layout(location = 0) in  VertexData {

vec2 texCoord;

flat int drawId; // from vertex's gl_DrawIDARB

} vert_in[];

struct ObjectData {

bool someValue;

};

layout(std430) readonly buffer MyBuffer {

ObjectData perObject[];

};

...

void main() {

if(perObject[vert_in[0].drawId].someValue) {} // causes an error

}

If i write

int id = vert_in[0].drawId;

ObjectData data = perObject[id];

if(data.someValue) {}


error now dissapears

Seems amd driver bug.


Also i have another one problem.

I want to pass drawId from vertex shader to geometry shader and then to fragment shader.

If i'm using my perObject in vertex shader all is ok. Then i'm passing drawId to geometry shader all is ok too. But when i try to access perObject in fragment shader my application crashes. On nvidia all is working normally.

It's another amd driver bug. Is there any driver developer to investigate and fix it?

I really love and production but there bugs are annoying to me.

0 Likes
pinform
Staff
Staff

Re: SSBOs in geometry shader

Does the issue persist with the latest driver?

0 Likes
yves
Adept I

Re: SSBOs in geometry shader

I think the crash could have the same cause as the one I've described here.

Could you please test if it still crashes when you rename perObject to APerObject or something similar so that the blocks which are shared between shader stages get the first block ID numbers? It seems the blocks are ordered alphabetically by name and then assigned a block ID.

Update: In the other thread I've just figured out that updating to the newest driver fixes the crash. You should probably test with a newer driver too, as already suggestion by pinform.

0 Likes