mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests/shader_runner_metal: Implement buffer textures.
This commit is contained in:
Notes:
Henri Verbeet
2025-07-14 18:53:23 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1609
@@ -23,7 +23,7 @@ float4 main() : sv_target
|
|||||||
[test]
|
[test]
|
||||||
uniform 0 float4 100 200 300 400
|
uniform 0 float4 100 200 300 400
|
||||||
uniform 4 float4 1000 2000 3000 4000
|
uniform 4 float4 1000 2000 3000 4000
|
||||||
todo(msl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba (200, 3000, 4, 7)
|
probe (0, 0) rgba (200, 3000, 4, 7)
|
||||||
|
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ float4 main() : sv_target
|
|||||||
[test]
|
[test]
|
||||||
uniform 0 float4 100 200 300 400
|
uniform 0 float4 100 200 300 400
|
||||||
uniform 4 float4 1000 2000 3000 4000
|
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)
|
probe (0, 0) rgba (4000.0, 8.0, 9.0, 10.0)
|
||||||
|
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ float4 main() : sv_target
|
|||||||
}
|
}
|
||||||
|
|
||||||
[test]
|
[test]
|
||||||
todo(msl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba (3.0, 4.0, -1.0, -1.0)
|
probe (0, 0) rgba (3.0, 4.0, -1.0, -1.0)
|
||||||
|
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ float4 main() : sv_target
|
|||||||
}
|
}
|
||||||
|
|
||||||
[test]
|
[test]
|
||||||
todo(msl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba (4.0, 5.0, 6.0, 7.0)
|
probe (0, 0) rgba (4.0, 5.0, 6.0, 7.0)
|
||||||
|
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ float4 main() : sv_target
|
|||||||
}
|
}
|
||||||
|
|
||||||
[test]
|
[test]
|
||||||
todo(msl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba (8.0, 9.0, 10.0, 11.0)
|
probe (0, 0) rgba (8.0, 9.0, 10.0, 11.0)
|
||||||
|
|
||||||
|
|
||||||
@@ -138,10 +138,10 @@ float4 main() : sv_target
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
uniform 0 int 2
|
uniform 0 int 2
|
||||||
todo(msl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba (8.0, 9.0, 10.0, 11.0)
|
probe (0, 0) rgba (8.0, 9.0, 10.0, 11.0)
|
||||||
uniform 0 int 0
|
uniform 0 int 0
|
||||||
todo(msl) draw quad
|
draw quad
|
||||||
probe (0, 0) rgba (0.0, 1.0, 2.0, 3.0)
|
probe (0, 0) rgba (0.0, 1.0, 2.0, 3.0)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -76,6 +76,7 @@ static MTLPixelFormat get_metal_pixel_format(DXGI_FORMAT format)
|
|||||||
return MTLPixelFormatR32Float;
|
return MTLPixelFormatR32Float;
|
||||||
case DXGI_FORMAT_R32_SINT:
|
case DXGI_FORMAT_R32_SINT:
|
||||||
return MTLPixelFormatR32Sint;
|
return MTLPixelFormatR32Sint;
|
||||||
|
case DXGI_FORMAT_UNKNOWN:
|
||||||
case DXGI_FORMAT_R32_TYPELESS:
|
case DXGI_FORMAT_R32_TYPELESS:
|
||||||
case DXGI_FORMAT_R32_UINT:
|
case DXGI_FORMAT_R32_UINT:
|
||||||
return MTLPixelFormatR32Uint;
|
return MTLPixelFormatR32Uint;
|
||||||
@@ -232,18 +233,6 @@ static void init_resource_texture(struct metal_runner *runner,
|
|||||||
id<MTLDevice> device = runner->device;
|
id<MTLDevice> device = runner->device;
|
||||||
MTLTextureDescriptor *desc;
|
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.sample_count > 1)
|
||||||
{
|
{
|
||||||
if (params->desc.level_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];
|
desc = [[MTLTextureDescriptor alloc] init];
|
||||||
switch (params->desc.dimension)
|
switch (params->desc.dimension)
|
||||||
{
|
{
|
||||||
|
case RESOURCE_DIMENSION_BUFFER:
|
||||||
|
desc.textureType = MTLTextureTypeTextureBuffer;
|
||||||
|
break;
|
||||||
case RESOURCE_DIMENSION_2D:
|
case RESOURCE_DIMENSION_2D:
|
||||||
if (params->desc.sample_count > 1)
|
if (params->desc.sample_count > 1)
|
||||||
desc.textureType = params->desc.layer_count > 1 ? MTLTextureType2DMultisampleArray
|
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));
|
resource = calloc(1, sizeof(*resource));
|
||||||
init_resource(&resource->r, params);
|
init_resource(&resource->r, params);
|
||||||
|
|
||||||
if (params->desc.dimension == RESOURCE_DIMENSION_BUFFER)
|
switch (params->desc.type)
|
||||||
init_resource_buffer(runner, resource, params);
|
{
|
||||||
else
|
case RESOURCE_TYPE_RENDER_TARGET:
|
||||||
|
case RESOURCE_TYPE_DEPTH_STENCIL:
|
||||||
|
case RESOURCE_TYPE_TEXTURE:
|
||||||
init_resource_texture(runner, resource, params);
|
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;
|
return &resource->r;
|
||||||
}
|
}
|
||||||
@@ -581,11 +584,6 @@ static bool encode_argument_buffer(struct metal_runner *runner,
|
|||||||
{
|
{
|
||||||
case RESOURCE_TYPE_TEXTURE:
|
case RESOURCE_TYPE_TEXTURE:
|
||||||
[encoder setTexture:resource->texture atIndex:index++];
|
[encoder setTexture:resource->texture atIndex:index++];
|
||||||
if (!resource->texture)
|
|
||||||
{
|
|
||||||
trace("Unsupported buffer texture\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
[command_encoder useResource:resource->texture
|
[command_encoder useResource:resource->texture
|
||||||
usage:MTLResourceUsageRead
|
usage:MTLResourceUsageRead
|
||||||
stages:MTLRenderStageVertex | MTLRenderStageFragment];
|
stages:MTLRenderStageVertex | MTLRenderStageFragment];
|
||||||
|
Reference in New Issue
Block a user