compiler: Make is_64bit(GL_*) helper more broadly available

I'd like to use this in the prog_parameter.c code, so I need to move it
into C, make it non-static, and so on.  This probably isn't the ideal
place for it, but I couldn't think of a better one.

Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
Kenneth Graunke
2019-01-16 00:03:39 -08:00
parent daf8ada08d
commit 3c2c6bd1c7
2 changed files with 33 additions and 26 deletions

View File

@@ -33,6 +33,7 @@
#include "main/glheader.h" #include "main/glheader.h"
#include "program/prog_parameter.h"
struct gl_shader_program; struct gl_shader_program;
@@ -161,32 +162,7 @@ private:
bool is_64bit() const bool is_64bit() const
{ {
switch (this->type) { return _mesa_gl_datatype_is_64bit(this->type);
case GL_DOUBLE:
case GL_DOUBLE_VEC2:
case GL_DOUBLE_VEC3:
case GL_DOUBLE_VEC4:
case GL_DOUBLE_MAT2:
case GL_DOUBLE_MAT2x3:
case GL_DOUBLE_MAT2x4:
case GL_DOUBLE_MAT3:
case GL_DOUBLE_MAT3x2:
case GL_DOUBLE_MAT3x4:
case GL_DOUBLE_MAT4:
case GL_DOUBLE_MAT4x2:
case GL_DOUBLE_MAT4x3:
case GL_INT64_ARB:
case GL_INT64_VEC2_ARB:
case GL_INT64_VEC3_ARB:
case GL_INT64_VEC4_ARB:
case GL_UNSIGNED_INT64_ARB:
case GL_UNSIGNED_INT64_VEC2_ARB:
case GL_UNSIGNED_INT64_VEC3_ARB:
case GL_UNSIGNED_INT64_VEC4_ARB:
return true;
default:
return false;
}
} }
/** /**

View File

@@ -185,6 +185,37 @@ _mesa_lookup_parameter_index(const struct gl_program_parameter_list *paramList,
return -1; return -1;
} }
static inline bool
_mesa_gl_datatype_is_64bit(GLenum datatype)
{
switch (datatype) {
case GL_DOUBLE:
case GL_DOUBLE_VEC2:
case GL_DOUBLE_VEC3:
case GL_DOUBLE_VEC4:
case GL_DOUBLE_MAT2:
case GL_DOUBLE_MAT2x3:
case GL_DOUBLE_MAT2x4:
case GL_DOUBLE_MAT3:
case GL_DOUBLE_MAT3x2:
case GL_DOUBLE_MAT3x4:
case GL_DOUBLE_MAT4:
case GL_DOUBLE_MAT4x2:
case GL_DOUBLE_MAT4x3:
case GL_INT64_ARB:
case GL_INT64_VEC2_ARB:
case GL_INT64_VEC3_ARB:
case GL_INT64_VEC4_ARB:
case GL_UNSIGNED_INT64_ARB:
case GL_UNSIGNED_INT64_VEC2_ARB:
case GL_UNSIGNED_INT64_VEC3_ARB:
case GL_UNSIGNED_INT64_VEC4_ARB:
return true;
default:
return false;
}
}
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif