vkd3d-shader/dxil: Implement DX intrinsic QuadReadLaneAt.

This commit is contained in:
Conor McCarthy 2024-04-23 22:31:40 +10:00 committed by Henri Verbeet
parent c298493e4f
commit 0b8b5b2d0f
Notes: Henri Verbeet 2024-06-11 17:09:28 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/858
3 changed files with 6 additions and 0 deletions

View File

@ -257,6 +257,7 @@ static const char * const shader_opcode_names[] =
[VKD3DSIH_QUAD_READ_ACROSS_D ] = "quad_read_across_d", [VKD3DSIH_QUAD_READ_ACROSS_D ] = "quad_read_across_d",
[VKD3DSIH_QUAD_READ_ACROSS_X ] = "quad_read_across_x", [VKD3DSIH_QUAD_READ_ACROSS_X ] = "quad_read_across_x",
[VKD3DSIH_QUAD_READ_ACROSS_Y ] = "quad_read_across_y", [VKD3DSIH_QUAD_READ_ACROSS_Y ] = "quad_read_across_y",
[VKD3DSIH_QUAD_READ_LANE_AT ] = "quad_read_lane_at",
[VKD3DSIH_RCP ] = "rcp", [VKD3DSIH_RCP ] = "rcp",
[VKD3DSIH_REP ] = "rep", [VKD3DSIH_REP ] = "rep",
[VKD3DSIH_RESINFO ] = "resinfo", [VKD3DSIH_RESINFO ] = "resinfo",

View File

@ -458,6 +458,7 @@ enum dx_intrinsic_opcode
DX_WAVE_ACTIVE_OP = 119, DX_WAVE_ACTIVE_OP = 119,
DX_WAVE_ACTIVE_BIT = 120, DX_WAVE_ACTIVE_BIT = 120,
DX_WAVE_PREFIX_OP = 121, DX_WAVE_PREFIX_OP = 121,
DX_QUAD_READ_LANE_AT = 122,
DX_QUAD_OP = 123, DX_QUAD_OP = 123,
DX_LEGACY_F32TOF16 = 130, DX_LEGACY_F32TOF16 = 130,
DX_LEGACY_F16TOF32 = 131, DX_LEGACY_F16TOF32 = 131,
@ -4627,6 +4628,8 @@ static enum vkd3d_shader_opcode map_dx_binary_op(enum dx_intrinsic_opcode op, co
return VKD3DSIH_IMAX; return VKD3DSIH_IMAX;
case DX_IMIN: case DX_IMIN:
return VKD3DSIH_IMIN; return VKD3DSIH_IMIN;
case DX_QUAD_READ_LANE_AT:
return VKD3DSIH_QUAD_READ_LANE_AT;
case DX_UMAX: case DX_UMAX:
return VKD3DSIH_UMAX; return VKD3DSIH_UMAX;
case DX_UMIN: case DX_UMIN:
@ -6279,6 +6282,7 @@ static const struct sm6_dx_opcode_info sm6_dx_op_table[] =
[DX_OUTPUT_CONTROL_POINT_ID ] = {"i", "", sm6_parser_emit_dx_output_control_point_id}, [DX_OUTPUT_CONTROL_POINT_ID ] = {"i", "", sm6_parser_emit_dx_output_control_point_id},
[DX_PRIMITIVE_ID ] = {"i", "", sm6_parser_emit_dx_primitive_id}, [DX_PRIMITIVE_ID ] = {"i", "", sm6_parser_emit_dx_primitive_id},
[DX_QUAD_OP ] = {"n", "Rc", sm6_parser_emit_dx_quad_op}, [DX_QUAD_OP ] = {"n", "Rc", sm6_parser_emit_dx_quad_op},
[DX_QUAD_READ_LANE_AT ] = {"n", "Ri", sm6_parser_emit_dx_binary},
[DX_RAW_BUFFER_LOAD ] = {"o", "Hii8i", sm6_parser_emit_dx_raw_buffer_load}, [DX_RAW_BUFFER_LOAD ] = {"o", "Hii8i", sm6_parser_emit_dx_raw_buffer_load},
[DX_RAW_BUFFER_STORE ] = {"v", "Hiioooocc", sm6_parser_emit_dx_raw_buffer_store}, [DX_RAW_BUFFER_STORE ] = {"v", "Hiioooocc", sm6_parser_emit_dx_raw_buffer_store},
[DX_ROUND_NE ] = {"g", "R", sm6_parser_emit_dx_unary}, [DX_ROUND_NE ] = {"g", "R", sm6_parser_emit_dx_unary},

View File

@ -458,6 +458,7 @@ enum vkd3d_shader_opcode
VKD3DSIH_QUAD_READ_ACROSS_D, VKD3DSIH_QUAD_READ_ACROSS_D,
VKD3DSIH_QUAD_READ_ACROSS_X, VKD3DSIH_QUAD_READ_ACROSS_X,
VKD3DSIH_QUAD_READ_ACROSS_Y, VKD3DSIH_QUAD_READ_ACROSS_Y,
VKD3DSIH_QUAD_READ_LANE_AT,
VKD3DSIH_RCP, VKD3DSIH_RCP,
VKD3DSIH_REP, VKD3DSIH_REP,
VKD3DSIH_RESINFO, VKD3DSIH_RESINFO,