pal1000 / mesa-dist-win

Pre-built Mesa3D drivers for Windows
MIT License
859 stars 77 forks source link

llvmpipe backend performance issue #146

Open wbzqe opened 1 year ago

wbzqe commented 1 year ago

hi My virtual machines do not have a GPU device, and in the Windows 10 system environment, the D3D12 backend is used by default. It can be seen that the CPU usage rate is relatively high and multiple cores are used, so the rendering speed is normal.

However, when switching to the llvmpipe backend, the speed is particularly slow. At this time, the CPU usage rate is particularly low, and it seems that only single cores are used.

Especially in the Windows 7 system, D3D12 is not supported, and only llvmpipe can be used. How can I set the speed of llvmpipe to be normal?

pal1000 commented 1 year ago

It's weird that llvmpipe isn't using multiple cores for you. It typically outperforms clearly D3D12 on a system without GPU.

wbzqe commented 1 year ago

It's weird that llvmpipe isn't using multiple cores for you. It typically outperforms clearly D3D12 on a system without GPU.

I use glfw and glad to initialize the context, could you please help check if there is any problem in it


    glfwWindowHint(GLFW_SAMPLES, GLFW_DONT_CARE);
    glfwWindowHint(GLFW_ALPHA_BITS, GLFW_DONT_CARE);
    glfwWindowHint(GLFW_DEPTH_BITS, GLFW_DONT_CARE);

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);

#ifdef __APPLE__
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_API);
    glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);

    auto window = glfwCreateWindow(256, 256, "", nullptr, nullptr);
    if (!window) {
        glfwTerminate();
        return nullptr;
    }
    glfwMakeContextCurrent(window);

    int ver = gladLoadGL(glfwGetProcAddress);
    if (ver == 0) {
        glfwDestroyWindow(window);
        glfwTerminate();
        return nullptr;
    }
pal1000 commented 1 year ago

You should ask on Khronos forums about any performance bottleneck your code may have.