vkd3d-shader/dxil: Implement the DXIL EXTRACTVAL instruction.

This commit is contained in:
Conor McCarthy 2023-10-11 14:33:27 +10:00 committed by Alexandre Julliard
parent e899b67bbf
commit 589670180a
Notes: Alexandre Julliard 2023-11-01 22:39:52 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/408
16 changed files with 140 additions and 48 deletions

View File

@ -1483,6 +1483,11 @@ static inline bool sm6_type_is_floating_point(const struct sm6_type *type)
return type->class == TYPE_CLASS_FLOAT; return type->class == TYPE_CLASS_FLOAT;
} }
static bool sm6_type_is_scalar(const struct sm6_type *type)
{
return type->class == TYPE_CLASS_INTEGER || type->class == TYPE_CLASS_FLOAT || type->class == TYPE_CLASS_POINTER;
}
static inline bool sm6_type_is_numeric(const struct sm6_type *type) static inline bool sm6_type_is_numeric(const struct sm6_type *type)
{ {
return type->class == TYPE_CLASS_INTEGER || type->class == TYPE_CLASS_FLOAT; return type->class == TYPE_CLASS_INTEGER || type->class == TYPE_CLASS_FLOAT;
@ -1493,6 +1498,11 @@ static inline bool sm6_type_is_pointer(const struct sm6_type *type)
return type->class == TYPE_CLASS_POINTER; return type->class == TYPE_CLASS_POINTER;
} }
static bool sm6_type_is_aggregate(const struct sm6_type *type)
{
return type->class == TYPE_CLASS_STRUCT || type->class == TYPE_CLASS_VECTOR || type->class == TYPE_CLASS_ARRAY;
}
static bool sm6_type_is_numeric_aggregate(const struct sm6_type *type) static bool sm6_type_is_numeric_aggregate(const struct sm6_type *type)
{ {
unsigned int i; unsigned int i;
@ -1563,6 +1573,27 @@ static const struct sm6_type *sm6_type_get_pointer_to_type(const struct sm6_type
return NULL; return NULL;
} }
/* Call for aggregate types only. */
static const struct sm6_type *sm6_type_get_element_type_at_index(const struct sm6_type *type, uint64_t elem_idx)
{
switch (type->class)
{
case TYPE_CLASS_ARRAY:
case TYPE_CLASS_VECTOR:
if (elem_idx >= type->u.array.count)
return NULL;
return type->u.array.elem_type;
case TYPE_CLASS_STRUCT:
if (elem_idx >= type->u.struc->elem_count)
return NULL;
return type->u.struc->elem_types[elem_idx];
default:
vkd3d_unreachable();
}
}
/* Never returns null for elem_idx 0. */ /* Never returns null for elem_idx 0. */
static const struct sm6_type *sm6_type_get_scalar_type(const struct sm6_type *type, unsigned int elem_idx) static const struct sm6_type *sm6_type_get_scalar_type(const struct sm6_type *type, unsigned int elem_idx)
{ {
@ -2994,6 +3025,64 @@ static void sm6_parser_emit_call(struct sm6_parser *sm6, const struct dxil_recor
fn_value->u.function.name, &operands[1], operand_count - 1, ins, dst); fn_value->u.function.name, &operands[1], operand_count - 1, ins, dst);
} }
static void sm6_parser_emit_extractval(struct sm6_parser *sm6, const struct dxil_record *record,
struct vkd3d_shader_instruction *ins, struct sm6_value *dst)
{
struct vkd3d_shader_src_param *src_param;
const struct sm6_type *type;
const struct sm6_value *src;
unsigned int i = 0;
uint64_t elem_idx;
if (!(src = sm6_parser_get_value_by_ref(sm6, record, NULL, &i)))
return;
if (!dxil_record_validate_operand_min_count(record, i + 1, sm6))
return;
if (record->operand_count > i + 1)
{
FIXME("Unhandled multiple indices.\n");
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND,
"Multiple extractval indices are not supported.");
return;
}
type = src->type;
if (!sm6_type_is_aggregate(type))
{
WARN("Invalid extraction from non-aggregate.\n");
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND,
"Source type of an extractval instruction is not an aggregate.");
return;
}
elem_idx = record->operands[i];
if (!(type = sm6_type_get_element_type_at_index(type, elem_idx)))
{
WARN("Invalid element index %"PRIu64".\n", elem_idx);
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND,
"Element index %"PRIu64" for an extractval instruction is out of bounds.", elem_idx);
return;
}
if (!sm6_type_is_scalar(type))
{
FIXME("Nested extraction is not supported.\n");
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND,
"Extraction from nested aggregates is not supported.");
return;
}
dst->type = type;
ins->handler_idx = VKD3DSIH_MOV;
src_param = instruction_src_params_alloc(ins, 1, sm6);
src_param_init_from_value(src_param, src);
src_param->swizzle = vkd3d_shader_create_swizzle(elem_idx, elem_idx, elem_idx, elem_idx);
instruction_dst_param_init_ssa_scalar(ins, sm6);
}
static void sm6_parser_emit_ret(struct sm6_parser *sm6, const struct dxil_record *record, static void sm6_parser_emit_ret(struct sm6_parser *sm6, const struct dxil_record *record,
struct sm6_block *code_block, struct vkd3d_shader_instruction *ins) struct sm6_block *code_block, struct vkd3d_shader_instruction *ins)
{ {
@ -3149,6 +3238,9 @@ static enum vkd3d_result sm6_parser_function_init(struct sm6_parser *sm6, const
case FUNC_CODE_INST_CALL: case FUNC_CODE_INST_CALL:
sm6_parser_emit_call(sm6, record, code_block, ins, dst); sm6_parser_emit_call(sm6, record, code_block, ins, dst);
break; break;
case FUNC_CODE_INST_EXTRACTVAL:
sm6_parser_emit_extractval(sm6, record, ins, dst);
break;
case FUNC_CODE_INST_RET: case FUNC_CODE_INST_RET:
sm6_parser_emit_ret(sm6, record, code_block, ins); sm6_parser_emit_ret(sm6, record, code_block, ins);
is_terminator = true; is_terminator = true;

View File

@ -36,7 +36,7 @@ float4 main() : sv_target
uniform 0 float4 11 12 0 0 uniform 0 float4 11 12 0 0
uniform 4 float4 13 14 0 0 uniform 4 float4 13 14 0 0
uniform 8 float4 20 21 22 23 uniform 8 float4 20 21 22 23
todo(sm>=6) draw quad draw quad
probe (320,240) rgba (13.0, 21.0, 0.0, 0.0) probe (320,240) rgba (13.0, 21.0, 0.0, 0.0)
[pixel shader fail] [pixel shader fail]

View File

@ -13,7 +13,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 3.0, 4.0) probe all rgba (1.0, 2.0, 3.0, 4.0)
[pixel shader] [pixel shader]
@ -31,7 +31,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 3.0, 4.0) probe all rgba (1.0, 2.0, 3.0, 4.0)
% SM1 buffer offset allocation follows different rules than SM4. % SM1 buffer offset allocation follows different rules than SM4.
@ -72,7 +72,7 @@ uniform 0 float4 0.0 1.0 2.0 3.0
uniform 4 float4 4.0 5.0 6.0 7.0 uniform 4 float4 4.0 5.0 6.0 7.0
uniform 8 float4 8.0 9.0 10.0 11.0 uniform 8 float4 8.0 9.0 10.0 11.0
uniform 12 float4 12.0 13.0 14.0 15.0 uniform 12 float4 12.0 13.0 14.0 15.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.0, 2.0, 4.0, 8.0) probe all rgba (0.0, 2.0, 4.0, 8.0)
@ -93,7 +93,7 @@ float4 main() : sv_target
uniform 0 float4 0.0 1.0 2.0 3.0 uniform 0 float4 0.0 1.0 2.0 3.0
uniform 4 float4 4.0 5.0 6.0 7.0 uniform 4 float4 4.0 5.0 6.0 7.0
uniform 8 float4 8.0 9.0 10.0 11.0 uniform 8 float4 8.0 9.0 10.0 11.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.0, 4.0, 8.0, 9.0) probe all rgba (0.0, 4.0, 8.0, 9.0)
@ -119,7 +119,7 @@ uniform 0 float4 0.0 1.0 2.0 3.0
uniform 4 float4 4.0 5.0 6.0 7.0 uniform 4 float4 4.0 5.0 6.0 7.0
uniform 8 float4 8.0 9.0 10.0 11.0 uniform 8 float4 8.0 9.0 10.0 11.0
uniform 12 float4 12.0 13.0 14.0 15.0 uniform 12 float4 12.0 13.0 14.0 15.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.0, 4.0, 5.0, 6.0) probe all rgba (0.0, 4.0, 5.0, 6.0)
@ -142,7 +142,7 @@ uniform 0 float4 1.0 0.0 0.0 0.0
uniform 4 float4 2.0 0.0 0.0 0.0 uniform 4 float4 2.0 0.0 0.0 0.0
uniform 8 float4 3.0 0.0 0.0 0.0 uniform 8 float4 3.0 0.0 0.0 0.0
uniform 12 float4 4.0 0.0 0.0 0.0 uniform 12 float4 4.0 0.0 0.0 0.0
todo draw quad todo(sm<6) draw quad
probe all rgba (1.0, 3.0, 3.0, 4.0) probe all rgba (1.0, 3.0, 3.0, 4.0)
@ -221,7 +221,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (2.0, 3.0, 2.0, 3.0) probe all rgba (2.0, 3.0, 2.0, 3.0)
@ -357,7 +357,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (3.0, 4.0, 3.0, 4.0) probe all rgba (3.0, 4.0, 3.0, 4.0)

