Linux VMware 11 guest mesa drivers install to update OpenGL - c++

I currently am using VMWARE 11 guest Linux Mint, on a host win 8.1
So i am basically trying to update OpenGL so that i can program with higher versions of GLSL and OpenGL such as 3.3 , as it currently stands when i check with glxinfo | grep OpenGL , i get
$ glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
OpenGL version string: 2.1 Mesa 10.1.3
OpenGL shading language version string: 1.20
OpenGL extensions:
Now i went to Mesa3d website and downloaded the 10.5.6(as you can see above the one i have installed is 10.1.3)in which the OPenGL version has been updated to version 3.3 which is what i would prefer to have over the current version which is 1.2(shading language GLSL) i downloaded the tar , extracted it , ran ./configure as instructed, and it did its thing, ran make as ./configure finished by saying run make now , and finally ran sudo install make which was the last autoconf instruction , and all completed successfully, i even ran them a second time when i found out that glxinfo | grep OpenGL was still giving me the same return as before i "installed" the mesa 3d drivers
so i am trying to find out what is missing here and why this is not installing?
is it because of the fact that i am running a guest OS linux on a host vmware?or is it something less complicated and actually fixable?

Did you uninstall the system Mesa installation? Because if not you've got two Mesa installations side-by-side and that will not end well. Also when configuring you should select the parts of Mesa you want. Which in your case would be none of the GPU drivers and just the softpipe implementation.

Related

Software rendering with Mesa/OpenGL 4.5 on Ubuntu VM on Mac

As part of my studies, I have to be able to compile and run OpenGL 4.5-based programs, and I only have a Mac to do so. I am using Ubuntu in a VM to have a more programming-friendly environment, but my software and hardware (macOS Sierra 10.12.6, Intel HD Graphics 4000) is limited to 3.3 contexts. Here is additional info (ran from the Ubuntu VM) :
$ glxinfo | grep 'OpenGL core'
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
The assignments use GLFW. I've been trying to get it to use Mesa (which it does, with llvmpipe) with software rendering so that it is independent from the hardware capabilities (if I understand correctly), but the window creation always fails when I try to create a 4.5 context. I looked around and tried using export LIBGL_ALWAYS_SOFTWARE=1 to no avail. The build chain uses CMAKE to build both the assignments and the actual GLFW lib, for what it's worth (I noticed that it uses X11 with the xorg-dev packages).
Does Mesa implement any version of OpenGL 4 ? If it does, can I force software rendering on GLFW's part so that I can create an OpenGL 4.x context ?
Does Mesa implement any version of OpenGL 4 ?
Their Intel & Radeon hardware drivers do.
... can I force software rendering on GLFW's part so that I can create an OpenGL 4.x context ?
Nope, all of Mesa's software renderers (softpipe, llvmpipe, & swr) top out at OpenGL 3.3.
As of Mesa 20.2 llvmpipe supports OpenGL 4.5.

How do I pass data/info about the GPU (versions of OpenGL, OpenCL, mesa, etc...) from host to dockerimagr?

