OpenGL: add GLSL #version 330, drop 140 and 150

GL 3.3 is the new minimum. Compatibility profile for now, core profile eventually. During development, GL 3.0 (on Mesa) and 2.1 (on Mac) will still work.

Part of T49012
This commit is contained in:
Mike Erwin 2016-10-16 03:18:17 -04:00
parent 1deab69e0a
commit 3999910b19
2 changed files with 9 additions and 18 deletions

View File

@ -129,18 +129,18 @@ void GPU_get_dfdy_factors(float fac[2])
void gpu_extensions_init(void)
{
/* during 2.8 development each platform has its own OpenGL minimum requirements
* final 2.8 release will be unified on OpenGL 3.2 core profile, no required extensions
* final 2.8 release will be unified on OpenGL 3.3 core profile, no required extensions
* see developer.blender.org/T49012 for details
*/
#ifdef _WIN32
BLI_assert(GLEW_VERSION_3_2);
BLI_assert(GLEW_VERSION_3_3);
#elif defined(__APPLE__)
BLI_assert(GLEW_VERSION_2_1 && GLEW_EXT_gpu_shader4
&& GLEW_ARB_framebuffer_object
&& GLEW_ARB_draw_elements_base_vertex
&& GLEW_APPLE_flush_buffer_range);
#else
BLI_assert(GLEW_VERSION_3_2 || (GLEW_VERSION_3_0 && GLEW_ARB_draw_elements_base_vertex));
BLI_assert(GLEW_VERSION_3_3 || (GLEW_VERSION_3_0 && GLEW_ARB_draw_elements_base_vertex));
/* vendor driver || Mesa compatibility profile */
#endif
@ -257,6 +257,8 @@ void gpu_extensions_exit(void)
bool GPU_legacy_support(void)
{
/* return whether or not current GL context is compatible with legacy OpenGL */
/* (will be removed after switching to core profile) */
static bool checked = false;
static bool support = true;

View File

@ -132,12 +132,11 @@ static struct GPUShadersGlobal {
static void shader_print_errors(const char *task, const char *log, const char **code, int totcode)
{
int i;
int line = 1;
fprintf(stderr, "GPUShader: %s error:\n", task);
for (i = 0; i < totcode; i++) {
for (int i = 0; i < totcode; i++) {
const char *c, *pos, *end = code[i] + strlen(code[i]);
if (G.debug & G_DEBUG) {
@ -160,9 +159,9 @@ static void shader_print_errors(const char *task, const char *log, const char **
static const char *gpu_shader_version(void)
{
if (GLEW_VERSION_3_2) {
if (GLEW_ARB_compatibility) {
return "#version 150 compatibility\n";
if (GLEW_VERSION_3_3) {
if (GPU_legacy_support()) {
return "#version 330 compatibility\n";
/* highest version that is widely supported
* gives us native geometry shaders!
* use compatibility profile so we can continue using builtin shader input/output names
@ -173,16 +172,6 @@ static const char *gpu_shader_version(void)
/* latest version that is compatible with existing shaders */
}
}
else if (GLEW_VERSION_3_1) {
if (GLEW_ARB_compatibility) {
return "#version 140\n";
/* also need the ARB_compatibility extension, handled below */
}
else {
return "#version 130\n";
/* latest version that is compatible with existing shaders */
}
}
else if (GLEW_VERSION_3_0) {
return "#version 130\n";
/* GLSL 1.3 has modern syntax/keywords/datatypes so use if available