View File

@ -40,7 +40,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (3.0, 3.0, 3.0, 3.0) probe all rgba (3.0, 3.0, 3.0, 3.0)
@ -78,7 +78,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (4.0, 4.0, 4.0, 4.0) probe all rgba (4.0, 4.0, 4.0, 4.0)

View File

@ -19,5 +19,5 @@ float4 main() : sv_target
[test] [test]
uniform 0 float 10.0 uniform 0 float 10.0
todo(sm>=6) draw quad draw quad
probe all rgba (10.0, 10.0, 10.0, 10.0) probe all rgba (10.0, 10.0, 10.0, 10.0)

View File

@ -40,7 +40,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 0.1 0.2 0.0 0.0 uniform 0 float4 0.1 0.2 0.0 0.0
uniform 4 float4 0.3 0.4 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.1, 0.2, 0.3, 0.4) probe all rgba (0.1, 0.2, 0.3, 0.4)
@ -61,7 +61,7 @@ uniform 0 float4 0.0 0.0 0.0 0.0
uniform 4 float4 0.0 0.0 0.0 0.0 uniform 4 float4 0.0 0.0 0.0 0.0
uniform 8 float4 0.5 0.6 0.0 0.0 uniform 8 float4 0.5 0.6 0.0 0.0
uniform 12 float4 0.7 0.8 0.0 0.0 uniform 12 float4 0.7 0.8 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.5, 0.6, 0.7, 0.8) probe all rgba (0.5, 0.6, 0.7, 0.8)
@ -111,7 +111,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 0.1 0.2 0.0 0.0 uniform 0 float4 0.1 0.2 0.0 0.0
uniform 4 float4 0.3 0.4 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.1, 0.2, 0.3, 0.4) probe all rgba (0.1, 0.2, 0.3, 0.4)
@ -149,7 +149,7 @@ uniform 0 float4 0.3 0.4 0.0 0.0
uniform 4 float4 0.0 0.0 0.0 0.0 uniform 4 float4 0.0 0.0 0.0 0.0
uniform 8 float4 0.0 0.0 0.0 0.0 uniform 8 float4 0.0 0.0 0.0 0.0
uniform 12 float4 0.5 0.6 0.0 0.0 uniform 12 float4 0.5 0.6 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.3, 0.4, 0.5, 0.6) probe all rgba (0.3, 0.4, 0.5, 0.6)
@ -173,7 +173,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 0.1 0.2 0.0 0.0 uniform 0 float4 0.1 0.2 0.0 0.0
uniform 4 float4 0.3 0.4 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.1, 0.2, 0.3, 0.4) probe all rgba (0.1, 0.2, 0.3, 0.4)
@ -201,7 +201,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 0.2 0.4 0.0 0.0 uniform 0 float4 0.2 0.4 0.0 0.0
uniform 4 float4 0.3 0.5 0.0 0.0 uniform 4 float4 0.3 0.5 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.2, 0.3, 0.4, 0.5) probe all rgba (0.2, 0.3, 0.4, 0.5)
@ -221,7 +221,7 @@ uniform 0 float4 0.3 0.0 0.0 0.0
uniform 4 float4 0.4 0.0 0.0 0.0 uniform 4 float4 0.4 0.0 0.0 0.0
uniform 8 float4 0.0 0.5 0.0 0.0 uniform 8 float4 0.0 0.5 0.0 0.0
uniform 12 float4 0.0 0.6 0.0 0.0 uniform 12 float4 0.0 0.6 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.3, 0.4, 0.5, 0.6) probe all rgba (0.3, 0.4, 0.5, 0.6)
% Compiler options % Compiler options
@ -245,7 +245,7 @@ uniform 0 float4 0.1 0.5 0.9 1.3
uniform 4 float4 0.2 0.6 1.0 1.4 uniform 4 float4 0.2 0.6 1.0 1.4
uniform 8 float4 0.3 0.7 1.1 1.5 uniform 8 float4 0.3 0.7 1.1 1.5
uniform 12 float4 0.4 0.8 1.2 1.6 uniform 12 float4 0.4 0.8 1.2 1.6
todo(sm>=6) draw quad draw quad
probe all rgba (0.2, 0.3, 0.6, 0.7) 1 probe all rgba (0.2, 0.3, 0.6, 0.7) 1
[require] [require]
@ -267,7 +267,7 @@ uniform 0 float4 0.1 0.5 0.9 1.3
uniform 4 float4 0.2 0.6 1.0 1.4 uniform 4 float4 0.2 0.6 1.0 1.4
uniform 8 float4 0.3 0.7 1.1 1.5 uniform 8 float4 0.3 0.7 1.1 1.5
uniform 12 float4 0.4 0.8 1.2 1.6 uniform 12 float4 0.4 0.8 1.2 1.6
todo(sm>=6) draw quad draw quad
probe all rgba (0.2, 0.3, 0.6, 0.7) 1 probe all rgba (0.2, 0.3, 0.6, 0.7) 1
[require] [require]
@ -289,7 +289,7 @@ uniform 0 float4 0.1 0.5 0.9 1.3
uniform 4 float4 0.2 0.6 1.0 1.4 uniform 4 float4 0.2 0.6 1.0 1.4
uniform 8 float4 0.3 0.7 1.1 1.5 uniform 8 float4 0.3 0.7 1.1 1.5
uniform 12 float4 0.4 0.8 1.2 1.6 uniform 12 float4 0.4 0.8 1.2 1.6
todo(sm>=6) draw quad draw quad
probe all rgba (0.5, 0.9, 0.6, 1.0) 1 probe all rgba (0.5, 0.9, 0.6, 1.0) 1
[require] [require]
@ -317,7 +317,7 @@ uniform 16 float4 1.7 2.1 2.5 2.9
uniform 20 float4 1.8 2.2 2.6 3.0 uniform 20 float4 1.8 2.2 2.6 3.0
uniform 24 float4 1.9 2.3 2.7 3.1 uniform 24 float4 1.9 2.3 2.7 3.1
uniform 28 float4 2.0 2.4 2.8 3.2 uniform 28 float4 2.0 2.4 2.8 3.2
todo(sm>=6) draw quad draw quad
probe all rgba (0.3, 0.4, 2.5, 2.9) 1 probe all rgba (0.3, 0.4, 2.5, 2.9) 1
[require] [require]
@ -345,7 +345,7 @@ uniform 16 float4 1.7 2.1 2.5 2.9
uniform 20 float4 1.8 2.2 2.6 3.0 uniform 20 float4 1.8 2.2 2.6 3.0
uniform 24 float4 1.9 2.3 2.7 3.1 uniform 24 float4 1.9 2.3 2.7 3.1
uniform 28 float4 2.0 2.4 2.8 3.2 uniform 28 float4 2.0 2.4 2.8 3.2
todo(sm>=6) draw quad draw quad
probe all rgba (1.2, 1.6, 3.1, 3.2) 1 probe all rgba (1.2, 1.6, 3.1, 3.2) 1
[require] [require]
@ -365,5 +365,5 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 0.1 0.2 0.0 0.0 uniform 0 float4 0.1 0.2 0.0 0.0
uniform 4 float4 0.3 0.4 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.1, 0.3, 0.2, 0.4) 1 probe all rgba (0.1, 0.3, 0.2, 0.4) 1

