Буфер хранения только для чтения в OpenGL ES и Spir-V
В OpenGL ES Shading Language объект буфера хранилища шейдеров (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
};
Но как указать readonly в spir-v?
В спецификации spir-v, раздел 3.18, Access Qualifier, написано:
Используется OpTypeImage и OpTypePipe.
Означает ли это, что в spir-v SSBO нельзя указывать только для чтения? Я не думаю, что SSBO попадает в тип OpTypeImage или OpTypePipe.
---------------------------------------------
Resource Type | Storage Class | Type
---------------------------------------------
Storage Buffer| Uniform |
|----------------| OpTypeStruct
| Storage Buffer |
----------------------------------------------
1 ответ
Соответствующие украшения не интуитивно NonWritable
а также NonReadable
,