3 Replies Latest reply on Sep 3, 2015 1:20 PM by yves

    SSBOs in geometry shader

    temtaime

      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???

        • Re: SSBOs in geometry shader
          temtaime

          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.

            • Re: SSBOs in geometry shader
              pinform

              Does the issue persist with the latest driver?

              • Re: SSBOs in geometry shader
                yves

                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.