ppsspp/libretro/LibretroGLContext.cpp
tbocek 8162d0ff66 fixed issue with: [libretro ERROR] [G3D] glewInit() failed
I looked at https://github.com/hrydgard/ppsspp/issues/12145 and used part of the logic from SDL headless -> 1ba7e01548/headless/SDLHeadlessHost.cpp and removed the return, as the comment below mentions that glew can fail, as well as the QT code also does not check for the return value: 1c8ac05b06/Qt/QtMain.cpp (L450)
2020-05-31 11:31:48 +02:00

44 lines
1.3 KiB
C++

#include "Common/Log.h"
#include "Core/Config.h"
#include "Core/ConfigValues.h"
#include "Core/System.h"
#include "gfx_es2/gpu_features.h"
#include "libretro/LibretroGLContext.h"
bool LibretroGLContext::Init() {
if (!LibretroHWRenderContext::Init(true))
return false;
g_Config.iGPUBackend = (int)GPUBackend::OPENGL;
return true;
}
void LibretroGLContext::CreateDrawContext() {
#ifndef USING_GLES2
// Some core profile drivers elide certain extensions from GL_EXTENSIONS/etc.
// glewExperimental allows us to force GLEW to search for the pointers anyway.
if (gl_extensions.IsCoreContext)
glewExperimental = true;
if (GLEW_OK != glewInit()) {
printf("Failed to initialize glew!\n");
}
// Unfortunately, glew will generate an invalid enum error, ignore.
if (gl_extensions.IsCoreContext)
glGetError();
#endif
CheckGLExtensions();
draw_ = Draw::T3DCreateGLContext();
renderManager_ = (GLRenderManager *)draw_->GetNativeObject(Draw::NativeObject::RENDER_MANAGER);
renderManager_->SetInflightFrames(g_Config.iInflightFrames);
SetGPUBackend(GPUBackend::OPENGL);
draw_->CreatePresets();
}
void LibretroGLContext::DestroyDrawContext() {
LibretroHWRenderContext::DestroyDrawContext();
renderManager_ = nullptr;
}