starting merge

This commit is contained in:
2025-03-22 03:43:35 +01:00
parent 35d1c0ff7f
commit 3e6aa18fbe
12 changed files with 245 additions and 84 deletions

View File

@@ -9,11 +9,15 @@
PulseBackendFlags OpenGLCheckSupport(PulseBackendFlags candidates, PulseShaderFormatsFlags shader_formats_used)
{
if(candidates != PULSE_BACKEND_ANY && (candidates & PULSE_BACKEND_OPENGL) == 0)
if(candidates != PULSE_BACKEND_ANY && ((candidates & PULSE_BACKEND_OPENGL) == 0 || (candidates & PULSE_BACKEND_OPENGL_ES) == 0))
return PULSE_BACKEND_INVALID;
if((shader_formats_used & PULSE_SHADER_FORMAT_GLSL_BIT) == 0)
return PULSE_BACKEND_INVALID;
EGLInstance instance;
if(!EGLLoadInstance(&instance, candidates))
return PULSE_BACKEND_INVALID;
EGLUnloadInstance(&instance);
return PULSE_BACKEND_OPENGL;
}
@@ -23,12 +27,18 @@ bool OpenGLLoadBackend(PulseBackend backend, PulseDebugLevel debug_level)
PULSE_UNUSED(debug_level);
OpenGLDriverData* driver_data = (OpenGLDriverData*)calloc(1, sizeof(OpenGLDriverData));
PULSE_CHECK_ALLOCATION_RETVAL(driver_data, false);
#ifdef PULSE_PLAT_WINDOWS
// WGL support
#else
EGLLoadInstance(&driver_data->egl_instance, false);
#endif
OpenGLDriver.driver_data = driver_data;
return true;
}
void OpenGLUnloadBackend(PulseBackend backend)
{
EGLUnloadInstance(&OPENGL_RETRIEVE_DRIVER_DATA_AS(backend, OpenGLDriverData*)->egl_instance);
free(backend->driver_data);
}
@@ -48,12 +58,14 @@ bool OpenGLESLoadBackend(PulseBackend backend, PulseDebugLevel debug_level)
PULSE_UNUSED(debug_level);
OpenGLDriverData* driver_data = (OpenGLDriverData*)calloc(1, sizeof(OpenGLDriverData));
PULSE_CHECK_ALLOCATION_RETVAL(driver_data, false);
EGLLoadInstance(&driver_data->egl_instance, true);
OpenGLDriver.driver_data = driver_data;
return true;
}
void OpenGLESUnloadBackend(PulseBackend backend)
{
EGLUnloadInstance(&OPENGL_RETRIEVE_DRIVER_DATA_AS(backend, OpenGLDriverData*)->egl_instance);
free(backend->driver_data);
}