mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
507 lines
31 KiB
Plaintext
507 lines
31 KiB
Plaintext
The vkd3d team is proud to announce that release 1.15 of vkd3d, the Direct3D
|
||
to Vulkan translation library, is now available.
|
||
|
||
This release contains improvements that are listed in the release notes below.
|
||
The main highlights are:
|
||
|
||
- Much more complete support for tessellation shaders in the HLSL compiler.
|
||
- Improved function overload resolution in the HLSL compiler.
|
||
- Miscellaneous bug fixes.
|
||
|
||
The source is available from the following location:
|
||
|
||
<https://dl.winehq.org/vkd3d/source/vkd3d-1.15.tar.xz>
|
||
|
||
The current source can also be pulled directly from the git repository:
|
||
|
||
<https://gitlab.winehq.org/wine/vkd3d.git>
|
||
|
||
Vkd3d is available thanks to the work of multiple people. See the file AUTHORS
|
||
for the complete list.
|
||
|
||
# What's new in vkd3d 1.15
|
||
|
||
### libvkd3d
|
||
|
||
- New interfaces:
|
||
- vkd3d_queue_signal_on_cpu() allows a Direct3D 12 fence to be signalled
|
||
when all preceding work on a Direct3D 12 command queue has been submitted
|
||
to the corresponding Vulkan queue.
|
||
|
||
### libvkd3d-shader
|
||
|
||
- New features for the HLSL source type:
|
||
- ‘InputPatch’ and ‘OutputPatch’ tessellation shader objects. This was the
|
||
main feature required by most tessellation shaders that was still missing,
|
||
and tessellation shaders should be considered generally usable now.
|
||
- Unrolling of loops containing conditional jumps.
|
||
- Improved function overload resolution. Previously the compiler was unable
|
||
to decide between multiple function overloads with the same number of
|
||
parameters.
|
||
- The parser is able to continue parsing in a larger number of error cases.
|
||
This allows more issues in the input to be reported during a single
|
||
compilaton attempt.
|
||
- The following intrinsic functions are supported:
|
||
- GatherCmp()
|
||
- GatherCmpAlpha(), GatherCmpBlue(), GatherCmpGreen(), and GatherCmpRed()
|
||
- InterlockedAdd(), InterlockedAnd(), InterlockedCompareExchange(),
|
||
InterlockedCompareStore(), InterlockedExchange(), InterlockedMax(),
|
||
InterlockedMin(), InterlockedOr(), and InterlockedXor()
|
||
- isinf()
|
||
- Separate resource and sampler support for shader model 1-3 target
|
||
profiles.
|
||
- Casts on the left hand side of assignments.
|
||
- Reassociation and redistribution of constants in binary expressions, to
|
||
facilitate constant folding.
|
||
- Packing of interstage I/O variables with the ‘SV_IsFrontFace’,
|
||
‘SV_PrimitiveID’, ‘SV_RenderTargetArrayIndex’, ‘SV_SampleIndex’, and
|
||
‘SV_ViewPortArrayIndex’ semantics matches d3dcompiler/fxc more closely.
|
||
- Parser support for the ‘LineStream’, ‘PointStream’, and ‘TriangleStream’
|
||
Stream-Output objects.
|
||
|
||
- A number of instructions have been implemented for the experimental MSL
|
||
target. Although more and more shaders are starting to work, support is
|
||
still fairly limited. For example, shader resource views and unordered
|
||
access views are still entirely unsupported.
|
||
|
||
- Shader code generation for fixed-function fog. Like the existing shader code
|
||
generation for other fixed-function features, this is mainly relevant for
|
||
executing shader model 1-3 sources in modern target environments like
|
||
Vulkan.
|
||
|
||
- The ‘fx’ parser can parse binary effects containing inline shader blobs.
|
||
|
||
- Internal validator support for validating I/O signatures, as well as I/O
|
||
source and destination parameters. The validator is enabled by the
|
||
‘force_validation’ option, specified through the VKD3D_SHADER_CONFIG
|
||
environment variable.
|
||
|
||
- Internal validator support for validating the number of indices used with a
|
||
register, as well as basic bounds checking for static indices.
|
||
|
||
- New interfaces:
|
||
- The vkd3d_shader_scan_hull_shader_tessellation_info structure extends the
|
||
vkd3d_shader_compile_info structure, and can be used to retrieve the
|
||
output primitive type and partitioning mode used by a hull shader. This
|
||
information is particularly useful for specifying
|
||
vkd3d_shader_spirv_domain_shader_target_info structures when targetting
|
||
SPIR-V in OpenGL environments.
|
||
- The VKD3D_SHADER_PARAMETER_NAME_FOG_FRAGMENT_MODE shader parameter
|
||
specifies the kind of fog to generate in a fragment shader.
|
||
- The VKD3D_SHADER_PARAMETER_NAME_FOG_COLOUR shader parameter
|
||
specifies the fog colour.
|
||
- The VKD3D_SHADER_PARAMETER_NAME_FOG_END shader parameter
|
||
specifies the ‘end’ parameter used for linear fog generation.
|
||
- The VKD3D_SHADER_PARAMETER_NAME_FOG_SCALE shader parameter
|
||
specifies the ‘scale’ parameter used for fog generation.
|
||
- The VKD3D_SHADER_PARAMETER_NAME_FOG_SOURCE shader parameter
|
||
specifies the kind of fog coordinate to output from a pre-rasterisation
|
||
shader.
|
||
|
||
### vkd3d-compiler
|
||
|
||
- The new ‘dxbc-fx’ source type specifies an effect binary embedded in a DXBC
|
||
container. This is a convenience feature;
|
||
‘vkd3d-compiler -x dxbc-fx blob.dxbc’ is equivalent to
|
||
‘vkd3d-dxbc -x t:FX10 blob.dxbc | vkd3d-compiler -x fx’.
|
||
|
||
### Changes since vkd3d 1.14:
|
||
```
|
||
Anna (navi) Figueiredo Gomes (6):
|
||
vkd3d-shader/hlsl: Implement cast from bool to int for SM1.
|
||
tests/hlsl: Add GatherCmp() tests.
|
||
vkd3d-shader/hlsl: Implement the GatherCmp() methods.
|
||
tests/shader_runner: Add a "mesa<23.3" tag.
|
||
tests/hlsl: Add mixed argument size tests.
|
||
vkd3d-shader/hlsl: Consider conversions across all parameters in function_compare().
|
||
|
||
Conor McCarthy (29):
|
||
vkd3d: Store only a single vkd3d descriptor type in each Vulkan descriptor set.
|
||
vkd3d: Introduce struct vkd3d_vk_descriptor_pool_array.
|
||
vkd3d: Introduce vkd3d_vk_descriptor_pool_array_push_array().
|
||
vkd3d: Introduce vkd3d_vk_descriptor_pool_array_push().
|
||
vkd3d: Introduce vkd3d_vk_descriptor_pool_array_pop().
|
||
vkd3d: Introduce vkd3d_vk_descriptor_pool_array_destroy_pools().
|
||
vkd3d: Create separate descriptor pools for each vkd3d descriptor type.
|
||
vkd3d: Create descriptor pools of geometrically increasing size.
|
||
tests/hlsl: Add float64 wave op tests.
|
||
tests/hlsl: Add uint64 wave op tests.
|
||
tests/hlsl: Add int64 wave op tests.
|
||
vkd3d-shader/dxil: Implement DX intrinsic EvalSampleIndex.
|
||
vkd3d-shader/dxil: Implement DX intrinsic EvalCentroid.
|
||
vkd3d: Return the correct depth/stencil plane format from GetCopyableFootprints().
|
||
vkd3d: Return correctly aligned depth/stencil sizes from GetCopyableFootprints().
|
||
vkd3d: Do not require the ALLOW_DEPTH_STENCIL flag for depth/stencil formats in GetCopyableFootprints().
|
||
tests/hlsl: Add a test for SV_RenderTargetArrayIndex.
|
||
vkd3d-shader/dxil: Handle SV_RenderTargetArrayIndex.
|
||
tests/hlsl: Pass a profile string instead of a shader type to dxc_compiler_compile_shader().
|
||
tests/hlsl: Add some arithmetic uint16 shader tests.
|
||
tests/hlsl: Add more arithmetic uint16 tests.
|
||
tests/hlsl: Add arithmetic int16 tests.
|
||
tests/hlsl: Add arithmetic float16 tests.
|
||
tests/hlsl: Add a numeric types 16-bit test.
|
||
tests/hlsl: Add constant buffer 16-bit tests.
|
||
tests/hlsl: Add GetDimensions() 16-bit tests.
|
||
tests/hlsl: Add typed buffer UAV 16-bit tests.
|
||
tests/hlsl: Add a raw buffer UAV 16-bit test.
|
||
tests/hlsl: Add structured buffer UAV 16-bit tests.
|
||
|
||
Elizabeth Figura (65):
|
||
vkd3d-shader/spirv: Handle SSA registers in spirv_compiler_get_register_info().
|
||
vkd3d-shader/ir: Allow controlling fog through parameters.
|
||
vkd3d-shader/ir: Add a couple of traces for signature remapping.
|
||
vkd3d-shader/ir: Allow controlling the fog source through a parameter.
|
||
vkd3d-shader/ir: Implement exponential fog.
|
||
vkd3d-shader/hlsl: Do not abort when modifying a const expression.
|
||
vkd3d-shader/hlsl: Do not abort parsing when invalid modifiers are used.
|
||
vkd3d-shader/hlsl: Move the numeric type check to add_constructor().
|
||
vkd3d-shader/hlsl: Return an error expression when a function is used as a variable.
|
||
vkd3d-shader/hlsl: Translate invalid implicit-size arrays to an error type.
|
||
vkd3d-shader/d3dbc: Omit unnecessary instruction maximum versions.
|
||
vkd3d-shader/d3dbc: Mark some more instructions as version-limited.
|
||
vkd3d-shader: Fix the disassembly names of IFC and BREAKC.
|
||
vkd3d-shader: Correct the disassembly for POSITIONT.
|
||
tests: Add a reflection test for shader model 4.0.
|
||
vkd3d-shader/hlsl: Remove unused expr ops.
|
||
vkd3d-shader/ir: Always initialise "*control_point_count" in vsir_signature_from_register_type().
|
||
vkd3d-shader/hlsl: Document matrix swizzles.
|
||
vkd3d-shader/hlsl: Use a structure for matrix swizzles.
|
||
vkd3d-shader/hlsl: Use swizzle helpers in more places.
|
||
vkd3d-shader/hlsl: Store swizzles in vsir format.
|
||
tests/shader_runner: Use is_todo instead of separate shader states.
|
||
tests/shader_runner: Use a separate variable for shader type.
|
||
tests/shader_runner: Don't bother distinguishing directive substrings.
|
||
vkd3d-shader/d3dbc: Use struct vkd3d_shader_dst_param instead of struct sm1_dst_register.
|
||
vkd3d-shader/d3dbc: Use struct vkd3d_shader_src_param instead of struct sm1_src_register.
|
||
vkd3d-shader/d3dbc: Use struct vkd3d_shader_instruction instead of struct sm1_instruction.
|
||
tests/shader_runner: Record HLSL todo/fail state for each shader model.
|
||
tests/shader_runner: Test HLSL compilation in a separate pass.
|
||
tests/shader_runner: Test versions where the compilation result changes.
|
||
tests: Use fail(sm<5) instead of [require] for uav-atomics.
|
||
vkd3d-shader/spirv: Correctly implement DTOF.
|
||
vkd3d-shader/spirv: Correctly implement DTOI.
|
||
vkd3d-shader/spirv: Correctly implement DTOU.
|
||
tests/d3d12: Make the dtof test a bit more interesting.
|
||
vkd3d-shader: Explicitly translate between d3dbc and vsir register types.
|
||
vkd3d-shader/d3dbc: Normalize to a single VKD3DSPR_CONST register set when reading.
|
||
vkd3d-shader/d3d-asm: Define register names in a table.
|
||
vkd3d-shader/ir: Separate VKD3DSPR_ADDR and VKD3DSPR_TEXTURE.
|
||
vkd3d-shader/ir: Separate VKD3DSPR_OUTPUT and VKD3DSPR_TEXCRDOUT.
|
||
vkd3d-shader/d3dbc: Introduce d3dbc_parse_register().
|
||
vkd3d-shader/hlsl: Avoid some uses of the default case when switching over hlsl_base_type.
|
||
vkd3d-shader/d3dbc: Do not access the type dimensions for non-numeric types.
|
||
vkd3d-shader/hlsl: Move the "dimx" and "dimy" fields to the type-specific union.
|
||
tests: Adjust angle-unit.shader_test to pass with 1.x.
|
||
tests: Adjust arithmetic-float.shader_test to pass with 1.x.
|
||
tests: Adjust arithmetic-float-uniform.shader_test to pass with 1.x.
|
||
tests: Adjust arithmetic-int.shader_test to pass with 1.x.
|
||
tests: Adjust array-parameters.shader_test to pass with 1.x.
|
||
tests: Adjust array-size-expr.shader_test to pass with 1.x.
|
||
tests: Adjust abs.shader_test to pass with 1.x.
|
||
tests: Add another unrolling test.
|
||
vkd3d-shader/hlsl: Implement broadcasts in constant folding.
|
||
vkd3d-utils: Fix matrix packing precedence in D3DCompile2VKD3D().
|
||
vkd3d-shader/hlsl: Use the casted value in exp().
|
||
tests: Add some stress tests for scope and variable definition.
|
||
vkd3d-shader/hlsl: Do not define a separate scope for function parameters.
|
||
vkd3d-shader/hlsl: Factor out the error message into hlsl_add_var().
|
||
vkd3d-shader/hlsl: Do not abort on variable redefinition.
|
||
vkd3d-shader/hlsl: Handle error instructions in add_shader_compilation().
|
||
vkd3d-shader/hlsl: Add an add_switch() helper.
|
||
vkd3d-shader/hlsl: Handle error instructions in add_switch().
|
||
vkd3d-shader/hlsl: Pass the block to add_zero_mipmap_level().
|
||
vkd3d-shader/hlsl: Use a block in prepend_input_var_copy().
|
||
vkd3d-shader/hlsl: Use a block in hlsl_normalize_binary_exprs().
|
||
|
||
Feifan He (46):
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ADD.
|
||
vkd3d-shader/msl: Implement support for VKD3DSPR_IMMCONST registers.
|
||
vkd3d-shader/msl: Implement support for VKD3DSPSM_ABS modifiers.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_AND.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_NEU.
|
||
vkd3d-shader/msl: Implement support for VSIR_DIMENSION_VEC4 immediate constants.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_MUL.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_INE.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_OR.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_DIV.
|
||
vkd3d-shader/msl: Implement support for VKD3DSPSM_NEG modifiers.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_GEO.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_FRC.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_MOVC.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ITOF.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_FTOI.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_UTOF.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_FTOU.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ROUND_PI.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ROUND_Z.
|
||
tests/shader_runner_metal: Implement depth texture and state.
|
||
tests/shader_runner_metal: Implement clears.
|
||
vkd3d-shader/msl: Implement support for the VKD3DSPR_DEPTHOUT register.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_DP3.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_DP4.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_DP2.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_SQRT.
|
||
vkd3d-shader/msl: Handle the VKD3DSIM_LINEAR interpolation modifier on inputs.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_IEQ.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_EXP.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_LTO.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ROUND_NI.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_IF and VKD3DSIH_ENDIF.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ROUND_NE.
|
||
vkd3d-shader/msl: Handle SV_IS_FRONT_FACE inputs.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_LOG.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_MAX.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_MIN.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_RSQ.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_NOT.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ELSE.
|
||
vkd3d-shader/msl: Implement support for VKD3DSPDM_SATURATE modifiers.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_MAD.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ISHL.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_ISHR.
|
||
vkd3d-shader/msl: Implement VKD3DSIH_USHR.
|
||
|
||
Francisco Casas (55):
|
||
vkd3d-shader/tpf: Remove HLSL_IR_SWIZZLE handling.
|
||
vkd3d-shader/hlsl: Store SM4 stores in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 loads in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 resource stores in the vsir program.
|
||
tests: Test signature reflection for PRIMID, RTINDEX and VPINDEX.
|
||
vkd3d-shader/hlsl: Add special allocation rules for PRIMID, RTINDEX, and VPINDEX.
|
||
tests: Test allocation rules for FFACE and SAMPLE.
|
||
vkd3d-shader/hlsl: Add special allocation rules for FFACE and SAMPLE.
|
||
vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_LOADs in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_SAMPLEs in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_GATHERs in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_SAMPLE_INFOs in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 HLSL_RESOURCE_RESINFOs in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 jumps in the vsir program.
|
||
vkd3d-shader/tpf: Apply extra bits to all conditional ops.
|
||
vkd3d-shader/hlsl: Migrate SM4 control flow instructions to the vsir program.
|
||
vkd3d-shader/hlsl: Remove hlsl_ir_vsir_instruction_ref, again.
|
||
vkd3d-shader/dxbc: Parse the SFI0 ROV requirement.
|
||
vkd3d-shader/hlsl: Store ROV feature requirement in the vsir_program.
|
||
vkd3d-shader/hlsl: Store the global flags in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 sampler declarations in the vsir program.
|
||
vkd3d-shader/hlsl: Store SM4 texture declarations in the vsir program.
|
||
tests: Add additional sampler allocation tests for SM1.
|
||
tests: Test sampler array allocation.
|
||
vkd3d-shader/hlsl: Lower separated samplers for SM1.
|
||
vkd3d-shader/hlsl: Support combined samplers from texture arrays.
|
||
vkd3d-shader/hlsl: Allocate samplers by decreasing bind count in SM1.
|
||
vkd3d-shader/hlsl: Allow lowering separate sampler arrays on deref offset 0.
|
||
vkd3d-shader/hlsl: Store SM4 constant buffer declarations in vsir program.
|
||
vkd3d-shader/hlsl: Generate RDEF outside tpf_compile().
|
||
vkd3d-shader/hlsl: Generate CTAB outside sm1_generate_vsir().
|
||
vkd3d-shader/hlsl: Store hull and domain shader properties in vsir_program.
|
||
vkd3d-shader/tpf: Remove hlsl_ctx from tpf_compiler.
|
||
vkd3d-shader/hlsl: Lower sample lods for SM1.
|
||
vkd3d-shader/ir: Properly lower texldb.
|
||
tests/hlsl: Test tex2Dproj().
|
||
vkd3d-shader/ir: Properly lower texldp.
|
||
vkd3d-shader: Avoid passing NULL to memcpy(). (ubsan)
|
||
vkd3d-shader: Avoid passing NULL to qsort(). (ubsan)
|
||
vkd3d-shader: Avoid passing NULL to memset(). (ubsan)
|
||
vkd3d-shader: Avoid left shifting signed integers. (ubsan)
|
||
tests: Test SampleGrad() on ps_3_0.
|
||
vkd3d-shader/hlsl: Lower separate SampleGrad() for SM1.
|
||
vkd3d-shader/hlsl: Don't lower separate samples with texel offsets.
|
||
tests: Test casting negative floats to int.
|
||
vkd3d-shader/hlsl: Properly lower casts to int for negative numbers.
|
||
vkd3d-shader/hlsl: Specialize lowering SM1 casts to int for vertex shaders.
|
||
tests/hlsl: Add lhs cast tests.
|
||
tests/hlsl: Test partial assignments due to lhs casts.
|
||
tests/hlsl: Add more function cast tests.
|
||
vkd3d-shader/hlsl: Delay lowering complex casts until after parse time.
|
||
vkd3d-shader/hlsl: Support non-size-changing lhs casts.
|
||
vkd3d-shader/hlsl: Don't count cast to param type on IN as part of OUT var's lhs.
|
||
vkd3d-shader/hlsl: Don't forbid first base type cast on var assignments.
|
||
tests/shader_runner: Pass the correct buffer size to swprintf() in dxc_compiler_compile_shader().
|
||
|
||
Giovanni Mascellani (87):
|
||
vkd3d-shader/ir: Validate the semantic index for tessellation system values.
|
||
vkd3d-shader/ir: Check that semantic indices for tessellation system values are not duplicated.
|
||
vkd3d-shader/ir: Keep track of the tessellator domain in struct vsir_program.
|
||
vkd3d-shader/ir: Validate tessellation system values for the given tessellator domain.
|
||
vkd3d-shader/ir: Check that tessellation system values only appear in the patch constant signature.
|
||
vkd3d-shader/ir: Validate index count for PRIMID registers.
|
||
vkd3d-shader/ir: Validate index count for OUTPOINTID registers.
|
||
vkd3d-shader/ir: Validate index count for FORKINSTID registers.
|
||
vkd3d-shader/ir: Validate index count for JOININSTID registers.
|
||
vkd3d-shader/ir: Validate index count for TESSCOORD registers.
|
||
vkd3d-shader/ir: Validate index count for THREADID registers.
|
||
vkd3d-shader/ir: Validate index count for THREADGROUPID registers.
|
||
vkd3d-shader/ir: Validate index count for LOCALTHREADID registers.
|
||
vkd3d-shader/ir: Validate index count for LOCALTHREADINDEX registers.
|
||
vkd3d-shader/ir: Check that all tessellation system values appear in the patch constant signature.
|
||
vkd3d-shader/ir: Check that tessellation system value registers are consecutive.
|
||
vkd3d-shader/ir: Validate index count for COVERAGE registers.
|
||
vkd3d-shader/ir: Validate index count for SAMPLEMASK registers.
|
||
vkd3d-shader/ir: Validate index count for GSINSTID registers.
|
||
vkd3d-shader/ir: Validate index count for WAVELANECOUNT registers.
|
||
vkd3d-shader/ir: Validate index count for WAVELANEINDEX registers.
|
||
vkd3d-shader/ir: Validate index count for OUTSTENCILREF registers.
|
||
vkd3d-shader/dxil: Emit register SAMPLEMASK for output sysval SV_Coverage.
|
||
vkd3d-shader/ir: Validate the register type for DCL_INPUT instructions.
|
||
vkd3d-shader/ir: Validate the register type for DCL_INPUT_SIV instructions.
|
||
vkd3d-shader/ir: Validate the register type for DCL_INPUT_SGV instructions.
|
||
vkd3d-shader/ir: Validate the register type for DCL_INPUT_PS instructions.
|
||
vkd3d-shader/ir: Validate the register type for DCL_INPUT_PS_SIV instructions.
|
||
vkd3d-shader/ir: Validate the register type for DCL_INPUT_PS_SGV instructions.
|
||
vkd3d-shader/ir: Validate the register type for DCL_OUTPUT instructions.
|
||
vkd3d-shader/ir: Validate the register type for DCL_OUTPUT_SIV instructions.
|
||
vkd3d-shader/ir: Synthesize the default control point phase in the HS control point I/O normaliser.
|
||
vkd3d-shader/ir: Evaluate OUTCONTROLPOINT usage in the patch constant phase directly.
|
||
tests: Use plain skip() when skipping a test in the shader runner.
|
||
tests: Print the file name instead of the test name in test logs.
|
||
vkd3d-shader/spirv: Merge emitting input and output registers.
|
||
vkd3d-shader/ir: Encode I/O declarations in vsir_program.
|
||
vkd3d-shader/ir: Remove I/O declarations before I/O normalisation.
|
||
vkd3d-shader/ir: Remove I/O declarations before normalising hull shader control point I/O.
|
||
vkd3d-shader/ir: Remove I/O declarations before flattening hull shader phases.
|
||
vkd3d-shader/ir: Merge removing I/O declarations in the general instruction lowering pass.
|
||
vkd3d-shader/ir: Validate the control point index when it is statically known.
|
||
vkd3d: Do not use more than a few million descriptors in Vulkan heap set layouts.
|
||
vkd3d-shader/ir: Validate the array index when it is statically known.
|
||
vkd3d-shader/ir: Validate the register type for registers used as relative addresses.
|
||
vkd3d-shader/ir: Introduce a helper function to determine the signature for a register type.
|
||
vkd3d-shader/ir: Validate the DCL_INDEX_RANGE instruction.
|
||
vkd3d-shader/ir: Check that DCL_INDEX_RANGE ranges do not overlap with unrelated signature elements.
|
||
vkd3d-shader/spirv: Introduce a SPIR-V parser.
|
||
vkd3d-shader/spirv: Parse the SPIR-V magic number.
|
||
vkd3d-shader/spirv: Parse the SPIR-V version number.
|
||
vkd3d-shader/spirv: Parse the SPIR-V generator magic number.
|
||
vkd3d-shader/spirv: Parse the SPIR-V id bound.
|
||
vkd3d-shader/spirv: Parse the SPIR-V instruction schema.
|
||
vkd3d-shader/ir: Check that the DCL_INDEX_RANGE effective mask stabilizes after one iteration.
|
||
vkd3d-shader/ir: Check that signature element masks are left-aligned with in a DCL_INDEX_RANGE.
|
||
vkd3d-shader/ir: Validate the register index and count for signature elements.
|
||
vkd3d-shader/ir: Validate the signature element stream index.
|
||
vkd3d-shader/ir: Validate the signature element register index, for some sysvals.
|
||
vkd3d-shader/ir: Check that signature elements do not conflict with each other.
|
||
vkd3d-shader/ir: Give more meaningful names to I/O normalisation levels.
|
||
vkd3d-shader/d3dbc: Normalise I/O register write masks when not disassembling.
|
||
vkd3d-shader/ir: Represent information about I/O registers with a table.
|
||
vkd3d-shader/ir: Validate INPUT destination parameters using a uniform helper.
|
||
vkd3d-shader/ir: Validate PATCHCONST destination parameters using a uniform helper.
|
||
vkd3d-shader/ir: Validate OUTPUT destination parameters.
|
||
vkd3d-shader/ir: Validate INCONTROLPOINT destination parameters.
|
||
vkd3d-shader/ir: Validate OUTCONTROLPOINT destination parameters.
|
||
vkd3d-shader/ir: Remove a redundant assignment.
|
||
vkd3d-shader/ir: Simplify shader_register_normalise_arrayed_addressing().
|
||
tests/hlsl: Add tests for the EvaluateAttribute*() intrinsics.
|
||
tests/hlsl: Add some clip/cull distance tests.
|
||
vkd3d-shader/ir: Disallow array signature elements for normalisation levels < SM6.
|
||
vkd3d-shader/ir: Validate OUTPUT source parameters using a uniform helper.
|
||
vkd3d-shader/ir: Validate PATCHCONST source parameters using a uniform helper.
|
||
vkd3d-shader/ir: Validate INPUT source parameters.
|
||
vkd3d-shader/ir: Validate INCONTROLPOINT source parameters.
|
||
vkd3d-shader/ir: Validate OUTCONTROLPOINT source parameters.
|
||
vkd3d: Log the requested feature levels for D3D12_FEATURE_FEATURE_LEVELS.
|
||
vkd3d: Describe DXGI_UNKNOWN as having one plane.
|
||
vkd3d: Only call d3d12_fence_garbage_collect_vk_semaphores_locked() when using binary semaphores.
|
||
vkd3d: Release queued fences when stopping the fence worker.
|
||
vkd3d: Support signalling a fence once all outstanding work is submitted to Vulkan.
|
||
vkd3d: Explicitly call the appropriate waiting function in the fence worker.
|
||
vkd3d-shader/spirv: Interpret the write mask as a destination swizzle for double comparison operations.
|
||
vkd3d-common: Write a thread id in the log on macOS too.
|
||
ci: Explicitly install SPIRV-Tools in the macOS CI environment.
|
||
|
||
Henri Verbeet (31):
|
||
tests: Get rid of some redundant "glsl" todo's.
|
||
vkd3d-shader/hlsl: Use hlsl_error() instead of hlsl_fixme() for ambiguous function calls.
|
||
vkd3d-shader/hlsl: Introduce hlsl_dump_type().
|
||
vkd3d-shader/hlsl: Introduce hlsl_dump_ir_function_decl().
|
||
vkd3d-shader/hlsl: Output the candidates for ambiguous function calls.
|
||
vkd3d: Introduce d3d12_descriptor_set_layout_init().
|
||
vkd3d-shader/spirv: Parse SPIR-V instructions.
|
||
vkd3d: Drop smaller pools in d3d12_command_allocator_reset_descriptor_pool_array().
|
||
tests: Add yet more overload resolution tests.
|
||
vkd3d-shader/hlsl: Prefer overload candidates without component count narrowing.
|
||
vkd3d-shader/hlsl: Prefer overload candidates with matching component type classes.
|
||
vkd3d-shader/hlsl: Prefer overload candidates with matching component types.
|
||
vkd3d-shader/hlsl: Prefer overload candidates without component type narrowing.
|
||
vkd3d-shader/hlsl: Prefer overload candidates without component count widening.
|
||
vkd3d-shader/d3dbc: Separate writing the comment bytecode from write_sm1_uniforms().
|
||
vkd3d-shader/hlsl: Move CTAB generation to hlsl_codegen.c.
|
||
tests/shader_runner: Ignore the "backcompat" option for shader model 5.1+.
|
||
vkd3d-shader/hlsl: Make sm4_get_interpolation_mode() static.
|
||
vkd3d-shader/hlsl: Move sm4_get_extern_resources() to hlsl_codegen.c.
|
||
vkd3d-shader/hlsl: Move sm4_free_extern_resources() to hlsl_codegen.c.
|
||
tests/shader_runner: Do not use skip() for shader model requirements.
|
||
vkd3d-shader/hlsl: Move RDEF generation to hlsl_codegen.c.
|
||
demos: Use the assembler to embed HLSL sources.
|
||
vkd3d-shader/msl: Get rid of a stray vkd3d_string_buffer_printf() in the VEC4 UINT immediate constant handling.
|
||
vkd3d: Avoid freeing the input signature twice on error paths in d3d12_pipeline_state_init_graphics().
|
||
vkd3d-compiler: Store the target type as a struct target_type_info pointer.
|
||
vkd3d-compiler: Store the source type as a struct source_type_info pointer.
|
||
vkd3d-compiler: Introduce "dxbc-fx" as a source type.
|
||
include: Add vkd3d_shader_scan_hull_shader_tessellation_info to the list of chained compilation structures.
|
||
include: Add missing VKD3D_FORCE_32_BIT_ENUM enum elements.
|
||
vkd3d-shader/ir: Remove vForkInstanceId and vJoinInstanceId declarations in vsir_program_flatten_hull_shader_phases().
|
||
|
||
Nikolay Sivov (5):
|
||
vkd3d-shader/hlsl: Add parser support for stream-output object types.
|
||
vkd3d-shader/fx: Implement parsing inline shader blobs.
|
||
vkd3d-shader/fx: Remove newlines from the parser error messages.
|
||
vkd3d-compiler: Support fx_4_0 sources embedded in DXBC containers.
|
||
vkd3d-shader/hlsl: Implement the isinf() intrinsic.
|
||
|
||
Shaun Ren (43):
|
||
vkd3d-shader/dxil: Allow zero domain input control point count.
|
||
vkd3d-shader: Implement scanning hull shader tessellation information.
|
||
tests/shader_runner_vulkan: Enable patch list topology support.
|
||
tests/shader_runner_gl: Implement tessellation support.
|
||
vkd3d-shader/hlsl: Implement normalization of binary expressions.
|
||
vkd3d-shader/hlsl: Collect together terms with constant coefficients.
|
||
tests/shader_runner_vulkan: Check if create_shader_stage() fails in create_compute_pipeline().
|
||
tests/shader_runner_gl: Add "opengl" tag.
|
||
tests/shader_runner_gl: Bind buffer UAVs for compute shaders.
|
||
tests/hlsl: Add a test for UAV InterlockedCompareExchange().
|
||
tests/hlsl: Add tests to check the types of the value arguments of atomic ops.
|
||
tests/hlsl: Add tests to check the void return type of atomic ops.
|
||
tests/hlsl: Add tests for valid destination types of atomic operations.
|
||
vkd3d-shader/hlsl: Implement the InterlockedAdd() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedAnd() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedCompareExchange() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedCompareStore() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedExchange() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedMax() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedMin() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedOr() intrinsic.
|
||
vkd3d-shader/hlsl: Implement the InterlockedXor() intrinsic.
|
||
vkd3d-shader/spirv: Emit the tessellator domain for domain shaders.
|
||
vkd3d-shader/hlsl: Forbid declaring parameters as both out and const.
|
||
tests: Test invalid out const parameters.
|
||
vkd3d-shader/d3d-asm: Print vocp registers with subscript.
|
||
vkd3d-shader/hlsl: Forbid declaring const variables with no initializer.
|
||
tests/hlsl: Test invalid const variables with no initializer.
|
||
vkd3d-shader/hlsl: Parse InputPatch and OutputPatch objects.
|
||
vkd3d-shader/hlsl: Validate and record InputPatch/OutputPatch types.
|
||
tests/hlsl: Test the syntax of InputPatch/OutputPatch variables.
|
||
tests/hlsl: Test passthrough hull shader control point function.
|
||
tests/hlsl: Test hull shader control point function output parameters.
|
||
tests/hlsl: Test OutputPatch usage in patch constant functions.
|
||
vkd3d-shader/hlsl: Add an "is_patch_constant_func" field to struct hlsl_ctx.
|
||
vkd3d-shader/hlsl: Implement input semantic variable copies for patch variables.
|
||
vkd3d-shader/tpf: Improve readability of compat mapping in sm4_sysval_semantic_from_semantic_name().
|
||
vkd3d-shader/hlsl: Generate vsir signature entries for patch variables.
|
||
vkd3d-shader/hlsl: Declare semantics for patch variables in vsir.
|
||
vkd3d-shader/hlsl: Allocate semantic registers for patch variables.
|
||
tests/shader_runner: Support the negation of tag matches.
|
||
vkd3d-shader/hlsl: Generate vsir registers from patch variable derefs.
|
||
tests: Test signature reflection for patch inputs in hull/domain shaders.
|
||
|
||
Victor Chiletto (10):
|
||
tests: Add more function overloading tests.
|
||
vkd3d-shader/hlsl: Explicitly track the copy propagation state stack.
|
||
vkd3d-shader/hlsl: Allow copy propagation to be stopped early.
|
||
vkd3d-shader/hlsl: Constant fold casts to boolean.
|
||
vkd3d-shader/hlsl: Run copy propagation incrementally during loop unrolling.
|
||
vkd3d-shader/hlsl: Do not clone the entire program for loop unrolling.
|
||
vkd3d-shader/hlsl: Remove loop_unrolling_find_unrollable_loop().
|
||
vkd3d-shader/hlsl: Partially defer continue resolution.
|
||
vkd3d-shader/hlsl: Unroll loops with conditional jumps.
|
||
vkd3d-shader/hlsl: Drop the _ir_ infix from enum hlsl_loop_unroll_type.
|
||
```
|