View File

@ -11,7 +11,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 0.1 0.3 0.0 0.0 uniform 0 float4 0.1 0.3 0.0 0.0
uniform 4 float4 0.2 0.4 0.0 0.0 uniform 4 float4 0.2 0.4 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.1, 0.3, 0.2, 0.4) probe all rgba (0.1, 0.3, 0.2, 0.4)
[pixel shader fail(sm<6)] [pixel shader fail(sm<6)]

View File

@ -11,7 +11,7 @@ uniform 0 float4 1.0 2.0 3.0 4.0
uniform 4 float4 5.0 6.0 7.0 8.0 uniform 4 float4 5.0 6.0 7.0 8.0
uniform 8 float4 9.0 10.0 11.0 12.0 uniform 8 float4 9.0 10.0 11.0 12.0
uniform 12 float4 13.0 14.0 15.0 16.0 uniform 12 float4 13.0 14.0 15.0 16.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 10.0, 15.0) probe all rgba (1.0, 2.0, 10.0, 15.0)
[pixel shader] [pixel shader]
@ -27,7 +27,7 @@ uniform 0 float4 1.0 2.0 3.0 4.0
uniform 4 float4 5.0 6.0 7.0 8.0 uniform 4 float4 5.0 6.0 7.0 8.0
uniform 8 float4 9.0 10.0 11.0 12.0 uniform 8 float4 9.0 10.0 11.0 12.0
uniform 12 float4 13.0 14.0 15.0 16.0 uniform 12 float4 13.0 14.0 15.0 16.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 10.0, 15.0) probe all rgba (1.0, 2.0, 10.0, 15.0)
[pixel shader] [pixel shader]
@ -43,7 +43,7 @@ uniform 0 float4 1.0 2.0 3.0 4.0
uniform 4 float4 5.0 6.0 7.0 8.0 uniform 4 float4 5.0 6.0 7.0 8.0
uniform 8 float4 9.0 10.0 11.0 12.0 uniform 8 float4 9.0 10.0 11.0 12.0
uniform 12 float4 13.0 14.0 15.0 16.0 uniform 12 float4 13.0 14.0 15.0 16.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 5.0, 7.0, 12.0) probe all rgba (1.0, 5.0, 7.0, 12.0)
[pixel shader] [pixel shader]
@ -58,7 +58,7 @@ float4 main() : SV_TARGET
[test] [test]
uniform 0 float4 1.0 2.0 3.0 0.0 uniform 0 float4 1.0 2.0 3.0 0.0
uniform 4 float4 5.0 6.0 7.0 0.0 uniform 4 float4 5.0 6.0 7.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 3.0, 6.0, 7.0) probe all rgba (1.0, 3.0, 6.0, 7.0)
[pixel shader] [pixel shader]

