буфер хранения только для чтения в OpenGL ES и Spir-V

В языке шейдеров OpenGL ES объект буфера хранилища шейдера (SSBO) может быть украшен квалификатором readonly или writeonly.
Раздел 4.9 (Квалификаторы доступа к памяти) Спецификация OpenGL ES Shading Language версии 3.1:

Блоки хранения шейдеров, переменные, объявленные в блоках хранения шейдеров, и переменные, объявленные как типы изображений (базовые непрозрачные типы с «изображением» в их ключевом слове), могут быть дополнительно уточнены одним или несколькими из следующих квалификаторов памяти: ...(таблица указан)

Так что у меня может быть что-то в шейдере opengl es, например:

layout(std430, binding = 0) readonly buffer mybuffer {
        a_struct_type myarray[];  //a_struct_type was defined before
    };

Но как указать только для чтения в spir-v?
В спецификация spir-v, раздел 3.18, квалификатор доступа, там сказано:

Используется OpTypeImage и OpTypePipe.

Означает ли это, что в spir-v SSBO нельзя указывать только для чтения? Я не думаю, что SSBO относится к типу OpTypeImage или OpTypePipe.

---------------------------------------------
 Resource Type  |  Storage Class |    Type       
---------------------------------------------
  Storage Buffer|  Uniform       |
                |----------------|  OpTypeStruct
                | Storage Buffer |
----------------------------------------------

person dudu    schedule 21.02.2019    source источник


Ответы (1)


Соответствующие украшения не интуитивно понятны NonWritable и NonReadable .

person Nicol Bolas    schedule 21.02.2019