[PATCH vkd3d 03/11] vkd3d-shader: Don't redundantly override shader output info.

Philip Rebohle philip.rebohle at tu-dortmund.de
Tue Oct 22 09:35:14 CDT 2019


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 at tu-dortmund.de <mailto:philip.rebohle at tu-dortmund.de>> 
> wrote:
> 
>     Signed-off-by: Philip Rebohle <philip.rebohle at tu-dortmund.de
>     <mailto:philip.rebohle at 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
> 
> 



More information about the wine-devel mailing list