View File

@ -21,5 +21,5 @@ uniform 8 float4 0.3 0.0 0.0 0.0
uniform 12 float4 0.4 0.0 0.0 0.0 uniform 12 float4 0.4 0.0 0.0 0.0
uniform 16 float4 0.5 0.0 0.0 0.0 uniform 16 float4 0.5 0.0 0.0 0.0
uniform 20 float4 0.6 0.0 0.0 0.0 uniform 20 float4 0.6 0.0 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.4, 0.1, 0.6, 0.3) probe all rgba (0.4, 0.1, 0.6, 0.3)

View File

@ -19,7 +19,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
uniform 4 float4 5.0 6.0 7.0 8.0 uniform 4 float4 5.0 6.0 7.0 8.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 3.0, 0.0) probe all rgba (1.0, 2.0, 3.0, 0.0)
@ -66,5 +66,5 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
uniform 4 float4 5.0 6.0 7.0 8.0 uniform 4 float4 5.0 6.0 7.0 8.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 5.0, 0.0) probe all rgba (1.0, 2.0, 5.0, 0.0)

View File

@ -42,5 +42,5 @@ void main(out float4 o : sv_target)
[test] [test]
uniform 0 float4 0.1 0.0 0.0 0.0 uniform 0 float4 0.1 0.0 0.0 0.0
uniform 4 float4 0.2 0.0 0.0 0.0 uniform 4 float4 0.2 0.0 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.1, 0.2, 0.3, 0.4) probe all rgba (0.1, 0.2, 0.3, 0.4)

