Хвастовство и задача на сообразительность
Jun. 2nd, 2010 01:49 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
На материнских платах современных компьютеров есть 2 места под видеокарты. Обычная технология позволяет поставить только две одинаковые видеокарты. Наша контора делает чип, который обеспечивает поддержку двух любых видеокарт. Ведущие производители материнских плат готовят к выпуску платы с нашим чипом, а одна такая плата уже вышла в продажу. Сейчас в Тайване проходит международная компьютерная выставка COMPUTEX. На ней материнская плата с нашим чипом получила награду Best Choice. Это самая престижная награда, которую может получить такой продукт. Контора радуется.
Во время работы над таким продуктом приходится решать много разных задач. Одним трюком я горжусь совершенно по-детски. Вот упрощенные вводные данные. На компьютере запущена какая-то ресурсоемкая программа. В режиме реального времени мы узнаем ключевые параметры этой программы. Мы хотим выводить эти параметры на экран. То есть, программа работает, а где-нибудь в уголке экрана мы видим постоянно меняющиеся числа. Единственная функция, которая есть в нашем распоряжении, может нарисовать прямоугольник любого цвета, любого размера в любом месте экрана. При этом цвет, размер и место могут быть произвольными, а вот количество вызовов этой функции надо минимизировать.
Сперва нарисуем черный прямоугольник, у которого ширина раза в полтора меньше высоты. Поверх него нарисуем белый прямоугольник меньшего размера - чтобы были видны края черного прямоугольника. Так мы получим цифру 0. А если мы нарисуем белый прямоугольник поверх черного так, чтобы от черного осталась только вертикальная полоска, то получим цифру 1. Чтобы получить цифры от 2 до 9, надо поверх черного прямоугольника нарисовать два белых прямоугольника в соответствующих местах (и один - для семерки). В среднем 2.7 прямоугольника на цифру, что довольно мало.
Получается угловато, уродливо, но крайне просто и эффективно. За пару дней был написан и отлажен интерфейс для этого метода. В нашей конторе все отделы пользовались этим методом почти год.
Во время работы над таким продуктом приходится решать много разных задач. Одним трюком я горжусь совершенно по-детски. Вот упрощенные вводные данные. На компьютере запущена какая-то ресурсоемкая программа. В режиме реального времени мы узнаем ключевые параметры этой программы. Мы хотим выводить эти параметры на экран. То есть, программа работает, а где-нибудь в уголке экрана мы видим постоянно меняющиеся числа. Единственная функция, которая есть в нашем распоряжении, может нарисовать прямоугольник любого цвета, любого размера в любом месте экрана. При этом цвет, размер и место могут быть произвольными, а вот количество вызовов этой функции надо минимизировать.
Сперва нарисуем черный прямоугольник, у которого ширина раза в полтора меньше высоты. Поверх него нарисуем белый прямоугольник меньшего размера - чтобы были видны края черного прямоугольника. Так мы получим цифру 0. А если мы нарисуем белый прямоугольник поверх черного так, чтобы от черного осталась только вертикальная полоска, то получим цифру 1. Чтобы получить цифры от 2 до 9, надо поверх черного прямоугольника нарисовать два белых прямоугольника в соответствующих местах (и один - для семерки). В среднем 2.7 прямоугольника на цифру, что довольно мало.
Получается угловато, уродливо, но крайне просто и эффективно. За пару дней был написан и отлажен интерфейс для этого метода. В нашей конторе все отделы пользовались этим методом почти год.
no subject
Date: 2010-06-01 10:51 pm (UTC)no subject
Date: 2010-06-01 11:05 pm (UTC)no subject
Date: 2010-06-01 11:20 pm (UTC)Правда именно мне все эти SLI/Crossfire комбинации как раз ни к чему. Я наоборот бы радовался материнки которая бы экономила на PCIe16-х, при высоком качестве всего остального.
no subject
Date: 2010-06-02 07:00 am (UTC)Я бы тоже. К счастью, есть миллионы "геймеров", которым нужны эти навороты.
no subject
Date: 2010-06-01 11:03 pm (UTC)no subject
Date: 2010-06-01 11:05 pm (UTC)no subject
Date: 2010-06-01 11:53 pm (UTC)У других вендоров ваши чипы скоро появятся?
no subject
Date: 2010-06-02 07:07 am (UTC)Asus на этой же выставке представил новую плату с нашим чипом, а MSI - несколько плат. Ну, и разные другие проекты есть...
no subject
Date: 2010-06-02 12:32 am (UTC)no subject
Date: 2010-06-02 06:52 am (UTC)no subject
Date: 2010-06-02 01:36 am (UTC)В принципе, для 2, 5 и 9 тоже можно одним обойтись
no subject
Date: 2010-06-02 06:51 am (UTC)no subject
Date: 2010-06-02 01:45 am (UTC)no subject
Date: 2010-06-02 06:52 am (UTC)no subject
Date: 2010-06-02 06:19 am (UTC)no subject
Date: 2010-06-02 06:53 am (UTC)no subject
Date: 2010-06-02 06:40 am (UTC)-- Сперва нарисуем черный прямоугольник, у которого ширина раза в полтора меньше высоты. Поверх него нарисуем белый прямоугольник меньшего размера - чтобы были видны края черного прямоугольника. Так мы получим цифру 0.
А что происходит, если в этот момент фон экрана - или хотя бы того куска, на котором ты рисуешь - черный? Твой внешний прямоугольник просто сольется с фоном.
no subject
Date: 2010-06-02 06:57 am (UTC)Для каждого числа добавили один широкий белый прямоугольник - фон.
no subject
Date: 2010-06-02 07:06 am (UTC)Не исключаю, что это вы зря - в хай-теке принято каждую мелочь патентовать. И есть на то причины. Надеюсь, что вас консультирует хороший специалист по патентному праву.
P.S. А решение симпатичное. Навеяно какими-нибудь электронными часами? :-)
no subject
Date: 2010-06-02 07:17 am (UTC)Ага. Хотелось улучшить стандартную 7-bars схему. Прикол в том, что мы работаем с самой навороченной графикой и хорошо знаем, как именно надо рисовать числа в своей аппликации: текстура, копирование из нее, рендеринг и все такое. Красиво и любым шрифтом. Более того, мы даже можем это внедрить в чужую аппликацию. Но нужно было что-то совсем легкое. И вот посреди навороченной графики - угловатое уродство... Но работает.
no subject
Date: 2010-06-02 08:01 am (UTC)а как называется технология и чип?
no subject
Date: 2010-06-02 08:59 am (UTC)no subject
Date: 2010-06-02 08:07 am (UTC)no subject
Date: 2010-06-02 08:59 am (UTC)no subject
Date: 2010-06-02 08:16 am (UTC)Поздравляю!
no subject
Date: 2010-06-02 08:40 am (UTC)no subject
Date: 2010-06-02 10:31 am (UTC)no subject
Date: 2010-06-02 11:55 am (UTC)no subject
Date: 2010-06-02 12:58 pm (UTC)Просто вспоминается, скажем, макбук про, где 9400 и 9600 стоят одновременно и можно между ними переключаться.
no subject
Date: 2010-06-02 01:16 pm (UTC)А в макбуке аппликация бежит на одной из карточек.
no subject
Date: 2010-06-02 08:35 pm (UTC)no subject
Date: 2010-06-02 08:38 pm (UTC)no subject
Date: 2010-06-04 12:51 am (UTC)Пришлось заняться определением одинаково раскрашенных областей, и посылать по команде на область (там была такая - "закрасить многоугольник, заданный последовательностью вершин"). Ну и упорядочивать, чтобы, если один регион лежит внутри другого, то сначала нарисовать внешний - тогда можно было не заморачиваться со связностью.
Помогло, конечно, то что тот Тектроникс в принципе мог отображать небольшое число цветов - не то 7, не то 15. А иначе бы такой номер не прошел.
no subject
Date: 2010-06-04 08:20 am (UTC)http://gizmodo.com/5545623/these-technicolor-dream-hands-could-revolutionize-ui