Нет vga / vgaswitcheroo в / sys / kernel / debug (Ubuntu 13.10)

Самая большая проблема с попыткой обнаружить касание - это гибридные устройства, которые поддерживают как сенсорное управление, так и трекпад / мышь. Даже если вы в состоянии правильно определить, поддерживает ли устройство пользователя касание, вам действительно нужно определить, какое устройство ввода пользователь в настоящее время использует. Здесь есть подробное описание этой проблемы и возможное решение здесь .

По сути, подход к выяснению, касался ли пользователь экрана или вместо этого использовал мышь / трекпад, заключается в регистрации на странице событий touchstart и mouseover:

document.addEventListener('touchstart', functionref, false) // on user tap, "touchstart" fires first
document.addEventListener('mouseover', functionref, false) // followed by mouse event, ie: "mouseover"

Сенсорное действие вызовет оба этих события, хотя первое (touchstart) всегда будет первым на большинстве устройств. Таким образом, рассчитывая на эту предсказуемую последовательность событий, вы можете создать механизм, который динамически добавляет или удаляет класс can-touch к корню документа, чтобы отразить текущий тип ввода пользователя пользователя на данный момент в документе:

;(function(){
    var isTouch = false //var to indicate current input type (is touch versus no touch) 
    var isTouchTimer 
    var curRootClass = '' //var indicating current document root class ("can-touch" or "")
     
    function addtouchclass(e){
        clearTimeout(isTouchTimer)
        isTouch = true
        if (curRootClass != 'can-touch'){ //add "can-touch' class if it's not already present
            curRootClass = 'can-touch'
            document.documentElement.classList.add(curRootClass)
        }
        isTouchTimer = setTimeout(function(){isTouch = false}, 500) //maintain "istouch" state for 500ms so removetouchclass doesn't get fired immediately following a touch event
    }
     
    function removetouchclass(e){
        if (!isTouch && curRootClass == 'can-touch'){ //remove 'can-touch' class if not triggered by a touch event and class is present
            isTouch = false
            curRootClass = ''
            document.documentElement.classList.remove('can-touch')
        }
    }
     
    document.addEventListener('touchstart', addtouchclass, false) //this event only gets called when input type is touch
    document.addEventListener('mouseover', removetouchclass, false) //this event gets called when input type is everything from touch to mouse/ trackpad
})();

Подробнее здесь .

3
задан 05.05.2020, 23:23

2 ответа

Я нашел этот

There are two versions of hybrd graphics: MUXed and MUX-less. MUXed have a 
display MUX to switch the displays between the discrete and integrated cards. 
MUXed systems can be switched using vgaswitcheroo. MUX-less do not have a 
display MUX and the displays are only connected to the integrated card. On 
MUX-less systems, the discrete card is solely for rendering, not display. X 
Server 1.14 is required to support rendering and display from different cards. 
Most new laptops (2011+) are MUX-less.

Так что я думаю, что весьма вероятно, что моя система (будучи очень недавним ноутбуком) имеет MUX-less (т.е. фактически подключена только карта Intel к дисплею), и хотя я могу «переключаться» через AMD Catalyst Control Centre (если я буду достаточно смелым / глупым, чтобы установить fglrx), это на самом деле сводится к следующему: «Высокая производительность» -> затем передать жесткие графические вычисления в dGPU перенаправьте их обратно через iGPU для отображения «Низкая производительность / хорошая батарея» -> выполните калибровку на iGPU, а затем отправьте непосредственно на дисплей. У меня также нет возможности переключать графические процессоры в BIOS, что также предполагает MUX-less.

Таким образом, я, вероятно, никогда не смогу использовать VGA switcheroo.

Еще одно соображение заключается в том, что драйвер radeon официально еще не поддерживает мою карту (кодовое название 8670M для солнечной системы Mars XT, не путать с OLAND). Таким образом, когда я загружаюсь с драйверами с открытым исходным кодом, я получаю сообщения типа No screens found для Radeon. Учитывая, что switcheroo для этого нужны Radeon и Intel, может произойти сбой, потому что драйвер Radeon не поддерживает мою карту.

Если это так, то возникает вопрос о том, как переключаться между картами ATI / Intel (без fglrx) в системе MUX-less.

4
ответ дан 05.05.2020, 23:24

Согласно это


MUXLESS SYSTEMS

Первое, что вам нужно сделать, это включить дискретный графический процессор если он еще не включен:

# echo ON > /sys/kernel/debug/vgaswitcheroo/switch

Убедитесь, что это сработало, выполнив эту команду еще раз:

# cat /sys/kernel/debug/vgaswitcheroo/switch

Теперь нам нужно узнать идентификаторы, которые xrandr присвоил вашим картам. Сделайте это снова как обычный пользователь, а не root:

$ xrandr --listproviders
Providers: number : 3
Provider 0: id: 108 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3     outputs: 4 associated providers: 2 name:Intel
Provider 1: id: 69 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 0 associated providers: 2 name:radeon
Provider 2: id: 69 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 0 associated providers: 2 name:radeon

В моем случае в списке 3 карты. Обратите внимание, что оба предоставляют 1 и 2 имеют одинаковый идентификатор. В этом случае моя дискретная карта имеет идентификатор 69, а моя встроенная карта - идентификатор 108.

Последнее, что нам нужно, это сказать X, чтобы использовать ваш дискретный графический процессор для рендеринга:

$ xrandr --setprovideroffloadsink 69 108

Где первое число - ваша дискретная карта, а второе - ваша интегрированная карта. Чтобы убедиться, что это сработало:

$ DRI_PRIME=1 glxinfo | grep renderer
OpenGL renderer string: Gallium 0.4 on AMD TURKS

Вы должны получить Gallium 0.4 в качестве средства визуализации. Отныне все ваши 3D-приложения будут отображаться на вашей карте ATI, нет необходимости перезапускать X.

Работал у меня в lenovo u400 с kubuntu 13.10.

1
ответ дан 05.05.2020, 23:24
  • 1
    Я сожалею, я сфокусировался на втором сообщении, поскольку я также пытался сделать muxless карту для работы. В моем случае vgaswitcheroo там, просто имелся, чтобы удалить fglrx и иметь xserver-xorg-video-intel установленный пакет. – Isaac Turner 05.05.2020, 23:24
  • 2
    Pablo R: мой помещенный: GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, строка рендерера OpenGL: Галлий 0.4 на ТУРКАХ AMD. Это будет представлено на моей карте ATI тогда? – Jonathan Hartley 05.05.2020, 23:25
  • 3
    Да, карта ATI должна работать. – Bluehorn 05.05.2020, 23:25
  • 4
    I' ve читают то руководство также. Как упомянуто в исходном сообщении, /sys/kernel/debug/vgaswitcheroo/switch просто не существует. Нет никакого способа отозваться эхом ВКЛ\ВЫКЛ в него. – Jonathan Hartley 05.05.2020, 23:25

Теги

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