View File

@ -18,5 +18,5 @@ float4 main() : sv_target
uniform 0 float4 0.1 0.2 0.0 0.0 uniform 0 float4 0.1 0.2 0.0 0.0
uniform 4 float4 0.3 0.4 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0
uniform 8 float4 0.5 0.6 0.0 0.0 uniform 8 float4 0.5 0.6 0.0 0.0
todo(sm>=6) draw quad draw quad
probe all rgba (0.2, 0.3, 0.6, 0.5) probe all rgba (0.2, 0.3, 0.6, 0.5)

View File

@ -9,7 +9,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 11 21 31 -1 uniform 0 float4 11 21 31 -1
uniform 4 float4 12 22 32 -1 uniform 4 float4 12 22 32 -1
todo(sm>=6) draw quad draw quad
probe all rgba (21.0, 31.0, 11.0, 12.0) probe all rgba (21.0, 31.0, 11.0, 12.0)
@ -24,7 +24,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 11 21 31 -1 uniform 0 float4 11 21 31 -1
uniform 4 float4 12 22 32 -1 uniform 4 float4 12 22 32 -1
todo(sm>=6) draw quad draw quad
probe all rgba (11.0, 31.0, 12.0, 32.0) probe all rgba (11.0, 31.0, 12.0, 32.0)
@ -40,7 +40,7 @@ float4 main() : sv_target
uniform 0 float4 11 12 -1 -1 uniform 0 float4 11 12 -1 -1
uniform 4 float4 21 22 -1 -1 uniform 4 float4 21 22 -1 -1
uniform 8 float4 31 32 -1 -1 uniform 8 float4 31 32 -1 -1
todo(sm>=6) draw quad draw quad
probe all rgba (11.0, 31.0, 12.0, 32.0) probe all rgba (11.0, 31.0, 12.0, 32.0)
@ -169,8 +169,8 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 20 30 40 -1 uniform 0 float4 20 30 40 -1
todo draw quad todo(sm<6) draw quad
todo probe all rgba (10.0, 20.0, 30.0, 40.0) todo(sm<6) probe all rgba (10.0, 20.0, 30.0, 40.0)
[pixel shader todo] [pixel shader todo]
@ -187,8 +187,8 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 20 30 80 -1 uniform 0 float4 20 30 80 -1
todo draw quad todo(sm<6) draw quad
todo probe all rgba (80.0, 30.0, 20.0, 10.0) todo(sm<6) probe all rgba (80.0, 30.0, 20.0, 10.0)
% Cannot repeat components when assigning to a swizzle. % Cannot repeat components when assigning to a swizzle.

