xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
2.98k stars 145 forks source link

PC linux opengl2.1 点击视频或点击切换硬解码时segement faltal #365

Closed yangtou2000 closed 1 week ago

yangtou2000 commented 1 week ago

ubuntu 22.04 , intel i3 350M,只支持opengl2.1

$ glxinfo -B| grep OpenGL
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) HD Graphics (ILK)
OpenGL version string: 2.1 Mesa 23.2.1-1ubuntu3.1~22.04.2
OpenGL shading language version string: 1.20
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 23.2.1-1ubuntu3.1~22.04.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16`

1.40release, -DUSE_GL2=ON -DMPV_NO_FB=ON 参考这里#https://github.com/xfangfang/wiliwili/issues/78

cmake -B build -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Debug -DUSE_GL2=ON -DMPV_NO_FB=ON
make -C build wiliwili -j$(nproc)

跟踪了一下,死在MPVCore::initializevideo

https://github.com/xfangfang/wiliwili/blob/v1.4.0/wiliwili/source/view/mpv_core.cpp#L527

glBindFramebuffer=0, 好像glad里面opengl2.1 没glBindFramebuffer的实现,不懂opengl 另外,这个(USE_GL2=ON)编译结果在支持高版本opengl的同样ubuntu系统的机器上可以正常运行和播放视频.

void MPVCore::initializeVideo() {
#if defined(BOREALIS_USE_OPENGL) && !defined(MPV_SW_RENDER)
    // Get default framebuffer
#if defined(IOS)
    // SDL: OpenGL ES on iOS doesn't use the traditional system-framebuffer setup provided in other operating systems.
    default_framebuffer = 1;
#else
    glGetIntegerv(GL_FRAMEBUFFER_BINDING, &default_framebuffer);
#endif
#endif

#if defined(MPV_NO_FB)
    mpv_fbo.fbo = default_framebuffer;
    glBindFramebuffer(GL_FRAMEBUFFER, default_framebuffer);
#elif defined(MPV_USE_FB)
xfangfang commented 1 week ago

@yangtou2000 感谢反馈,开启了 GL2 的话可以直接把 glBindFramebuffer(GL_FRAMEBUFFER, default_framebuffer); 这行注释掉看看有没有问题。

确实不应该加这句

yangtou2000 commented 1 week ago

注掉mpv_core.cpp里面所有的glBindFramebuffer,可以正常运行了,硬解也可以正常开启.

xfangfang commented 1 week ago

在 dev 分支提交了修改,现在直接编译dev分支的代码应该可以正常运行在 OpenGL2下了:https://github.com/xfangfang/wiliwili/commit/0015f142564462a890f8347be30a4a263d7ce71a