mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader/glsl: Implement support for VKD3DSPR_CONSTBUFFER registers.
This commit is contained in:
parent
e9f0c6fef3
commit
ae40184631
Notes:
Henri Verbeet
2024-09-19 14:46:44 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1084
@ -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, "<unhandled register %#x>", 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, "<unhandled register %#x>", 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, "/* <unhandled descriptor type %#x> */\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);
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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]
|
||||
|
@ -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]
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)]
|
||||
|
@ -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]
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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]
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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]
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user