mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Reject geometry shaders with instance count.
We currently emit a warning and miscompile them.
This commit is contained in:
committed by
Henri Verbeet
parent
22f84317c0
commit
aba355896f
Notes:
Henri Verbeet
2025-07-29 13:34:53 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1654
@@ -7549,6 +7549,8 @@ static void parse_entry_function_attributes(struct hlsl_ctx *ctx, struct hlsl_ir
|
|||||||
entry_func->early_depth_test = true;
|
entry_func->early_depth_test = true;
|
||||||
else if (!strcmp(attr->name, "maxvertexcount") && profile->type == VKD3D_SHADER_TYPE_GEOMETRY)
|
else if (!strcmp(attr->name, "maxvertexcount") && profile->type == VKD3D_SHADER_TYPE_GEOMETRY)
|
||||||
parse_maxvertexcount_attribute(ctx, attr);
|
parse_maxvertexcount_attribute(ctx, attr);
|
||||||
|
else if (!strcmp(attr->name, "instance") && profile->type == VKD3D_SHADER_TYPE_GEOMETRY)
|
||||||
|
hlsl_fixme(ctx, &entry_func->attrs[i]->loc, "Geometry shader instance count");
|
||||||
else
|
else
|
||||||
hlsl_warning(ctx, &entry_func->attrs[i]->loc, VKD3D_SHADER_WARNING_HLSL_UNKNOWN_ATTRIBUTE,
|
hlsl_warning(ctx, &entry_func->attrs[i]->loc, VKD3D_SHADER_WARNING_HLSL_UNKNOWN_ATTRIBUTE,
|
||||||
"Ignoring unknown attribute \"%s\".", entry_func->attrs[i]->name);
|
"Ignoring unknown attribute \"%s\".", entry_func->attrs[i]->name);
|
||||||
|
@@ -72,7 +72,7 @@ bug(mvk) probe rtv 0 (320, 290) rgba(0.0, 0.0, 0.0, 0.0)
|
|||||||
shader model >= 5.0
|
shader model >= 5.0
|
||||||
geometry-shader
|
geometry-shader
|
||||||
|
|
||||||
[geometry shader]
|
[geometry shader todo]
|
||||||
struct gs_data
|
struct gs_data
|
||||||
{
|
{
|
||||||
float4 pos : SV_POSITION;
|
float4 pos : SV_POSITION;
|
||||||
@@ -103,10 +103,10 @@ void main(point struct gs_data vin[1], inout TriangleStream<gs_data> vout,
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
clear rtv 0 0.0 0.0 0.0 0.0
|
clear rtv 0 0.0 0.0 0.0 0.0
|
||||||
todo(glsl | sm>=6) draw point list 1
|
todo draw point list 1
|
||||||
probe rtv 0 (320, 190) f32(0.0, 0.0, 0.0, 0.0)
|
probe rtv 0 (320, 190) f32(0.0, 0.0, 0.0, 0.0)
|
||||||
probe rtv 0 (255, 240) f32(0.0, 0.0, 0.0, 0.0)
|
probe rtv 0 (255, 240) f32(0.0, 0.0, 0.0, 0.0)
|
||||||
% Broken on WARP with SM < 6
|
% Broken on WARP with SM < 6
|
||||||
if(!warp | sm>=6) todo probe rtv 0 (320, 240) f32(0.0, 1.0, 1.0, 1.0)
|
if(!warp | sm>=6) probe rtv 0 (320, 240) f32(0.0, 1.0, 1.0, 1.0)
|
||||||
probe rtv 0 (385, 240) f32(0.0, 0.0, 0.0, 0.0)
|
probe rtv 0 (385, 240) f32(0.0, 0.0, 0.0, 0.0)
|
||||||
probe rtv 0 (320, 290) f32(0.0, 0.0, 0.0, 0.0)
|
probe rtv 0 (320, 290) f32(0.0, 0.0, 0.0, 0.0)
|
||||||
|
Reference in New Issue
Block a user