add support for storage buffers in vulkan
This commit is contained in:
@@ -11,6 +11,9 @@ gnReturnCode gnCreateBuffer(gnBufferHandle* buffer, gnOutputDeviceHandle device,
|
||||
void gnBufferData(gnBufferHandle buffer, size_t dataSize, void* data) {
|
||||
buffer->device->instance->callingLayer->deviceFunctions._gnBufferData(buffer, dataSize, data);
|
||||
}
|
||||
void gnBufferSubData(gnBufferHandle buffer, size_t offset, size_t dataSize, gnBufferMemory data) {
|
||||
buffer->device->instance->callingLayer->deviceFunctions._gnBufferSubData(buffer, offset, dataSize, data);
|
||||
}
|
||||
void* gnMapBuffer(gnBufferHandle buffer) {
|
||||
if (buffer->info.usage == GN_STATIC_DRAW) return NULL;
|
||||
return buffer->device->instance->callingLayer->deviceFunctions._gnMapBuffer(buffer);
|
||||
|
@@ -11,7 +11,8 @@ typedef enum gnIndexType {
|
||||
typedef enum gnBufferType {
|
||||
GN_VERTEX_BUFFER = 0x00000001,
|
||||
GN_INDEX_BUFFER = 0x00000002,
|
||||
GN_UNIFORM_BUFFER = 0x00000004
|
||||
GN_UNIFORM_BUFFER = 0x00000004,
|
||||
GN_STORAGE_BUFFER = 0x00000008
|
||||
} gnBufferType;
|
||||
|
||||
typedef enum gnBufferUsage {
|
||||
@@ -37,5 +38,6 @@ GN_ARRAY_LIST(gnBufferMemory);
|
||||
|
||||
gnReturnCode gnCreateBuffer(gnBufferHandle* buffer, gnOutputDeviceHandle device, gnBufferInfo info);
|
||||
void gnBufferData(gnBufferHandle buffer, size_t dataSize, gnBufferMemory data);
|
||||
void gnBufferSubData(gnBufferHandle buffer, size_t offset, size_t dataSize, gnBufferMemory data);
|
||||
gnBufferMemory gnMapBuffer(gnBufferHandle buffer);
|
||||
void gnDestroyBuffer(gnBufferHandle buffer);
|
||||
|
@@ -7,6 +7,10 @@ void gnUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo bufferInfo) {
|
||||
uniform->pool->device->instance->callingLayer->deviceFunctions._gnUpdateBufferUniform(uniform, &bufferInfo);
|
||||
}
|
||||
|
||||
void gnUpdateStorageUniform(gnUniform uniform, gnStorageUniformInfo storageInfo) {
|
||||
uniform->pool->device->instance->callingLayer->deviceFunctions._gnUpdateStorageUniform(uniform, &storageInfo);
|
||||
}
|
||||
|
||||
void gnUpdateImageUniform(gnUniform uniform, gnImageUniformInfo imageInfo) {
|
||||
uniform->pool->device->instance->callingLayer->deviceFunctions._gnUpdateImageUniform(uniform, &imageInfo);
|
||||
}
|
||||
|
@@ -11,6 +11,12 @@ typedef struct gnBufferUniformInfo {
|
||||
size_t size;
|
||||
} gnBufferUniformInfo;
|
||||
|
||||
typedef struct gnStorageUniformInfo {
|
||||
gnBuffer buffer;
|
||||
size_t offset, size;
|
||||
uint32_t binding;
|
||||
} gnStorageUniformInfo;
|
||||
|
||||
typedef struct gnImageUniformInfo {
|
||||
uint32_t binding;
|
||||
gnTexture texture;
|
||||
@@ -22,7 +28,8 @@ struct gnUniform_t {
|
||||
gnUniformPool pool;
|
||||
};
|
||||
#endif
|
||||
GN_ARRAY_LIST(gnUniform)
|
||||
GN_ARRAY_LIST(gnUniform);
|
||||
|
||||
void gnUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo bufferInfo);
|
||||
void gnUpdateStorageUniform(gnUniform uniform, gnStorageUniformInfo storageInfo);
|
||||
void gnUpdateImageUniform(gnUniform uniform, gnImageUniformInfo imageInfo);
|
||||
|
@@ -4,8 +4,8 @@
|
||||
|
||||
typedef enum gnUniformType {
|
||||
GN_UNIFORM_BUFFER_DESCRIPTOR,
|
||||
GN_SHADER_STORE_BUFFER_DESCRIPTOR,
|
||||
GN_IMAGE_DESCRIPTOR,
|
||||
GN_SHADER_STORE_BUFFER_DESCRIPTOR,
|
||||
GN_UNIFORM_TYPE_MAX
|
||||
} gnUniformType;
|
||||
|
||||
|
Reference in New Issue
Block a user