- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
pub struct Vec { x: u32, y: u32, z: u32, }
pub extern "C" fn sum_c(a: &Vec, b: &Vec) -> Vec {
return Vec {x: a.x + b.x, y: a.y + b.y, z: a.z + b.z };
}
pub fn sum_rust(a: &Vec, b: &Vec) -> Vec {
return Vec {x: a.x + b.x, y: a.y + b.y, z: a.z + b.z };
}
Выхлоп:
example::sum_c:
mov eax, dword ptr [rsi]
add eax, dword ptr [rdi]
mov ecx, dword ptr [rsi + 4]
add ecx, dword ptr [rdi + 4]
mov edx, dword ptr [rsi + 8]
add edx, dword ptr [rdi + 8]
shl rcx, 32
or rax, rcx
ret
example::sum_rust:
mov ecx, dword ptr [rdx]
mov r8d, dword ptr [rdx + 4]
add ecx, dword ptr [rsi]
add r8d, dword ptr [rsi + 4]
mov edx, dword ptr [rdx + 8]
add edx, dword ptr [rsi + 8]
mov rax, rdi
mov dword ptr [rdi], ecx
mov dword ptr [rdi + 4], r8d
mov dword ptr [rdi + 8], edx
ret
3.14159265 28.09.2020 16:43 # 0
bormand 28.09.2020 16:46 # 0
3.14159265 28.09.2020 16:49 # +1
Притом что эти кретины до сих пор не имеют стабильного ABI. И принципиально на том стоят.
https://people.gnome.org/~federico/blog/rust-stable-abi.html#rust_does_not_have_a_stable_abi
>By default indeed it doesn't, because the compiler team wants to have the freedom to change the data layout and Rust-to-Rust calling conventions, often for performance reasons, at any time.
Кокой пирфоманс )))
>But we only have a single stable ABI anyway
>And that is the C ABI.
Ещё раз:
>Summary of ABI so far
It is one's decision to export a stable C ABI from a Rust library. There is some awkwardness in how types are laid out in C, because the Rust type system is richer, but things can be made to work well with a little thought. Certainly no more thought than the burden of designing and maintaining a stable API/ABI in plain C.
Но при этом постоянно сливаются стабильному сишному ABI.
bormand 28.09.2020 16:55 # 0
Эм, а что у них там такое есть в языке, что нельзя как няшную структуру представить?
3.14159265 28.09.2020 16:58 # 0
Не удивлюсь что в итоге будет очередной обсёр с ненужной питушнёй.
Myxa 28.09.2020 17:08 # 0
3.14159265 28.09.2020 17:37 # +1
А именно чтобы не так тупили итераторы и прочие говноабстракции.
The reason Rust doesn't have a defined ABI is basically that it wouldn't buy the same benefits it does in C. Specifying an ABI requires a lot of per-platform work (which the C community has already done), and, because of the importance of cross-crate inlining (all generic functions get inlined into call-sites by default), would not be sufficient to provide the benefit of in-place library updates. If you rewrite generic code in libfoo, and libbar depends on it, you can't get around recompiling libbar.
This is basically because Rust is a higher-level language where you use iterators, iterator adaptors, and higher-order functions in the course of writing libraries and applications. In C, you would manually inline things like iteration, writing for loops and populating intermediate data structures yourself. In Rust, this is something that can be factored out into libraries, but that means your code's meaning depends more deeply on the meaning of library code. To optimize away these abstractions and provide good performance, the compiler needs to inspect and make decisions based on library source code when compiling code that calls it. To permit efficiency, Rust basically has to be compiled from leaf dependencies upward.
bormand 28.09.2020 18:07 # 0
3.14159265 28.09.2020 18:07 # 0
bormand 28.09.2020 18:09 # 0
3.14159265 28.09.2020 18:15 # 0
Там где можно было передать обычный массив/указатель, нужно городить итераторы (не обязательно на женериках).
И невозможно защититься от слома ABI. То есть нужно постоянно перекомпилировать не только свой crate, но и все крейты от которых он зависит. Причём как в случае изменения кода, так и в случае изменения ABI.
А компиляция в rust по ощущениям не быстрее крестовой.
bormand 28.09.2020 18:19 # 0
> от которых он зависит
Точно не наоборот? Все крейты, которые от него зависят, имхо. Т.к. они натянули себе дженериков из прошлой версии.
3.14159265 28.09.2020 18:20 # 0
Да, оговорился.
bormand 28.09.2020 18:35 # 0
3.14159265 28.09.2020 18:42 # 0
После бездн, которые являет rust очевидно какой объём титанической неблагодарной работы делает Комитет и компиляторщики.
>хуй что поменяешь в стандартной либе если кто-то завяжется на ABI
Думаю им надо просто линковать в зависимости от флага
-std=c++11
Какие проблемы?
Ведь он уже и так влияет на многие вещи. Кмк, можно написать программу, которая с -std=c89 и -std=c99 вернёт разный результат.
У крестов стандарт раз в 5 лет. И каждый из них чётко специфицирован. А у пuтушатни это уже 46ой релиз.
bormand 28.09.2020 18:44 # 0
Тебе хочется таскать и поддерживать N версий стандартной либы параллельно? Для каждого режима нужна будет своя.
Не ифдефами же её обмазывать, в конце-концов. С ифдефами вообще треш лютый будет, там и так то читать сложно.
3.14159265 28.09.2020 18:48 # 0
Кому-то сейчас нужен С++ 2003?
Edit: хотя да, это в Луникс мире, где у всех есть сырцы и постоянно новые дистры. На виндах с каким-нибудь говном под msvcrt2003 это действительно проблема
bormand 28.09.2020 18:49 # +1
Не меняя ABI в стандарте они дают мне возможность прыгнуть на новые кресты без пересборки старых либ. Ну если разрабы стандартной либы сами что-то не сломают.
3.14159265 28.09.2020 18:54 # 0
Согласен. Я выше уже сам допёр.
ПРОПРИЕТАРОПРОБЛЕМЫ
3.14159265 28.09.2020 22:53 # 0
И тем не менее в виндах постоянно ситуация что нужно иметь установленными рантаймы msvcrt2003, msvcrt2005, msvcrt2008, msvcrt2013, msvcrt2015, итд.
gost 28.09.2020 22:55 # 0
Кстати, на 2015 всё наконец-то кончилось. Следующие версии майки обещают сделать бинарно-совместимыми.
guest8 29.09.2020 00:02 # −999
bormand 28.09.2020 18:53 # 0
Вот кстати, кто бы говорил про стабильное ABI. У прыщеядра то его нет. Там даже API для дров плавает.
guest8 28.09.2020 20:15 # −999
bormand 28.09.2020 20:16 # 0
3.14159265 28.09.2020 22:52 # 0
We dont break userspace.
bormand 28.09.2020 18:48 # 0
j123123 30.09.2020 11:32 # 0
Calling conversion (ведь вы тут о нем толкуете?) в стандарте крестопараши вообще нихуя не специфицирован. Т.е. всякая херня типа thiscall, fastcall и прочая такая дрисня - это все компиляторостроители для себя решают. Аналогично, крестопарашный стандарт нихуя не специфицирует относительно механизма обработки исключений (в винде вообще какая-то дичайшая срань под названием SEH сделана) и еще нихуя не сказано про то, как манглится всякая херня перегруженная.
j123123 30.09.2020 13:09 # 0
Я очень сомневаюсь в том, что человечеству под силу четко специфицировать такую ебучую переусложненную костыльную дрисню с кучей UB, как «С++».
3.14159265 30.09.2020 13:16 # 0
Привыкай
3.14159265 28.09.2020 17:48 # 0
Без нагноения вокруг вызова туч обёрточек, итераторов и прочих абстракций. Чтобы всё было «безопасно».
А если похерить это всё и писать нормально, тогда смысл rust пропадает.
И это действительно ОГРОМНАЯ проблема:
http://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c
>Currently there is 11 THOUSAND lines of Rust in wlroots-rs. All of this code is just wrapper code, it doesn’t do anything but memory management.
>This isn’t just repeated code either, I defined a very complicated and ugly macro to try to make it easier.
>This wrapper code doesn’t cover even half of the API surface of wlroots. It’s exhausting writing wlroots-rs code, memory management is constantly on my mind because that’s the whole purpose of the library. It’s a very boring problem and it’s always at odds with usability - see the motivation for the escape from callback hell described above.
>To do all of this, and then go write Way Cooler, already a big undertaking, is too much for me to commit to. When the benefit at the end of the day is just so I don’t have to write C, that doesn’t really make it worth it. If I got this out of the box by simply linking to the library, like I can in C++, then it would be much more tenable.
>I can always just use unsafe bindings to wlroots, just like I would with any other language. However, the entire point of Rust is that it’s safe. Doing that is not an option because at that point you lose the entire benefit of the language.
3.14159265 28.09.2020 17:54 # 0
Rooster 28.09.2020 19:24 # 0
Rooster 28.09.2020 19:22 # +1
tsarified
MAPTbIwKA 28.09.2020 16:52 # 0
следующим шагом интероп у раста нужно сделать разным в зависимости от версии компилятора
3.14159265 28.09.2020 16:54 # +2
Так и есть )))
Просто ору дичайше.
Лалки собрались пихать в ядро язык который:
а) абсолютно неспецифицирован
б) привязан к конкретной компиляторной платформе написанной на С++
в) для него невозможно произвести раскрутку компилятора
г) не имеющий стабильного ABI (тот что есть ворованный у Сишки)
MAPTbIwKA 28.09.2020 16:57 # +1
bormand 28.09.2020 16:57 # 0
3.14159265 28.09.2020 17:00 # +3
Из вчерашней статьи:
First of all, bootstrapping process is laughably bad. I realize that it’s never too easy but if you call yourself a systems programming language you should be able to bootstrap a compiler in a sane amount of steps. For instance, IIRC Guix has the following bootstrapping process for C compiler: simple C complier in Scheme (for which you can often write an implementation in assembly by hand) compiles TCC, TCC compiles GCC 2.95, GCC 2.95 compiles GCC 3.7, GCC 3.7 compiles GCC 4.9. For rustc you should either start with the original compiler written in OCaml and compile every following version with the previous one (i.e. 1.17 with 1.16) or cheat by using mrustc written in C++ which can compile Rust 1.19 or 1.29 (without borrow checks), then compile 1.30 with 1.29, 1.31 with 1.30 etc etc. The problem here is that you cannot skip versions and e.g. compile rustc 1.46 with rustc 1.36 (I’d be happy to learn that I’m wrong). IMO you should have maybe an ineffective compiler but written in a dialect that much older compiler should understand i.e. rustc 1.0 should be able to compile a compiler for 1.10, which can be used to compile 1.20 and so forth. Of course it’s a huge waste of resources for rather theoretical problem but it may prove beneficial for compiler design itself.
Учитывая время компиляции rustc раскрутка до 1.46 будет длиться целую вечность.
bormand 28.09.2020 17:16 # 0
Я бы не считал это прям уж серьёзной проблемой, бутстрап с нуля - это всё-таки маргинальный кейс. Главное чтобы он вообще был.
> вечность
Там поди ещё и разные версии llvm понадобятся по ходу развития. Не факт, что вся история раста была на совместимых версиях llvm.
3.14159265 28.09.2020 17:20 # 0
>бутстрап с нуля - это всё-таки маргинальный кейс
Всё верно, если бы не нюанс который меняет вообще ВСЁ.
rust постоянно позиционируется как язык системного программированния! «йаже как Сишка»
> With direct access to hardware and memory, Rust is an ideal language for embedded and bare-metal development.
> You can write extremely low-level code, such as operating system kernels or microcontroller applications.
bormand 28.09.2020 17:23 # 0
А какое это имеет отношение к бутстрапу? Кросс-конпелятор для другой платформы я соберу за одну итерацию. Обновиться тоже можно за разумное время (ну будет десять сборок вместо трёх как у гцц). А что ещё нужно то?
3.14159265 28.09.2020 17:26 # 0
Так-то я портану минимальную питушню, собрал с ней питуха 1.0 и радуюсь жизни.
А так пока кому-то в LLVM влом чинить багу для какой-то платформы, rust будет сосать на ней хуйца.
bormand 28.09.2020 17:30 # 0
Про LLVM согласен. Но это не из-за бустрапа, это просто из-за использования внешнего компонента.
bormand 28.09.2020 17:37 # +3
другую, с которой кросс собирали. Ибо в старых llvm/rust она не поддерживалась.
Т.е., к примеру, arm нельзя будет бустрапнуть без тачки с x86_64.
Да, это полная жопа.
CHayT 28.09.2020 17:54 # +4
Desktop 28.09.2020 17:56 # +7
3.14159265 28.09.2020 17:59 # +2
>CERN
К 27 веку, после 2х ядерных зим и одного каскадного резонанса человечество усвоит простую истину.
Работает — не трогай!
Desktop 28.09.2020 18:01 # +5
и даже после двух ядерных зим в гостевухе на расте будут вскукареки про пхп и нотепаде++ от ракоты
bormand 28.09.2020 18:14 # +3
3.14159265 28.09.2020 18:22 # +2
На тормозном микроко-ко-контроллере.
CHayT 28.09.2020 23:20 # +2
ГГ пришлось войти во временную петлю, в которой он десять тысяч раз должен был пропатчить код всех промежуточных версий компилятора. Ибо если бы ждал чуть дольше, церновцы бы изменили синтаксис и семантику языка настолько, что это вызвало бы расхождение временных линий.
bormand 28.09.2020 23:34 # 0
Случайно откопав её в арктике?
CHayT 28.09.2020 23:46 # +1
3.14159265 29.09.2020 00:04 # 0
> и облучив ими своих агентов.
То есть нынешний хайп пuтушатни тщательно расчитаный хитрый план сил Зла?
Облучённые CERNом клоуны бегают по хабрахабрам и пишут хвалебные статейки.
bormand 28.09.2020 17:26 # 0
3.14159265 28.09.2020 17:28 # 0
Теперь понятно, почему он один из первых стал бить тревогу.
3.14159265 28.09.2020 17:23 # +1
(When) will Rust support the AVR architecture?
As of 2018-09-19 the official Rust compiler, rustc, relies on LLVM for generating machine code. It's a requirement that LLVM supports an architecture for rustc to support it.
LLVM does support the AVR architecture but the AVR backend has bugs that prevent it from being enabled in rustc. In particular, the AVR backend should be able to compile the core crate without hitting any LLVM assertion before it's enabled in rustc. A likely outdated list of LLVM bugs that need to be fixed can be found in the issue tracker of the rust-avr fork of rustc.
TL;DR rustc will support the AVR architecture when the LLVM backend is relatively bug free. As LLVM is a project independent of the Rust project we can't give you any estimate on when that might happen.
АХАХАХАХА
3.14159265 28.09.2020 16:58 # +1
So I know a binary stability is not a goal right now, even an anti-goal. I don't propose introducing a versioned ABI or something like that, because I've seen that the core developers are not really fond of this topic at all.
But isn't it a shame that even if a library author wants to provide a stable ABI, he cannot? Of course it is possible to define interoperability of structs and functions with C, but don't you lose some of rust's (best) features? Would it not be nice to be able to export rust specific behaviour, too?
Myxa 28.09.2020 17:04 # +1
В режиме «extern "C"» у нас два аргумента: rsi указывает на одну структуру, rdi — на другую.
eax = a.x + b.x;
ecx = a.y + b.y;
edx = a.z + b.z;
А вот дальше после сдвига и логического «ИЛИ» в половинках rax у нас лежат две суммы (a.x + b.x и a.y + b.y), а в младшей половинке rdx лежит оставшаяся сумма (a.z + b.z). Итого пара (rdx, rax) используется для возвращения структуры, помещающейся в 128 бит.
В режиме питушни у нас тоже два аргумента, тоже указатели на структуры, но приходят они в регистрах rdx и rsi, а для разврата используется не пара (rdx, rax), а заранее выделенное вызывающим кодом место, куда указывает третий аргумент (rdi). Ещё и этот третий аргумент зачем-то копируется в rax. Фактически функция возвращает свой неявный аргумент.
3.14159265 28.09.2020 17:08 # 0
>Ещё и этот третий аргумент зачем-то копируется в rax
В rax отдаём, то что развращается из return.
Myxa 28.09.2020 17:11 # 0
3.14159265 28.09.2020 17:16 # +1
Там же под капотом педерача всяких gowership (по сути мув-сёмантика из С++).
https://doc.rust-lang.org/rust-by-example/scope/move.html
>When doing assignments (let x = y) or passing function arguments by value (foo(x)), the ownership of the resources is transferred. In Rust-speak, this is known as a move.
bormand 28.09.2020 17:09 # +1
Myxa 28.09.2020 17:15 # 0
Зачем в «Растишке» придумали заполнять eax, я не понимаю. Это же только прогрев процессора. Неужели бывают реальные примеры, когда нужно возвращать не тот буфер, который передали?
guest8 28.09.2020 17:20 # −999
3.14159265 28.09.2020 22:48 # +3
https://godbolt.org/z/zcjaEY
rotoeb 28.09.2020 22:50 # 0
Lopata 28.09.2020 23:13 # 0
Типизированный вариант:
gost 01.10.2020 02:00 # 0
И в «C++» тоже можно!
3.14159265 01.10.2020 02:01 # 0
Lopata 01.10.2020 02:20 # 0
rotoeb 01.10.2020 06:16 # 0
bormand 28.09.2020 22:54 # 0
3.14159265 28.09.2020 22:55 # +1
Да-да, ведь rust прибит гвоздями к LLVM.
Шланг:
bormand 28.09.2020 23:00 # 0
3.14159265 28.09.2020 23:02 # 0
Впрочем это лолжно решиться во время lto/инлайна.
3.14159265 28.09.2020 23:04 # 0
bormand 28.09.2020 23:08 # 0
3.14159265 28.09.2020 23:14 # 0
Надо с __attribute__((fastcall)) попробовать или как там в x64.
bormand 28.09.2020 23:20 # 0
3.14159265 28.09.2020 23:20 # +2
Лучшее что удалось сделать это поставить ms_abi
bormand 28.09.2020 23:21 # +2
Хм, и тут эта хуйня. Зачем? Зачем?
3.14159265 28.09.2020 23:28 # 0
Какие-то шаффлы, анпаки, punpcklqdq.
Я даже постить этот пиздец не буду
https://godbolt.org/z/EKxdds
Если растушатня даст такой же выперд (а в реальности скорее ещё хуже), то нах она нужна?
gost 28.09.2020 23:30 # 0
Блядь, а ЭТО что за хуйня?!
bormand 28.09.2020 23:31 # +1
gost 28.09.2020 23:33 # 0
Охуеть. Чтобы сложить четыре вектора.
bormand 28.09.2020 23:34 # +1
3.14159265 28.09.2020 23:36 # +2
Теперь понятно почему пацаны игры сторого под Винду пишут
gost 28.09.2020 23:37 # +2
3.14159265 28.09.2020 23:41 # 0
Нахуя такое говнище генерить-то?
3.14159265 29.09.2020 01:27 # 0
Да какой нахуй [/color]-то?
Блять, у меня теперь багор, профессиональный.
Я всю жизнь был убеждён что msabi — неэффективное говно, а шланг нормальный компилятор.
Тут оказывается всё наоборот. Это sysv abi на x64 днище. И шланг говнище.
Lopata 29.09.2020 14:12 # 0
У msabi используются RCX, RDX, R8, R9 или XMM0, XMM1, XMM2, XMM3. Разврат в RAX, если влезает в 64 бита, плавпитух всегда в XMM0.
Структуры, влезающие в 64 бита, передаются в регистрах. Всё, что больше 64 бит, передаётся по указателю.
Если результат не влезает в RAX, перед вызовом выделяем место и передаём первым аргументом указатель на него.
Ещё требуется «shadow space» в 32 байта.
Сохранность значений RAX, RCX, RDX, R8, R9, R10, R11 возложена на вызывающий блок.
Сохранность значений RBX, RBP, RDI, RSI, RSP, R12, R13, R14, R15 возложена на функцию.
У sysvabi используются RDI, RSI, RDX, RCX, R8, R9 или XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7. Вернуть можно 128-битное значение в паре (RDX, RAX). Плавпитух возвращается в XMM0, XMM1.
Сохранность значений RBX, RBP, R12, R13, R14, R15 возложена на функцию.
Некоторые функции требуют наличия «красной зоны» в 128 байт.
AL может использоваться функциями с переменным количеством аргументов.
R10 может использоваться вложенными функциями.
*****
Итого: sysvabi может использовать в два раза больше аргументов в регистрах и возвращать 128-битные значения. Остальное — мелочи.
И как это портит эффективность?
gost 29.09.2020 14:26 # +1
Так, что питушарское sysvabi пакует 16-байтные структурки в регистры, из-за чего в векторном коде получается непередаваемое дерьмище: https://godbolt.org/z/W156M9. «GCC» с этой питушнёй справляется получше, но всё равно по сравнению с божественной лаконичностью ms_abi получается говно.
gost 29.09.2020 14:31 # +2
https://godbolt.org/z/sr9Y4s
bormand 29.09.2020 14:40 # 0
Маленькая функция с двумя векторами же красиво получилась, в отличие от полной.
3.14159265 30.09.2020 01:47 # 0
Не хватало мне ещё больших моральных травм.
Если бы MSVC оказался лучше Гцц и Шланга, я бы наверное пошёл и выбросился с окна.
3.14159265 30.09.2020 01:49 # 0
Вот именно поэтому abi называется «vectorcall».
Кстати не факт что изначально MS умел хорошо пидарасить вектора.
Возможно вас также заинтересует:
https://www.python.org/dev/peps/pep-0590/
https://docs.microsoft.com/en-us/cpp/cpp/vectorcall?redirectedfrom=MSDN&view=vs-2019
3.14159265 29.09.2020 23:57 # 0
Вот поэтому смотря на вопрос с этой, теоретической точки зрения, я и думал что msabi говнище.
А потом я смотрю на практический выхлоп sysv и ms (https://godbolt.org/z/W156M9), и понимаю что это только в теории.
guest8 28.09.2020 23:42 # −999
guest8 28.09.2020 23:51 # −999
guest8 28.09.2020 23:52 # −999
gost 28.09.2020 23:27 # +2
3.14159265 28.09.2020 23:31 # 0
https://godbolt.org/z/W156M9
gost 28.09.2020 23:32 # +1
Красота!
3.14159265 28.09.2020 23:11 # 0
bormand 28.09.2020 23:26 # +1
3.14159265 28.09.2020 23:34 # +1
А в итоге пuтушатня ни украсть, ни посторожить.
У Крестов ABI будет хотя бы версионируемое.
А в педеrustе ни ABI толком не описано, ни оптимизаций царских нет с SSE.
46 версий хуйни, с которой потом непонятно как линковаться.
bormand 28.09.2020 23:40 # 0
Ну ты чо, зачем линковаться, всё будет на него переписано.
Lopata 28.09.2020 23:43 # 0
bormand 28.09.2020 23:45 # +2
Desktop 29.09.2020 01:17 # 0
bormand 29.09.2020 01:18 # 0
Но каким-нибудь телескопом управлять пока ты пилишь что-то в консоли он вполне мог.
Desktop 29.09.2020 01:26 # 0
DypHuu_niBEHb 29.09.2020 01:21 # 0
bormand 29.09.2020 01:22 # 0
> килобайт
DypHuu_niBEHb 29.09.2020 01:22 # 0
QNX released a demo image that included the POSIX-compliant QNX 4 OS, a full graphical user interface, graphical text editor, TCP/IP networking, web browser and web server that all fit on a bootable 1.44 MB floppy disk.
3.14159265 28.09.2020 23:44 # +2
После этих жутких ассемблерных выхлопов я с ужасом понимаю КАК индустрия умудрится сделать софт ещё медленее.
В принципе тренд деградации софта на следующее десятилетие мне уже понятен.
Desktop 29.09.2020 01:26 # 0
накажи анскильных лалок
guest8 28.09.2020 23:50 # −999
bormand 28.09.2020 23:58 # 0
Пришло время переучиться на дворника...
guest8 29.09.2020 00:02 # −999
guest8 29.09.2020 00:07 # −999
bormand 29.09.2020 00:08 # 0
Запросто, там частоты то конские на таком разрешении. А на самом компе то норм идёт?
guest8 29.09.2020 00:14 # −999
bormand 29.09.2020 00:37 # 0
У меня 1080p@120 моник через display port подключен кстати.
DypHuu_niBEHb 29.09.2020 00:40 # 0
надо бы провентилировать этот вопрос: если там есть DP и в ящике и компе, то надо бы их по нему запустить.
нету DP ни там, ни там:(
vblank это тот самый "обратный ход луча"?:) То есть он пол кадра нарисовал, а потом запутался, и стал ждать следующего кадра, а ящик в это время увидел, что сигнал потерялся, и не "флипнул" картинку на экран?
bormand 29.09.2020 00:41 # 0
Мне почему-то все советовали 120Гц моник подключать именно через display port, а от hdmi плевались.
DypHuu_niBEHb 29.09.2020 00:48 # 0
на самом деле TMDS можно даже по DVI гонять, но там наверное большие резолюшены и частоты не вызвать.
В любом случае -- выбора у меня нет: ни ящик, ни комп не умеют в DP.
guest8 29.09.2020 00:19 # −999
bormand 29.09.2020 00:39 # 0
Или теряет данные или нет. Ретрансмитов то нету, там тупо RGB поток. И кодов коррекции нету, 8b/10b вроде только. Плохой кабель для него смертелен.
DypHuu_niBEHb 29.09.2020 00:49 # 0
или типа может работать на частоте, но терять только N% данных, и если ты смотришь телепрограмму за пивом, то тебе похуй, а если ты видеорежиссер например, то тебе не похуй совсем
так?
хотя вот может быть еще что они все заявляют 120, но в реальности нкито на ней не работает, кроме таких вот дорогих
bormand 29.09.2020 01:02 # 0
Но на практике у тебя складываются проблемы передатчика, коннекторов, кабеля и приёмника. И чем больше дырка в глазковой диаграмме - тем больше шансов, что взлетит.
Да и китайцы не особо то и тестят свои кабели.
DypHuu_niBEHb 29.09.2020 01:08 # 0
Может, надо правда брать американский за 8000 минимум?
bormand 29.09.2020 01:10 # 0
DypHuu_niBEHb 29.09.2020 01:11 # 0
А как телек выбирает частоту? Он неебических размеров там, на пол стены (это не у меня дома), он может захотеть например 120?
Хотя наверное поменять частоту можно попробовать в винде прямо.
Хотя причем тут размер? важно же разрешение наверное
bormand 29.09.2020 01:16 # 0
Телек вроде никак не выбирает, просто репортит что умеет. Выбираешь ты на стороне компа.
MAKAKA 29.09.2020 17:16 # 0
дзякую
>никак не выбирает
верно. у него это в EDID написино., а дальше карта