diff options
author | Jordan Justen <jordan.l.justen@intel.com> | 2014-05-04 09:40:32 -0700 |
---|---|---|
committer | Jordan Justen <jordan.l.justen@intel.com> | 2014-05-09 00:24:32 -0700 |
commit | 0e1ae83abb259f81aaa662defce183e883f2dbd8 (patch) | |
tree | 9181346f4c38146a967c871b101c768a807902e1 | |
parent | b71374f38e7e82b807e199076a213eff19d60715 (diff) | |
download | waffle-0e1ae83abb259f81aaa662defce183e883f2dbd8.tar.gz |
core: Stop using attrs->context_full_version
If the user makes a request to waffle for a minor version > 9, then
this field will not properly represent the requested version.
Although, such a request from the user would likely be invalid, we
should handle it properly.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
-rw-r--r-- | src/waffle/cgl/cgl_config.m | 25 | ||||
-rw-r--r-- | src/waffle/core/wcore_config_attrs.c | 16 | ||||
-rw-r--r-- | src/waffle/core/wcore_config_attrs_unittest.c | 21 | ||||
-rw-r--r-- | src/waffle/egl/wegl_config.c | 6 | ||||
-rw-r--r-- | src/waffle/egl/wegl_context.c | 2 | ||||
-rw-r--r-- | src/waffle/glx/glx_config.c | 12 | ||||
-rw-r--r-- | src/waffle/glx/glx_context.c | 4 |
7 files changed, 33 insertions, 53 deletions
diff --git a/src/waffle/cgl/cgl_config.m b/src/waffle/cgl/cgl_config.m index 52dc225..094178b 100644 --- a/src/waffle/cgl/cgl_config.m +++ b/src/waffle/cgl/cgl_config.m @@ -88,7 +88,7 @@ cgl_config_check_attrs(const struct cgl_platform *plat, return false; } - if (attrs->context_full_version > 32) { + if (wcore_config_attrs_version_gt(attrs, 32)) { if (plat->system_version_full >= 0x0a09) { wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, "Waffle CGL was built only with Mac OS 10.8 " @@ -103,7 +103,7 @@ cgl_config_check_attrs(const struct cgl_platform *plat, return false; } } - else if (attrs->context_full_version == 32) { + else if (wcore_config_attrs_version_eq(attrs, 32)) { assert(attrs->context_profile == WAFFLE_CONTEXT_CORE_PROFILE); if (plat->system_version_full < 0x0a07) @@ -111,7 +111,7 @@ cgl_config_check_attrs(const struct cgl_platform *plat, return true; } - else if (attrs->context_full_version == 31) { + else if (wcore_config_attrs_version_eq(attrs, 31)) { // Emulate EGL_KHR_create_context, which allows // implementations to promote OpenGL 3.1 to // OpenGL 3.2 Core Profile. @@ -122,7 +122,7 @@ cgl_config_check_attrs(const struct cgl_platform *plat, return true; } - else if (attrs->context_full_version > 21) { + else if (wcore_config_attrs_version_gt(attrs, 21)) { wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, "CGL does not support OpenGL %d.%d contexts", attrs->context_major_version, @@ -130,7 +130,7 @@ cgl_config_check_attrs(const struct cgl_platform *plat, return false; } else { - assert(attrs->context_full_version >= 10); + assert(wcore_config_attrs_version_ge(attrs, 10)); return true; } case WAFFLE_CONTEXT_OPENGL_ES1: @@ -179,25 +179,26 @@ cgl_config_fill_pixel_format_attrs( // return a context of the latest supported flavor that is // backwards-compatibile with the requested flavor. if (plat->system_version_full >= 0x0a07) { - if (attrs->context_full_version == 32) { + if (wcore_config_attrs_version_eq(attrs, 32)) { ADD_ATTR(kCGLPFAOpenGLProfile, (int) kCGLOGLPVersion_3_2_Core); } - else if (attrs->context_full_version == 31) { + else if (wcore_config_attrs_version_eq(attrs, 31)) { ADD_ATTR(kCGLPFAOpenGLProfile, (int) kCGLOGLPVersion_3_2_Core); } - else if (attrs->context_full_version <= 21) { + else if (wcore_config_attrs_version_le(attrs, 21)) { ADD_ATTR(kCGLPFAOpenGLProfile, (int) kCGLOGLPVersion_Legacy); } else { - wcore_error_internal("version=%d profile=%#x", - attrs->context_full_version, + wcore_error_internal("version=%d.%d profile=%#x", + attrs->context_version_major, + attrs->context_version_minor, attrs->context_profile); return false; } } else { // The OS doesn't recognize attribute kCGLPFAOpenGLProfile. - assert(attrs->context_full_version <= 21); + assert(wcore_config_attrs_version_le(attrs, 21)); } ADD_ATTR(kCGLPFAColorSize, attrs->rgb_size); @@ -207,7 +208,7 @@ cgl_config_fill_pixel_format_attrs( ADD_ATTR(kCGLPFASampleBuffers, attrs->sample_buffers); ADD_ATTR(kCGLPFASamples, attrs->samples); - if (attrs->context_full_version == 10) + if (wcore_config_attrs_version_eq(attrs, 10)) ADD_ATTR(kCGLPFAAccumSize, attrs->accum_buffer); if (attrs->double_buffered) diff --git a/src/waffle/core/wcore_config_attrs.c b/src/waffle/core/wcore_config_attrs.c index da80c38..b7d5d76 100644 --- a/src/waffle/core/wcore_config_attrs.c +++ b/src/waffle/core/wcore_config_attrs.c @@ -190,7 +190,7 @@ parse_context_version(struct wcore_config_attrs *attrs, switch (attrs->context_api) { case WAFFLE_CONTEXT_OPENGL: - if (attrs->context_full_version < 10) { + if (wcore_config_attrs_version_lt(attrs, 10)) { wcore_errorf(WAFFLE_ERROR_BAD_ATTRIBUTE, "for OpenGL, the requested context version " "must be >= 1.0"); @@ -199,8 +199,8 @@ parse_context_version(struct wcore_config_attrs *attrs, break; case WAFFLE_CONTEXT_OPENGL_ES1: - if (attrs->context_full_version != 10 && - attrs->context_full_version != 11) { + if (!wcore_config_attrs_version_eq(attrs, 10) && + !wcore_config_attrs_version_eq(attrs, 11)) { wcore_errorf(WAFFLE_ERROR_BAD_ATTRIBUTE, "for OpenGL ES1, the requested context version " "must be 1.0 or 1.1"); @@ -240,7 +240,7 @@ set_context_profile_default(struct wcore_config_attrs *attrs) { switch (attrs->context_api) { case WAFFLE_CONTEXT_OPENGL: - if (attrs->context_full_version >= 32) { + if (wcore_config_attrs_version_ge(attrs, 32)) { attrs->context_profile = WAFFLE_CONTEXT_CORE_PROFILE; } else { @@ -271,7 +271,7 @@ parse_context_profile(struct wcore_config_attrs *attrs, switch (attrs->context_api) { case WAFFLE_CONTEXT_OPENGL: - if (attrs->context_full_version >= 32 + if (wcore_config_attrs_version_ge(attrs, 32) && attrs->context_profile != WAFFLE_CONTEXT_CORE_PROFILE && attrs->context_profile != WAFFLE_CONTEXT_COMPATIBILITY_PROFILE) { wcore_errorf(WAFFLE_ERROR_BAD_ATTRIBUTE, @@ -281,7 +281,7 @@ parse_context_profile(struct wcore_config_attrs *attrs, "WAFFLE_CONTEXT_COMPATIBILITY_PROFILE"); return false; } - else if (attrs->context_full_version < 32 + else if (wcore_config_attrs_version_lt(attrs, 32) && attrs->context_profile != WAFFLE_NONE) { wcore_errorf(WAFFLE_ERROR_BAD_ATTRIBUTE, "for OpenGL < 3.2, WAFFLE_CONTEXT_PROFILE must be " @@ -329,7 +329,7 @@ parse_context_forward_compatible(struct wcore_config_attrs *attrs, } - if (attrs->context_full_version < 30) { + if (wcore_config_attrs_version_lt(attrs, 30)) { wcore_errorf(WAFFLE_ERROR_BAD_ATTRIBUTE, "To request a forward-compatible context, the context " "version must be at least 3.0"); @@ -461,7 +461,7 @@ check_final(struct wcore_config_attrs *attrs) { if (attrs->context_api == WAFFLE_CONTEXT_OPENGL && attrs->context_profile == WAFFLE_CONTEXT_CORE_PROFILE - && attrs->context_full_version >= 32 + && wcore_config_attrs_version_ge(attrs, 32) && attrs->accum_buffer) { wcore_errorf(WAFFLE_ERROR_BAD_ATTRIBUTE, "%s", "WAFFLE_ACCUM_BUFFER must be false for" diff --git a/src/waffle/core/wcore_config_attrs_unittest.c b/src/waffle/core/wcore_config_attrs_unittest.c index 5fcb408..501e30f 100644 --- a/src/waffle/core/wcore_config_attrs_unittest.c +++ b/src/waffle/core/wcore_config_attrs_unittest.c @@ -48,7 +48,6 @@ setup(void **state) { .context_api = WAFFLE_CONTEXT_OPENGL, .context_major_version = 1, .context_minor_version = 0, - .context_full_version = 10, .context_profile = WAFFLE_NONE, .context_debug = false, .context_forward_compatible = false, @@ -117,7 +116,6 @@ test_wcore_config_attrs_gl_defaults(void **state) { assert_int_equal(ts->actual_attrs.context_major_version, 1); assert_int_equal(ts->actual_attrs.context_minor_version, 0); - assert_int_equal(ts->actual_attrs.context_full_version, 10); assert_int_equal(ts->actual_attrs.context_profile, WAFFLE_NONE); assert_int_equal(ts->actual_attrs.red_size, 0); assert_int_equal(ts->actual_attrs.green_size, 0); @@ -145,7 +143,6 @@ test_wcore_config_attrs_gles1_defaults(void **state) { assert_int_equal(ts->actual_attrs.context_major_version, 1); assert_int_equal(ts->actual_attrs.context_minor_version, 0); - assert_int_equal(ts->actual_attrs.context_full_version, 10); assert_int_equal(ts->actual_attrs.context_profile, WAFFLE_NONE); assert_int_equal(ts->actual_attrs.red_size, 0); @@ -173,7 +170,6 @@ test_wcore_config_attrs_gles2_defaults(void **state) { assert_int_equal(ts->actual_attrs.context_major_version, 2); assert_int_equal(ts->actual_attrs.context_minor_version, 0); - assert_int_equal(ts->actual_attrs.context_full_version, 20); assert_int_equal(ts->actual_attrs.context_profile, WAFFLE_NONE); assert_int_equal(ts->actual_attrs.red_size, 0); @@ -201,7 +197,6 @@ test_wcore_config_attrs_gles3_defaults(void **state) { assert_int_equal(ts->actual_attrs.context_major_version, 3); assert_int_equal(ts->actual_attrs.context_minor_version, 0); - assert_int_equal(ts->actual_attrs.context_full_version, 30); assert_int_equal(ts->actual_attrs.context_profile, WAFFLE_NONE); assert_int_equal(ts->actual_attrs.red_size, 0); @@ -431,7 +426,6 @@ test_wcore_config_attrs_gles10(void **state) { assert_true(wcore_config_attrs_parse(attrib_list, &ts->actual_attrs)); assert_int_equal(ts->actual_attrs.context_major_version, 1); assert_int_equal(ts->actual_attrs.context_minor_version, 0); - assert_int_equal(ts->actual_attrs.context_full_version, 10); } static void @@ -448,7 +442,6 @@ test_wcore_config_attrs_gles11(void **state) { assert_true(wcore_config_attrs_parse(attrib_list, &ts->actual_attrs)); assert_int_equal(ts->actual_attrs.context_major_version, 1); assert_int_equal(ts->actual_attrs.context_minor_version, 1); - assert_int_equal(ts->actual_attrs.context_full_version, 11); } static void @@ -480,7 +473,6 @@ test_wcore_config_attrs_gles20(void **state) { assert_true(wcore_config_attrs_parse(attrib_list, &ts->actual_attrs)); assert_int_equal(ts->actual_attrs.context_major_version, 2); assert_int_equal(ts->actual_attrs.context_minor_version, 0); - assert_int_equal(ts->actual_attrs.context_full_version, 20); } static void @@ -497,7 +489,6 @@ test_wcore_config_attrs_gles21(void **state) { assert_true(wcore_config_attrs_parse(attrib_list, &ts->actual_attrs)); assert_int_equal(ts->actual_attrs.context_major_version, 2); assert_int_equal(ts->actual_attrs.context_minor_version, 1); - assert_int_equal(ts->actual_attrs.context_full_version, 21); } static void @@ -529,7 +520,6 @@ test_wcore_config_attrs_gles30(void **state) { assert_true(wcore_config_attrs_parse(attrib_list, &ts->actual_attrs)); assert_int_equal(ts->actual_attrs.context_major_version, 3); assert_int_equal(ts->actual_attrs.context_minor_version, 0); - assert_int_equal(ts->actual_attrs.context_full_version, 30); } static void @@ -546,7 +536,6 @@ test_wcore_config_attrs_gles31(void **state) { assert_true(wcore_config_attrs_parse(attrib_list, &ts->actual_attrs)); assert_int_equal(ts->actual_attrs.context_major_version, 3); assert_int_equal(ts->actual_attrs.context_minor_version, 1); - assert_int_equal(ts->actual_attrs.context_full_version, 31); } static void @@ -918,7 +907,6 @@ test_wcore_config_attrs_forward_compat_gl30(void **state) { 0, }; - ts->expect_attrs.context_full_version = 30; ts->expect_attrs.context_major_version = 3; ts->expect_attrs.context_minor_version = 0; ts->expect_attrs.context_forward_compatible = true; @@ -940,7 +928,6 @@ test_wcore_config_attrs_forward_compat_gl32(void **state) { 0, }; - ts->expect_attrs.context_full_version = 32; ts->expect_attrs.context_major_version = 3; ts->expect_attrs.context_minor_version = 2; ts->expect_attrs.context_profile = WAFFLE_CONTEXT_CORE_PROFILE; @@ -963,7 +950,6 @@ test_wcore_config_attrs_forward_compat_gl41(void **state) { 0, }; - ts->expect_attrs.context_full_version = 41; ts->expect_attrs.context_major_version = 4; ts->expect_attrs.context_minor_version = 1; ts->expect_attrs.context_profile = WAFFLE_CONTEXT_CORE_PROFILE; @@ -986,7 +972,6 @@ test_wcore_config_attrs_forward_compat_gl30_dont_care(void **state) { 0, }; - ts->expect_attrs.context_full_version = 30; ts->expect_attrs.context_major_version = 3; ts->expect_attrs.context_minor_version = 0; ts->expect_attrs.context_forward_compatible = false; @@ -1044,7 +1029,6 @@ test_wcore_config_attrs_debug_gl21(void **state) { }; ts->expect_attrs.context_api = WAFFLE_CONTEXT_OPENGL; - ts->expect_attrs.context_full_version = 21; ts->expect_attrs.context_major_version = 2; ts->expect_attrs.context_minor_version = 1; ts->expect_attrs.context_debug = true; @@ -1069,7 +1053,6 @@ test_wcore_config_attrs_debug_gl32_core(void **state) { ts->expect_attrs.context_api = WAFFLE_CONTEXT_OPENGL; ts->expect_attrs.context_profile = WAFFLE_CONTEXT_CORE_PROFILE; - ts->expect_attrs.context_full_version = 32; ts->expect_attrs.context_major_version = 3; ts->expect_attrs.context_minor_version = 2; ts->expect_attrs.context_debug = true; @@ -1094,7 +1077,6 @@ test_wcore_config_attrs_debug_gl32_compat(void **state) { ts->expect_attrs.context_api = WAFFLE_CONTEXT_OPENGL; ts->expect_attrs.context_profile = WAFFLE_CONTEXT_COMPATIBILITY_PROFILE; - ts->expect_attrs.context_full_version = 32; ts->expect_attrs.context_major_version = 3; ts->expect_attrs.context_minor_version = 2; ts->expect_attrs.context_debug = true; @@ -1115,7 +1097,6 @@ test_wcore_config_attrs_debug_gles1(void **state) { }; ts->expect_attrs.context_api = WAFFLE_CONTEXT_OPENGL_ES1; - ts->expect_attrs.context_full_version = 10; ts->expect_attrs.context_major_version = 1; ts->expect_attrs.context_debug = true; @@ -1135,7 +1116,6 @@ test_wcore_config_attrs_debug_gles2(void **state) { }; ts->expect_attrs.context_api = WAFFLE_CONTEXT_OPENGL_ES2; - ts->expect_attrs.context_full_version = 20; ts->expect_attrs.context_major_version = 2; ts->expect_attrs.context_debug = true; @@ -1155,7 +1135,6 @@ test_wcore_config_attrs_debug_gles3(void **state) { }; ts->expect_attrs.context_api = WAFFLE_CONTEXT_OPENGL_ES3; - ts->expect_attrs.context_full_version = 30; ts->expect_attrs.context_major_version = 3; ts->expect_attrs.context_debug = true; diff --git a/src/waffle/egl/wegl_config.c b/src/waffle/egl/wegl_config.c index 1e2d4ee..5dbe1b6 100644 --- a/src/waffle/egl/wegl_config.c +++ b/src/waffle/egl/wegl_config.c @@ -44,7 +44,7 @@ check_context_attrs(struct wegl_display *dpy, if (attrs->context_forward_compatible) { assert(attrs->context_api == WAFFLE_CONTEXT_OPENGL); - assert(attrs->context_full_version >= 30); + assert(wcore_config_attrs_version_ge(attrs, 30)); } if (attrs->context_debug && !dpy->KHR_create_context) { @@ -56,7 +56,7 @@ check_context_attrs(struct wegl_display *dpy, switch (attrs->context_api) { case WAFFLE_CONTEXT_OPENGL: - if (attrs->context_full_version != 10 && !dpy->KHR_create_context) { + if (!wcore_config_attrs_version_eq(attrs, 10) && !dpy->KHR_create_context) { wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, "KHR_EXT_create_context is required in order to " "request an OpenGL version not equal to the default " @@ -64,7 +64,7 @@ check_context_attrs(struct wegl_display *dpy, return false; } - if (attrs->context_full_version >= 32) { + if (wcore_config_attrs_version_ge(attrs, 32)) { assert(attrs->context_profile == WAFFLE_CONTEXT_CORE_PROFILE || attrs->context_profile == WAFFLE_CONTEXT_COMPATIBILITY_PROFILE); } diff --git a/src/waffle/egl/wegl_context.c b/src/waffle/egl/wegl_context.c index 9ffc4f5..abd6129 100644 --- a/src/waffle/egl/wegl_context.c +++ b/src/waffle/egl/wegl_context.c @@ -94,7 +94,7 @@ create_real_context(struct wegl_config *config, context_flags |= EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR; } - if (attrs->context_full_version >= 32) { + if (wcore_config_attrs_version_ge(attrs, 32)) { assert(dpy->KHR_create_context); switch (attrs->context_profile) { case WAFFLE_CONTEXT_CORE_PROFILE: diff --git a/src/waffle/glx/glx_config.c b/src/waffle/glx/glx_config.c index 56744d4..bad3531 100644 --- a/src/waffle/glx/glx_config.c +++ b/src/waffle/glx/glx_config.c @@ -58,7 +58,7 @@ glx_config_check_context_attrs(struct glx_display *dpy, if (attrs->context_forward_compatible) { assert(attrs->context_api == WAFFLE_CONTEXT_OPENGL); - assert(attrs->context_full_version >= 30); + assert(wcore_config_attrs_version_ge(attrs, 30)); } if (attrs->context_debug && !dpy->ARB_create_context) { @@ -70,20 +70,20 @@ glx_config_check_context_attrs(struct glx_display *dpy, switch (attrs->context_api) { case WAFFLE_CONTEXT_OPENGL: - if (attrs->context_full_version != 10 && !dpy->ARB_create_context) { + if (!wcore_config_attrs_version_eq(attrs, 10) && !dpy->ARB_create_context) { wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, "GLX_ARB_create_context is required in order to " "request an OpenGL version not equal to the default " "value 1.0"); return false; } - else if (attrs->context_full_version >= 32 && !dpy->ARB_create_context_profile) { + else if (wcore_config_attrs_version_ge(attrs, 32) && !dpy->ARB_create_context_profile) { wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, "GLX_ARB_create_context_profile is required " "to create a context with version >= 3.2"); return false; } - else if (attrs->context_full_version >= 32) { + else if (wcore_config_attrs_version_ge(attrs, 32)) { assert(attrs->context_profile == WAFFLE_CONTEXT_CORE_PROFILE || attrs->context_profile == WAFFLE_CONTEXT_COMPATIBILITY_PROFILE); } @@ -98,8 +98,8 @@ glx_config_check_context_attrs(struct glx_display *dpy, return true; case WAFFLE_CONTEXT_OPENGL_ES1: - assert(attrs->context_full_version == 10 || - attrs->context_full_version == 11); + assert(wcore_config_attrs_version_eq(attrs, 10) || + wcore_config_attrs_version_eq(attrs, 11)); assert(!attrs->context_forward_compatible); if (!dpy->EXT_create_context_es_profile) { diff --git a/src/waffle/glx/glx_context.c b/src/waffle/glx/glx_context.c index a15a0a1..c7a7d91 100644 --- a/src/waffle/glx/glx_context.c +++ b/src/waffle/glx/glx_context.c @@ -96,7 +96,7 @@ glx_context_fill_attrib_list(struct glx_config *config, // glXCreateContextAttribsARB with MAJOR=1 and MINOR=0 returns an OpenGL // 2.1 context. Calling it with MAJOR and MINOR unspecified returns // a context of the latest supported OpenGL version. - if (!(attrs->context_full_version == 10 && + if (!(wcore_config_attrs_version_eq(attrs, 10) && attrs->context_api == WAFFLE_CONTEXT_OPENGL)) { attrib_list[i++] = GLX_CONTEXT_MAJOR_VERSION_ARB; @@ -108,7 +108,7 @@ glx_context_fill_attrib_list(struct glx_config *config, switch (attrs->context_api) { case WAFFLE_CONTEXT_OPENGL: - if (attrs->context_full_version >= 32) { + if (wcore_config_attrs_version_ge(attrs, 32)) { switch (attrs->context_profile) { case WAFFLE_CONTEXT_CORE_PROFILE: attrib_list[i++] = GLX_CONTEXT_PROFILE_MASK_ARB; |