mirror of https://github.com/bjornbytes/lovr.git
Opaque Buffer;
This commit is contained in:
parent
5d8bf1d45a
commit
b045d42782
|
@ -1,13 +0,0 @@
|
|||
#include "graphics/buffer.h"
|
||||
|
||||
size_t lovrBufferGetSize(Buffer* buffer) {
|
||||
return buffer->size;
|
||||
}
|
||||
|
||||
bool lovrBufferIsReadable(Buffer* buffer) {
|
||||
return buffer->readable;
|
||||
}
|
||||
|
||||
BufferUsage lovrBufferGetUsage(Buffer* buffer) {
|
||||
return buffer->usage;
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
#include "graphics/opengl.h"
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -19,20 +18,8 @@ typedef enum {
|
|||
USAGE_STREAM
|
||||
} BufferUsage;
|
||||
|
||||
typedef struct Buffer {
|
||||
void* data;
|
||||
size_t size;
|
||||
size_t flushFrom;
|
||||
size_t flushTo;
|
||||
BufferType type;
|
||||
BufferUsage usage;
|
||||
bool mapped;
|
||||
bool readable;
|
||||
GPU_BUFFER_FIELDS
|
||||
} Buffer;
|
||||
|
||||
Buffer* lovrBufferInit(Buffer* buffer, size_t size, void* data, BufferType type, BufferUsage usage, bool readable);
|
||||
#define lovrBufferCreate(...) lovrBufferInit(lovrAlloc(Buffer), __VA_ARGS__)
|
||||
typedef struct Buffer Buffer;
|
||||
Buffer* lovrBufferCreate(size_t size, void* data, BufferType type, BufferUsage usage, bool readable);
|
||||
void lovrBufferDestroy(void* ref);
|
||||
size_t lovrBufferGetSize(Buffer* buffer);
|
||||
bool lovrBufferIsReadable(Buffer* buffer);
|
||||
|
|
|
@ -31,6 +31,19 @@
|
|||
#define LOVR_SHADER_BONE_WEIGHTS 6
|
||||
#define LOVR_SHADER_DRAW_ID 7
|
||||
|
||||
struct Buffer {
|
||||
uint32_t id;
|
||||
void* data;
|
||||
size_t size;
|
||||
size_t flushFrom;
|
||||
size_t flushTo;
|
||||
BufferType type;
|
||||
BufferUsage usage;
|
||||
bool mapped;
|
||||
bool readable;
|
||||
uint8_t incoherent;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
BARRIER_BLOCK,
|
||||
BARRIER_UNIFORM_TEXTURE,
|
||||
|
@ -1830,7 +1843,8 @@ TextureData* lovrCanvasNewTextureData(Canvas* canvas, uint32_t index) {
|
|||
|
||||
// Buffer
|
||||
|
||||
Buffer* lovrBufferInit(Buffer* buffer, size_t size, void* data, BufferType type, BufferUsage usage, bool readable) {
|
||||
Buffer* lovrBufferCreate(size_t size, void* data, BufferType type, BufferUsage usage, bool readable) {
|
||||
Buffer* buffer = lovrAlloc(Buffer);
|
||||
state.stats.bufferCount++;
|
||||
state.stats.bufferMemory += size;
|
||||
buffer->size = size;
|
||||
|
@ -1873,6 +1887,18 @@ void lovrBufferDestroy(void* ref) {
|
|||
state.stats.bufferCount--;
|
||||
}
|
||||
|
||||
size_t lovrBufferGetSize(Buffer* buffer) {
|
||||
return buffer->size;
|
||||
}
|
||||
|
||||
bool lovrBufferIsReadable(Buffer* buffer) {
|
||||
return buffer->readable;
|
||||
}
|
||||
|
||||
BufferUsage lovrBufferGetUsage(Buffer* buffer) {
|
||||
return buffer->usage;
|
||||
}
|
||||
|
||||
void* lovrBufferMap(Buffer* buffer, size_t offset) {
|
||||
#ifndef LOVR_WEBGL
|
||||
if (!GLAD_GL_ARB_buffer_storage && !buffer->mapped) {
|
||||
|
|
|
@ -11,10 +11,6 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#define GPU_BUFFER_FIELDS \
|
||||
uint8_t incoherent; \
|
||||
uint32_t id;
|
||||
|
||||
#define GPU_CANVAS_FIELDS \
|
||||
bool immortal; \
|
||||
uint32_t framebuffer; \
|
||||
|
|
Loading…
Reference in New Issue