gpu,gpu/internal: split shader storage usage into read and write

Metal has texture write usage flags for read and write.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-08-20 16:01:08 +02:00
parent 07fdc1a2de
commit a7f08eedf3
3 changed files with 16 additions and 15 deletions
+2 -1
View File
@@ -157,7 +157,8 @@ const (
BufferBindingUniforms
BufferBindingTexture
BufferBindingFramebuffer
BufferBindingShaderStorage
BufferBindingShaderStorageRead
BufferBindingShaderStorageWrite
)
const (
+2 -2
View File
@@ -984,7 +984,7 @@ func lookupUniform(funcs *gl.Functions, p gl.Program, loc shader.UniformLocation
func (b *Backend) BindStorageBuffer(binding int, buf driver.Buffer) {
bf := buf.(*buffer)
if bf.typ&driver.BufferBindingShaderStorage == 0 {
if bf.typ&(driver.BufferBindingShaderStorageRead|driver.BufferBindingShaderStorageWrite) == 0 {
panic("not a shader storage buffer")
}
b.storage[binding] = bf
@@ -1356,7 +1356,7 @@ func firstBufferType(typ driver.BufferBinding) gl.Enum {
return gl.ARRAY_BUFFER
case typ&driver.BufferBindingUniforms != 0:
return gl.UNIFORM_BUFFER
case typ&driver.BufferBindingShaderStorage != 0:
case typ&(driver.BufferBindingShaderStorageRead|driver.BufferBindingShaderStorageWrite) != 0:
return gl.SHADER_STORAGE_BUFFER
default:
panic("unsupported buffer type")