diff options
author | dec05eba <dec05eba@protonmail.com> | 2023-07-26 02:31:12 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2023-07-26 02:31:12 +0200 |
commit | 4ad0118f359d954f9e5276ca6bf29a51e6dfa559 (patch) | |
tree | 8fdbef66cceedddff5425be79690e83bf9df96c9 /src | |
parent | bee99a69e39a0061790ffddbb84c991988681db5 (diff) |
High priority egl context if possible, use eglBindAPI(EGL_OPENGL_ES_API)
Diffstat (limited to 'src')
-rw-r--r-- | src/egl.c | 7 | ||||
-rw-r--r-- | src/utils.c | 13 |
2 files changed, 13 insertions, 7 deletions
@@ -214,12 +214,13 @@ static bool gsr_egl_create_window(gsr_egl *self, bool wayland) { const int32_t attr[] = { EGL_BUFFER_SIZE, 24, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, - EGL_NONE + EGL_NONE, EGL_NONE }; const int32_t ctxattr[] = { EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE + EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG, + EGL_NONE, EGL_NONE }; if(wayland) { @@ -251,7 +252,7 @@ static bool gsr_egl_create_window(gsr_egl *self, bool wayland) { } } - self->eglBindAPI(EGL_OPENGL_ES2_BIT); + self->eglBindAPI(EGL_OPENGL_ES_API); self->egl_display = self->eglGetDisplay(self->wayland.dpy ? (EGLNativeDisplayType)self->wayland.dpy : (EGLNativeDisplayType)self->x11.dpy); if(!self->egl_display) { diff --git a/src/utils.c b/src/utils.c index 88893ac..16e928a 100644 --- a/src/utils.c +++ b/src/utils.c @@ -210,6 +210,7 @@ bool get_monitor_by_name(void *connection, gsr_connection_type connection_type, } bool gl_get_gpu_info(gsr_egl *egl, gsr_gpu_info *info) { + const char *software_renderers[] = { "llvmpipe", "SWR", "softpipe", NULL }; bool supported = true; const unsigned char *gl_vendor = egl->glGetString(GL_VENDOR); const unsigned char *gl_renderer = egl->glGetString(GL_RENDERER); @@ -222,10 +223,14 @@ bool gl_get_gpu_info(gsr_egl *egl, gsr_gpu_info *info) { goto end; } - if(gl_renderer && strstr((const char*)gl_renderer, "llvmpipe")) { - fprintf(stderr, "gsr error: your opengl environment is not properly setup. It's using llvmpipe (cpu fallback) for opengl instead of your graphics card\n"); - supported = false; - goto end; + if(gl_renderer) { + for(int i = 0; software_renderers[i]; ++i) { + if(strstr((const char*)gl_renderer, software_renderers[i])) { + fprintf(stderr, "gsr error: your opengl environment is not properly setup. It's using %s (software rendering) for opengl instead of your graphics card. Please make sure your graphics driver is properly installed\n", software_renderers[i]); + supported = false; + goto end; + } + } } if(strstr((const char*)gl_vendor, "AMD")) |