On 26/01/15 23:25, Frank Henigman wrote:
Do the glGetStringi lookup after making context current so it works on WGL.
Remove an incorrect glGetStringi lookup, which returned NULL on Mali.

Signed-off-by: Frank Henigman <[email protected]>
---
Not sure what happened but wflinfo is still broken on mali because of the 
glGetStringi madness.
Chad put in a fix:
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_waffle-2Dgl_waffle_commit_0543d0d12aa16e0daf361937619998c8995fd6fc&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=jj_3KkjKndz1s137tbSUUg5KMJt2V9GA1zfYN2FD3NM&s=MqMB3pPMPv0XARCwxF4eXGARoUaWTUMgtf36lr6r18k&e=
and ten days before that Emil had moved the offending 
waffle_get_proc_address("glGetStringi") down about 20 lines:
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_waffle-2Dgl_waffle_commit_6ae99a4701bd5117a182c2e555a0c0a2061254d3&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=jj_3KkjKndz1s137tbSUUg5KMJt2V9GA1zfYN2FD3NM&s=nva4AmJVhqxaYMvR3ci1RRFczSckPxLwyQrku1kjGkg&e=
It looks like both changes to that line got in, because after Chad's change 
successfully sets the address the old, wrong line later sets it to null.
Sorry but I'm not able to test on Windows.

  src/utils/wflinfo.c | 40 +++++++++++++++++++---------------------
  1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/src/utils/wflinfo.c b/src/utils/wflinfo.c
index 5a9195c..5e173b7 100644
--- a/src/utils/wflinfo.c
+++ b/src/utils/wflinfo.c
@@ -1076,6 +1076,25 @@ main(int argc, char **argv)
      if (!glGetString)
          error_get_gl_symbol("glGetString");

+    const struct wflinfo_config_attrs config_attrs = {
+        .api = opts.context_api,
+        .profile = opts.context_profile,
+        .major = opts.context_major,
+        .minor = opts.context_minor,
+        .forward_compat = opts.context_forward_compatible,
+        .debug = opts.context_debug,
+    };

After this change, MSVC 2013 started to fail with:

[1/3] Building C object src\utils\CMakeFiles\wflinfo.dir\wflinfo.c.obj
FAILED: C:\PROGRA~2\MICROS~2.0\VC\bin\cl.exe /nologo /DWIN32 /D_WINDOWS /W3 /MT /O1 /Ob1 /D NDEBUG -I..\include -I..\include\waffle -I..\src -I..\third_party\threads -I..\third_party\getopt /showIncludes -DWAFFLE_HAS_WGL -DWINVER=0x0601 -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WIN32_WINNT=0x0601 /Fosrc\utils\CMakeFiles\wflinfo.dir\wflinfo.c.obj /Fdsrc\utils\CMakeFiles\wflinfo.dir/ /FS -c ..\src\utils\wflinfo.c ..\src\utils\wflinfo.c(1079) : error C2143: syntax error : missing ';' before 'const' ..\src\utils\wflinfo.c(1088) : error C2065: 'config_attrs' : undeclared identifier ..\src\utils\wflinfo.c(1088) : error C2440: 'function' : cannot convert from 'int' to 'wflinfo_config_attrs' ..\src\utils\wflinfo.c(1088) : warning C4024: 'wflinfo_create_context' : different types for formal and actual parameter 2


But this change makes MSVC happy:

diff --git a/src/utils/wflinfo.c b/src/utils/wflinfo.c
index 5e173b7..30d04cd 100644
--- a/src/utils/wflinfo.c
+++ b/src/utils/wflinfo.c
@@ -1073,8 +1073,9 @@ main(int argc, char **argv)
         error_get_gl_symbol("glGetIntegerv");

     glGetString = waffle_dl_sym(opts.dl, "glGetString");
-    if (!glGetString)
+    if (!glGetString) {
         error_get_gl_symbol("glGetString");
+    }

     const struct wflinfo_config_attrs config_attrs = {
         .api = opts.context_api,


That is, there's a bug in MSVC 2013 C99 grammar/parser...

Jose

+
+    wflinfo_create_context(dpy, config_attrs, &ctx, &config);
+
+    window = waffle_window_create(config, WINDOW_WIDTH, WINDOW_HEIGHT);
+    if (!window)
+        error_waffle();
+
+    ok = waffle_make_current(dpy, window, ctx);
+    if (!ok)
+        error_waffle();
+
      // Retrieving GL functions is tricky. When glGetStringi is supported, here
      // are some boggling variations as of 2014-11-19:
      //   - Mali drivers on EGL 1.4 expose glGetStringi statically from
@@ -1099,27 +1118,6 @@ main(int argc, char **argv)
          glGetStringi = waffle_get_proc_address("glGetStringi");
      }

-    const struct wflinfo_config_attrs config_attrs = {
-        .api = opts.context_api,
-        .profile = opts.context_profile,
-        .major = opts.context_major,
-        .minor = opts.context_minor,
-        .forward_compat = opts.context_forward_compatible,
-        .debug = opts.context_debug,
-    };
-
-    wflinfo_create_context(dpy, config_attrs, &ctx, &config);
-
-    window = waffle_window_create(config, WINDOW_WIDTH, WINDOW_HEIGHT);
-    if (!window)
-        error_waffle();
-
-    ok = waffle_make_current(dpy, window, ctx);
-    if (!ok)
-        error_waffle();
-
-    glGetStringi = waffle_get_proc_address("glGetStringi");
-
      ok = print_wflinfo(&opts);
      if (!ok)
          error_waffle();


_______________________________________________
waffle mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/waffle

Reply via email to