diff --git a/libs/vkd3d-shader/glsl.c b/libs/vkd3d-shader/glsl.c index 57a186ec..11f152a2 100644 --- a/libs/vkd3d-shader/glsl.c +++ b/libs/vkd3d-shader/glsl.c @@ -48,6 +48,10 @@ struct vkd3d_glsl_generator } limits; bool interstage_input; bool interstage_output; + + const struct vkd3d_shader_interface_info *interface_info; + const struct vkd3d_shader_descriptor_offset_info *offset_info; + const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info; }; static void VKD3D_PRINTF_FUNC(3, 4) vkd3d_glsl_compiler_error( @@ -133,6 +137,25 @@ static void shader_glsl_print_register_name(struct vkd3d_string_buffer *buffer, vkd3d_string_buffer_printf(buffer, "%s_out[%u]", gen->prefix, reg->idx[0].offset); break; + case VKD3DSPR_CONSTBUFFER: + if (reg->idx_count != 3) + { + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, + "Internal compiler error: Unhandled constant buffer register index count %u.", reg->idx_count); + vkd3d_string_buffer_printf(buffer, "", reg->type); + break; + } + if (reg->idx[0].rel_addr || reg->idx[2].rel_addr) + { + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, + "Internal compiler error: Unhandled constant buffer register indirect addressing."); + vkd3d_string_buffer_printf(buffer, "", reg->type); + break; + } + vkd3d_string_buffer_printf(buffer, "%s_cb_%u[%u]", + gen->prefix, reg->idx[0].offset, reg->idx[2].offset); + break; + default: vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, "Internal compiler error: Unhandled register type %#x.", reg->type); @@ -425,6 +448,151 @@ static void vkd3d_glsl_handle_instruction(struct vkd3d_glsl_generator *gen, } } +static bool shader_glsl_check_shader_visibility(const struct vkd3d_glsl_generator *gen, + enum vkd3d_shader_visibility visibility) +{ + enum vkd3d_shader_type t = gen->program->shader_version.type; + + switch (visibility) + { + case VKD3D_SHADER_VISIBILITY_ALL: + return true; + case VKD3D_SHADER_VISIBILITY_VERTEX: + return t == VKD3D_SHADER_TYPE_VERTEX; + case VKD3D_SHADER_VISIBILITY_HULL: + return t == VKD3D_SHADER_TYPE_HULL; + case VKD3D_SHADER_VISIBILITY_DOMAIN: + return t == VKD3D_SHADER_TYPE_DOMAIN; + case VKD3D_SHADER_VISIBILITY_GEOMETRY: + return t == VKD3D_SHADER_TYPE_GEOMETRY; + case VKD3D_SHADER_VISIBILITY_PIXEL: + return t == VKD3D_SHADER_TYPE_PIXEL; + case VKD3D_SHADER_VISIBILITY_COMPUTE: + return t == VKD3D_SHADER_TYPE_COMPUTE; + default: + WARN("Invalid shader visibility %#x.\n", visibility); + return false; + } +} + +static bool shader_glsl_get_cbv_binding(const struct vkd3d_glsl_generator *gen, + unsigned int register_space, unsigned int register_idx, unsigned int *binding_idx) +{ + const struct vkd3d_shader_interface_info *interface_info = gen->interface_info; + const struct vkd3d_shader_resource_binding *binding; + unsigned int i; + + if (!interface_info) + return false; + + for (i = 0; i < interface_info->binding_count; ++i) + { + binding = &interface_info->bindings[i]; + + if (binding->type != VKD3D_SHADER_DESCRIPTOR_TYPE_CBV) + continue; + if (binding->register_space != register_space) + continue; + if (binding->register_index != register_idx) + continue; + if (!shader_glsl_check_shader_visibility(gen, binding->shader_visibility)) + continue; + if (!(binding->flags & VKD3D_SHADER_BINDING_FLAG_BUFFER)) + continue; + *binding_idx = i; + return true; + } + + return false; +} + +static void shader_glsl_generate_cbv_declaration(struct vkd3d_glsl_generator *gen, + const struct vkd3d_shader_descriptor_info1 *cbv) +{ + const struct vkd3d_shader_descriptor_binding *binding; + const struct vkd3d_shader_descriptor_offset *offset; + struct vkd3d_string_buffer *buffer = gen->buffer; + const char *prefix = gen->prefix; + unsigned int binding_idx; + size_t size; + + if (cbv->count != 1) + { + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND, + "Constant buffer %u has unsupported descriptor array size %u.", cbv->register_id, cbv->count); + return; + } + + if (!shader_glsl_get_cbv_binding(gen, cbv->register_space, cbv->register_index, &binding_idx)) + { + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND, + "No descriptor binding specified for constant buffer %u.", cbv->register_id); + return; + } + + binding = &gen->interface_info->bindings[binding_idx].binding; + + if (binding->set != 0) + { + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND, + "Unsupported binding set %u specified for constant buffer %u.", binding->set, cbv->register_id); + return; + } + + if (binding->count != 1) + { + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND, + "Unsupported binding count %u specified for constant buffer %u.", binding->count, cbv->register_id); + return; + } + + if (gen->offset_info && gen->offset_info->binding_offsets) + { + offset = &gen->offset_info->binding_offsets[binding_idx]; + if (offset->static_offset || offset->dynamic_offset_index != ~0u) + { + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, + "Internal compiler error: Unhandled descriptor offset specified for constant buffer %u.", + cbv->register_id); + return; + } + } + + size = align(cbv->buffer_size, VKD3D_VEC4_SIZE * sizeof(uint32_t)); + size /= VKD3D_VEC4_SIZE * sizeof(uint32_t); + + vkd3d_string_buffer_printf(buffer, + "layout(std140, binding = %u) uniform block_%s_cb_%u { vec4 %s_cb_%u[%zu]; };\n", + binding->binding, prefix, cbv->register_id, prefix, cbv->register_id, size); +} + +static void shader_glsl_generate_descriptor_declarations(struct vkd3d_glsl_generator *gen) +{ + const struct vkd3d_shader_scan_descriptor_info1 *info = gen->descriptor_info; + const struct vkd3d_shader_descriptor_info1 *descriptor; + unsigned int i; + + for (i = 0; i < info->descriptor_count; ++i) + { + descriptor = &info->descriptors[i]; + + switch (descriptor->type) + { + case VKD3D_SHADER_DESCRIPTOR_TYPE_CBV: + shader_glsl_generate_cbv_declaration(gen, descriptor); + break; + + default: + vkd3d_string_buffer_printf(gen->buffer, "/* */\n", descriptor->type); + vkd3d_glsl_compiler_error(gen, VKD3D_SHADER_ERROR_GLSL_INTERNAL, + "Internal compiler error: Unhandled descriptor type %#x.", descriptor->type); + break; + } + } + if (info->descriptor_count) + vkd3d_string_buffer_printf(gen->buffer, "\n"); +} + static void shader_glsl_generate_interface_block(struct vkd3d_string_buffer *buffer, const char *type, unsigned int count) { @@ -553,6 +721,7 @@ static void shader_glsl_generate_declarations(struct vkd3d_glsl_generator *gen) const struct vsir_program *program = gen->program; struct vkd3d_string_buffer *buffer = gen->buffer; + shader_glsl_generate_descriptor_declarations(gen); shader_glsl_generate_input_declarations(gen); shader_glsl_generate_output_declarations(gen); @@ -642,7 +811,9 @@ static void shader_glsl_init_limits(struct vkd3d_glsl_generator *gen, const stru } static void vkd3d_glsl_generator_init(struct vkd3d_glsl_generator *gen, - struct vsir_program *program, struct vkd3d_shader_message_context *message_context) + struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, + const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, + struct vkd3d_shader_message_context *message_context) { enum vkd3d_shader_type type = program->shader_version.type; @@ -650,6 +821,7 @@ static void vkd3d_glsl_generator_init(struct vkd3d_glsl_generator *gen, gen->program = program; vkd3d_string_buffer_cache_init(&gen->string_buffers); gen->buffer = vkd3d_string_buffer_get(&gen->string_buffers); + gen->location.source_name = compile_info->source_name; gen->message_context = message_context; if (!(gen->prefix = shader_glsl_get_prefix(type))) { @@ -660,11 +832,16 @@ static void vkd3d_glsl_generator_init(struct vkd3d_glsl_generator *gen, shader_glsl_init_limits(gen, &program->shader_version); gen->interstage_input = type != VKD3D_SHADER_TYPE_VERTEX; gen->interstage_output = type != VKD3D_SHADER_TYPE_PIXEL; + + gen->interface_info = vkd3d_find_struct(compile_info->next, INTERFACE_INFO); + gen->offset_info = vkd3d_find_struct(compile_info->next, DESCRIPTOR_OFFSET_INFO); + gen->descriptor_info = descriptor_info; } int glsl_compile(struct vsir_program *program, uint64_t config_flags, - const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, - struct vkd3d_shader_message_context *message_context) + const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, + const struct vkd3d_shader_compile_info *compile_info, + struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context) { struct vkd3d_glsl_generator generator; int ret; @@ -672,7 +849,7 @@ int glsl_compile(struct vsir_program *program, uint64_t config_flags, if ((ret = vsir_program_transform(program, config_flags, compile_info, message_context)) < 0) return ret; - vkd3d_glsl_generator_init(&generator, program, message_context); + vkd3d_glsl_generator_init(&generator, program, compile_info, descriptor_info, message_context); ret = vkd3d_glsl_generator_generate(&generator, out); vkd3d_glsl_generator_cleanup(&generator); diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index 4444f4bc..bf92d336 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -1635,7 +1635,8 @@ int vsir_program_compile(struct vsir_program *program, uint64_t config_flags, case VKD3D_SHADER_TARGET_GLSL: if ((ret = vsir_program_scan(program, &scan_info, message_context, &scan_descriptor_info)) < 0) return ret; - ret = glsl_compile(program, config_flags, compile_info, out, message_context); + ret = glsl_compile(program, config_flags, &scan_descriptor_info, + compile_info, out, message_context); vkd3d_shader_free_scan_descriptor_info1(&scan_descriptor_info); break; diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 205da5c2..e84035ab 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -168,6 +168,7 @@ enum vkd3d_shader_error VKD3D_SHADER_WARNING_HLSL_IGNORED_DEFAULT_VALUE = 5306, VKD3D_SHADER_ERROR_GLSL_INTERNAL = 6000, + VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND = 6001, VKD3D_SHADER_ERROR_D3DBC_UNEXPECTED_EOF = 7000, VKD3D_SHADER_ERROR_D3DBC_INVALID_VERSION_TOKEN = 7001, @@ -1593,8 +1594,9 @@ int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, struct shader_signature *signature); int glsl_compile(struct vsir_program *program, uint64_t config_flags, - const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, - struct vkd3d_shader_message_context *message_context); + const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, + const struct vkd3d_shader_compile_info *compile_info, + struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context); #define SPIRV_MAX_SRC_COUNT 6 diff --git a/tests/hlsl/array-size-expr.shader_test b/tests/hlsl/array-size-expr.shader_test index f87fa3a1..1271ea41 100644 --- a/tests/hlsl/array-size-expr.shader_test +++ b/tests/hlsl/array-size-expr.shader_test @@ -88,5 +88,5 @@ uniform 4 float 0.0 uniform 8 float 0.0 uniform 12 float 0.0 uniform 16 float 42.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (42, 42, 42, 42) diff --git a/tests/hlsl/asfloat.shader_test b/tests/hlsl/asfloat.shader_test index 58b88085..83872e21 100644 --- a/tests/hlsl/asfloat.shader_test +++ b/tests/hlsl/asfloat.shader_test @@ -20,7 +20,7 @@ float4 main() : sv_target [test] uniform 0 float4 123.0 -2.0 456 0.01 -todo(glsl) draw quad +draw quad probe (320,240) rgba (123.0, -2.0, 456.0, 0.01) [pixel shader] diff --git a/tests/hlsl/cbuffer.shader_test b/tests/hlsl/cbuffer.shader_test index 22b7878d..36a2dd57 100644 --- a/tests/hlsl/cbuffer.shader_test +++ b/tests/hlsl/cbuffer.shader_test @@ -13,7 +13,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0) [pixel shader fail(sm>=6)] @@ -61,7 +61,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0) [pixel shader fail(sm>=6)] @@ -83,7 +83,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0) [pixel shader] @@ -97,7 +97,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0) [pixel shader fail] @@ -150,7 +150,7 @@ uniform 0 float4 0.0 1.0 2.0 3.0 uniform 4 float4 4.0 5.0 6.0 7.0 uniform 8 float4 8.0 9.0 10.0 11.0 uniform 12 float4 12.0 13.0 14.0 15.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.0, 2.0, 4.0, 8.0) @@ -171,7 +171,7 @@ float4 main() : sv_target uniform 0 float4 0.0 1.0 2.0 3.0 uniform 4 float4 4.0 5.0 6.0 7.0 uniform 8 float4 8.0 9.0 10.0 11.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.0, 4.0, 8.0, 9.0) @@ -197,7 +197,7 @@ uniform 0 float4 0.0 1.0 2.0 3.0 uniform 4 float4 4.0 5.0 6.0 7.0 uniform 8 float4 8.0 9.0 10.0 11.0 uniform 12 float4 12.0 13.0 14.0 15.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.0, 4.0, 5.0, 6.0) @@ -299,7 +299,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (2.0, 3.0, 2.0, 3.0) @@ -435,7 +435,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (3.0, 4.0, 3.0, 4.0) @@ -775,7 +775,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 uniform 4 float4 0.0 0.0 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0) [pixel shader fail(sm<6)] @@ -925,7 +925,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0) [pixel shader fail todo] diff --git a/tests/hlsl/default-values.shader_test b/tests/hlsl/default-values.shader_test index 6245ffc6..8ee43480 100644 --- a/tests/hlsl/default-values.shader_test +++ b/tests/hlsl/default-values.shader_test @@ -17,7 +17,7 @@ if(sm<4) uniform 8 float4 10 20 0 0 if(sm>=4) uniform 0 float4 10 20 0 0 if(sm>=4) uniform 4 float4 10 30 50 70 if(sm>=4) uniform 8 float4 20 40 60 80 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (10, 20, 50, 60) @@ -57,7 +57,7 @@ float4 main() : sv_target { return b; } [test] uniform 0 float4 10.0 20.0 30.0 40.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (10, 20, 30, 40) @@ -134,7 +134,7 @@ if(sm<4) uniform 8 float4 10 20 0 0 if(sm>=4) uniform 0 float4 10 20 0 0 if(sm>=4) uniform 4 float4 10 30 50 70 if(sm>=4) uniform 8 float4 20 40 60 80 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (10, 20, 50, 60) @@ -170,7 +170,7 @@ float4 main() : sv_target { return b; } [test] uniform 0 float4 10 20 30 40 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (10, 20, 30, 40) diff --git a/tests/hlsl/determinant.shader_test b/tests/hlsl/determinant.shader_test index 33aa1dc1..19ca9c0c 100644 --- a/tests/hlsl/determinant.shader_test +++ b/tests/hlsl/determinant.shader_test @@ -8,7 +8,7 @@ float4 main() : sv_target [test] uniform 0 float4 9.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (9.0, 9.0, 9.0, 9.0) [pixel shader] @@ -21,7 +21,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) [pixel shader] @@ -49,7 +49,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 uniform 4 float4 5.0 6.0 7.0 8.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) [pixel shader] diff --git a/tests/hlsl/expr-indexing.shader_test b/tests/hlsl/expr-indexing.shader_test index 1f1826f2..11e2dbbc 100644 --- a/tests/hlsl/expr-indexing.shader_test +++ b/tests/hlsl/expr-indexing.shader_test @@ -40,7 +40,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (3.0, 3.0, 3.0, 3.0) @@ -78,7 +78,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (4.0, 4.0, 4.0, 4.0) diff --git a/tests/hlsl/half.shader_test b/tests/hlsl/half.shader_test index 643a2fe0..a4f6f5ed 100644 --- a/tests/hlsl/half.shader_test +++ b/tests/hlsl/half.shader_test @@ -19,5 +19,5 @@ float4 main() : sv_target [test] uniform 0 float 10.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (10.0, 10.0, 10.0, 10.0) diff --git a/tests/hlsl/majority-pragma.shader_test b/tests/hlsl/majority-pragma.shader_test index 9b2c7951..77702220 100644 --- a/tests/hlsl/majority-pragma.shader_test +++ b/tests/hlsl/majority-pragma.shader_test @@ -40,7 +40,7 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.2 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) 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 8 float4 0.5 0.6 0.0 0.0 uniform 12 float4 0.7 0.8 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.5, 0.6, 0.7, 0.8) @@ -112,7 +112,7 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.2 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.1, 0.2, 0.3, 0.4) @@ -150,7 +150,7 @@ uniform 0 float4 0.3 0.4 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 12 float4 0.5 0.6 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.3, 0.4, 0.5, 0.6) @@ -174,7 +174,7 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.2 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.1, 0.2, 0.3, 0.4) @@ -202,7 +202,7 @@ float4 main() : sv_target [test] uniform 0 float4 0.2 0.4 0.0 0.0 uniform 4 float4 0.3 0.5 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.2, 0.3, 0.4, 0.5) @@ -222,7 +222,7 @@ uniform 0 float4 0.3 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 12 float4 0.0 0.6 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.3, 0.4, 0.5, 0.6) % Compiler options @@ -246,7 +246,7 @@ uniform 0 float4 0.1 0.5 0.9 1.3 uniform 4 float4 0.2 0.6 1.0 1.4 uniform 8 float4 0.3 0.7 1.1 1.5 uniform 12 float4 0.4 0.8 1.2 1.6 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.2, 0.3, 0.6, 0.7) 1 [require] @@ -268,7 +268,7 @@ uniform 0 float4 0.1 0.5 0.9 1.3 uniform 4 float4 0.2 0.6 1.0 1.4 uniform 8 float4 0.3 0.7 1.1 1.5 uniform 12 float4 0.4 0.8 1.2 1.6 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.2, 0.3, 0.6, 0.7) 1 [require] @@ -290,7 +290,7 @@ uniform 0 float4 0.1 0.5 0.9 1.3 uniform 4 float4 0.2 0.6 1.0 1.4 uniform 8 float4 0.3 0.7 1.1 1.5 uniform 12 float4 0.4 0.8 1.2 1.6 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.5, 0.9, 0.6, 1.0) 1 [require] @@ -318,7 +318,7 @@ uniform 16 float4 1.7 2.1 2.5 2.9 uniform 20 float4 1.8 2.2 2.6 3.0 uniform 24 float4 1.9 2.3 2.7 3.1 uniform 28 float4 2.0 2.4 2.8 3.2 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.3, 0.4, 2.5, 2.9) 1 [require] @@ -346,7 +346,7 @@ uniform 16 float4 1.7 2.1 2.5 2.9 uniform 20 float4 1.8 2.2 2.6 3.0 uniform 24 float4 1.9 2.3 2.7 3.1 uniform 28 float4 2.0 2.4 2.8 3.2 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.2, 1.6, 3.1, 3.2) 1 [require] @@ -366,5 +366,5 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.2 0.0 0.0 uniform 4 float4 0.3 0.4 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.1, 0.3, 0.2, 0.4) 1 diff --git a/tests/hlsl/majority-syntax.shader_test b/tests/hlsl/majority-syntax.shader_test index fc557348..b79d4829 100644 --- a/tests/hlsl/majority-syntax.shader_test +++ b/tests/hlsl/majority-syntax.shader_test @@ -11,7 +11,7 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.3 0.0 0.0 uniform 4 float4 0.2 0.4 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.1, 0.3, 0.2, 0.4) [pixel shader fail(sm<6)] diff --git a/tests/hlsl/matrix-indexing.shader_test b/tests/hlsl/matrix-indexing.shader_test index 33712b34..71c55b35 100644 --- a/tests/hlsl/matrix-indexing.shader_test +++ b/tests/hlsl/matrix-indexing.shader_test @@ -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 8 float4 9.0 10.0 11.0 12.0 uniform 12 float4 13.0 14.0 15.0 16.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 10.0, 15.0) [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 8 float4 9.0 10.0 11.0 12.0 uniform 12 float4 13.0 14.0 15.0 16.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 10.0, 15.0) [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 8 float4 9.0 10.0 11.0 12.0 uniform 12 float4 13.0 14.0 15.0 16.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 5.0, 7.0, 12.0) [pixel shader] @@ -58,7 +58,7 @@ float4 main() : SV_TARGET [test] uniform 0 float4 1.0 2.0 3.0 0.0 uniform 4 float4 5.0 6.0 7.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 3.0, 6.0, 7.0) [pixel shader] diff --git a/tests/hlsl/nested-arrays.shader_test b/tests/hlsl/nested-arrays.shader_test index 910985fd..871ec4fb 100644 --- a/tests/hlsl/nested-arrays.shader_test +++ b/tests/hlsl/nested-arrays.shader_test @@ -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 16 float4 0.5 0.0 0.0 0.0 uniform 20 float4 0.6 0.0 0.0 0.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.4, 0.1, 0.6, 0.3) diff --git a/tests/hlsl/precise-modifier.shader_test b/tests/hlsl/precise-modifier.shader_test index 7fc555d1..0758ad0e 100644 --- a/tests/hlsl/precise-modifier.shader_test +++ b/tests/hlsl/precise-modifier.shader_test @@ -9,7 +9,7 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.2 0.3 0.4 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.1, 0.2, 0.3, 0.4) [pixel shader fail(sm>=6)] @@ -23,7 +23,7 @@ precise main() : sv_target [test] uniform 0 float4 0.1 0.2 0.3 0.4 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.1, 0.2, 0.3, 0.4) [pixel shader] @@ -37,5 +37,5 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.2 0.3 0.4 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.1, 0.2, 0.3, 0.4) diff --git a/tests/hlsl/register-reservations-numeric.shader_test b/tests/hlsl/register-reservations-numeric.shader_test index 778516e7..d5a1014f 100644 --- a/tests/hlsl/register-reservations-numeric.shader_test +++ b/tests/hlsl/register-reservations-numeric.shader_test @@ -56,7 +56,7 @@ float4 main() : sv_target [test] uniform 0 float4 0.1 0.2 0.3 0.4 uniform 4 float4 1.1 1.2 1.3 1.4 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.1, 1.4, 0.2, 0.3) @@ -75,7 +75,7 @@ uniform 4 float4 1.1 1.2 1.3 1.4 uniform 8 float4 2.1 2.2 2.3 2.4 uniform 12 float4 3.1 3.2 3.3 3.4 uniform 16 float4 4.1 4.2 4.3 4.4 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (4.1, 4.2, 1.3, 1.4) @@ -207,7 +207,7 @@ float4 main() : sv_target [test] uniform 0 float 100 uniform 4 float 101 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (100, 100, 100, 100) @@ -221,7 +221,7 @@ float4 main(uniform float a : register(c1)) : sv_target [test] uniform 0 float 100 uniform 4 float 101 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (100, 100, 100, 100) [pixel shader todo] @@ -326,7 +326,7 @@ float4 main() : sv_target [test] uniform 0 float 1.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) [pixel shader] @@ -341,7 +341,7 @@ float4 main() : sv_target [test] uniform 0 float 1.0 uniform 4 float 2.0 -todo(glsl) draw quad +draw quad if(sm<6) probe (0, 0) rgba (2.0, 2.0, 2.0, 2.0) if(sm>=6) probe (0, 0) rgba(1.0, 1.0, 1.0, 1.0) @@ -357,7 +357,7 @@ float4 main() : sv_target [test] uniform 0 float 0.0 uniform 4 float 1.0 -todo(glsl) draw quad +draw quad if(sm<6) probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) if(sm>=6) probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0) @@ -373,7 +373,7 @@ float4 main() : sv_target [test] uniform 0 float 0.0 uniform 4 float 1.0 -todo(glsl) draw quad +draw quad if(sm<6) probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) if(sm>=6) probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0) @@ -389,7 +389,7 @@ float4 main() : sv_target [test] uniform 0 float 0.0 uniform 4 float 1.0 -todo(glsl) draw quad +draw quad if(sm<6) probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) if(sm>=6) probe (0, 0) rgba (0.0, 0.0, 0.0, 0.0) @@ -404,7 +404,7 @@ float4 main() : sv_target [test] uniform 4 float 1.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 1.0, 1.0, 1.0) % Weird FXC behavior. @@ -420,7 +420,7 @@ float4 main() : sv_target [test] uniform 0 float 1.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba(1.0, 1.0, 1.0, 1.0) % Testing other reservation types. This is a parse failure, i.e "X3530: register sa not valid" @@ -460,7 +460,7 @@ float4 main() : sv_target [test] uniform 0 float 0.0 uniform 4 float 2.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0) [require] diff --git a/tests/hlsl/struct-array.shader_test b/tests/hlsl/struct-array.shader_test index 9026852e..b37747ac 100644 --- a/tests/hlsl/struct-array.shader_test +++ b/tests/hlsl/struct-array.shader_test @@ -18,5 +18,5 @@ float4 main() : sv_target uniform 0 float4 0.1 0.2 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 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (0.2, 0.3, 0.6, 0.5) diff --git a/tests/hlsl/swizzle-matrix.shader_test b/tests/hlsl/swizzle-matrix.shader_test index 070322fe..10237e9c 100644 --- a/tests/hlsl/swizzle-matrix.shader_test +++ b/tests/hlsl/swizzle-matrix.shader_test @@ -9,7 +9,7 @@ float4 main() : sv_target [test] uniform 0 float4 11 21 31 -1 uniform 4 float4 12 22 32 -1 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (21.0, 31.0, 11.0, 12.0) @@ -24,7 +24,7 @@ float4 main() : sv_target [test] uniform 0 float4 11 21 31 -1 uniform 4 float4 12 22 32 -1 -todo(glsl) draw quad +draw quad probe (0, 0) 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 4 float4 21 22 -1 -1 uniform 8 float4 31 32 -1 -1 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (11.0, 31.0, 12.0, 32.0) diff --git a/tests/hlsl/swizzles.shader_test b/tests/hlsl/swizzles.shader_test index b970c25a..8e0930db 100644 --- a/tests/hlsl/swizzles.shader_test +++ b/tests/hlsl/swizzles.shader_test @@ -149,7 +149,7 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0) @@ -166,5 +166,5 @@ float4 main() : sv_target [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 4.0, 2.0, 3.0) diff --git a/tests/hlsl/uniform-parameters.shader_test b/tests/hlsl/uniform-parameters.shader_test index 2b11289d..08184e8b 100644 --- a/tests/hlsl/uniform-parameters.shader_test +++ b/tests/hlsl/uniform-parameters.shader_test @@ -18,7 +18,7 @@ float4 main(uniform float f, uniform int i, uniform uint u, uniform half h) : sv [test] uniform 0 float4 123.0 -2.0 456 0.01 -todo(glsl) draw quad +draw quad probe (320,240) rgba (123.0, -2.0, 456.0, 0.01) [pixel shader] diff --git a/tests/hlsl/uniform-semantics.shader_test b/tests/hlsl/uniform-semantics.shader_test index 33de9dcb..31e42641 100644 --- a/tests/hlsl/uniform-semantics.shader_test +++ b/tests/hlsl/uniform-semantics.shader_test @@ -10,7 +10,7 @@ float4 main() : sv_target [test] uniform 0 float 3.5 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (3.5, 3.5, 3.5, 3.5) @@ -24,5 +24,5 @@ float4 main() : sv_target [test] uniform 0 float4 4.0 5.0 6.0 7.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (4.0, 5.0, 4.0, 5.0) diff --git a/tests/hlsl/vector-indexing.shader_test b/tests/hlsl/vector-indexing.shader_test index 45379142..80766bb0 100644 --- a/tests/hlsl/vector-indexing.shader_test +++ b/tests/hlsl/vector-indexing.shader_test @@ -23,7 +23,7 @@ float4 main() : SV_TARGET [test] uniform 0 float4 1.0 2.0 3.0 4.0 -todo(glsl) draw quad +draw quad probe (0, 0) rgba (1.0, 2.0, 2.0, 3.0)