mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
Compare commits
3 Commits
vkd3d-1.13
...
vkd3d-1.7.
Author | SHA1 | Date | |
---|---|---|---|
|
154acd2c2b | ||
|
cb2acc35f2 | ||
|
7b9b0179ec |
@@ -1,16 +0,0 @@
|
||||
# https://editorconfig.org/
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
tab_width = 8
|
||||
trim_trailing_whitespace = true
|
||||
max_line_length = 120
|
||||
insert_final_newline = true
|
||||
|
||||
[Makefile*]
|
||||
indent_style = tab
|
||||
indent_size = 8
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -10,7 +10,6 @@ Makefile
|
||||
Makefile.in
|
||||
test-suite.log
|
||||
/vkd3d-compiler
|
||||
/vkd3d-dxbc
|
||||
|
||||
vkd3d-*.tar.xz
|
||||
|
||||
@@ -23,7 +22,6 @@ vkd3d-*.tar.xz
|
||||
*.tab.c
|
||||
*.tab.h
|
||||
*.trs
|
||||
*.txt
|
||||
*.yy.c
|
||||
*~
|
||||
|
||||
|
@@ -1,11 +0,0 @@
|
||||
stages:
|
||||
- image
|
||||
- build
|
||||
- test
|
||||
- deploy
|
||||
|
||||
include:
|
||||
- local: "/gitlab/image.yml"
|
||||
- local: "/gitlab/build.yml"
|
||||
- local: "/gitlab/test.yml"
|
||||
- local: "/gitlab/release.yml"
|
2
.mailmap
2
.mailmap
@@ -1,2 +0,0 @@
|
||||
Elizabeth Figura <z.figura12@gmail.com>
|
||||
Elizabeth Figura <zfigura@codeweavers.com>
|
419
ANNOUNCE
419
ANNOUNCE
@@ -1,417 +1,36 @@
|
||||
The vkd3d team is proud to announce that release 1.13 of vkd3d, the Direct3D
|
||||
to Vulkan translation library, is now available.
|
||||
The Wine team is proud to announce that release 1.7.1 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:
|
||||
|
||||
- Basic loop unrolling support in the HLSL compiler.
|
||||
- Effects compiler support for several version 4.0+ state objects.
|
||||
- Miscellaneous bug fixes.
|
||||
This is a bugfix release, only containing targeted fixes for a couple
|
||||
of defects that had slipped in in vkd3d 1.7.
|
||||
|
||||
The source is available from the following location:
|
||||
|
||||
<https://dl.winehq.org/vkd3d/source/vkd3d-1.13.tar.xz>
|
||||
https://dl.winehq.org/vkd3d/source/vkd3d-1.7.1.tar.xz
|
||||
|
||||
The current source can also be pulled directly from the git repository:
|
||||
|
||||
<https://gitlab.winehq.org/wine/vkd3d.git>
|
||||
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.13
|
||||
----------------------------------------------------------------
|
||||
|
||||
### libvkd3d
|
||||
What's new in vkd3d 1.7.1
|
||||
=========================
|
||||
|
||||
- The ID3D12CommandList6 interface is supported.
|
||||
|
||||
- Block-compressed textures can be created with unaligned dimensions. This
|
||||
corresponds to
|
||||
D3D12_FEATURE_D3D12_OPTIONS8.UnalignedBlockTexturesSupported.
|
||||
*** libvkd3d
|
||||
|
||||
- Some minor issues pointed out by the Vulkan validation layers have been
|
||||
addressed. These are not known to affect applications in practice, but
|
||||
should make libvkd3d slightly more well-behaved.
|
||||
- Release 1.7 has a bug that causes an internal mutex in its command
|
||||
queue implementation to be unlocked too early under certain usage
|
||||
patterns. This is known to further cause internal inconsistencies
|
||||
that manifest as program deadlocks for some programs. In release
|
||||
1.7.1 the mutex is correctly kept locked until required.
|
||||
|
||||
### libvkd3d-shader
|
||||
*** libvkd3d-utils
|
||||
|
||||
- New features for the HLSL source type:
|
||||
- Basic loop unrolling support. Some of the more complicated cases like
|
||||
loops containing conditional jumps are still unsupported.
|
||||
- Initialisation values for global variables, function parameters, and
|
||||
annotation variables are parsed and stored in output formats supporting
|
||||
them.
|
||||
- Shader model 5.1 register spaces are supported when using the
|
||||
corresponding target profiles, as well as shader model 5.1 reflection
|
||||
data.
|
||||
- Register reservations support expressions as offsets. For example:
|
||||
‘float f : register(c0[1 + 1 * 2]);’
|
||||
- The tex1D(), tex2D(), tex3D(), and texCUBE() intrinsic function variants
|
||||
with explicit derivatives are supported.
|
||||
- The following intrinsic functions are supported:
|
||||
- asint()
|
||||
- f16tof32()
|
||||
- faceforward()
|
||||
- GetRenderTargetSampleCount()
|
||||
- rcp()
|
||||
- tex2Dbias()
|
||||
- tex1Dgrad(), tex2Dgrad(), tex3Dgrad(), and texCUBEgrad()
|
||||
- The sin() and cos() intrinsic functions are supported in shader model
|
||||
1-3 profiles. These were already supported in shader model 4+ profiles.
|
||||
- The following features specific to effects target profiles:
|
||||
- Types supported in version 4.0+:
|
||||
- BlendState
|
||||
- ComputeShader, DomainShader, GeometryShader, and HullShader
|
||||
- DepthStencilState
|
||||
- RasterizerState
|
||||
- State application functions implemented for version 4.0+ effects:
|
||||
- OMSetRenderTargets()
|
||||
- SetBlendState()
|
||||
- SetComputeShader(), SetDomainShader(), SetGeometryShader(),
|
||||
SetHullShader(), SetPixelShader(), and SetVertexShader()
|
||||
- SetDepthStencilState()
|
||||
- SetRasterizerState()
|
||||
- String types. These are mainly used for annotations.
|
||||
- Annotations on global variables.
|
||||
- Support for the ‘Texture’ field of the ‘SamplerState’ type.
|
||||
- Support for NULL values.
|
||||
- Stores to swizzled matrix variables.
|
||||
- The ‘unsigned’ type modifier is supported. (For example,
|
||||
‘unsigned int’.) Note that ‘uint’ and related types were already
|
||||
supported.
|
||||
- ‘ConstantBuffer<>’ types.
|
||||
- The ‘SV_Coverage’ output semantic for fragment shaders.
|
||||
|
||||
- The experimental DXIL source type supports quad group operations.
|
||||
|
||||
- The Direct3D shader model 2-3 ‘texldb’ instruction is correctly disassembled
|
||||
when outputting Direct3D shader assembly.
|
||||
|
||||
- New interfaces:
|
||||
- The vkd3d_shader_parameter_info structure extends the
|
||||
vkd3d_shader_compile_info structure, and can be used to specify shader
|
||||
parameters. This is a more generic version of the shader parameter
|
||||
interface for SPIR-V targets in struct vkd3d_shader_spirv_target_info.
|
||||
- The VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32 enumeration value specifies
|
||||
that a shader parameter contains 32-bit floating-point data.
|
||||
- The VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC shader parameter
|
||||
specifies the alpha test function.
|
||||
- The VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF shader parameter
|
||||
specifies the alpha test reference value.
|
||||
- The VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION shader parameter
|
||||
specifies the interpolation mode for colour inputs in Direct3D shader
|
||||
model 1-3 fragment shaders.
|
||||
- The VKD3D_SHADER_PARAMETER_TYPE_BUFFER enumeration value specifies that
|
||||
the value of a shader parameter is provided at run-time through a buffer
|
||||
resource.
|
||||
|
||||
### Changes since vkd3d 1.12:
|
||||
```
|
||||
Anna (navi) Figueiredo Gomes (6):
|
||||
vkd3d-shader/ir: Periodically flush buffers when tracing blocks.
|
||||
Add a .editorconfig file.
|
||||
vkd3d: Use D3D12_SHADER_VISIBILITY_ALL for 32-bit root constants when using vk_heaps.
|
||||
vkd3d-shader/spirv: Avoid decorating variables multiple times with NonReadable.
|
||||
vkd3d-shader/spirv: Use unique SPIR-V variables for descriptors where visibility differs.
|
||||
vkd3d-shader/spirv: Avoid decorating variables multiple times with Coherent.
|
||||
|
||||
Atharva Nimbalkar (2):
|
||||
vkd3d-shader/glsl: Implement VKD3DSIH_MOV.
|
||||
vkd3d-shader/glsl: Implement support for VKD3DSPR_TEMP registers.
|
||||
|
||||
Conor McCarthy (16):
|
||||
vkd3d-shader/dxil: Implement DX intrinsic QuadOp.
|
||||
vkd3d-shader/spirv: Implement the QUAD_READ_ACROSS_* instructions.
|
||||
vkd3d-shader/dxil: Implement DX intrinsic QuadReadLaneAt.
|
||||
vkd3d-shader/spirv: Implement the QUAD_READ_LANE_AT instruction.
|
||||
tests/d3d12: Check for unaligned block texture support in test_create_committed_resource().
|
||||
vkd3d: Allow block compressed textures to have unaligned width and height.
|
||||
tests/d3d12: Test a null vertex buffer 'views' pointer on multiple slots.
|
||||
vkd3d: Interpret a null vertex buffer 'views' pointer as a null buffer.
|
||||
tests/shader-runner: Set the correct flag and format for raw UAVs.
|
||||
tests/shader-runner: Create a new runner object for the shader model 6 tests.
|
||||
vkd3d: Create a descriptor pool for static samplers when Vulkan-backed heaps are used.
|
||||
tests: Add a test for clearing a large buffer UAV.
|
||||
vkd3d: Limit the workgroup X count for buffer UAV clears to the supported max.
|
||||
vkd3d: Add support for the ID3D12CommandList6 interface.
|
||||
vkd3d-shader/spirv: Free the spirv parameter info.
|
||||
vkd3d: Free descriptor range information on error paths in d3d12_root_signature_info_from_desc(). (Valgrind)
|
||||
|
||||
Elizabeth Figura (39):
|
||||
vkd3d-shader/hlsl: Add a hlsl_fixme() for 5.1 resource arrays.
|
||||
vkd3d-shader/hlsl: Put constant buffers into the extern_resources struct.
|
||||
vkd3d-shader: Write SM5.1 register indices.
|
||||
vkd3d-shader/hlsl: Allocate register spaces for constant buffers.
|
||||
vkd3d-shader/hlsl: Allocate register spaces for objects.
|
||||
vkd3d-shader: Write SM5.1 register spaces.
|
||||
vkd3d-shader/hlsl: Write SM5.1 binding reflection data.
|
||||
tests: Add reflection tests for register space.
|
||||
vkd3d-shader/hlsl: Always initialize $$ when parsing modifiers from an arbitrary string.
|
||||
tests: Stop probing all pixels when drawing a uniform colour.
|
||||
tests: Run combined-samplers.shader_test on sm1 as well.
|
||||
tests: Add another combined sampler test.
|
||||
vkd3d-shader/hlsl: Respect the coords writemask in write_sm1_resource_load().
|
||||
vkd3d-shader/hlsl: Only allocate the aligned size for uniforms.
|
||||
vkd3d-shader/hlsl: Separate an "array" rule.
|
||||
vkd3d-shader/d3dbc: Use enum vkd3d_shader_register_type in struct sm1_instruction.
|
||||
tests/shader_runner: Use resource->width instead of resource->size for buffer width.
|
||||
tests/shader_runner: Factor out a resource_desc structure.
|
||||
tests: Implement multisampling in the Vulkan renderer.
|
||||
tests: Implement multisampling in the GL renderer.
|
||||
vkd3d-shader/hlsl: Implement the GetRenderTargetSampleCount() intrinsic.
|
||||
vkd3d-shader/hlsl: Implement output SV_Coverage.
|
||||
vkd3d-shader: Introduce struct vkd3d_shader_parameter_info and struct vkd3d_shader_parameter1.
|
||||
include: Document shader parameters.
|
||||
vkd3d-shader/spirv: Support passing shader parameters through uniform buffers.
|
||||
tests: Add a test for the vkd3d_shader_parameter APIs.
|
||||
vkd3d-shader/spirv: Respect VKD3D_SHADER_CONDITIONAL_OP_Z when discard has a bool argument.
|
||||
vkd3d-shader: Allow controlling alpha test through vkd3d-shader parameters.
|
||||
tests: Offset the viewport by 0.5 when running d3dbc shaders.
|
||||
tests: Factor out a set_default_target() helper.
|
||||
tests: Test alpha test.
|
||||
vkd3d-shader/spirv: Allocate output_info after normalization.
|
||||
vkd3d-shader: Factor out a vsir_program_get_parameter() helper.
|
||||
vkd3d-shader/spirv: Pass a vkd3d_data_type to spirv_compiler_emit_shader_parameter().
|
||||
vkd3d-shader: Do not make the alpha test ref parameter VSIR_DIMENSION_VEC4.
|
||||
vkd3d-shader: Use the program parameters in spirv_compiler_alloc_spec_constant_id().
|
||||
vkd3d-shader: Allow controlling d3d color shade mode through vkd3d-shader parameters.
|
||||
tests: Test shade mode.
|
||||
vkd3d-shader: Use an extended version of vkd3d_shader_immediate_constant in vkd3d_shader_parameter1.
|
||||
|
||||
Francisco Casas (52):
|
||||
vkd3d-shader/hlsl: Record default values for uniforms and constant buffers.
|
||||
vkd3d-shader/hlsl: Initialize default values with braceless initializers.
|
||||
tests: Test default values using reflection.
|
||||
vkd3d-shader/tpf: Write default values for SM4.
|
||||
vkd3d-shader/d3dbc: Write default values for SM1.
|
||||
tests: Test matrix default value initializers.
|
||||
vkd3d-shader/hlsl: Fix numeric register offset for matrix components.
|
||||
vkd3d-shader/hlsl: Reorder default values for matrices for SM4.
|
||||
tests: Test register reservations on unused variables.
|
||||
vkd3d-shader/hlsl: Only error out on bind_count register reservation overlaps for SM1.
|
||||
vkd3d-shader/d3dbc: Split hlsl_sm1_write().
|
||||
vkd3d-shader/hlsl: Generate CTAB outside d3dbc_compile().
|
||||
vkd3d-shader/d3dbc: Introduce struct d3dbc_compiler.
|
||||
vkd3d-shader/d3dbc: Use program->shader_version instead of ctx->profile.
|
||||
vkd3d-shader/d3dbc: Don't require a hlsl_semantic to get register and usage.
|
||||
vkd3d-shader/d3dbc: Use vsir_program I/O signatures to write dcls.
|
||||
vkd3d-shader/d3dbc: Don't write inconsequential MOVs.
|
||||
vkd3d-shader/hlsl: Free array sizes on function parameters (Valgrind).
|
||||
tests: Separate the valid stateblock function names test from the string arg test.
|
||||
vkd3d-shader/hlsl: Parse function call syntax on state blocks.
|
||||
tests: Test whether valid state block function names are case-sensitive.
|
||||
vkd3d-shader/hlsl: Validate state block function calls.
|
||||
vkd3d-shader/hlsl: Add missing src1 and src2 constants to sincos on SM2.
|
||||
tests: Test string escape sequences.
|
||||
vkd3d-shader/hlsl: Parse string constants.
|
||||
vkd3d-shader/hlsl: Parse string escape sequences.
|
||||
vkd3d-shader/hlsl: Parse string type.
|
||||
tests: Add missing double precission require directives.
|
||||
tests: Report tests skipped because of missing capabilities.
|
||||
tests/shader-runner: Add missing trace for wave_ops caps.
|
||||
tests: Introduce VKD3D_TEST_DETAILED for the test driver.
|
||||
vkd3d-shader/hlsl: Avoid dereferencing rel_offset if it is NULL.
|
||||
tests: Add additional non-constant array indexing tests.
|
||||
vkd3d-shader/hlsl: Lower non-constant array loads for SM1.
|
||||
vkd3d-shader/hlsl: Remove SM1 fixme for matrix writemasks.
|
||||
vkd3d-shader/hlsl: Lower non-constant row_major matrix loads for SM1.
|
||||
tests: Add additional string tests.
|
||||
vkd3d-shader/hlsl: Parse string default values.
|
||||
vkd3d-shader/hlsl: Skip writing string default values.
|
||||
vkd3d-shader/hlsl: Always work with the extern resource's component type.
|
||||
vkd3d-shader: Avoid div by zero on assert in vkd3d_calloc() (ubsan).
|
||||
tests: Add additional tests for function calls in state block rhs.
|
||||
tests: Test shader compilation within function definitions.
|
||||
tests: Test compile syntax on effects.
|
||||
tests: Test shader compilation within braces.
|
||||
tests: Test shader compilation with default values.
|
||||
tests/shader_runner: Require explicit formats for UAV resources.
|
||||
tests/shader_runner: Move parse_format() up.
|
||||
tests/shader_runner: Replace spaces with dashes in format names.
|
||||
tests/shader_runner: Don't skip shader compilation on missing caps.
|
||||
tests/shader_runner: Explicitly require UAV load support.
|
||||
tests/test-driver: Avoid double space when printing details.
|
||||
|
||||
Giovanni Mascellani (57):
|
||||
tests: Mark some root signature unbounded range failures as todo on MoltenVK.
|
||||
vkd3d: Do not request VK_EXT_debug_marker if debug is disabled.
|
||||
vkd3d: Enable VK_KHR_portability_subset if available.
|
||||
vkd3d: Do not synchronize with the geometry shader stage if it's not enabled.
|
||||
ci: Assume an Apple Silicon-based environment for the macOS CI job.
|
||||
tests: Skip sampling cube textures on Qualcomm.
|
||||
tests: Transition resources to PIXEL_SHADER_RESOURCE in test_sample_c_lz().
|
||||
tests: Check that depth/stencil formats are supported before using them.
|
||||
vkd3d: Do not synchronize with the tessellation shader stages if they're not enabled.
|
||||
tests: Improve feedback when enabling d3d12 debug layers.
|
||||
tests: Enable the d3d12 debug layer message callbacks.
|
||||
tests: Support using the Agility SDK in the crosstests.
|
||||
vkd3d: Propagate a failure in d3d12_descriptor_heap_init().
|
||||
tests: Define WIDL macros in utils.h.
|
||||
vkd3d: Allocate temporary arrays on the stack in d3d12_command_list_update_push_descriptors().
|
||||
tests: Pad the constant buffer in test_update_compute_descriptor_tables() to 256 bytes.
|
||||
tests: Terminate the Agility SDK path with a slash.
|
||||
vkd3d: Document how to install "Graphics Tools" to use the Agility SDK.
|
||||
vkd3d: Rebuild the vkd3d_physical_device_info chain before creating the device.
|
||||
vkd3d: Remove the temporary pointers in vkd3d_physical_device_info_init().
|
||||
vkd3d: Propagate errors out of d3d12_root_signature_append_vk_binding().
|
||||
vkd3d: Disable WARN_ON() when VKD3D_NO_DEBUG_MESSAGES is defined.
|
||||
vkd3d: Disable FIXME_ONCE() when VKD3D_NO_DEBUG_MESSAGES is defined.
|
||||
vkd3d: Allow disabling ERR() by defining VKD3D_NO_ERROR_MESSAGES.
|
||||
vkd3d: Introduce debug severity MESSAGE.
|
||||
vkd3d: Introduce a softer form of assertion.
|
||||
vkd3d: Allow aborting on ERR().
|
||||
vkd3d: Emit an ERR() when reaching unreachable code.
|
||||
ci: Abort on assertions on the CI.
|
||||
tests: Test register conflicts in a root signature.
|
||||
vkd3d: Replace assert() with VKD3D_ASSERT() in command.c.
|
||||
vkd3d: Replace assert() with VKD3D_ASSERT() in resource.c.
|
||||
vkd3d: Replace assert() with VKD3D_ASSERT() in state.c.
|
||||
vkd3d: Replace assert() with VKD3D_ASSERT() in utils.c.
|
||||
vkd3d: Replace assert() with VKD3D_ASSERT() in vkd3d_private.h.
|
||||
vkd3d-common: Remove an assertion in vkd3d_dbg_printf().
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in checksum.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in d3d_asm.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in d3dbc.c
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in dxbc.c.
|
||||
tests: Mark a couple of tests as working on recent NVIDIA GPUs.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in dxil.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in fx.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl_codegen.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl_constant_ops.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl.h.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in hlsl.y.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in ir.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in preproc.h.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in preproc.l.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in preproc.y.
|
||||
vkd3d: Check the entire root signature for register conflicts.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in spirv.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in tpf.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in vkd3d_shader_main.c.
|
||||
vkd3d-shader: Replace assert() with VKD3D_ASSERT() in vkd3d_shader_private.h.
|
||||
|
||||
Henri Verbeet (9):
|
||||
vkd3d-shader/ir: Rename the "handler_idx" field of struct vkd3d_shader_instruction to "opcode".
|
||||
vkd3d: Always use UINT views to clear UAVs with integer formats.
|
||||
vkd3d-shader/ir: Remove VKD3DSIH_DCL instructions.
|
||||
vkd3d-shader/ir: Remove VKD3DSIH_DCL_SAMPLER instructions.
|
||||
vkd3d-common: Replace assert() with VKD3D_ASSERT().
|
||||
vkd3d-shader/fx: Replace assert() with VKD3D_ASSERT().
|
||||
vkd3d: Do not include assert.h.
|
||||
build: Actually run bitwise-assignment.shader_test.
|
||||
vkd3d-shader/spirv: Decorate non-array descriptor variables as well.
|
||||
|
||||
Nikolay Sivov (66):
|
||||
vkd3d-shader/hlsl: Handle "unsigned int" type.
|
||||
tests: Add some basic tests for ConstantBuffer type.
|
||||
tests: Add a few tests for the NULL value.
|
||||
vkd3d-shader/fx: Do not write shared buffers block when not compiling as a child effect.
|
||||
vkd3d-shader/hlsl: Implement tex2Dbias().
|
||||
vkd3d-shader/asm: Output 'bias' flag for 'texld'.
|
||||
vkd3d-shader/d3dbc: Write load instruction for tex2Dbias().
|
||||
vkd3d-shader/hlsl: Store original semantic name.
|
||||
vkd3d-shader/fx: Use original full semantic name.
|
||||
vkd3d-shader/fx: Set EXPLICIT_BIND_POINT flag for packoffset() reservations as well.
|
||||
vkd3d-shader/fx: Fix variable buffer offset value.
|
||||
vkd3d-shader/hlsl: Add support for ConstantBuffer<> type.
|
||||
vkd3d-shader/fx: Cast state block field values to target type.
|
||||
vkd3d-shader/fx: Add support for writing DepthStencilState objects.
|
||||
vkd3d-shader/hlsl: Add RasterizerState type.
|
||||
vkd3d-shader/fx: Add support for writing RasterizerState objects.
|
||||
vkd3d-shader: Implement tex*() functions variants with gradient arguments.
|
||||
vkd3d-shader/hlsl: Implement tex*grad() functions.
|
||||
vkd3d-shader/fx: Fix structure type data written for fx_4.
|
||||
vkd3d-shader/fx: Write default numeric values.
|
||||
vkd3d-shader/fx: Fix packed size for fx_4+ types.
|
||||
vkd3d-shader/fx: Preserve parsing order of initializer components.
|
||||
vkd3d-shader/fx: Add missing fields for structure types on fx_5_0.
|
||||
vkd3d-shader/hlsl: Do not crash on initialization of a redefined variable.
|
||||
vkd3d-shader/hlsl: Set default values for annotations variables.
|
||||
vkd3d-shader/fx: Write annotations for fx_4+ profiles.
|
||||
tests: Add some fx profiles tests for structure types containing objects.
|
||||
vkd3d-shader: Disallow object structure fields for fx profiles.
|
||||
vkd3d-shader/fx: Do not output empty strings for missing semantics for fx_2_0.
|
||||
vkd3d-shader/hlsl: Allow annotations on global variables.
|
||||
vkd3d-shader/fx: Correct empty pass check.
|
||||
vkd3d-shader/fx: Set total pass count for fx_2_0.
|
||||
vkd3d-shader/fx: Correct one of the object counters in the fx_2_0 header.
|
||||
vkd3d-shader/fx: Decompose function-style state assignments to individual states.
|
||||
vkd3d-shader/fx: Handle SetRasterizerState().
|
||||
vkd3d-shader/hlsl: Add parser support for ComputeShader, DomainShader, and HullShader types.
|
||||
vkd3d-shader/fx: Fix state block entry array shifting when decomposing.
|
||||
vkd3d-shader/fx: Add support for SetDomainShader(), SetComputeShader(), and SetHullShader() states.
|
||||
vkd3d-shader/fx: Handle "Texture" field of the sampler state objects.
|
||||
vkd3d-shader/fx: Use more descriptive names for FX-specific types.
|
||||
vkd3d-shader/fx: Add an array size field to the states description table.
|
||||
vkd3d-shader/fx: Add support for the OMSetRenderTargets() state.
|
||||
vkd3d-shader/hlsl: Add parser support for GeometryShader type.
|
||||
vkd3d-shader/fx: Check destination array index when checking for duplicate state entries.
|
||||
vkd3d-shader/hlsl: Add parser support for BlendState type.
|
||||
vkd3d-shader/fx: Enable writing BlendState variables.
|
||||
vkd3d-shader/fx: Run full set of constants passes on state block entries values.
|
||||
vkd3d-shader/fx: Handle states of a BlendState object.
|
||||
vkd3d-shader/fx: Explicitly handle bool values in state entries.
|
||||
vkd3d-shader/fx: Turn assignments to arrays to element assignments for certain states.
|
||||
vkd3d-shader/hlsl: Check MS texture declaration without sample count only for used variables.
|
||||
vkd3d-shader/hlsl: Handle NULL constants.
|
||||
vkd3d-shader/hlsl: Add a test for assigning to DSV and RTV variables.
|
||||
vkd3d-shader/hlsl: Tokenize 'String' the same as 'string'.
|
||||
vkd3d-shader/hlsl: Treat "string" type name as case-insensitive.
|
||||
vkd3d-shader/fx: Enable writing string objects for fx_4+.
|
||||
vkd3d-shader/fx: Support string annotations for fx_4+.
|
||||
vkd3d-shader/fx: Handle SetBlendState().
|
||||
vkd3d-shader/fx: Handle SetPixelShader() and SetVertexShader().
|
||||
vkd3d-shader/hlsl: Adjust NULL type properties to make it usable in transformations.
|
||||
vkd3d-shader/fx: Support NULL constants for object fields.
|
||||
vkd3d-shader/fx: Resolve NULL values for SamplerState.Texture field.
|
||||
vkd3d: Fix a few typos in the comments.
|
||||
vkd3d-shader/glsl: Fix a typo in a few messages.
|
||||
include: Fix a few typos in the IDL files.
|
||||
vkd3d-shader/fx: Fix the matrix type class for fx_2_0.
|
||||
|
||||
Petrichor Park (5):
|
||||
vkd3d-shader/hlsl: Implement the faceforward() intrinsic.
|
||||
vkd3d-shader/hlsl: Implement tests for the rcp() intrinsic.
|
||||
vkd3d-shader/hlsl: Implement the rcp() intrinisic.
|
||||
vkd3d-shader/tpf: Implmenent HLSL_OP1_RCP.
|
||||
vkd3d-shader/hlsl: Factor out add_binary_expr() and use it for assignment operators.
|
||||
|
||||
Shaun Ren (6):
|
||||
vkd3d-shader/ir: Lower SM1 SINCOS to SM4 SINCOS.
|
||||
vkd3d-shader/hlsl: Implement sin/cos for SM1.
|
||||
vkd3d-shader/d3dbc: Implement HLSL_OP3_MAD for SM1.
|
||||
vkd3d-shader/hlsl: Allocate registers for HLSL_OP1_{COS,SIN}_REDUCED with the required writemasks.
|
||||
vkd3d-shader/d3dbc: Implement HLSL_OP1_{COS,SIN}_REDUCED for SM1.
|
||||
vkd3d-shader/hlsl: Support default values for function parameters.
|
||||
|
||||
Stefan Dösinger (2):
|
||||
include: Get rid of the RB_FOR_EACH* macros.
|
||||
vkd3d: Pass a proper struct shader_cache_key * to rb_put() in vkd3d_shader_cache_add_entry().
|
||||
|
||||
Victor Chiletto (20):
|
||||
tests: Add more register reservations tests.
|
||||
vkd3d-shader/hlsl: Support expressions as register offsets.
|
||||
vkd3d-shader/hlsl: Pass a pointer to struct hlsl_reg_reservation in parse_reservation_index.
|
||||
vkd3d-shader/hlsl: Ignore bracket offsets for 'b' register types prior to SM 5.1.
|
||||
vkd3d-shader/hlsl: Do not immediately fail parsing for malformed 'b' register reservations.
|
||||
vkd3d-shader/hlsl: Validate cbuffer register allocations.
|
||||
vkd3d-shader/hlsl: Reserve register slots for unused buffers.
|
||||
tests: Add reflection tests for register expressions.
|
||||
vkd3d-shader/d3dbc: Fix implicit enum conversion warning.
|
||||
tests/hlsl: Add a test for dynamically indexed multisampled texture loads.
|
||||
vkd3d-shader/hlsl: Use a switch in validate_static_object_references().
|
||||
vkd3d-shader/hlsl: Defer bounds checks to after copy propagation.
|
||||
vkd3d-shader/hlsl: Pull evaluate_static_expression_as_uint() upwards.
|
||||
vkd3d-shader/hlsl: Parse loop and unroll loop attributes.
|
||||
vkd3d-shader/hlsl: Allow cloned blocks to contain external references.
|
||||
vkd3d-shader/hlsl: Implement loop unrolling.
|
||||
tests/hlsl: Test loop unrolling edge cases.
|
||||
vkd3d-shader/hlsl: Implement the asint() intrinsic.
|
||||
vkd3d-shader/hlsl: Push a new scope when compiling internal functions.
|
||||
vkd3d-shader/hlsl: Implement f16tof32 intrinsic.
|
||||
|
||||
Yuxuan Shui (2):
|
||||
tests: Pass the correct buffer size to vsnprintf() in vkd3d_test_push_context().
|
||||
vkd3d-shader/hlsl: Implement storing to a swizzled matrix.
|
||||
```
|
||||
- Symbol D3D12CreateDevice is mistakenly not exported in release 1.7,
|
||||
breaking library clients that need it. The symbol is exported again
|
||||
in release 1.7.1.
|
||||
|
14
AUTHORS
14
AUTHORS
@@ -1,9 +1,6 @@
|
||||
Akihiro Sagawa
|
||||
Alexandre Julliard
|
||||
Alistair Leslie-Hughes
|
||||
Andrew Eikum
|
||||
Andrey Gusev
|
||||
Anna (navi) Figueiredo Gomes
|
||||
Atharva Nimbalkar
|
||||
Biswapriyo Nath
|
||||
Brendan Shanks
|
||||
@@ -11,33 +8,24 @@ Chip Davis
|
||||
Conor McCarthy
|
||||
David Gow
|
||||
Derek Lesho
|
||||
Elizabeth Figura
|
||||
Ethan Lee
|
||||
Evan Tang
|
||||
Fabian Maurer
|
||||
Florian Weimer
|
||||
Francisco Casas
|
||||
Francois Gouget
|
||||
Giovanni Mascellani
|
||||
Hans-Kristian Arntzen
|
||||
Henri Verbeet
|
||||
Isabella Bosia
|
||||
Jacek Caban
|
||||
Jactry Zeng
|
||||
Jan Sikorski
|
||||
Joshua Ashton
|
||||
Józef Kucia
|
||||
Martin Storsjö
|
||||
Matteo Bruni
|
||||
Nikolay Sivov
|
||||
Petrichor Park
|
||||
Philip Rebohle
|
||||
Rémi Bernon
|
||||
Robin Kertels
|
||||
Shaun Ren
|
||||
Stefan Dösinger
|
||||
Sven Hesse
|
||||
Victor Chiletto
|
||||
Vinson Lee
|
||||
Yuxuan Shui
|
||||
Zebediah Figura
|
||||
Zhiyi Zhang
|
||||
|
2
COPYING
2
COPYING
@@ -1,4 +1,4 @@
|
||||
Copyright 2016-2024 the Vkd3d project authors (see the file AUTHORS for a
|
||||
Copyright 2016-2023 the Vkd3d project authors (see the file AUTHORS for a
|
||||
complete list)
|
||||
|
||||
Vkd3d is free software; you can redistribute it and/or modify it under
|
||||
|
1258
ChangeLog.md
1258
ChangeLog.md
File diff suppressed because it is too large
Load Diff
@@ -8,9 +8,6 @@ OUTPUT_DIRECTORY = doc
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
EXTRACT_STATIC = YES
|
||||
QUIET = YES
|
||||
WARN_IF_UNDOCUMENTED = NO
|
||||
LATEX_BATCHMODE = YES
|
||||
|
||||
INPUT = @srcdir@/include/vkd3d.h \
|
||||
@srcdir@/include/vkd3d_shader.h \
|
||||
|
415
Makefile.am
415
Makefile.am
File diff suppressed because it is too large
Load Diff
90
README
90
README
@@ -9,14 +9,14 @@ similar, but not identical, to Direct3D 12.
|
||||
Building vkd3d
|
||||
==============
|
||||
|
||||
Vkd3d depends on SPIRV-Headers and Vulkan-Headers (>= 1.3.228).
|
||||
Vkd3d depends on SPIRV-Headers and Vulkan-Headers (>= 1.2.139).
|
||||
|
||||
Vkd3d generates some of its headers from IDL files. If you are using the
|
||||
release tarballs, then these headers are pre-generated and are included. If
|
||||
you are building from git, then they will be generated at build-time using
|
||||
widl. By default, vkd3d will use the widl found in `PATH'. If widl is not
|
||||
available or is not recent (>= 3.21), then you can build Wine with `make
|
||||
tools/widl/widl' to avoid building all of Wine. You can then point vkd3d's
|
||||
available or is not recent (>= 3.20), then you can build Wine with `make
|
||||
tools/widl' to avoid building all of Wine. You can then point vkd3d's
|
||||
configure at that widl binary with `WIDL="/path/to/widl"'.
|
||||
|
||||
For release builds, you may want to define NDEBUG. If you do not need debug log
|
||||
@@ -47,8 +47,8 @@ commas or semicolons.
|
||||
|
||||
* NO_COLOR - this is an alias of NO_COLOUR.
|
||||
|
||||
* NO_COLOUR - when set, vkd3d-compiler and vkd3d-dxbc will default to
|
||||
monochrome output, even when the output supports colour.
|
||||
* NO_COLOUR - when set, vkd3d-compiler will default to monochrome output,
|
||||
even when the output supports colour.
|
||||
|
||||
* VKD3D_CONFIG - a list of options that change the behavior of libvkd3d.
|
||||
* virtual_heaps - Create descriptors for each D3D12 root signature
|
||||
@@ -65,11 +65,6 @@ commas or semicolons.
|
||||
* VKD3D_DISABLE_EXTENSIONS - a list of Vulkan extensions that libvkd3d should
|
||||
not use even if available.
|
||||
|
||||
* VKD3D_SHADER_CONFIG - a list of options that change the behavior of
|
||||
libvkd3d-shader.
|
||||
* force_validation - Enable (additional) validation of libvkd3d-shader's
|
||||
internal representation of shaders.
|
||||
|
||||
* VKD3D_SHADER_DEBUG - controls the debug level for log messages produced by
|
||||
libvkd3d-shader. See VKD3D_DEBUG for accepted values.
|
||||
|
||||
@@ -78,10 +73,6 @@ commas or semicolons.
|
||||
* VKD3D_TEST_DEBUG - enables additional debug messages in tests. Set to 0, 1
|
||||
or 2.
|
||||
|
||||
* VKD3D_TEST_DETAILED - enables printing detailed output when running the test
|
||||
suite, reporting specific shader_test lines that trigger XFAIL and SKIP even
|
||||
on tests that overall PASS. Set to 0, or 1.
|
||||
|
||||
* VKD3D_TEST_FILTER - a filter string. Only the tests whose names matches the
|
||||
filter string will be run, e.g. VKD3D_TEST_FILTER=clear_render_target.
|
||||
Useful for debugging or developing new tests.
|
||||
@@ -90,75 +81,4 @@ commas or semicolons.
|
||||
platform controls the behavior of todo(), todo_if(), bug_if() and broken()
|
||||
conditions in tests.
|
||||
|
||||
* VKD3D_TEST_SKIP_DXC - when set, tests requiring the dxcompiler library will
|
||||
be skipped.
|
||||
|
||||
* VKD3D_TEST_BUG - set to 0 to disable bug_if() conditions in tests.
|
||||
|
||||
If the configuration defines 'DXCOMPILER_LIBS=-L/path/to/dxcompiler', Shader
|
||||
Runner attempts to load libdxcompiler.so or dxcompiler.dll to compile test
|
||||
shaders in Shader Model 6. LD_LIBRARY_PATH (linux), WINEPATH (wine) or PATH
|
||||
(native windows) should include the location of dxcompiler if SM 6 shader
|
||||
tests are desired. If dxcompiler is not found, Shader Runner will compile the
|
||||
test shaders only in earlier shader models. The DXC source does not contain
|
||||
code for adding DXBC checksums, so the official release should be installed
|
||||
from:
|
||||
https://github.com/microsoft/DirectXShaderCompiler/releases
|
||||
|
||||
================
|
||||
Developing vkd3d
|
||||
================
|
||||
|
||||
Development of vkd3d happens on the Wine GitLab instance
|
||||
(https://gitlab.winehq.org/wine/vkd3d/). Contributors are encouraged
|
||||
to submit their patches using the merge request tool.
|
||||
|
||||
Each merge request is automatically tested with the GitLab CI
|
||||
system. See gitlab/README in the Git tree for more details.
|
||||
|
||||
============================
|
||||
Testing with the Agility SDK
|
||||
============================
|
||||
|
||||
Traditionally Microsoft have released the Direct3D 12 development files,
|
||||
including the debug layer runtime, as part of the larger Windows SDK.
|
||||
In 2021 the DirectX 12 Agility SDK was introduced, which may be updated
|
||||
independently of the Windows SDK. If you plan to run the vkd3d
|
||||
crosstests with Microsoft's debug layer you might want to get it from
|
||||
the Agility SDK, both because it's probably going to be more up-to-date
|
||||
and because the Agility SDK is a couple dozens of megabytes versus the
|
||||
gigabytes of the Windows SDK.
|
||||
|
||||
In order to build the vkd3d crosstests with Agility SDK support, follow
|
||||
these steps:
|
||||
|
||||
* The Agility SDK is distributed at [1]: select your preferred
|
||||
version (likely the most recent one) and note the number in column
|
||||
D3D12SDKVersion, which you're going to need later.
|
||||
|
||||
[1] https://devblogs.microsoft.com/directx/directx12agility/
|
||||
|
||||
* You also need to enable the "Graphics Tools" optional feature in Windows.
|
||||
Open the "Settings" applications, then look for "Apps", "Optional features",
|
||||
"View features" and install "Graphics Tools".
|
||||
|
||||
* Configure vkd3d with something like:
|
||||
'CROSSCC64="x86_64-w64-mingw32-gcc -DVKD3D_AGILITY_SDK_VERSION=<version>"',
|
||||
as well as the equivalent CROSSCC32 variable for the 32-bit
|
||||
crosstests. You'll have to replace '<version>' with the
|
||||
D3D12SDKVersion number you noted above. Then build the crosstests
|
||||
with 'make crosstest' as usual.
|
||||
|
||||
* Download the Agility SDK NuGet package, which is essentially a ZIP
|
||||
file with a .nupkg extension. Extract d3d12core.dll and
|
||||
d3d12sdklayers.dll for your architecture, and put them in the
|
||||
directory containing the crosstest executables.
|
||||
|
||||
* Now you can run the crosstests, possibly with arguments
|
||||
'--validate' and '--gbv' to enable the debug layers. They will use
|
||||
the runtime from the Agility SDK.
|
||||
|
||||
* It's also possible to use '-DVKD3D_AGILITY_SDK_PATH=/path/to/sdk/' to
|
||||
specify the directory to load the Agility SDK DLLs from at runtime.
|
||||
If relative, the path is intended to be relative to the executable
|
||||
path. If unspecified the path defaults to './'.
|
||||
|
34
configure.ac
34
configure.ac
@@ -1,5 +1,5 @@
|
||||
AC_PREREQ([2.69])
|
||||
AC_INIT([vkd3d],[1.13])
|
||||
AC_INIT([vkd3d],[1.7.1])
|
||||
|
||||
AC_CONFIG_AUX_DIR([bin])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
@@ -9,7 +9,6 @@ AC_ARG_VAR([WIDL], [widl IDL compiler])
|
||||
AC_ARG_VAR([CROSSCC32], [32-bit Windows cross compiler])
|
||||
AC_ARG_VAR([CROSSCC64], [64-bit Windows cross compiler])
|
||||
AC_ARG_WITH([ncurses], AS_HELP_STRING([--with-ncurses], [Build with the ncurses library (default: test)]))
|
||||
AC_ARG_WITH([opengl], AS_HELP_STRING([--with-opengl], [Build with the OpenGL library (default: test)]))
|
||||
AC_ARG_WITH([spirv-tools], AS_HELP_STRING([--with-spirv-tools],
|
||||
[Build with SPIRV-Tools library (default: disabled)]))
|
||||
AC_ARG_WITH([xcb], AS_HELP_STRING([--with-xcb], [Build with XCB library (default: test)]))
|
||||
@@ -28,7 +27,7 @@ AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_SED
|
||||
AC_PROG_MKDIR_P
|
||||
VKD3D_PROG_WIDL(3, 21)
|
||||
VKD3D_PROG_WIDL(3, 20)
|
||||
AS_IF([test "x$WIDL" = "xno"], [AC_MSG_WARN([widl is required to build header files.])])
|
||||
|
||||
AC_CHECK_PROGS([FLEX], [flex], [none])
|
||||
@@ -55,23 +54,16 @@ gl_LD_VERSION_SCRIPT
|
||||
dnl Check compiler specific flags
|
||||
AC_SUBST([VKD3D_CFLAGS])
|
||||
AS_IF([test "x${GCC}" = "xyes"],
|
||||
[VKD3D_CFLAGS="-Wall -pipe -D_WIN32_WINNT=0x0600"
|
||||
[VKD3D_CFLAGS="-Wall -pipe"
|
||||
VKD3D_CHECK_CFLAGS([-std=c99])
|
||||
VKD3D_CHECK_CFLAGS([-flto=auto])
|
||||
VKD3D_CHECK_CFLAGS([-fvisibility=hidden])
|
||||
VKD3D_CHECK_CFLAGS([-Wdeclaration-after-statement])
|
||||
VKD3D_CHECK_CFLAGS([-Wempty-body])
|
||||
VKD3D_CHECK_CFLAGS([-Wenum-conversion])
|
||||
VKD3D_CHECK_CFLAGS([-Wimplicit-fallthrough])
|
||||
VKD3D_CHECK_CFLAGS([-Winit-self])
|
||||
VKD3D_CHECK_CFLAGS([-Wmissing-prototypes])
|
||||
VKD3D_CHECK_CFLAGS([-Wpointer-arith])
|
||||
VKD3D_CHECK_CFLAGS([-Wshadow])
|
||||
VKD3D_CHECK_CFLAGS([-Wshift-overflow=2])
|
||||
VKD3D_CHECK_CFLAGS([-Wtype-limits])
|
||||
VKD3D_CHECK_CFLAGS([-Wunused-but-set-parameter])
|
||||
VKD3D_CHECK_CFLAGS([-Wvla])
|
||||
VKD3D_CHECK_CFLAGS([-Wwrite-strings])
|
||||
VKD3D_CHECK_CFLAGS([-Wpointer-arith])
|
||||
VKD3D_CHECK_CFLAGS([-Wl,--no-undefined])])
|
||||
|
||||
dnl Check for cross compilers
|
||||
@@ -91,7 +83,7 @@ AS_IF([test "x$ac_cv_header_spirv_unified1_GLSL_std_450_h" != "xyes" \
|
||||
-a "x$ac_cv_header_vulkan_GLSL_std_450_h" != "xyes"],
|
||||
[AC_MSG_ERROR([GLSL.std.450.h not found.])])
|
||||
|
||||
VKD3D_CHECK_VULKAN_HEADER_VERSION([228], [AC_MSG_ERROR([Vulkan headers are too old, 1.3.228 is required.])])
|
||||
VKD3D_CHECK_VULKAN_HEADER_VERSION([139], [AC_MSG_ERROR([Vulkan headers are too old, 1.2.139 is required.])])
|
||||
|
||||
AC_CHECK_DECL([SpvCapabilityDemoteToHelperInvocationEXT],, [AC_MSG_ERROR([SPIR-V headers are too old.])], [
|
||||
#ifdef HAVE_SPIRV_UNIFIED1_SPIRV_H
|
||||
@@ -128,20 +120,10 @@ AS_IF([test "x$SONAME_LIBVULKAN" = "x"],
|
||||
[VKD3D_CHECK_VULKAN],
|
||||
[AC_DEFINE_UNQUOTED([SONAME_LIBVULKAN],["$SONAME_LIBVULKAN"],[Define to the shared object name of the Vulkan library.])])
|
||||
|
||||
AC_ARG_VAR([SONAME_LIBDXCOMPILER], [shared object name for the dxcompiler library])
|
||||
AC_ARG_VAR([DXCOMPILER_LIBS], [linker flags for the dxcompiler library])
|
||||
AS_IF([test "x$SONAME_LIBDXCOMPILER" = "x"],
|
||||
[VKD3D_CHECK_SONAME([dxcompiler], [DxcCreateInstance], [HAVE_DXCOMPILER=yes], [HAVE_DXCOMPILER=no], [$DXCOMPILER_LIBS])],
|
||||
[AC_DEFINE_UNQUOTED([SONAME_LIBDXCOMPILER],["$SONAME_LIBDXCOMPILER"],[Define to the shared object name of the dxcompiler library.])])
|
||||
|
||||
AS_IF([test "x$with_ncurses" != "xno"],
|
||||
[PKG_CHECK_MODULES([NCURSES], [ncurses],
|
||||
[AC_DEFINE([HAVE_NCURSES], [1], [Define to 1 if you have ncurses.]) with_ncurses=yes],
|
||||
[with_ncurses=no])])
|
||||
AS_IF([test "x$with_opengl" != "xno"],
|
||||
[PKG_CHECK_MODULES([OPENGL], [egl opengl],
|
||||
[AC_DEFINE([HAVE_OPENGL], [1], [Define to 1 if you have OpenGL.]) with_opengl=yes],
|
||||
[with_opengl=no])])
|
||||
AS_IF([test "x$with_spirv_tools" = "xyes"],
|
||||
[PKG_CHECK_MODULES([SPIRV_TOOLS], [SPIRV-Tools-shared],
|
||||
[AC_DEFINE([HAVE_SPIRV_TOOLS], [1], [Define to 1 if you have SPIRV-Tools.])])],
|
||||
@@ -159,9 +141,7 @@ VKD3D_CHECK_FUNC([HAVE_BUILTIN_CLZ], [__builtin_clz], [__builtin_clz(0)])
|
||||
VKD3D_CHECK_FUNC([HAVE_BUILTIN_POPCOUNT], [__builtin_popcount], [__builtin_popcount(0)])
|
||||
VKD3D_CHECK_FUNC([HAVE_BUILTIN_ADD_OVERFLOW], [__builtin_add_overflow], [__builtin_add_overflow(0, 0, (int *)0)])
|
||||
VKD3D_CHECK_FUNC([HAVE_SYNC_ADD_AND_FETCH], [__sync_add_and_fetch], [__sync_add_and_fetch((int *)0, 0)])
|
||||
VKD3D_CHECK_FUNC([HAVE_SYNC_BOOL_COMPARE_AND_SWAP], [__sync_bool_compare_and_swap], [__sync_bool_compare_and_swap((int *)0, 0, 0)])
|
||||
VKD3D_CHECK_FUNC([HAVE_ATOMIC_EXCHANGE_N], [__atomic_exchange_n], [__atomic_exchange_n((int *)0, 0, 0)])
|
||||
AC_CHECK_FUNCS([gettid])
|
||||
VKD3D_CHECK_FUNC([HAVE_SYNC_SUB_AND_FETCH], [__sync_sub_and_fetch], [__sync_sub_and_fetch((int *)0, 0)])
|
||||
|
||||
dnl Makefiles
|
||||
case $host_os in
|
||||
@@ -198,10 +178,8 @@ AS_ECHO(["
|
||||
widl: ${WIDL}
|
||||
|
||||
Have ncurses: ${with_ncurses}
|
||||
Have OpenGL: ${with_opengl}
|
||||
Have SPIRV-Tools: ${with_spirv_tools}
|
||||
Have xcb: ${HAVE_XCB}
|
||||
Have dxcompiler: ${HAVE_DXCOMPILER}
|
||||
|
||||
Building demos: ${enable_demos}
|
||||
Building tests: ${enable_tests}
|
||||
|
@@ -19,7 +19,7 @@
|
||||
|
||||
#define VK_NO_PROTOTYPES
|
||||
#define VK_USE_PLATFORM_XCB_KHR
|
||||
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_13
|
||||
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_7
|
||||
#include "config.h"
|
||||
#include <vkd3d.h>
|
||||
#include <vkd3d_utils.h>
|
||||
@@ -113,9 +113,6 @@ struct demo_swapchain
|
||||
VkDevice vk_device;
|
||||
ID3D12CommandQueue *command_queue;
|
||||
|
||||
ID3D12Fence *present_fence;
|
||||
unsigned long long present_count;
|
||||
|
||||
uint32_t current_buffer;
|
||||
unsigned int buffer_count;
|
||||
ID3D12Resource *buffers[1];
|
||||
@@ -532,17 +529,6 @@ static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *c
|
||||
}
|
||||
swapchain->buffer_count = image_count;
|
||||
free(vk_images);
|
||||
|
||||
if (FAILED(ID3D12Device_CreateFence(d3d12_device, 0, 0, &IID_ID3D12Fence, (void **)&swapchain->present_fence)))
|
||||
{
|
||||
for (i = 0; i < image_count; ++i)
|
||||
{
|
||||
ID3D12Resource_Release(swapchain->buffers[i]);
|
||||
}
|
||||
free(swapchain);
|
||||
goto fail;
|
||||
}
|
||||
swapchain->present_count = 0;
|
||||
ID3D12Device_Release(d3d12_device);
|
||||
|
||||
ID3D12CommandQueue_AddRef(swapchain->command_queue = command_queue);
|
||||
@@ -588,12 +574,6 @@ static inline void demo_swapchain_present(struct demo_swapchain *swapchain)
|
||||
present_desc.pImageIndices = &swapchain->current_buffer;
|
||||
present_desc.pResults = NULL;
|
||||
|
||||
/* Synchronize vkd3d_acquire_vk_queue() with the Direct3D 12 work
|
||||
* already submitted to the command queue. */
|
||||
++swapchain->present_count;
|
||||
ID3D12CommandQueue_Signal(swapchain->command_queue, swapchain->present_fence, swapchain->present_count);
|
||||
ID3D12Fence_SetEventOnCompletion(swapchain->present_fence, swapchain->present_count, NULL);
|
||||
|
||||
vk_queue = vkd3d_acquire_vk_queue(swapchain->command_queue);
|
||||
vkQueuePresentKHR(vk_queue, &present_desc);
|
||||
vkd3d_release_vk_queue(swapchain->command_queue);
|
||||
@@ -609,7 +589,6 @@ static inline void demo_swapchain_destroy(struct demo_swapchain *swapchain)
|
||||
unsigned int i;
|
||||
|
||||
ID3D12CommandQueue_Release(swapchain->command_queue);
|
||||
ID3D12Fence_Release(swapchain->present_fence);
|
||||
for (i = 0; i < swapchain->buffer_count; ++i)
|
||||
{
|
||||
ID3D12Resource_Release(swapchain->buffers[i]);
|
||||
|
@@ -888,9 +888,6 @@ static int cxg_main(void)
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
/* Do not trigger -Wmissing-prototypes. */
|
||||
int wmain(void);
|
||||
|
||||
int wmain(void)
|
||||
#else
|
||||
int main(void)
|
||||
|
@@ -401,9 +401,6 @@ static int cxt_main(void)
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
/* Do not trigger -Wmissing-prototypes. */
|
||||
int wmain(void);
|
||||
|
||||
int wmain(void)
|
||||
#else
|
||||
int main(void)
|
||||
|
@@ -1,79 +0,0 @@
|
||||
=====================
|
||||
vkd3d testing scripts
|
||||
=====================
|
||||
|
||||
These scripts are used by the GitLab CI feature to automatically run
|
||||
the vkd3d tests on each merge request.
|
||||
|
||||
The CI target image-linux, in the file image.yml, builds a Docker
|
||||
image based on Debian bookworm with all the packages required for
|
||||
testing, and uploads it to the GitLab container registry. The Docker
|
||||
script is in the file image.docker. Most of the dependencies are
|
||||
installed directly from the Debian repositories, with a few
|
||||
exceptions:
|
||||
|
||||
* widl is compiled from Wine sources, because installing it from the
|
||||
Debian repositories would carry all the rest of Wine and make the
|
||||
Docker image quite larger;
|
||||
|
||||
* SPIRV-Tools are recompiled from sources, because the packages in
|
||||
Debian do not ship shared objects and are not multiarch-compatible;
|
||||
in order to make the packages multiarch-compatible, the utilities
|
||||
are dropped (they're not used by the CI anyway);
|
||||
|
||||
* llvmpipe from Mesa 24.0.1 is compiled (in addition to version
|
||||
22.3.6 available in Debian bookworm), because some Vulkan features
|
||||
required by vkd3d are not available in Mesa 22.3.6.
|
||||
|
||||
The file build.yml contains the actual testing targets. Currently
|
||||
vkd3d is tested on Linux, on x86-64 and i386, each architecture with
|
||||
two different Vulkan drivers (both from Mesa): llvmpipe (a software
|
||||
implementation) and RADV (a hardware implementation backed by an AMD
|
||||
GPU). vkd3d is also tested on macOS, with an Intel processor, using
|
||||
MoltenVK as the Vulkan driver. The llvmpipe and macOS jobs are
|
||||
currently allowed to fail.
|
||||
|
||||
Additionally, MinGW is used to build PE binaries for both vkd3d and
|
||||
its crosstests, for both 32 and 64 bit. The PE crosstests are executed
|
||||
on Windows 10 to check that behavior imposed by the tests corresponds
|
||||
to Microsoft's D3D12 implementation. The rendering backend is
|
||||
currently Window's WARP software implementation.
|
||||
|
||||
The testing logs are available as CI artifacts, as well as the PE
|
||||
modules built by the crosstest and MinGW jobs.
|
||||
|
||||
Some custom runner configuration is required in order to run the tests
|
||||
on an AMD GPU. Specifically, a runner tagged with `amd-gpu' must be
|
||||
available with the following features:
|
||||
|
||||
* of course a sufficiently recent AMD GPU must be available to the
|
||||
host;
|
||||
|
||||
* the host kernel must have the appropriate driver and firmware
|
||||
installed;
|
||||
|
||||
* the runner must forward the DRI nodes to the guest; this can be
|
||||
configured by adding the line
|
||||
|
||||
devices = ["/dev/dri"]
|
||||
|
||||
to the relevant [runners.docker] section in the config.toml file;
|
||||
|
||||
* the DRI render nodes must be readable and writable by GID 800,
|
||||
either because they belong to that group (e.g. because the group
|
||||
`render', which typically owns those files, has GID 800) or via a
|
||||
FS ACL; such stipulation is needed because in Debian group `render'
|
||||
is created dynamically, therefore has no predictable GID: the use
|
||||
of a fixed GID enables the guest system to be set up so that the
|
||||
user running the tests can access the render nodes.
|
||||
|
||||
A runner on an Intel macOS system tagged with `mac' must also be
|
||||
available to run the macOS tests. Unfortunately a system like Docker
|
||||
is not available in this case to provide an isolated standard
|
||||
environment for running the tests. All the software required to
|
||||
compile and run the tests will therefore have to be installed directly
|
||||
on the host system. Complete instructions to setup the macOS are
|
||||
currently not available.
|
||||
|
||||
Finally, a runner tagged with `win10-21h2' must be available and
|
||||
submit jobs to a Windows 10 virtual machine.
|
@@ -1,28 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
COMMIT=$(printf '%03d-%s' $(git cherry $CI_MERGE_REQUEST_DIFF_BASE_SHA HEAD^ | wc -l) $(git rev-parse --short HEAD))
|
||||
|
||||
echo -e "\e[0Ksection_start:`date +%s`:commit_$COMMIT\r\e[0KBuilding commit $COMMIT"
|
||||
|
||||
set -Eeuxo pipefail
|
||||
|
||||
# Building with -Wno-array-bounds because MinGW headers currently emit
|
||||
# a lot of those
|
||||
|
||||
./autogen.sh
|
||||
rm -fr build
|
||||
mkdir build
|
||||
cd build
|
||||
../configure CROSSCC64="x86_64-w64-mingw32-gcc -Wno-array-bounds -Werror" CROSSCC32="i686-w64-mingw32-gcc -Wno-array-bounds -Werror" && \
|
||||
make -j$(nproc) crosstest || \
|
||||
touch ../pipeline_failed
|
||||
|
||||
mkdir -p ../artifacts/$COMMIT
|
||||
rsync -Rr config.log tests/*.txt tests/*.exe ../artifacts/$COMMIT || true
|
||||
|
||||
# Make the driver easily available to the Windows CI job
|
||||
cp tests/driver.cross64.exe ../artifacts
|
||||
|
||||
git reset --hard
|
||||
|
||||
echo -e "\e[0Ksection_end:`date +%s`:commit_$COMMIT\r\e[0K"
|
@@ -1,30 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
COMMIT=$(printf '%03d-%s' $(git cherry $CI_MERGE_REQUEST_DIFF_BASE_SHA HEAD^ | wc -l) $(git rev-parse --short HEAD))
|
||||
|
||||
echo -e "\e[0Ksection_start:`date +%s`:commit_$COMMIT\r\e[0KBuilding commit $COMMIT"
|
||||
|
||||
set -Eeuxo pipefail
|
||||
|
||||
./autogen.sh
|
||||
rm -fr build
|
||||
mkdir build
|
||||
cd build
|
||||
export LD_LIBRARY_PATH="/usr/local/lib:${LD_LIBRARY_PATH-}"
|
||||
if ../configure --enable-demos --with-spirv-tools DXCOMPILER_LIBS="-L/usr/local/lib" CFLAGS="-g -O2 -Werror" \
|
||||
CPPFLAGS="-DVKD3D_SHADER_UNSUPPORTED_DXIL -DVKD3D_SHADER_UNSUPPORTED_GLSL -DVKD3D_ABORT_ON_ERR" && \
|
||||
make -j$(nproc) ; then
|
||||
make -j$(nproc) AM_COLOR_TESTS=always check || \
|
||||
touch ../tests_failed
|
||||
else
|
||||
touch ../build_failed
|
||||
fi
|
||||
|
||||
cat tests/d3d12.log | grep -E 'd3d12: [0-9]+ tests executed' || true
|
||||
|
||||
mkdir -p ../artifacts/$COMMIT
|
||||
rsync -Rr config.log doc/* test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT || true
|
||||
|
||||
git reset --hard
|
||||
|
||||
echo -e "\e[0Ksection_end:`date +%s`:commit_$COMMIT\r\e[0K"
|
@@ -1,30 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
COMMIT=$(printf '%03d-%s' $(git cherry $CI_MERGE_REQUEST_DIFF_BASE_SHA HEAD^ | wc -l) $(git rev-parse --short HEAD))
|
||||
|
||||
echo -e "\033[0Ksection_start:`date +%s`:commit_$COMMIT\r\033[0KBuilding commit $COMMIT"
|
||||
|
||||
set -Eeuxo pipefail
|
||||
|
||||
./autogen.sh
|
||||
rm -fr build
|
||||
mkdir build
|
||||
cd build
|
||||
if ../configure CFLAGS="-I/opt/homebrew/opt/vulkan-headers/include -I/opt/homebrew/opt/spirv-headers/include -g -O2 -Wno-implicit-fallthrough -Wno-ignored-attributes -Wno-unknown-attributes -Wno-unused-but-set-variable -Werror" \
|
||||
CPPFLAGS="-DVKD3D_ABORT_ON_ERR" \
|
||||
VULKAN_LIBS=-L/opt/homebrew/opt/vulkan-loader/lib --with-spirv-tools && \
|
||||
make -j$(sysctl -n hw.ncpu) ; then
|
||||
make -j$(sysctl -n hw.ncpu) AM_COLOR_TESTS=always check || \
|
||||
touch ../tests_failed
|
||||
else
|
||||
touch ../build_failed
|
||||
fi
|
||||
|
||||
cat tests/d3d12.log | grep -E 'd3d12: [0-9]+ tests executed' || true
|
||||
|
||||
mkdir -p ../artifacts/$COMMIT
|
||||
rsync -Rr config.log test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT || true
|
||||
|
||||
git reset --hard
|
||||
|
||||
echo -e "\033[0Ksection_end:`date +%s`:commit_$COMMIT\r\033[0K"
|
@@ -1,28 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
COMMIT=$(printf '%03d-%s' $(git cherry $CI_MERGE_REQUEST_DIFF_BASE_SHA HEAD^ | wc -l) $(git rev-parse --short HEAD))
|
||||
|
||||
echo -e "\e[0Ksection_start:`date +%s`:commit_$COMMIT\r\e[0KBuilding commit $COMMIT"
|
||||
|
||||
set -Eeuxo pipefail
|
||||
|
||||
./autogen.sh
|
||||
rm -fr build
|
||||
mkdir build
|
||||
cd build
|
||||
mkdir vulkan-headers
|
||||
cp -r /usr/include/vulkan /usr/include/vk_video /usr/include/spirv vulkan-headers
|
||||
../configure --enable-demos --disable-doxygen-doc --without-ncurses --host=$HOST \
|
||||
SONAME_LIBVULKAN="vulkan-1.dll" CPPFLAGS="-I$PWD/vulkan-headers -DVKD3D_ABORT_ON_ERR" \
|
||||
CFLAGS="-g -O2 -Wno-array-bounds -Werror" LDFLAGS="-static-libgcc" && \
|
||||
make -j$(nproc) && \
|
||||
make -j$(nproc) install DESTDIR="$PWD/destdir" || \
|
||||
touch ../pipeline_failed
|
||||
|
||||
mkdir -p ../artifacts/$COMMIT
|
||||
cp config.log ../artifacts/$COMMIT || true
|
||||
cp destdir/usr/local/bin/* ../artifacts/$COMMIT || true
|
||||
|
||||
git reset --hard
|
||||
|
||||
echo -e "\e[0Ksection_end:`date +%s`:commit_$COMMIT\r\e[0K"
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user