Intel uhd 620 não suporta opengl 4, Ubuntu 18.04

Intel uhd 620 não suporta opengl 4, Ubuntu 18.04

Comprei recentemente um Dell Inspiron 15" 5570, a versão com Intel i5 8250u e apenas o iGPU intel UHD 620. Depois de instalar o Ubuntu tive algumas oscilações na tela e consegui usando oA solução alternativa de Joakimmas agora estou enfrentando outro problema que não consegui resolver. Preciso do OpenGL 4, que suporta GPU integrado, mas não sei como "habilitá-lo". Essa é a glxinfo | grep -i openglsaída:

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:

E esta é outra parte do glxinfo que pode ser útil:

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

E este é o erro de saída quando tento iniciar o programa que precisa do opengl 4:

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

Já ouvi falar de uma opção de inicialização alfa para ativar o driver alfa para minha CPU, mas sinto falta disso, desde já agradeço pela ajuda.

--ATUALIZAÇÃO-- Na verdade eu "administrei" o erro, tentei outros programas que precisam da funcionalidade openGL 4, contexto openGL 4.5, e funcionam sem problemas, mas quando quero usar esse programa OpenGL "legado" que precisa de um contexto 4.5

#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();
}

Dá o erro:

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

Mas posso realmente usá-lo iniciando-o da seguinte maneira:

MESA_GL_VERSION_OVERRIDE=4.5 ./circle 

Não sei porque talvez seja um bug, pois quando tento compilar os outros programas, que funciona sem o prefixo MESA.., com: glutInitContextVersion(4, 6); Em vez de: glutInitContextVersion(4, 5); Ele dá o mesmo erro de GLXBadFBConfig Portanto, não há nenhuma mitigação de configurações de contexto erradas do OpenGL no próprio programa.

informação relacionada