diff --git a/tests/hlsl/srv-buffers.shader_test b/tests/hlsl/srv-buffers.shader_test index 8e69a3fea..fb9011499 100644 --- a/tests/hlsl/srv-buffers.shader_test +++ b/tests/hlsl/srv-buffers.shader_test @@ -23,7 +23,7 @@ float4 main() : sv_target [test] uniform 0 float4 100 200 300 400 uniform 4 float4 1000 2000 3000 4000 -todo(msl) draw quad +draw quad probe (0, 0) rgba (200, 3000, 4, 7) @@ -40,7 +40,7 @@ float4 main() : sv_target [test] uniform 0 float4 100 200 300 400 uniform 4 float4 1000 2000 3000 4000 -todo(msl) draw quad +draw quad probe (0, 0) rgba (4000.0, 8.0, 9.0, 10.0) @@ -67,7 +67,7 @@ float4 main() : sv_target } [test] -todo(msl) draw quad +draw quad probe (0, 0) rgba (3.0, 4.0, -1.0, -1.0) @@ -88,7 +88,7 @@ float4 main() : sv_target } [test] -todo(msl) draw quad +draw quad probe (0, 0) rgba (4.0, 5.0, 6.0, 7.0) @@ -101,7 +101,7 @@ float4 main() : sv_target } [test] -todo(msl) draw quad +draw quad probe (0, 0) rgba (8.0, 9.0, 10.0, 11.0) @@ -138,10 +138,10 @@ float4 main() : sv_target [test] uniform 0 int 2 -todo(msl) draw quad +draw quad probe (0, 0) rgba (8.0, 9.0, 10.0, 11.0) uniform 0 int 0 -todo(msl) draw quad +draw quad probe (0, 0) rgba (0.0, 1.0, 2.0, 3.0) diff --git a/tests/shader_runner_metal.m b/tests/shader_runner_metal.m index f8f1c4a39..b3a20f2aa 100644 --- a/tests/shader_runner_metal.m +++ b/tests/shader_runner_metal.m @@ -76,6 +76,7 @@ static MTLPixelFormat get_metal_pixel_format(DXGI_FORMAT format) return MTLPixelFormatR32Float; case DXGI_FORMAT_R32_SINT: return MTLPixelFormatR32Sint; + case DXGI_FORMAT_UNKNOWN: case DXGI_FORMAT_R32_TYPELESS: case DXGI_FORMAT_R32_UINT: return MTLPixelFormatR32Uint; @@ -232,18 +233,6 @@ static void init_resource_texture(struct metal_runner *runner, id device = runner->device; MTLTextureDescriptor *desc; - switch (params->desc.type) - { - case RESOURCE_TYPE_RENDER_TARGET: - case RESOURCE_TYPE_DEPTH_STENCIL: - case RESOURCE_TYPE_TEXTURE: - break; - - case RESOURCE_TYPE_UAV: - case RESOURCE_TYPE_VERTEX_BUFFER: - return; - } - if (params->desc.sample_count > 1) { if (params->desc.level_count > 1) @@ -260,6 +249,9 @@ static void init_resource_texture(struct metal_runner *runner, desc = [[MTLTextureDescriptor alloc] init]; switch (params->desc.dimension) { + case RESOURCE_DIMENSION_BUFFER: + desc.textureType = MTLTextureTypeTextureBuffer; + break; case RESOURCE_DIMENSION_2D: if (params->desc.sample_count > 1) desc.textureType = params->desc.layer_count > 1 ? MTLTextureType2DMultisampleArray @@ -360,10 +352,21 @@ static struct resource *metal_runner_create_resource(struct shader_runner *r, co resource = calloc(1, sizeof(*resource)); init_resource(&resource->r, params); - if (params->desc.dimension == RESOURCE_DIMENSION_BUFFER) - init_resource_buffer(runner, resource, params); - else - init_resource_texture(runner, resource, params); + switch (params->desc.type) + { + case RESOURCE_TYPE_RENDER_TARGET: + case RESOURCE_TYPE_DEPTH_STENCIL: + case RESOURCE_TYPE_TEXTURE: + init_resource_texture(runner, resource, params); + break; + + case RESOURCE_TYPE_VERTEX_BUFFER: + init_resource_buffer(runner, resource, params); + break; + + case RESOURCE_TYPE_UAV: + break; + } return &resource->r; } @@ -581,11 +584,6 @@ static bool encode_argument_buffer(struct metal_runner *runner, { case RESOURCE_TYPE_TEXTURE: [encoder setTexture:resource->texture atIndex:index++]; - if (!resource->texture) - { - trace("Unsupported buffer texture\n"); - return false; - } [command_encoder useResource:resource->texture usage:MTLResourceUsageRead stages:MTLRenderStageVertex | MTLRenderStageFragment];