vkd3d-shader/hlsl: Generate vsir instructions for stream output operations.

This commit is contained in:
Shaun Ren
2025-03-14 18:17:29 -04:00
committed by Henri Verbeet
parent c8c1e270e0
commit 5b06fe83df
Notes: Henri Verbeet 2025-05-05 15:28:21 +02:00
Approved-by: Elizabeth Figura (@zfigura)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1473
6 changed files with 30 additions and 13 deletions

View File

@@ -598,7 +598,7 @@ void main(point gs_data vin[1], inout TriangleStream<gs_data> vout1, inout Trian
}
% An output stream is only validated when it is used.
[geometry shader todo]
[geometry shader]
struct gs_data
{
float4 pos : SV_POSITION;
@@ -650,7 +650,7 @@ void main(point gs_data vin[1], inout PointStream<gs_data> vout1, inout PointStr
}
% Max vertex count * output data component count must be less than or equal to 1024.
[geometry shader todo]
[geometry shader]
struct gs_data
{
float2 x : X;
@@ -675,7 +675,7 @@ void main(point gs_data vin[1], inout PointStream<gs_data> vout)
}
% The component count of the output is used, not its allocated register size.
[geometry shader todo]
[geometry shader]
struct gs_data
{
float2 x : X; // Allocates to o0.xy

View File

@@ -22,7 +22,7 @@ void main(in struct vs_data vs_input, out struct vs_data vs_output)
vs_output.color = vs_input.color;
}
[geometry shader todo]
[geometry shader]
struct gs_data
{
float4 pos : SV_POSITION;
@@ -60,9 +60,9 @@ float4 main(struct ps_data ps_input) : SV_Target
}
[test]
todo(sm<6) draw point list 1
todo(mvk) probe rtv 0 (320, 190) rgba(0.0, 0.0, 0.0, 0.0)
todo(mvk) probe rtv 0 (255, 240) rgba(0.0, 0.0, 0.0, 0.0)
todo(mvk) probe rtv 0 (320, 240) rgba(0.0, 1.0, 1.0, 1.0)
todo(mvk) probe rtv 0 (385, 240) rgba(0.0, 0.0, 0.0, 0.0)
todo(mvk) probe rtv 0 (320, 290) rgba(0.0, 0.0, 0.0, 0.0)
todo(msl) draw point list 1
probe rtv 0 (320, 190) rgba(0.0, 0.0, 0.0, 0.0)
probe rtv 0 (255, 240) rgba(0.0, 0.0, 0.0, 0.0)
todo(opengl & llvmpipe | mvk) probe rtv 0 (320, 240) rgba(0.0, 1.0, 1.0, 1.0)
probe rtv 0 (385, 240) rgba(0.0, 0.0, 0.0, 0.0)
probe rtv 0 (320, 290) rgba(0.0, 0.0, 0.0, 0.0)

View File

@@ -191,7 +191,7 @@ float4 main(patch_constant_data input, InputPatch<data, 2> patch) : POSITION
return 0;
}
[geometry shader fail(sm<5) todo(sm>=5)]
[geometry shader fail(sm<5)]
struct data
{
float4 val : VAL;

View File

@@ -922,6 +922,9 @@ static GLenum get_topology_gl(D3D_PRIMITIVE_TOPOLOGY topology)
{
switch (topology)
{
case D3D_PRIMITIVE_TOPOLOGY_POINTLIST:
return GL_POINTS;
case D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST:
return GL_TRIANGLES;