> You mean that you'd have just `v_s_i` and every frontend and backend deals directly with it, including for very syntactical things like assembling and disassembling? I don't feel really convinced, it seems to me that you'd have to encode su much stuff in `v_s_i` that each time you need to change something (for example to allow for a new language) the changes can have repercussions in each other language frontend or backend.
Yeah, that's the primary concern.
It's mostly at this point weighing that against the idea of introducing new IRs and translation passes for everything, and also writing specific assemblers and disassemblers for everything, that makes me think keeping v_s_i as complex as it is isn't actually that bad.
FWIW, it's not necessarily that everything would go directly into v_s_i (clearly HLSL wouldn't), but sm1 and sm4 at least would. Contrary to what Henri said, I was actually of the impression that sm6 could deal directly with v_s_i without adding too much? Besides new opcodes and interfaces, I thought we didn't need much more than a new "SSA" register type.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/174#note_31897
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v2: vkd3d-shader/hlsl: Add support for writing RWStructuredBuffer declarations.
vkd3d-shader/hlsl: Add support for RWBuffer object.
vkd3d-shader: Fix dcl_uav_typed_* formatting.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/193
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=18889
--
v6: ntdll: Don't hard-code DLL manifest resource ID when looking up dependency assembly.
kernel32/tests: Test loading assembly manifest resource inside dependencies.
ntdll: Move ACTCTX lpResourceName validation to RtlCreateActivationContext.
kernel32/tests: Test setting lpResourceName to NULL for CreateActCtxW.
kernel32/tests: Remove test for ACTCTX_FLAG_HMODULE_VALID with hModule = NULL case.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2555
Note: typeof (int * unsigned) is unsigned.
So:
- on 64bit CPUs, where sizeof(int) = 4 < sizeof(void*) = 8,
- when the result of the multiplication is supposed to be negative
- there's no progation of the negative sign from 32bit to 64 bit integers
Fixes a crash in Age of Empire II.
Signed-off-by: Eric Pouech <epouech(a)codeweavers.com>
--
v2: evr: Fix incorrect integral computation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2723
--
v3: tests/d3d12: Test register relative addressing in vertex and pixel shaders.
vkd3d-shader: Introduce an internal sm6 signature structure.
vkd3d-shader/tpf: Return an error from vkd3d_shader_sm4_parser_create() if the parser failed.
vkd3d-shader/d3dbc: Return an error from vkd3d_shader_sm1_parser_create() if the parser failed.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/197
This patch makes index expressions on resources hlsl_ir_index nodes
instead of hlsl_ir_resource_load nodes, because it is not known if they
will be used later as the lhs of an hlsl_ir_resource_store.
For now, the only benefit is consistency.
--
v3: vkd3d-shader/hlsl: Don't keep the implicit mipmap level on hlsl_ir_index.
vkd3d-shader/hlsl: Use hlsl_ir_index for resource access.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/182