Skip to content
Snippets Groups Projects

vkd3d-shader/dxil: Implement the DXIL GEP and LOAD instructions.

Merged Conor McCarthy requested to merge cmccarthy/vkd3d:dxil_gep into master

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Author Developer

    This needs spirv changes to make any tests pass, but this series is already long enough. Not sure what to do about initialisers; we can't use DCL_IMMEDIATE_CONSTANT_BUFFER because it emits a variable, and we are avoiding dropping things in the register structure. The icb objects the DXIL parser creates are currently not stored anywhere except the icb cache. Probably they should go in an array in shader_desc. Any thoughts @hverbeet @giomasce? Maybe @zfigura already has code for that change?

    • This needs spirv changes to make any tests pass, but this series is already long enough. Not sure what to do about initialisers; we can't use DCL_IMMEDIATE_CONSTANT_BUFFER because it emits a variable,

      Is the issue purely that the shader may write to the variable, or are there other reasons that can't work? If what we want is essentially a writeable icb, we could perhaps consider adding a "data[]" field to the vkd3d_shader_indexable_temp structure, analogous to struct vkd3d_shader_immediate_constant_buffer.

    • Author Developer

      What it really needed was a new value type to hold ICBs. Storing an ICB in the indexable temp declaration works well now. Constant arrays should be declared with DCL_IMMEDIATE_CONSTANT_BUFFER, but that must wait for the next MR. It's not broken, just ignores the constant attribute.

    • Please register or sign in to reply
  • Conor McCarthy added 21 commits

    added 21 commits

    • 91082179...b7480911 - 9 commits from branch wine:master
    • b7480911...7b0a1c2b - 2 earlier commits
    • af57e2ed - vkd3d-shader/spirv: Return an error if an invalid handler is encountered.
    • bec68657 - tests/shader-runner: Add tests for 64-bit casts.
    • e03f3ba5 - vkd3d-shader/dxil: Implement the DXIL VSELECT instruction.
    • e9214453 - vkd3d-shader/spirv: Avoid invalid bool-to-bool conversion in spirv_compiler_emit_movc().
    • 49999e7c - vkd3d-shader: Delete unused struct list from struct vkd3d_shader_indexable_temp.
    • 3332fec9 - vkd3d-shader/dxil: Implement default address space global variables.
    • a6c43f12 - vkd3d-shader/dxil: Introduce a new value type for immediate constant buffers.
    • 1cc3c787 - vkd3d-shader/dxil: Support global variable initialisers.
    • 9911af04 - vkd3d-shader/dxil: Implement the DXIL GEP instruction.
    • 530bf912 - vkd3d-shader/dxil: Implement the DXIL LOAD instruction.

    Compare with previous version

  • Conor McCarthy added 12 commits

    added 12 commits

    • 530bf912...77951a66 - 2 earlier commits
    • 173331d9 - vkd3d-shader/spirv: Return an error if an invalid handler is encountered.
    • 90e48b45 - tests/shader-runner: Add tests for 64-bit casts.
    • 4b7234b3 - vkd3d-shader/dxil: Implement the DXIL VSELECT instruction.
    • ce72a18e - vkd3d-shader/spirv: Avoid invalid bool-to-bool conversion in spirv_compiler_emit_movc().
    • b41aa146 - vkd3d-shader: Delete unused struct list from struct vkd3d_shader_indexable_temp.
    • 56c7f49c - vkd3d-shader/dxil: Implement default address space global variables.
    • 5f63446b - vkd3d-shader/dxil: Introduce a new value type for immediate constant buffers.
    • b1214539 - vkd3d-shader/dxil: Support global variable initialisers.
    • 02ae293a - vkd3d-shader/dxil: Implement the DXIL GEP instruction.
    • 13e145bf - vkd3d-shader/dxil: Implement the DXIL LOAD instruction.

    Compare with previous version

  • Conor McCarthy added 5 commits

    added 5 commits

    • 578745b9 - vkd3d-shader/dxil: Implement default address space global variables.
    • 41ad6a7a - vkd3d-shader/dxil: Introduce a value type for immediate constant buffers.
    • 4ce2c1c8 - vkd3d-shader/dxil: Support global variable initialisers.
    • db893754 - vkd3d-shader/dxil: Implement the DXIL GEP instruction.
    • a44b5523 - vkd3d-shader/dxil: Implement the DXIL LOAD instruction.

    Compare with previous version

  • Conor McCarthy changed the description

    changed the description

  • Conor McCarthy added 19 commits

    added 19 commits

    • a44b5523...88caf877 - 13 commits from branch wine:master
    • 2367c872 - vkd3d-shader: Delete unused struct list from struct vkd3d_shader_indexable_temp.
    • 0e4c1685 - vkd3d-shader/dxil: Implement default address space global variables.
    • da802338 - vkd3d-shader/dxil: Introduce a value type for immediate constant buffers.
    • dfcfbc43 - vkd3d-shader/dxil: Support global variable initialisers.
    • 47c62739 - vkd3d-shader/dxil: Implement the DXIL GEP instruction.
    • 82f36647 - vkd3d-shader/dxil: Implement the DXIL LOAD instruction.

    Compare with previous version

  • Conor McCarthy marked this merge request as ready

    marked this merge request as ready

  • Conor McCarthy changed the description

    changed the description

  • Conor McCarthy mentioned in merge request !477 (merged)

    mentioned in merge request !477 (merged)

  • Conor McCarthy added 5 commits

    added 5 commits

    • 253c55d0 - vkd3d-shader/dxil: Implement default address space global variables.
    • ff832fca - vkd3d-shader/dxil: Introduce a value type for immediate constant buffers.
    • 621a5b77 - vkd3d-shader/dxil: Support global variable initialisers.
    • ac1fe0a7 - vkd3d-shader/dxil: Implement the DXIL GEP instruction.
    • 3cea6c35 - vkd3d-shader/dxil: Implement the DXIL LOAD instruction.

    Compare with previous version

  • Giovanni Mascellani
  • Giovanni Mascellani
  • Giovanni Mascellani
  • Giovanni Mascellani
  • Giovanni Mascellani
  • Giovanni Mascellani
  • Giovanni Mascellani
    Giovanni Mascellani @giomasce started a thread on commit 3cea6c35
  • 823 823 struct vkd3d_shader_register_index idx[3];
    824 824 unsigned int idx_count;
    825 825 enum vsir_dimension dimension;
    826 unsigned int alignment;
    • Similar to is_in_bounds, what does this do? For both it might be advisable to only introduce them as soon as there is backend consuming them.

    • Author Developer

      Recently you were advocating making parser changes unsupported by the backend, and then patching the backend.

    • Fair point, you're right. Especially with the comments this is after all easier to follow for me. Sorry for the conflicting instructions.

    • I think there's room for some subtlety here. Unsupported by the backend doesn't necessarily have to mean "ignored"; failing compilation when a non-zero alignment is encountered would certainly be a valid choice. In particular, that would avoid potentially miscompiling shaders.

    • Author Developer

      My understanding is the alignment is additional info to aid optimisation, and is not required for correct compilation. Should this patch add a WARN to the backend for a nonzero alignment?

    • Oh right, that's probably fine then, although adding the WARN may still be helpful.

    • Please register or sign in to reply
  • Conor McCarthy added 5 commits

    added 5 commits

    • 4a51d4e2 - vkd3d-shader/dxil: Implement default address space global variables.
    • 0cba5c97 - vkd3d-shader/dxil: Introduce a value type for immediate constant buffers.
    • 734b1f02 - vkd3d-shader/dxil: Support global variable initialisers.
    • ec463b4b - vkd3d-shader/dxil: Implement the DXIL GEP instruction.
    • cd4d5b7e - vkd3d-shader/dxil: Implement the DXIL LOAD instruction.

    Compare with previous version

  • Conor McCarthy added 5 commits

    added 5 commits

    • 5b40f09c - vkd3d-shader/dxil: Implement default address space global variables.
    • 7cf0e7b4 - vkd3d-shader/dxil: Introduce a value type for immediate constant buffers.
    • ae777c56 - vkd3d-shader/dxil: Support global variable initialisers.
    • 8894402b - vkd3d-shader/dxil: Implement the DXIL GEP instruction.
    • f3a6c738 - vkd3d-shader/dxil: Implement the DXIL LOAD instruction.

    Compare with previous version

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading