Привет! как софтварные растерайзеры справляются с race condition? нужно атомарно

записать значение в Z-buffer, а потом если оно записано (до этого там находилась большая глубина) атомарно записать в color buffer. Если это делать из нескольких потоков, то все может сломаться

10 ответов

20 просмотров

софтварные растеризаторы растеризуют один примитив в несколько потоков, такой ситуации не возникает

Nikita-Druzhinin Автор вопроса
Timur Gagiev
софтварные растеризаторы растеризуют один примитив...

Я думал бахнуть атомик bool на операцию чтения-записи из глубины и цвета. Сколько пикселей на экране, столько и атомиков. Каждый тред при попытке записать что-то входит в спинлок, ожидая пока предыдущий проверит глубину и запишет. Норм подход?

Nikita-Druzhinin Автор вопроса
Timur Gagiev
звучит жутко, но кто тебя остановит? )

Хотелось бы конечно побенчить чтобы сравнить с другими методами но я конечно же не буду 🤌🏻

Timur Gagiev
звучит жутко, но кто тебя остановит? )

Не, ну тут надо остановить, слишком страшно звучит

Nikita-Druzhinin Автор вопроса
Roy Mustang
Не, ну тут надо остановить, слишком страшно звучит

Ладно-ладно, я переночевал эту идею и сам уже думаю, что фигню какую-то придумал🤣

Nikita Druzhinin
Я думал бахнуть атомик bool на операцию чтения-зап...

Тебе надо будет заалайнить по длине кешлинии чтобы убрать false-sharing, и твои булы превращаются в 8-байт; Либо тебе нужно убедиться, что разные потоки работают с пикселями далеко друг от друга.

Nikita-Druzhinin Автор вопроса
Jokhar Ali
Тебе надо будет заалайнить по длине кешлинии чтобы...

да я уже подумал зря я взялся за такой подход: моя изначальная идея была распределять между потоками работу по растеризации отдельных объектов. Но тогда возникает вопрос с race condition при обращении к depth и color. Теперь я, как посоветовал Тимур, между потоками буду распределять работу по растеризации пикселей для каждого объекта. Тогда все ядра будут заняты и не нужно будет спинлоки мутить

Nikita-Druzhinin Автор вопроса
Jokhar Ali
Тебе надо будет заалайнить по длине кешлинии чтобы...

но насчет аллайна по кешлиниям хорошая идея.

Nikita Druzhinin
да я уже подумал зря я взялся за такой подход: моя...

пиксели тоже сурово слишком, тайлами самое то будет

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

Обсуждают сегодня

День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Что за японодичь? Мне хоть m68k, хоть 8080, 8088, на любом можно что-то создать
Егор
5
и да, кто сказал что у эпла именно такой isa?
Boris Vinogradov
5
ну так тогда какой эплы юзают набор инструкций, и тогда считаються ли они армами вообще?
Shvabrikk Nya
4
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
насколько реально, что при задействовании хардварного курсора фреимбуфер начнёт сильно искажать выводимую инфу? а то уже и понять то не могу сон это был или явь
Mixail Frolov
3
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Карта сайта