O que faz o pacote libkwinnvidiahack4?

4

Acabei de encontrar os pacotes libkwinnvidiahack4 (etambém libkwinactivenvidiahack4 ). A partir da descrição eu entendo que fornece alguns "hacks" para o gerenciador de janelas do KDE em combinação com um driver gráfico binário da Nvidia.

This package contains a library used by nvidia cards for the KDE window manager.

This package is part of the KDE workspace module.

No entanto, esta descrição não tem o que realmente faz. Eu uso o KDE / Kubuntu e tenho o driver gráfico da Nvidia instalado. Quais são os benefícios de instalar esses pacotes? O que eles fazem?

Eu tenho o pacote libkwinnvidiahack4 instalado (provavelmente automaticamente), mas não tenho certeza do que é responsável.

Percorrer os changelogs ( apt-get changelog libkwinnvidiahack4 ) me dá o changelog kde-workspace com uma entrada (vários trechos extraídos dele):

  • Move libkwinnvidiahack4 to its own package
  • Add the packages

    • kde-window-manager-active
    • kde-window-manager-active-gles
    • libkwinactiveglutils1
    • libkwinactiveglesutils1
    • libkwinactiveeffects1abi3
    • libkwinactivenvidiahack4
  • kde-window-manager/-gles depends on libkwinnvidiahack4

  • Don't install /usr/lib/libkwinnvidiahack.so. No one is supposed to link against libkwinnvidiahack. Make kdebase-workspace-dev depend on libkdecorations4 and libkwineffects1 instead of kde-window-manager now that kde-window-manager contains nothing one can link against.

que também não explica por que esses pacotes são adicionados e o que eles fazem.

    
por gertvdijk 14.08.2013 / 21:40

1 resposta

5

Após um pouco de pesquisa no Google, me deparei com esta postagem :

The only purpose of this file is to be later in the link order than (nvidia's) libGL, thus being initialized by the dynamic linker before it, allowing it to set __GL_YIELD=NOTHING soon enough for libGL to notice it.

Dado que a citação é de um certo M-Graesslin, Martin é o principal mantenedor nesta área, então é uma fonte infalível.

De fato, olhando para o código-fonte

apt-get source libkwinnvidiahack4

Este é realmente o módulo do espaço de trabalho do kde.

kwin/nvidiahack.cpp é o módulo de origem em questão - é um pequeno módulo em si

Como esse hack ainda está em 13.04 - e faz parte do núcleo, sim ainda é necessário e sua finalidade é garantir que a vinculação de bibliotecas para o componente OpenGL do KDE seja feita no > ordem funcional correta.

Em termos do que o módulo faz - parece que ele define uma variável de ambiente de tempo de execução __GL_YIELD

Da especificação do freedesktop

OpenGL yield behavior

There are several cases where the NVIDIA OpenGL driver needs to wait for external state to change before continuing. To avoid consuming too much CPU time in these cases, the driver will sometimes yield so the kernel can schedule other processes to run while the driver waits. For example, when waiting for free space in a command buffer, if the free space has not become available after a certain number of iterations, the driver will yield before it continues to loop.

By default, the driver calls sched_yield() to do this. However, this can cause the calling process to be scheduled out for a relatively long period of time if there are other, same-priority processes competing for time on the CPU. One example of this is when an OpenGL-based composite manager is moving and repainting a window and the X server is trying to update the window as it moves, which are both CPU-intensive operations.

You can use the __GL_YIELD environment variable to work around these scheduling problems. This variable allows the user to specify what the driver should do when it wants to yield.

Assim, o truque é nunca esperar e pintar sempre na superfície composta OpenGL - provavelmente para impedir que artefatos gráficos apareçam.

    
por fossfreedom 23.08.2013 / 00:02