On 19 Apr 2021, at 17:00, Henri Verbeet hverbeet@gmail.com wrote:
On Mon, 19 Apr 2021 at 16:24, Jan Sikorski jsikorski@codeweavers.com wrote:
On 16 Apr 2021, at 16:01, Henri Verbeet hverbeet@gmail.com wrote: Some quick testing (i.e., getting rid of input layout creation here, and creating the input layout in draw_quad_vs_() against default_vs_code[]) seems to suggest this also works without a matching input layout. Should we perhaps look at the shader input signature instead?
That works, but gave me a validation error: D3D11 ERROR: ID3D11DeviceContext::Draw: Input Assembler - Vertex Shader linkage error: Signatures between stages are incompatible. The input stage requires Semantic/Index (COLOR,0) as input, but it is not provided by the output stage. [ EXECUTION ERROR #342: DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND]
It looks like an extra complication to match against the shader signature, I’m not sure if there are other reasons to prefer that?
It seems simpler in some regards. E.g., in wined3d_stream_info_from_declaration(), after the loop over the declaration elements, you'd loop over the shader's input signature, and insert entries for inputs not already setup, instead of using the "require_buffer" parameter.
Yeah, the part I’m missing is the mapping between wined3d_shader_signature_element and stream index / binding / location. Maybe it’s just something simple that I didn’t find?