mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
Compare commits
3 Commits
vkd3d-1.12
...
vkd3d-1.7.
Author | SHA1 | Date | |
---|---|---|---|
|
154acd2c2b | ||
|
cb2acc35f2 | ||
|
7b9b0179ec |
66
ANNOUNCE
66
ANNOUNCE
@@ -1,17 +1,12 @@
|
|||||||
The Wine team is proud to announce that release 1.7 of vkd3d, the Direct3D to
|
The Wine team is proud to announce that release 1.7.1 of vkd3d, the Direct3D to
|
||||||
Vulkan translation library, is now available.
|
Vulkan translation library, is now available.
|
||||||
|
|
||||||
This release contains improvements that are listed in the release notes below.
|
This is a bugfix release, only containing targeted fixes for a couple
|
||||||
The main highlights are:
|
of defects that had slipped in in vkd3d 1.7.
|
||||||
|
|
||||||
- Support for many more HLSL features and intrinsics.
|
|
||||||
- Much improved support for the Direct3D shader model 1/2/3 HLSL profiles.
|
|
||||||
- Public vkd3d-shader API for parsing and serialising DXBC blobs.
|
|
||||||
- Miscellaneous bug fixes.
|
|
||||||
|
|
||||||
The source is available from the following location:
|
The source is available from the following location:
|
||||||
|
|
||||||
https://dl.winehq.org/vkd3d/source/vkd3d-1.7.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:
|
The current source can also be pulled directly from the git repository:
|
||||||
|
|
||||||
@@ -22,49 +17,20 @@ for the complete list.
|
|||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
What's new in vkd3d 1.7
|
What's new in vkd3d 1.7.1
|
||||||
=======================
|
=========================
|
||||||
|
|
||||||
|
|
||||||
*** libvkd3d-shader
|
*** libvkd3d
|
||||||
|
|
||||||
- New features for the HLSL source type:
|
- Release 1.7 has a bug that causes an internal mutex in its command
|
||||||
- Support for calling user-defined functions.
|
queue implementation to be unlocked too early under certain usage
|
||||||
- Support for array parameters to user-defined functions.
|
patterns. This is known to further cause internal inconsistencies
|
||||||
- Much improved support for the Direct3D shader model 1/2/3 profiles.
|
that manifest as program deadlocks for some programs. In release
|
||||||
- Support for the SV_DispatchThreadID, SV_GroupID, and SV_GroupThreadID
|
1.7.1 the mutex is correctly kept locked until required.
|
||||||
compute shader system-value semantics.
|
|
||||||
- Support for the optional "offset" parameter of the texture object Load()
|
|
||||||
method.
|
|
||||||
- Support for the all() intrinsic function.
|
|
||||||
- Support for the distance() intrinsic function.
|
|
||||||
- Support for the exp() and exp2() intrinsic functions.
|
|
||||||
- Support for the frac() intrinsic function.
|
|
||||||
- Support for the lit() intrinsic function.
|
|
||||||
- Support for the reflect() intrinsic function.
|
|
||||||
- Support for the sin() and cos() intrinsic functions.
|
|
||||||
- Support for the smoothstep() intrinsic function.
|
|
||||||
- Support for the sqrt() and rsqrt() intrinsic functions.
|
|
||||||
- Support for the step() intrinsic function.
|
|
||||||
- Support for the transpose() intrinsic function.
|
|
||||||
- Support for the case-insensitive variants of the "float" and "dword" data
|
|
||||||
types.
|
|
||||||
- Partial support for minimum precision data types like "min16float". These
|
|
||||||
are currently interpreted as their regular counterparts.
|
|
||||||
- Improved constant propagation support, in particular to constant
|
|
||||||
propagation through swizzles.
|
|
||||||
|
|
||||||
- HLSL static variables are now properly zero-initialised.
|
*** libvkd3d-utils
|
||||||
|
|
||||||
- The Direct3D shader model 4 and 5 disassembler outputs sample counts for
|
- Symbol D3D12CreateDevice is mistakenly not exported in release 1.7,
|
||||||
multi-sampled resource declarations.
|
breaking library clients that need it. The symbol is exported again
|
||||||
|
in release 1.7.1.
|
||||||
- New interfaces:
|
|
||||||
- vkd3d_shader_parse_dxbc() provides support for parsing DXBC blobs.
|
|
||||||
- vkd3d_shader_serialize_dxbc() provides support for serialising DXBC blobs.
|
|
||||||
- vkd3d_shader_free_dxbc() is used to free vkd3d_shader_dxbc_desc
|
|
||||||
structures, as returned by vkd3d_shader_parse_dxbc().
|
|
||||||
- The VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE compile option
|
|
||||||
can be used to specify whether SPIR-V shaders targeting Vulkan
|
|
||||||
environments should write point sizes for geometry and tessellation
|
|
||||||
shaders. If left unspecified, point sizes will be written.
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ([2.69])
|
AC_PREREQ([2.69])
|
||||||
AC_INIT([vkd3d],[1.7])
|
AC_INIT([vkd3d],[1.7.1])
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR([bin])
|
AC_CONFIG_AUX_DIR([bin])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
@@ -85,7 +85,7 @@ HRESULT WINAPI D3D12CreateDeviceVKD3D(IUnknown *adapter, D3D_FEATURE_LEVEL minim
|
|||||||
return vkd3d_create_device(&device_create_info, iid, device);
|
return vkd3d_create_device(&device_create_info, iid, device);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter,
|
VKD3D_UTILS_API HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter,
|
||||||
D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device)
|
D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device)
|
||||||
{
|
{
|
||||||
return D3D12CreateDeviceVKD3D(adapter, minimum_feature_level, iid, device, VKD3D_API_VERSION_1_0);
|
return D3D12CreateDeviceVKD3D(adapter, minimum_feature_level, iid, device, VKD3D_API_VERSION_1_0);
|
||||||
|
@@ -6781,16 +6781,16 @@ static bool d3d12_command_queue_op_array_append(struct d3d12_command_queue_op_ar
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT d3d12_command_queue_fixup_after_flush(struct d3d12_command_queue *queue, unsigned int done_count)
|
static void d3d12_command_queue_delete_aux_ops(struct d3d12_command_queue *queue,
|
||||||
|
unsigned int done_count)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
|
||||||
|
|
||||||
queue->aux_op_queue.count -= done_count;
|
queue->aux_op_queue.count -= done_count;
|
||||||
memmove(queue->aux_op_queue.ops, &queue->aux_op_queue.ops[done_count],
|
memmove(queue->aux_op_queue.ops, &queue->aux_op_queue.ops[done_count],
|
||||||
queue->aux_op_queue.count * sizeof(*queue->aux_op_queue.ops));
|
queue->aux_op_queue.count * sizeof(*queue->aux_op_queue.ops));
|
||||||
|
}
|
||||||
|
|
||||||
vkd3d_mutex_lock(&queue->op_mutex);
|
static HRESULT d3d12_command_queue_fixup_after_flush_locked(struct d3d12_command_queue *queue)
|
||||||
|
{
|
||||||
d3d12_command_queue_swap_queues(queue);
|
d3d12_command_queue_swap_queues(queue);
|
||||||
|
|
||||||
d3d12_command_queue_op_array_append(&queue->op_queue, queue->aux_op_queue.count, queue->aux_op_queue.ops);
|
d3d12_command_queue_op_array_append(&queue->op_queue, queue->aux_op_queue.count, queue->aux_op_queue.ops);
|
||||||
@@ -6798,11 +6798,7 @@ static HRESULT d3d12_command_queue_fixup_after_flush(struct d3d12_command_queue
|
|||||||
queue->aux_op_queue.count = 0;
|
queue->aux_op_queue.count = 0;
|
||||||
queue->is_flushing = false;
|
queue->is_flushing = false;
|
||||||
|
|
||||||
hr = d3d12_command_queue_record_as_blocked(queue);
|
return d3d12_command_queue_record_as_blocked(queue);
|
||||||
|
|
||||||
vkd3d_mutex_unlock(&queue->op_mutex);
|
|
||||||
|
|
||||||
return hr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT d3d12_command_queue_flush_ops(struct d3d12_command_queue *queue, bool *flushed_any)
|
static HRESULT d3d12_command_queue_flush_ops(struct d3d12_command_queue *queue, bool *flushed_any)
|
||||||
@@ -6855,7 +6851,9 @@ static HRESULT d3d12_command_queue_flush_ops_locked(struct d3d12_command_queue *
|
|||||||
if (op->u.wait.value > fence->max_pending_value)
|
if (op->u.wait.value > fence->max_pending_value)
|
||||||
{
|
{
|
||||||
vkd3d_mutex_unlock(&fence->mutex);
|
vkd3d_mutex_unlock(&fence->mutex);
|
||||||
return d3d12_command_queue_fixup_after_flush(queue, i);
|
d3d12_command_queue_delete_aux_ops(queue, i);
|
||||||
|
vkd3d_mutex_lock(&queue->op_mutex);
|
||||||
|
return d3d12_command_queue_fixup_after_flush_locked(queue);
|
||||||
}
|
}
|
||||||
d3d12_command_queue_wait_locked(queue, fence, op->u.wait.value);
|
d3d12_command_queue_wait_locked(queue, fence, op->u.wait.value);
|
||||||
d3d12_fence_decref(fence);
|
d3d12_fence_decref(fence);
|
||||||
|
Reference in New Issue
Block a user