GPU: Fix MSVC compile errors

This commit is contained in:
2020-07-26 22:55:09 +02:00
parent e76f64a532
commit 2c2082cc62
2 changed files with 27 additions and 21 deletions

View File

@@ -26,6 +26,7 @@
#include "MEM_guardedalloc.h"
#include "GPU_element.h"
#include "GPU_glew.h"
#include "gpu_context_private.h"
@@ -37,21 +38,18 @@
static GLenum convert_index_type_to_gl(GPUIndexBufType type)
{
static const GLenum table[] = {
[GPU_INDEX_U16] = GL_UNSIGNED_SHORT,
[GPU_INDEX_U32] = GL_UNSIGNED_INT,
};
return table[type];
#if GPU_TRACK_INDEX_RANGE
return (type == GPU_INDEX_U32) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT;
#else
return GL_UNSIGNED_INT;
#endif
}
uint GPU_indexbuf_size_get(const GPUIndexBuf *elem)
{
#if GPU_TRACK_INDEX_RANGE
static const uint table[] = {
[GPU_INDEX_U16] = sizeof(GLushort),
[GPU_INDEX_U32] = sizeof(GLuint),
};
return elem->index_len * table[elem->index_type];
return elem->index_len *
((elem->index_type == GPU_INDEX_U32) ? sizeof(GLuint) : sizeof(GLshort));
#else
return elem->index_len * sizeof(GLuint);
#endif

View File

@@ -78,17 +78,25 @@ struct GPUFrameBuffer {
static GLenum convert_attachment_type_to_gl(GPUAttachmentType type)
{
static const GLenum table[] = {
[GPU_FB_DEPTH_ATTACHMENT] = GL_DEPTH_ATTACHMENT,
[GPU_FB_DEPTH_STENCIL_ATTACHMENT] = GL_DEPTH_STENCIL_ATTACHMENT,
[GPU_FB_COLOR_ATTACHMENT0] = GL_COLOR_ATTACHMENT0,
[GPU_FB_COLOR_ATTACHMENT1] = GL_COLOR_ATTACHMENT1,
[GPU_FB_COLOR_ATTACHMENT2] = GL_COLOR_ATTACHMENT2,
[GPU_FB_COLOR_ATTACHMENT3] = GL_COLOR_ATTACHMENT3,
[GPU_FB_COLOR_ATTACHMENT4] = GL_COLOR_ATTACHMENT4,
[GPU_FB_COLOR_ATTACHMENT5] = GL_COLOR_ATTACHMENT5,
};
return table[type];
#define ATTACHMENT(type) \
case GPU_FB_##type: { \
return GL_##type; \
} \
((void)0)
switch (type) {
ATTACHMENT(DEPTH_ATTACHMENT);
ATTACHMENT(DEPTH_STENCIL_ATTACHMENT);
ATTACHMENT(COLOR_ATTACHMENT0);
ATTACHMENT(COLOR_ATTACHMENT1);
ATTACHMENT(COLOR_ATTACHMENT2);
ATTACHMENT(COLOR_ATTACHMENT3);
ATTACHMENT(COLOR_ATTACHMENT4);
ATTACHMENT(COLOR_ATTACHMENT5);
default:
BLI_assert(0);
return GL_COLOR_ATTACHMENT0;
}
}
static GPUAttachmentType attachment_type_from_tex(GPUTexture *tex, int slot)