Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

GLSL read+write image2D

I expected to be able to use both imageLoad and imageStore on the same image to read and modify it from within a compute shader.

Trying with a declaration of: layout(r32f, binding=0) uniform highp image2D x;
Produces "Shader error: Image has to be qualified as 'readonly', 'writeonly' or both."

I haven't been able to find yet how to specify "both" as the error implies is possible. Is there a keyword for this I've missed?

I'm using a Mali-T720 with GLES 3.1 v1.r7p0-02

Parents
  • Just to add an appendix to this one, as this post seems to get found in web searches for a related issue, which isn't a Mali bug. 

    There was a bug a long time ago, impacting  r32* bindings, which was fixed in 2017 drivers.

    You will still get this error for other binding formats because the OpenGL ES shader language spec requires this behavior:

    Except for image variables qualified with the format qualifiers r32f, r32i, and r32ui, image variables must specify either memory qualifier readonly or the memory qualifier writeonly.

    If you want read+write images you must make two separate variable definitions, one readonly and one writeonly, which can be bound to the same binding location. 

    Cheers,
    Pete

Reply
  • Just to add an appendix to this one, as this post seems to get found in web searches for a related issue, which isn't a Mali bug. 

    There was a bug a long time ago, impacting  r32* bindings, which was fixed in 2017 drivers.

    You will still get this error for other binding formats because the OpenGL ES shader language spec requires this behavior:

    Except for image variables qualified with the format qualifiers r32f, r32i, and r32ui, image variables must specify either memory qualifier readonly or the memory qualifier writeonly.

    If you want read+write images you must make two separate variable definitions, one readonly and one writeonly, which can be bound to the same binding location. 

    Cheers,
    Pete

Children
No data