vkd3d-shader/dxil: Implement constant buffer loads.
Merge request reports
Activity
added 30 commits
-
6fb8fbe4...47d4097e - 18 commits from branch
wine:master
- 47d4097e...8eca38b9 - 2 earlier commits
- 8e1a9118 - vkd3d-shader/dxil: Read DXIL compute shader thread group dimensions.
- 95e28425 - vkd3d-shader/spirv: Align constant buffer sizes to 16 bytes.
- db479c0d - vkd3d-shader/dxil: Validate the descriptor list metadata nodes.
- cd9b12b9 - vkd3d-shader/dxil: Read CBV descriptors.
- 68d74d3e - vkd3d-shader: Clone descriptor scan info from struct vkd3d_shader_desc.
- 37adeba4 - vkd3d-shader/dxil: Move the register_address_init() index parameter to position 2.
- e8d7ef52 - vkd3d-shader/dxil: Implement DX instruction CreateHandle.
- 755502bc - vkd3d-shader/dxil: Implement DX instruction CBufferLoadLegacy.
- 040b9639 - vkd3d-shader/spirv: Support scalar swizzle of vector SSA registers.
- 3b7c921a - vkd3d-shader/dxil: Implement the DXIL EXTRACTVAL instruction.
Toggle commit list-
6fb8fbe4...47d4097e - 18 commits from branch
added 9 commits
- 061e55a9 - vkd3d-shader/spirv: Align constant buffer sizes to 16 bytes.
- c3041f6d - vkd3d-shader/dxil: Validate the descriptor list metadata nodes.
- 5e1c9895 - vkd3d-shader: Emit IR CBV declaration sizes in bytes.
- 0066fb39 - vkd3d-shader/dxil: Read CBV descriptors.
- af41ad55 - vkd3d-shader/dxil: Move the register_address_init() index parameter to position 2.
- e6fbccb8 - vkd3d-shader/dxil: Implement DX instruction CreateHandle.
- 25395f66 - vkd3d-shader/dxil: Implement DX instruction CBufferLoadLegacy.
- c2966b5e - vkd3d-shader/spirv: Support scalar swizzle of vector SSA registers.
- ba292c2e - vkd3d-shader/dxil: Implement the DXIL EXTRACTVAL instruction.
Toggle commit listadded 34 commits
-
ba292c2e...f75bdd6e - 29 commits from branch
wine:master
- 87f0859f - vkd3d-shader/dxil: Replace register_address_init() with register_index_address_init().
- b3e4bc5b - vkd3d-shader/dxil: Implement DX instruction CreateHandle.
- 7764e3e9 - vkd3d-shader/dxil: Implement DX instruction CBufferLoadLegacy.
- 8228ea62 - vkd3d-shader/spirv: Support scalar swizzle of vector SSA registers.
- 229e476b - vkd3d-shader/dxil: Implement the DXIL EXTRACTVAL instruction.
Toggle commit list-
ba292c2e...f75bdd6e - 29 commits from branch
2593 if (!(d = sm6_parser_get_descriptor(sm6, type, id, operands[2]))) 2594 { 2595 WARN("Failed to find resource type %#x, id %#x.\n", type, id); 2596 vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND, 2597 "Descriptor for resource type %#x, id %#x was not found.", type, id); 2598 return; 2599 } 2600 2601 dst = sm6_parser_get_current_value(sm6); 2602 dst->value_type = VALUE_TYPE_HANDLE; 2603 dst->u.handle.d = d; 2604 2605 reg = &dst->u.handle.reg; 2606 /* Set idx_count to 3 for use with load/store instructions. 2607 * TODO: set register type from resource type when other types are supported. */ 2608 vsir_register_init(reg, VKD3DSPR_CONSTBUFFER, VKD3D_DATA_FLOAT, 3); The part that keeps me a bit hesitant is that the generated
VKD3DSPR_CONSTBUFFER
register is being different than TPF, while I would strive for VSIR to be as uniform as possible across different backends and frontends. In my understanding, for TPF the two registers are the constant buffer descriptor id and the index inside the constant buffer itself. What does the additional index in DXIL mean?In TPF a
VKD3DSPR_CONSTBUFFER
source register has range id, descriptor index, and buffer offset. DXIL has no registers, so this info is split in two. CreateHandle supplies the range id and descriptor index, while CBufferLoadLegacy supplies the offset. So we build the register in two separate steps.Ah, I think I understand now. I guess that's what does the change for TPF, right? https://gitlab.winehq.org/wine/vkd3d/-/blob/master/libs/vkd3d-shader/tpf.c#L1916
- Resolved by Giovanni Mascellani
added 4 commits
Toggle commit listadded 4 commits
Toggle commit list