Экранный разрыв Nvidia/Intel

Я просто установил Ubuntu на своем ноутбуке (GTX 960M / I7-6700HQ - Intel HD530), и это не позволит мне мимо Lockscreen, пока я не переустановил драйвер Nvidia (это установило драйвер 370, я просто использовал автоустановку драйверов человечности).

После установки драйвера Nvidia теперь работает моя система, но у меня есть некоторый ужасный экранный разрыв, просто переместив окна и при просмотре веб-страниц, это еще хуже.

Вещи я попробовал до сих пор:

  • Изменение GPU для использования в настройках NVidia XServer
  • Добавление "TearFree", "верного" для xorg.conf для устройства Intel

Что еще я могу попробовать?

1
задан 27 March 2017 в 08:42

1 ответ

Я кодировал сценарий, который переключается между Intel и видеокартой NVIDIA. Помимо переключения между ними это также ФИКСИРУЕТ разрыв видео/экрана при использовании видеокарты INTEL. Видеокарта NVIDIA, все еще показывающая проблемы разрыва видео/экрана, которых я не нашел решение до сих пор.
Вот сценарий на GitHub

#!/bin/bash
# -------------------------------------------------------
# A shell script that fixes screen tearing on intel video cards and switches between nvidia and intel graphic cards
# Written by: Bruno Assis
# Created on: 25/03/2017
# -------------------------------------------------------

#asks for sudo if the user uid != 0 then calls the script again with the current user name
(( EUID != 0 )) && exec sudo -- "$0" "$@$USER"

#-----------------
#----Settings-----
#-----------------

PREVIOUS_USER=$1
SCRIPT_NAME="20-intel.conf"
CONF_BASE_PATH="/etc/X11/"
CONF_BASE_DIR="xorg.conf.d"
CONF_PATH="/etc/X11/$CONF_BASE_DIR/"
CONF_FILE_PATH="$CONF_PATH$SCRIPT_NAME"
CURRENT_VIDEO_CARD=""

#-----------------
#----Functions----
#-----------------

#creates the config file.
function CreateTearingFreeFile {
    echo 'Section "Device"' >> $1
    echo '   Identifier  "Intel Graphics"' >> $1
    echo '   Driver      "intel"' >> $1
    echo '   Option      "TearFree"    "true"' >> $1
    echo "EndSection" >> $1
}

#switches the environment to use nvidia graphics card
function SwitchToNvdia {
    echo -e "\n Switching to nvidia."
    rm $CONF_FILE_PATH
    prime-select nvidia
}

#switches the environment to use intel's graphics card
function SwitchToIntel {
    echo -e "\n Switching to Intel."
    cd $CONF_PATH
    CreateTearingFreeFile $SCRIPT_NAME
    prime-select intel
}

function LogoutFromCurrentSession {
    echo -e "\n You'll need to logout in order to changes take effect."
    echo -e "\n Do you wish to logout now? (y | n)" 
    read -n 1 option
    if [[ "$option" = "y" || "$option" = "Y" ]]; then
        #log out from the current session for the current user
        su -c "kill -9 -1" "$PREVIOUS_USER"
    fi
}

function SetupEnvironment {

    if [ ! -d "$CONF_BASE_PATH" ]; then 
        echo -e "\n error: could not find $CONF_BASE_PATH."
        exit 1
    else
        if [ ! -d "$CONF_PATH" ]; then 
            echo -e "\n could not find $CONF_BASE_DIR."
            echo -e "\n trying to create it."
            cd $CONF_BASE_PATH
            mkdir $CONF_BASE_DIR
            if [ ! -d "$CONF_PATH" ]; then
                echo -e "\n could not create $CONF_BASE_DIR folder."
                exit 1
            else
                echo -e "\n $CONF_BASE_DIR folder created successfully."
            fi
        fi
    fi
}

function CheckForCurrentVideoCardInUse {
    local _VIDEO_CARD=`glxinfo|egrep "OpenGL vendor|OpenGL renderer*"`
    if [[ $_VIDEO_CARD == *"NVIDIA"* && $_VIDEO_CARD == *"GeForce"* ]]; then
        CURRENT_VIDEO_CARD="NVIDIA"
    elif [[ $_VIDEO_CARD == *"Intel"* && $_VIDEO_CARD == *"Intel"* ]]; then
        CURRENT_VIDEO_CARD="INTEL"
    else
        ErrorHandler
    fi
}

function ErrorHandler {
        echo -e "\n Could not find your video card"
        echo -e "\n Please use glxinfo to check if the name is correct or if you are using NVIDIA's or Intel's card"
        exit 1
}

#------------------
#--Program Flow ---
#------------------

#Setups the environment if it hasn't already been set.

CheckForCurrentVideoCardInUse
SetupEnvironment

echo -e " current video card in use: $CURRENT_VIDEO_CARD"

#If the file exists then we should delete it and start nvidia

if [ $CURRENT_VIDEO_CARD == "INTEL" ]; then
    echo -e "\n Switch graphics card to NVIDIA? (y | n)"
    read -n 1 option
    if [[ "$option" == "y" || "$option" == "Y" ]]; then
        SwitchToNvdia
        LogoutFromCurrentSession
    fi
elif [ $CURRENT_VIDEO_CARD == "NVIDIA" ]; then
    echo -e "\n Switch graphics card to INTEL? (y | n)"
    read -n 1 option
    if [[ "$option" == "y" || "$option" == "Y" ]]; then
        SwitchToIntel
        LogoutFromCurrentSession
    fi
else
    ErrorHandler
fi
2
ответ дан 7 December 2019 в 13:42

Другие вопросы по тегам:

Похожие вопросы: