Intel UHD 620 unterstützt OpenGL 4 und Ubuntu 18.04 nicht

Intel UHD 620 unterstützt OpenGL 4 und Ubuntu 18.04 nicht

Ich habe mir vor kurzem einen Dell Inspiron 15" 5570 gekauft, die Version mit Intel i5 8250u und nur der iGPU intel UHD 620. Nach der Installation von Ubuntu hatte ich ein leichtes Bildschirmflackern und konnte es mithilfe derJoakims Problemumgehungaber jetzt stehe ich vor einem anderen Problem, das ich nicht lösen konnte. Ich brauche OpenGL 4, also die integrierte GPU-Unterstützung, aber ich weiß nicht, wie ich es „aktivieren“ kann. Das ist die glxinfo | grep -i openglAusgabe:

glxinfo | grep -i opengl
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics 620 (Kabylake GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.2.0-devel
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 18.2.0-devel
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 18.2.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

Und dies ist ein weiterer Teil von glxinfo, der nützlich sein könnte:

Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) UHD Graphics 620 (Kabylake GT2)  (0x5917)
    Version: 18.2.0
    Accelerated: yes
    Video memory: 3072MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2

Und dies ist der Ausgabefehler, wenn ich versuche, das Programm zu starten, das OpenGL 4 benötigt:

X Error of failed request:  GLXBadFBConfig
  Major opcode of failed request:  155 (GLX)
  Minor opcode of failed request:  34 ()
  Serial number of failed request:  40
  Current serial number in output stream:  39

Ich habe von einer solchen Alpha-Boot-Option gehört, um den Alpha-Treiber für meine CPU zu aktivieren, vermisse sie aber einfach. Vielen Dank im Voraus für die Hilfe.

--UPDATE-- Ich habe den Fehler tatsächlich „bewältigt“, ich habe andere Programme ausprobiert, die OpenGL 4-Funktionalität und einen OpenGL 4.5-Kontext benötigen, und es funktioniert ohne Probleme, aber wenn ich dieses „alte“ OpenGL-Programm verwenden möchte, das einen 4.5-Kontext benötigt

#include <cstdlib>
#include <cmath>
#include <iostream>

#ifdef __APPLE__
#  include <GL/glew.h>
#  include <GL/freeglut.h>
#  include <OpenGL/glext.h>
#else
#  include <GL/glew.h>
#  include <GL/freeglut.h>
#  include <GL/glext.h>
#pragma comment(lib, "glew32.lib")
#endif

#define PI 3.14159265358979324

using namespace std;

// Globals.
static float R = 40.0; // Radius of circle.
static float X = 50.0; // X-coordinate of center of circle.
static float Y = 50.0; // Y-coordinate of center of circle.
static int numVertices = 10; // Number of vertices on circle.

// Drawing routine.
void drawScene(void)
{
   float t = 0; // Angle parameter.

   glClear(GL_COLOR_BUFFER_BIT);

   glColor3f(0.0, 0.0, 0.0);

   // Draw a line loop with vertices at equal angles apart on a circle
   // with center at (X, Y) and radius R, The vertices are colored randomly.
   /* Funzione seno esercizio pag56 2.27
   glBegin(GL_LINE_STRIP);
      for(float i = -PI; i <= PI; i+=PI/20.0)
      {
     glColor3f((float)rand()/(float)RAND_MAX, (float)rand()/(float)RAND_MAX, (float)rand()/(float)RAND_MAX);
     glVertex3f(i, sin(i), 0.0);
     //cout<<"x="<<i<<";y="<<sin(i);
     //t += 2 * PI / numVertices;
      }
   glEnd();*/
   //Ellisse esercizio pag56 2.28
   //x = X + A*cos(t), y = Y + B*sin(t), z=0,  0<=t<=2PI
   glBegin(GL_LINE_LOOP);
      for(int i = 0; i < numVertices; i++)
   {
     glColor3f((float)rand()/(float)RAND_MAX, (float)rand()/(float)RAND_MAX, (float)rand()/(float)RAND_MAX);
     glVertex3f((R+10)*cos(t), (R-10)*sin(t), 0.0);
     //cout<<"x="<<i<<";y="<<sin(i);
     t += 2 * PI / numVertices;
   }
   glEnd();

   glFlush();
}

// Initialization routine.
void setup(void)
{
   glClearColor(1.0, 1.0, 1.0, 0.0);
}

// OpenGL window reshape routine.
void resize(int w, int h)
{
   glViewport(0, 0, w, h);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(-50, 50, -50, 50, -1.0, 1.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
}

// Keyboard input processing routine.
void keyInput(unsigned char key, int x, int y)
{
   switch(key)
   {
      case 27:
     exit(0);
     break;
      case '+':
     numVertices++;
     glutPostRedisplay();
     break;
      case '-':
     if (numVertices > 3) numVertices--;
     glutPostRedisplay();
     break;
      default:
     break;
   }
}

// Routine to output interaction instructions to the C++ window.
void printInteraction(void)
{
   cout << "Interaction:" << endl;
   cout << "Press +/- to increase/decrease the number of vertices on the circle." << endl;
}

// Main routine.
int main(int argc, char **argv)
{
   printInteraction();
   glutInit(&argc, argv);

   glutInitContextVersion(4,5);
   glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE);

   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
   glutInitWindowSize(500, 500);
   glutInitWindowPosition(100, 100);
   glutCreateWindow("circle.cpp");
   glutDisplayFunc(drawScene);
   glutReshapeFunc(resize);
   glutKeyboardFunc(keyInput);

   glewExperimental = GL_TRUE;
   glewInit();

   setup();

   glutMainLoop();
}

Gibt den Fehler aus:

X Error of failed request:  GLXBadFBConfig
  Major opcode of failed request:  155 (GLX)
  Minor opcode of failed request:  34 ()
  Serial number of failed request:  40

Aber ich kann es tatsächlich verwenden, indem ich es wie folgt starte:

MESA_GL_VERSION_OVERRIDE=4.5 ./circle 

Ich weiß nicht, warum, vielleicht ist es ein Fehler, denn wenn ich versuche, die anderen Programme zu kompilieren, die ohne das Präfix MESA.. funktionieren, mit: glutInitContextVersion(4, 6); statt: glutInitContextVersion(4, 5); kommt der gleiche Fehler „GLXBadFBConfig“. Es gibt also keine Abhilfemaßnahmen für falsche OpenGL-Kontexteinstellungen im Programm selbst.

verwandte Informationen