Bug 96937 - OpenGL building issue when compiling for Harmattan
Summary: OpenGL building issue when compiling for Harmattan
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Platform (show other bugs)
Version: 528+ (Nightly build)
Hardware: Other Other
: P2 Normal
Assignee: Lauro Moura Maranhao Neto
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-09-17 11:56 PDT by Laszlo Papp
Modified: 2012-09-18 05:24 PDT (History)
5 users (show)

See Also:


Attachments
Initial fixes (1.68 KB, patch)
2012-09-17 16:38 PDT, Lauro Moura Maranhao Neto
no flags Details | Formatted Diff | Diff
Patch (1.93 KB, patch)
2012-09-18 04:42 PDT, Simon Hausmann
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Laszlo Papp 2012-09-17 11:56:41 PDT
There are two issues:

1) PFNGL*
2) GLchar not typedef'd for Harmattan so a workaround needs to be added in here, just like it was done for the QtBase project.

In file included from platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:37:
platform/graphics/opengl/Extensions3DOpenGLES.h:110: error: 'PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:111: error: 'PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:112: error: 'PFNGLBINDVERTEXARRAYOESPROC' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:113: error: 'PFNGLDELETEVERTEXARRAYSOESPROC' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:114: error: 'PFNGLGENVERTEXARRAYSOESPROC' does not name a type
platform/graphics/opengl/Extensions3DOpenGLES.h:115: error: 'PFNGLISVERTEXARRAYOESPROC' does not name a type
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'void WebCore::GraphicsContext3D::compileShader(Platform3DObject)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:479: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:480: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:482: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'bool WebCore::GraphicsContext3D::getActiveAttrib(Platform3DObject, GC3Duint, WebCore::ActiveInfo&)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:632: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:636: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:639: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'bool WebCore::GraphicsContext3D::getActiveUniform(Platform3DObject, GC3Duint, WebCore::ActiveInfo&)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:656: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:660: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:664: error: request for member 'get' in 'name', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'WTF::String WebCore::GraphicsContext3D::getProgramInfoLog(Platform3DObject)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1118: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1119: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1121: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: In member function 'WTF::String WebCore::GraphicsContext3D::getShaderInfoLog(Platform3DObject)':
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: 'GLchar' was not declared in this scope
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: template argument 1 is invalid
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: invalid type in declaration before '=' token
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: expected type-specifier before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: expected ')' before 'GLchar'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1185: error: cannot convert 'WTF::PassOwnArrayPtr<int>' to 'int' in initialization
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1186: error: request for member 'get' in 'info', which is of non-class type 'int'
platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:1188: error: request for member 'get' in 'info', which is of non-class type 'int'
make[3]: *** [obj/release/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.o] Error 1
make[3]: Leaving directory `/home/lpapp/qt5-beta1/qt5-webkit/qt5-webkit/Source/WebCore'
make[2]: *** [sub-Target-pri-make_first-ordered] Error 2
make[2]: Leaving directory `/home/lpapp/qt5-beta1/qt5-webkit/qt5-webkit/Source/WebCore'
make[1]: *** [sub-Source-WebCore-WebCore-pro-make_first-ordered] Error 2
make[1]: Leaving directory `/home/lpapp/qt5-beta1/qt5-webkit/qt5-webkit'
dh_auto_build: make -j1 returned exit code 2
make: *** [build] Error 9
Comment 1 Lauro Moura Maranhao Neto 2012-09-17 16:38:54 PDT
Created attachment 164474 [details]
Initial fixes
Comment 2 Lauro Moura Maranhao Neto 2012-09-17 16:41:47 PDT
As suggested by Simon over IRC, including qopengles2ext.h from Extensions3DOpenGLES.h helped solve the issue, but just including it causes the build to fail like in https://bugs.webkit.org/show_bug.cgi?id=91030.

This is due to qopengles2ext.h defining two of the PFN* extension functions with a PROC suffix (like Khrono's version) while WebKit's own ANGLE copy does not.

So, in the first patch are the initial changes to make it past this problem.
Comment 3 Laszlo Papp 2012-09-18 01:37:31 PDT
Wouldn't a qopengl.h include be enough?

That would already have the typedef for the GLchar, and would also include the qopengles2ext.h header.
Comment 4 Simon Hausmann 2012-09-18 04:27:14 PDT
Part of the problem is that the qopengles2ext.h header has what I believe is a bug. See also https://codereview.qt-project.org/#change,35004

This can be worked around though by avoiding the inclusion of gl2ext.h.
Comment 5 Simon Hausmann 2012-09-18 04:42:02 PDT
Created attachment 164532 [details]
Patch
Comment 6 WebKit Review Bot 2012-09-18 05:24:23 PDT
Comment on attachment 164532 [details]
Patch

Clearing flags on attachment: 164532

Committed r128877: <http://trac.webkit.org/changeset/128877>
Comment 7 WebKit Review Bot 2012-09-18 05:24:27 PDT
All reviewed patches have been landed.  Closing bug.