Calling either SetViewportExtEx or SetWindowExtEx
fixes the viewport(MAPPING_FixIsotropic), but if both are called then it is fixed twice.
Then the mapping matrix will be incorrect and will not be calculated
using the values of viewport and wnd.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5512
Includes !782 to prevent the 32-bit Windows CI crashing.
--
v11: vkd3d-shader/dxil: Support SV_Depth, SV_DepthGreaterEqual and SV_DepthLessEqual.
tests/hlsl: Add tests for SV_DepthLessEqual and SV_DepthGreaterEqual.
tests/hlsl: Add tests for SV_Depth.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/777
--
v16: vkd3d: Support aliased tile binding if available.
vkd3d: Implement ID3D12CommandQueue::UpdateTileMappings() for textures.
vkd3d: Implement ID3D12CommandQueue::UpdateTileMappings() for buffers.
vkd3d: Pre-bind sparse texture mip tails.
tests/d3d12: Add a test for freeing underlying memory of a reserved resource.
tests/d3d12: Add tests for UpdateTileMappings().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/631
Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl.c:
> type->reg_size[HLSL_REGSET_TEXTURES] = 1;
> break;
>
> + case HLSL_CLASS_UAV:
> + type->reg_size[HLSL_REGSET_UAVS] = 1;
> + break;
Maybe you just don't care, but this could be
```c
case HLSL_CLASS_SAMPLER:
case HLSL_CLASS_TEXTURE:
case HLSL_CLASS_UAV:
type->reg_size[type_get_regset(type)] = 1;
break;
```
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/781#note_67911
Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl.c:
> return type->reg_size[regset];
> }
>
> +static struct hlsl_type *hlsl_new_simple_type(struct hlsl_ctx *ctx, const char *name, enum hlsl_type_class class)
> +{
> + struct hlsl_type *type;
> +
> + if (!(type = hlsl_alloc(ctx, sizeof(*type))))
> + return NULL;
> + if (!(type->name = hlsl_strdup(ctx, name)))
> + {
> + vkd3d_free(type);
> + return NULL;
> + }
> + type->class = class;
This doesn't set `dimx` and `dimy`, while in the documentation for `struct hlsl_type` we specify them for all classes. Either relaxing the specification or setting them here is fine for me, but at least one of those should happen, I think.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/781#note_67910
Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/d3dbc.c:
> return D3DXPC_STRUCT;
> case HLSL_CLASS_VECTOR:
> return D3DXPC_VECTOR;
> - default:
> - ERR("Invalid class %#x.\n", type->class);
> - vkd3d_unreachable();
> + case HLSL_CLASS_VOID:
> + /* This shouldn't happen. */
Is the comment useful? Doesn't the following `vkd3d_unreachable()` already convey that information?
Also, could you please add a `break`? clang seems to be touchy about it:
```
../libs/vkd3d-shader/d3dbc.c:1521:30: error: label at end of compound statement: expected statement
case HLSL_CLASS_VOID:
^
;
1 error generated.
make[1]: *** [libs/vkd3d-shader/libvkd3d_shader_la-d3dbc.lo] Error 1
```
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/781#note_67909
Shader Model 6 wave ops require instructions not available by extension in SPIR-V 1.0, and device support info is found in VkPhysicalDeviceSubgroupProperties, which also has no equivalent by extension in Vulkan 1.0.
--
v3: vkd3d-shader: Introduce a wave ops feature flag.
vkd3d: Use Vulkan 1.1 if available.
vkd3d-shader: Introduce SPIRV_ENVIRONMENT_VULKAN_1_1.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/776