|
@@ -46,14 +46,10 @@ Buffer::Buffer(Graphics *gfx, const Settings &settings, const std::vector<DataDe
|
|
|
const auto &caps = gfx->getCapabilities();
|
|
|
bool supportsGLSL3 = caps.features[Graphics::FEATURE_GLSL3];
|
|
|
|
|
|
- bool indexbuffer = settings.usageFlags & BUFFERUSAGEFLAG_INDEX;
|
|
|
- bool vertexbuffer = settings.usageFlags & BUFFERUSAGEFLAG_VERTEX;
|
|
|
- bool texelbuffer = settings.usageFlags & BUFFERUSAGEFLAG_TEXEL;
|
|
|
- bool storagebuffer = settings.usageFlags & BUFFERUSAGEFLAG_SHADER_STORAGE;
|
|
|
- bool copydest = settings.usageFlags & BUFFERUSAGEFLAG_COPY_DEST;
|
|
|
-
|
|
|
- if (!indexbuffer && !vertexbuffer && !texelbuffer && !storagebuffer)
|
|
|
- throw love::Exception("Buffer must be created with at least one buffer type (index, vertex, texel, or shaderstorage).");
|
|
|
+ bool indexbuffer = usageFlags & BUFFERUSAGEFLAG_INDEX;
|
|
|
+ bool vertexbuffer = usageFlags & BUFFERUSAGEFLAG_VERTEX;
|
|
|
+ bool texelbuffer = usageFlags & BUFFERUSAGEFLAG_TEXEL;
|
|
|
+ bool storagebuffer = usageFlags & BUFFERUSAGEFLAG_SHADER_STORAGE;
|
|
|
|
|
|
if (texelbuffer && !caps.features[Graphics::FEATURE_TEXEL_BUFFER])
|
|
|
throw love::Exception("Texel buffers are not supported on this system.");
|
|
@@ -61,8 +57,8 @@ Buffer::Buffer(Graphics *gfx, const Settings &settings, const std::vector<DataDe
|
|
|
if (storagebuffer && !caps.features[Graphics::FEATURE_GLSL4])
|
|
|
throw love::Exception("Shader Storage buffers are not supported on this system (GLSL 4 support is necessary.)");
|
|
|
|
|
|
- if (copydest && dataUsage == BUFFERDATAUSAGE_STREAM)
|
|
|
- throw love::Exception("Buffers created with 'stream' data usage cannot be used as a copy destination.");
|
|
|
+ if (storagebuffer && dataUsage == BUFFERDATAUSAGE_STREAM)
|
|
|
+ throw love::Exception("Buffers created with 'stream' data usage cannot be used as a shader storage buffer.");
|
|
|
|
|
|
size_t offset = 0;
|
|
|
size_t stride = 0;
|