gryphn map buffers
This commit is contained in:
@@ -5,11 +5,21 @@
|
|||||||
gnReturnCode gnCreateBuffer(gnBufferHandle* buffer, gnOutputDeviceHandle device, gnBufferInfo info) {
|
gnReturnCode gnCreateBuffer(gnBufferHandle* buffer, gnOutputDeviceHandle device, gnBufferInfo info) {
|
||||||
*buffer = malloc(sizeof(struct gnBuffer_t));
|
*buffer = malloc(sizeof(struct gnBuffer_t));
|
||||||
(*buffer)->device = device;
|
(*buffer)->device = device;
|
||||||
|
(*buffer)->info = info;
|
||||||
return device->deviceFunctions->_gnCreateBuffer(*buffer, device, info);
|
return device->deviceFunctions->_gnCreateBuffer(*buffer, device, info);
|
||||||
}
|
}
|
||||||
void gnBufferData(gnBufferHandle buffer, size_t dataSize, void* data) {
|
void gnBufferData(gnBufferHandle buffer, size_t dataSize, void* data) {
|
||||||
buffer->device->deviceFunctions->_gnBufferData(buffer, dataSize, data);
|
buffer->device->deviceFunctions->_gnBufferData(buffer, dataSize, data);
|
||||||
}
|
}
|
||||||
|
void* gnMapBuffer(gnBufferHandle buffer) {
|
||||||
|
if (buffer->info.type == GN_STATIC_DRAW) {
|
||||||
|
gnDebuggerSetErrorMessage(buffer->device->instance->debugger, (gnMessageData){
|
||||||
|
.message = gnCreateString("Cannot map static draw buffers")
|
||||||
|
});
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return buffer->device->deviceFunctions->_gnMapBuffer(buffer);
|
||||||
|
}
|
||||||
void gnDestroyBuffer(gnBufferHandle buffer) {
|
void gnDestroyBuffer(gnBufferHandle buffer) {
|
||||||
buffer->device->deviceFunctions->_gnDestroyBuffer(buffer);
|
buffer->device->deviceFunctions->_gnDestroyBuffer(buffer);
|
||||||
}
|
}
|
||||||
|
@@ -26,9 +26,11 @@ typedef struct gnBufferInfo {
|
|||||||
struct gnBuffer_t {
|
struct gnBuffer_t {
|
||||||
struct gnPlatformBuffer_t* buffer;
|
struct gnPlatformBuffer_t* buffer;
|
||||||
gnDeviceHandle device;
|
gnDeviceHandle device;
|
||||||
|
gnBufferInfo info;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gnReturnCode gnCreateBuffer(gnBufferHandle* buffer, gnOutputDeviceHandle device, gnBufferInfo info);
|
gnReturnCode gnCreateBuffer(gnBufferHandle* buffer, gnOutputDeviceHandle device, gnBufferInfo info);
|
||||||
void gnBufferData(gnBufferHandle buffer, size_t dataSize, void* data);
|
void gnBufferData(gnBufferHandle buffer, size_t dataSize, void* data);
|
||||||
|
void* gnMapBuffer(gnBufferHandle buffer);
|
||||||
void gnDestroyBuffer(gnBufferHandle buffer);
|
void gnDestroyBuffer(gnBufferHandle buffer);
|
||||||
|
@@ -84,6 +84,7 @@ typedef struct gnDeviceFunctions_t {
|
|||||||
|
|
||||||
gnReturnCode (*_gnCreateBuffer)(gnBufferHandle buffer, gnDeviceHandle device, gnBufferInfo info);
|
gnReturnCode (*_gnCreateBuffer)(gnBufferHandle buffer, gnDeviceHandle device, gnBufferInfo info);
|
||||||
void (*_gnBufferData)(gnBufferHandle buffer, size_t size, void* data);
|
void (*_gnBufferData)(gnBufferHandle buffer, size_t size, void* data);
|
||||||
|
void* (*_gnMapBuffer)(gnBufferHandle buffer);
|
||||||
void (*_gnDestroyBuffer)(gnBufferHandle buffer);
|
void (*_gnDestroyBuffer)(gnBufferHandle buffer);
|
||||||
|
|
||||||
gnReturnCode (*_gnCreateFence)(gnFenceHandle fence, gnOutputDeviceHandle device);
|
gnReturnCode (*_gnCreateFence)(gnFenceHandle fence, gnOutputDeviceHandle device);
|
||||||
|
@@ -86,6 +86,7 @@ void gnLoadDeviceFunctions(struct gnDynamicLibrary_t* lib, struct gnDeviceFuncti
|
|||||||
gnLoadDLLFunction(lib, functions->_gnDestroySemaphore, "gnDestroySemaphoreFn");
|
gnLoadDLLFunction(lib, functions->_gnDestroySemaphore, "gnDestroySemaphoreFn");
|
||||||
gnLoadDLLFunction(lib, functions->_gnCreateBuffer, "gnCreateBufferFn");
|
gnLoadDLLFunction(lib, functions->_gnCreateBuffer, "gnCreateBufferFn");
|
||||||
gnLoadDLLFunction(lib, functions->_gnBufferData, "gnBufferDataFn");
|
gnLoadDLLFunction(lib, functions->_gnBufferData, "gnBufferDataFn");
|
||||||
|
gnLoadDLLFunction(lib, functions->_gnMapBuffer, "gnMapBufferFn");
|
||||||
gnLoadDLLFunction(lib, functions->_gnDestroyBuffer, "gnDestroyBufferFn");
|
gnLoadDLLFunction(lib, functions->_gnDestroyBuffer, "gnDestroyBufferFn");
|
||||||
gnLoadDLLFunction(lib, functions->_gnCreateFence, "gnCreateFenceFn");
|
gnLoadDLLFunction(lib, functions->_gnCreateFence, "gnCreateFenceFn");
|
||||||
gnLoadDLLFunction(lib, functions->_gnSignalFence, "gnSignalFenceFn");
|
gnLoadDLLFunction(lib, functions->_gnSignalFence, "gnSignalFenceFn");
|
||||||
|
Reference in New Issue
Block a user