View File

@ -11,7 +11,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 0.0303 0.08 0.07 0.0202 uniform 0 float4 0.0303 0.08 0.07 0.0202
todo(sm>=6) draw quad draw quad
probe all rgba (0.0101, 0.0303, 0.0202, 0.0404) probe all rgba (0.0101, 0.0303, 0.0202, 0.0404)
@ -149,7 +149,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 3.0, 4.0) probe all rgba (1.0, 2.0, 3.0, 4.0)
@ -166,5 +166,5 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 4.0, 2.0, 3.0) probe all rgba (1.0, 4.0, 2.0, 3.0)

View File

@ -10,7 +10,7 @@ float4 main() : sv_target
[test] [test]
uniform 0 float 3.5 uniform 0 float 3.5
todo(sm>=6) draw quad draw quad
probe all rgba (3.5, 3.5, 3.5, 3.5) probe all rgba (3.5, 3.5, 3.5, 3.5)
@ -24,5 +24,5 @@ float4 main() : sv_target
[test] [test]
uniform 0 float4 4.0 5.0 6.0 7.0 uniform 0 float4 4.0 5.0 6.0 7.0
todo(sm>=6) draw quad draw quad
probe all rgba (4.0, 5.0, 4.0, 5.0) probe all rgba (4.0, 5.0, 4.0, 5.0)

View File

@ -23,7 +23,7 @@ float4 main() : SV_TARGET
[test] [test]
uniform 0 float4 1.0 2.0 3.0 4.0 uniform 0 float4 1.0 2.0 3.0 4.0
todo(sm>=6) draw quad draw quad
probe all rgba (1.0, 2.0, 2.0, 3.0) probe all rgba (1.0, 2.0, 2.0, 3.0)