Перейти к содержимому
  • 0
rootmaster

как определить уровень видеокарты/монитора до их соенденения

Вопрос

у меня есть патч для openOS(не суть)

я хочу чтобы в качестве системного экрана и видеокарты он выбирал самое лутшее

но как узнать уровень перед подключениям?

в говову только перебор и случайный перебор приходит, а как по нормальномк незнаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

local component = require("component")

for address in component.list("gpu") do
  local gpu = component.proxy(address)
  local maxDepth = gpu.maxDepth()
  
  if maxDepth == 8 then
    -- Tier 3
  elseif maxDepth == 4 then
    -- Tier 2
  else
    -- Tier 1
  end
end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Также computer.getDeviceInfo() возвращает таблицу с параметрами всех подключенных устройств. Уровень можно узнать косвенно, ориентируясь, например, по параметру capacity.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, ECS сказал:

local component = require("component")

for address in component.list("gpu") do
  local gpu = component.proxy(address)
  local maxDepth = gpu.maxDepth()
  
  if maxDepth == 8 then
    -- Tier 3
  elseif maxDepth == 4 then
    -- Tier 2
  else
    -- Tier 1
  end
end

 

ДО подключения к экрану если gpu 3 будет у экрану 1 подключена то maxDepth будет 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 час назад, eu_tomat сказал:

Также computer.getDeviceInfo() возвращает таблицу с параметрами всех подключенных устройств. Уровень можно узнать косвенно, ориентируясь, например, по параметру capacity.

ок.... вот только интерестно что такой этот ваш capacity

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, rootmaster сказал:

интерестно что такой этот ваш capacity

Этот наш capacity, судя по выводимым значениям, сообщает размер текстового буфера, выраженный в символах. Произведение высоты и ширины. Но это моё интуитивное предположение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, rootmaster сказал:

ДО подключения к экрану если gpu 3 будет у экрану 1 подключена то maxDepth будет 1

Но... ты же сам хотел узнать уровень до подключения к экрану, а теперь ругаешься, что после подключения метод становится невалидным... 

 

image.png.205b0ef446313523c259a582920b7586.png

 

12 часа назад, eu_tomat сказал:

Также computer.getDeviceInfo() возвращает таблицу с параметрами всех подключенных устройств. Уровень можно узнать косвенно, ориентируясь, например, по параметру capacity.

Еще можно по параметру width. По названию не скажешь, но он как раз олицетворяет предельную глубину цвета для видеокарты. Пример на компьютере с 3 независимыми GPU всех 3 тиров и APU 2 тира, привязанного к экрану 1 тира:

 

image.png.de99d1639af9cb87598ccb25f01289f7.png

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А разве по умолчанию не выбираются лучшая видеокарта и лучший экран? Или вас интересует 'лучший экран' по размерам в игре?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Taoshi сказал:

А разве по умолчанию не выбираются лучшая видеокарта и лучший экран? Или вас интересует 'лучший экран' по размерам в игре?

Правда. Никогда еще не делал компютер первого или второго лв для программ. Только ради дюпа делал их ибо их быстрее скрафтить). Сейчас делаю ток серверные компы. 

Изменено пользователем whiskas

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Taoshi сказал:

А разве по умолчанию не выбираются лучшая видеокарта и лучший экран? Или вас интересует 'лучший экран' по размерам в игре?

Руководство пишет:

Component API назначает один из компонентов каждого типа «главным».
Если блоков одного типа несколько, «главный» выбирается случайно. 

Я немного поэкспериментировав обнаружил, что из двух видеокарт главной выбирается та, которая вставлена в верхний слот, а из двух мониторов 1-го и 3-его уровней - выбирается первый. Хотя, не буду утверждать, что так бывает всегда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мда. На оцелота не удалось решить эту задачу. А вот в самой игре всё мгновенно встало на свои места. Сперва выбрал видеокарту по параметру freeMemory, затем подобрал монитор через bind(adress,true) и maxResolution. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но теперь есть другой вопрос: как быть, если на каждый из экранов прилеплено по клавиатуре? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос про клавиатуру на каждом из мониторов мне решить с наскоку не удалось.  А для ситуации 'клавиатура на лучшем мониторе', а карта самовыбралась не та' скидываю решение:

local component=require('component')

local gpus={}
for addr in component.list('gpu') do gpus[#gpus+1]=addr end

local scr={}
for addr in component.list('scree') do scr[#scr+1]=addr end

local memory=component.proxy(gpus[1]).totalMemory()
local best=1
for n=1,#gpus do

  if memory<component.proxy(gpus[n]).totalMemory() then
    memory=component.proxy(gpus[n]).totalMemory()
    best=n
  end
    print(memory,n,component.proxy(gpus[n]).totalMemory())
    --print(best)
end

bestscr=1
local max_res=0
for n=1,#scr do
  component.proxy(gpus[best]).bind(scr[n],true)
  if max_res<component.proxy(gpus[best]).maxResolution() then
    max_res=component.proxy(gpus[best]).maxResolution()
    bestscr=n
        
  end
    print('scr='..n..'bestscr='..bestscr)
end
component.proxy(gpus[best]).bind(scr[bestscr],true)

--component.proxy(gpus).bind(scr,true)

https://pastebin.com/mE3hGAm2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...