I'm currently running Ubuntu 16.04.2, fairly new install with just enough to start programming. I do have a r9 390 AMD card which has been having lots of issues with the AMD drivers, but I don't think that is an issue.
I created a dockerfile with the following snippet:
FROM ubuntu:16.04
.....
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
WORKDIR /buildls
CMD ["bash"]
RUN apt-get install -y x11-apps
RUN apt-get install -y libcanberra-gtk*
RUN apt-get -y install libglfw3-dev
RUN apt-get -y install libglew-dev
RUN apt-get -y install mesa-utils
.......
After building it, I run it with:
docker run -it `#container process` \
-v /tmp/.X11-unix:/tmp/.X11-unix `#Allows the X11 server to be shared (GUI)` \
-v $(pwd)/volume:/app `#Shares a folder, one down in current directory (~/volume) with ROOT/app in the container` \
-e DISPLAY=$DISPLAY `#Shares the display between the 2 systems` \
opengl_why_you_no_work \
I created a simple GL loader program, with GLFW and GLEW, I made 2 versions to support OpenGL 2.1 (you'll see why later) and 3.2. Between the sample program that I wrote (with some debugging output calls) and
glxinfo|grep OpenGL
I get some interesting questions.
Using the glxinfo call on my host, I get
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD HAWAII (DRM 2.46.0 / 4.8.0-58-generic, LLVM 3.8.0)
OpenGL core profile version string: 4.1 (Core Profile) Mesa 12.0.6
OpenGL core profile shading language version string: 4.10
OpenGL version string: 3.0 Mesa 12.0.6
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 12.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
On the docker image:
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.8, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 12.0.6
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 12.0.6
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 12.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
hmmm, vendors? So, the program written for OpenGL 2.1, using:
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
Runs on both host and docker; simple rendering... but it works. Even though it renders on the docker image, I still get this error:
libGL error: failed to open drm device: Permission denied
libGL error: failed to load driver: radeonsi
If I try to run the version made for OpenGL 3.2 on the docker image, I get no rendering, no window, the same 2 errors above, and this output:
Renderer: (null)
OpenGL version supported (null)
instead of the 2.1 version on the docker image:
Renderer: Gallium 0.4 on llvmpipe (LLVM 3.8, 256 bits)
OpenGL version supported 3.0 Mesa 12.0.6
or the result of running either version on the host:
Renderer: Gallium 0.4 on AMD HAWAII (DRM 2.46.0 / 4.8.0-58-generic, LLVM 3.8.0)
OpenGL version supported 4.1 (Core Profile) Mesa 12.0.6
So, I'm assuming it has something to do with the vendor, X.org versus VMware, Inc. Can I override, passthrough, replace, or otherwise work around this? I could probably write the code for OpenGL 3.0 (where is the fun in that?) but the libGL errors have me concerned once I get more complex in the program. Additionally, I want to try with OpenCL and I'm sure I'll have similar issues.
I found the answer, however it might be some over kill... but it works!
I added to the Dockerfile:
RUN apt-get install -y xserver-xorg-video-all
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libgl1-mesa-dri \
&& rm -rf /var/lib/apt/lists/*
....
RUN usermod -a -G video <username>
However, I think the mesa files were already there as a result of the
FROM ubuntu:16.04
line. I also added:
--device=/dev/dri:/dev/dri
to the script to run the docker image. Interesting to note, while I was troubleshooting, I upgrade MESA to the most recent version (17.1 here -> https://www.omgubuntu.co.uk/2017/05/mesa-17-1-ubuntu-ppa), now I have GL 4.5 on my host and 4.1 with MESA 12.0.6 on the image... Of course now I will have to workout how I will make it executable from a Windows/OS host.
I used the following references:
pg 303 of Robot Operating System (ROS): The Complete Reference, Volume 2
https://bbs.archlinux.org/viewtopic.php?id=175164
https://github.com/hilbert/hilbert-docker-images/issues/9
Using GPU from a docker container?
https://askubuntu.com/questions/809081/how-to-run-opencl-program-in-docker-container-with-amdgpu-pro

OpenGL 3.3 on an Intel Graphics under Ubuntu 12.04

I'm running that configuration :
Ubuntu 12.04
Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
glxinfo give me that parameters:
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Desktop
OpenGL version string: 3.0 Mesa 10.1.3
OpenGL shading language version string: 1.30
OpenGL extensions:
I did
1.) Add the PPA Repository
$ sudo add-apt-repository ppa:oibaf/graphics-drivers
2.) Update sources
$ sudo apt-get update
3.) Dist-upgrade (rebuilds many packages)
$ sudo apt-get dist-upgrade
4.) Reboot!
I got mesa 10,but OpenGL is still 3.0.I found some people say Intel Graphics doesn't support OpenGL 3.3 yet. but some say in the last official release of Mesa (10.0), GL 3.3 only works on Intel hardware.
but some people work out.
Does Ubuntu 12.04 support OpenGL 3.3?
Does Intel Graphic support it?
What should I do to enable GL3.3

Open GL version 2.1 instead of 3.2 on OS X 10.8

I have a late 2009 Macbook http://support.apple.com/kb/SP579
I upgraded the operating system everytime a new one came out, so I'm using 10.8 Mountain Lion now. I was trying to get a program to work when the developer suggested I check my Open GL version with glxinfo.
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce 9400M OpenGL Engine
OpenGL version string: 2.1 NVIDIA-8.12.47 310.40.00.05f01
OpenGL shading language version string: 1.20
OpenGL extensions:
According to this https://developer.apple.com/graphicsimaging/opengl/capabilities/
I should have Open GL version 3.2, but I don't. I've also looked for newer Nvidia drivers, but the nvidia drivers download website doesn't show any for OS X 10.8 (Mountain Lion), GeForce 9400M. The Open GL website says that unlike other operating systems, Open GL is updated along with the other OS X updates.
What do? How do I get OpenGL to 3.2?
I check my Open GL version with glxinfo
glxinfo goes through the X11 server. The OpenGL support of the X11 server which is shipping with OS X is rather limited. You must check with a tool that queries the native OpenGL API of OS X, not the GLX emulation layer.

How to use current version of opengl in cygwin?

I have been using OpenGL with cygwin for a few months to program some 3d applications. I now want to attempt to write some slightly more advanced techniques using things like vertex buffer objects. However, I noticed that I ran into an obstacle: when I use glGetString(GL_VERSION) in my program it spits out 1.4.
I compile my program with these flags: -lGL -lglut -lGLU -lGLEW and have included these headers: freeglut.h glew.h. I have chosen to link against the X11 libraries vs. the windows ones as explained here. My current OpenGL programs build and are able to run (because up until now, I have used older functionality--pre-OpenGL 1.4).
I have a new desktop computer with an ATI FirePro V4800 (FireGL) graphics card that can support up to OpenGL 4.1. I have installed the latest drivers and it passes the tests supplied by the program: OpenGL Extensions Viewer. In addition, the program shows that all the extensions up to and including 4.1 are available for my graphics card.
There is a brief mention here under the last answer saying that cygwin may want to use older dlls (ones that don't support shaders, etc.). Is this a cygwin problem? Will cygwin just not recognize my latest drivers and offer me the cool stuff in OpenGL 4.1? Or am I not linking to the correct libraries?
UPDATE
After getting to know how Cygwin's X Server works I figured I should switch to freeglut's native windows libraries. I grabbed the pre-compiled binaries found here and put the files in appropriate directories to link against them. After recompiling I am able to use all the options found in OpenGL as my graphics card permits (4.1).
When using Cygwin's X-server, start it with -wgl option (current versions do that automatically) then
export LIBGL_USE_WGL=1
On the machine I'm posting from, I get:
$ glxinfo | grep OpenGL
OpenGL vendor string: Intel
OpenGL renderer string: Intel(R) HD Graphics 2500
OpenGL version string: 4.0.0 - Build 9.17.10.3062
OpenGL shading language version string: 4.00 - Build 9.17.10.3062
[...]
Unsetting the environment variable:
$ glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits)
OpenGL version string: 3.0 Mesa 10.3.5
OpenGL shading language version string: 1.30
[...]