vkd3d-shader/msl: Implement support for VKD3DSPR_SAMPLEMASK registers.

This commit is contained in:
Henri Verbeet
2025-05-23 09:32:21 +02:00
parent ea5cf883fa
commit fc6249a228
Notes: Henri Verbeet 2025-06-09 16:31:45 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1547
3 changed files with 33 additions and 3 deletions

View File

@@ -14,11 +14,11 @@ float4 main(out uint sample_mask : SV_Coverage) : SV_Target
[test]
clear rtv 0 0.0 0.0 0.0 0.0
todo(glsl | msl) draw quad
todo(glsl) draw quad
probe (0, 0) rgba (0.5, 0.5, 0.5, 0.5)
sample mask 0x0b
clear rtv 0 0.0 0.0 0.0 0.0
todo(glsl | msl) draw quad
todo(glsl) draw quad
probe (0, 0) rgba (0.25, 0.25, 0.25, 0.25)

View File

@@ -24,8 +24,13 @@
#define BOOL VKD3D_BOOLEAN
#include "shader_runner.h"
#include "vkd3d_d3dcommon.h"
#undef interface
#undef BOOL
@interface MTLRenderPipelineDescriptor ()
@property (nonatomic, readwrite) NSUInteger sampleMask;
@end
static const MTLResourceOptions DEFAULT_BUFFER_RESOURCE_OPTIONS = MTLResourceCPUCacheModeDefaultCache
| MTLResourceHazardTrackingModeDefault;
@@ -687,6 +692,7 @@ static bool metal_runner_draw(struct shader_runner *r, D3D_PRIMITIVE_TOPOLOGY to
}
}
pipeline_desc.rasterSampleCount = runner->r.sample_count;
pipeline_desc.sampleMask = runner->r.sample_mask;
viewport.width = fb_width;
viewport.height = fb_height;