Hi,
looks like that happens because vkd3d_dxbc_compiler_emit_shader_signature_outputs sets the ID and array mask, but not the component type.
I suppose there are two ways to fix this: - 1) define the component type at the time the clip/cull distances are generated (i think this should always be FLOAT anyway), or - 2) drop this patch.
Any preferences? I'm fine with either.
- Philip
PS: Sorry that I didn't test that earlier; I can only run a subset of the vkd3d tests at a time since there seems to be a severe memory leak going on somewhere and I only have 16GB in my machine.
Am 22.10.19 um 16:17 schrieb Conor McCarthy:
Hi Philip,
This causes a crash in the vkd3d tests, after line 28451 in tests/d3d12.c, when combined with only the preceding patch or the complete set. libs/vkd3d-shader/spirv.c:1638: vkd3d_spirv_get_type_id: Assertion `component_type != VKD3D_TYPE_VOID' failed.
On Thu, Oct 17, 2019 at 6:36 AM Philip Rebohle <philip.rebohle@tu-dortmund.de mailto:philip.rebohle@tu-dortmund.de> wrote:
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de <mailto:philip.rebohle@tu-dortmund.de>> --- libs/vkd3d-shader/spirv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 1598ae0..9b8da57 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -4381,10 +4381,10 @@ static void vkd3d_dxbc_compiler_emit_output(struct vkd3d_dxbc_compiler *compiler vkd3d_spirv_build_op_decorate(builder, id, SpvDecorationPatch, NULL, 0); vkd3d_dxbc_compiler_decorate_xfb_output(compiler, id, output_component_count, signature_element); - } - compiler->output_info[signature_idx].id = id; - compiler->output_info[signature_idx].component_type = component_type; + compiler->output_info[signature_idx].id = id; + compiler->output_info[signature_idx].component_type = component_type; + } if (use_private_variable) storage_class = SpvStorageClassPrivate; -- 2.23.0