Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • wine/vkd3d
  • stefan/vkd3d
  • cmccarthy/vkd3d
  • giomasce/vkd3d
  • fcasas/vkd3d
  • jactry/vkd3d
  • ReDress/vkd3d
  • mstorsjo/vkd3d
  • huw/vkd3d
  • julliard/vkd3d
  • bshanks/vkd3d
  • zfigura/vkd3d
  • hverbeet/vkd3d
  • DarkShadow44/vkd3d
  • nsivov/vkd3d
  • dhary686/vkd3d
  • Mystral/vkd3d
  • maljaf/vkd3d
  • smcv/vkd3d
  • flibitijibibo/vkd3d
  • q4a/vkd3d
  • jsikorski/vkd3d
  • alesliehughes/vkd3d-alesliehughes
  • vitorhnn/vkd3d
  • agusev/vkd3d
  • etang-cw/vkd3d
  • petrathekat/vkd3d
  • simon.mr995/vkd3d
  • sgwaki/vkd3d
  • jacek/vkd3d
  • fweimer/vkd3d
  • Clara/vkd3d
  • disini/vkd3d
  • antenabr2/vkd3d
  • gilvbp/vkd3d
  • yshui/vkd3d
  • shaunren/vkd3d
  • jennetsaryyewa96/vkd3d
  • Jamesattay/vkd3d
  • zacemmneeto77/vkd3d
  • GermanAizek/vkd3d
  • opespinach/vkd3d
  • ruslanboyka201/vkd3d
  • navi/vkd3d
  • Feifan/vkd3d
  • yashmhmdly172/vkd3d
  • Sec32fun32/vkd3d
  • ritalat/vkd3d
  • ivyl/vkd3d
  • baikaishiuc/vkd3d
  • austin987/vkd3d
  • TornadoCookie/vkd3d
52 results
Show changes
...@@ -10,7 +10,7 @@ float4 main() : sv_target ...@@ -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 ...@@ -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)
...@@ -23,7 +23,7 @@ float4 main() : SV_TARGET ...@@ -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)
......
...@@ -89,6 +89,8 @@ enum parse_state ...@@ -89,6 +89,8 @@ enum parse_state
STATE_SHADER_PIXEL_TODO, STATE_SHADER_PIXEL_TODO,
STATE_SHADER_VERTEX, STATE_SHADER_VERTEX,
STATE_SHADER_VERTEX_TODO, STATE_SHADER_VERTEX_TODO,
STATE_SHADER_EFFECT,
STATE_SHADER_EFFECT_TODO,
STATE_TEST, STATE_TEST,
}; };
...@@ -814,6 +816,7 @@ const char *shader_type_string(enum shader_type type) ...@@ -814,6 +816,7 @@ const char *shader_type_string(enum shader_type type)
[SHADER_TYPE_CS] = "cs", [SHADER_TYPE_CS] = "cs",
[SHADER_TYPE_PS] = "ps", [SHADER_TYPE_PS] = "ps",
[SHADER_TYPE_VS] = "vs", [SHADER_TYPE_VS] = "vs",
[SHADER_TYPE_FX] = "fx",
}; };
assert(type < ARRAY_SIZE(shader_types)); assert(type < ARRAY_SIZE(shader_types));
return shader_types[type]; return shader_types[type];
...@@ -953,6 +956,14 @@ static void compile_shader(struct shader_runner *runner, IDxcCompiler3 *dxc_comp ...@@ -953,6 +956,14 @@ static void compile_shader(struct shader_runner *runner, IDxcCompiler3 *dxc_comp
[SHADER_MODEL_6_0] = "6_0", [SHADER_MODEL_6_0] = "6_0",
}; };
static const char *const effect_models[] =
{
[SHADER_MODEL_2_0] = "2_0",
[SHADER_MODEL_4_0] = "4_0",
[SHADER_MODEL_4_1] = "4_1",
[SHADER_MODEL_5_0] = "5_0",
};
if (use_dxcompiler) if (use_dxcompiler)
{ {
assert(dxc_compiler); assert(dxc_compiler);
...@@ -960,7 +971,10 @@ static void compile_shader(struct shader_runner *runner, IDxcCompiler3 *dxc_comp ...@@ -960,7 +971,10 @@ static void compile_shader(struct shader_runner *runner, IDxcCompiler3 *dxc_comp
} }
else else
{ {
sprintf(profile, "%s_%s", shader_type_string(type), shader_models[runner->minimum_shader_model]); if (type == SHADER_TYPE_FX)
sprintf(profile, "%s_%s", shader_type_string(type), effect_models[runner->minimum_shader_model]);
else
sprintf(profile, "%s_%s", shader_type_string(type), shader_models[runner->minimum_shader_model]);
hr = D3DCompile(source, len, NULL, NULL, NULL, "main", profile, runner->compile_options, 0, &blob, &errors); hr = D3DCompile(source, len, NULL, NULL, NULL, "main", profile, runner->compile_options, 0, &blob, &errors);
} }
hr = map_unidentified_hrs(hr); hr = map_unidentified_hrs(hr);
...@@ -996,8 +1010,10 @@ static enum parse_state read_shader_directive(struct shader_runner *runner, enum ...@@ -996,8 +1010,10 @@ static enum parse_state read_shader_directive(struct shader_runner *runner, enum
state = STATE_SHADER_COMPUTE_TODO; state = STATE_SHADER_COMPUTE_TODO;
else if (state == STATE_SHADER_PIXEL) else if (state == STATE_SHADER_PIXEL)
state = STATE_SHADER_PIXEL_TODO; state = STATE_SHADER_PIXEL_TODO;
else else if (state == STATE_SHADER_VERTEX)
state = STATE_SHADER_VERTEX_TODO; state = STATE_SHADER_VERTEX_TODO;
else
state = STATE_SHADER_EFFECT_TODO;
} }
else if (match_directive_substring(src, "fail", &src)) else if (match_directive_substring(src, "fail", &src))
{ {
...@@ -1136,6 +1152,21 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o ...@@ -1136,6 +1152,21 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o
shader_source_size = 0; shader_source_size = 0;
break; break;
case STATE_SHADER_EFFECT:
case STATE_SHADER_EFFECT_TODO:
if (!skip_tests)
{
todo_if (state == STATE_SHADER_EFFECT_TODO)
compile_shader(runner, dxc_compiler, shader_source, shader_source_len, SHADER_TYPE_FX,
expect_hr);
}
free(runner->fx_source);
runner->fx_source = shader_source;
shader_source = NULL;
shader_source_len = 0;
shader_source_size = 0;
break;
case STATE_PREPROC_INVALID: case STATE_PREPROC_INVALID:
{ {
ID3D10Blob *blob = NULL, *errors = NULL; ID3D10Blob *blob = NULL, *errors = NULL;
...@@ -1324,6 +1355,12 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o ...@@ -1324,6 +1355,12 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o
expect_hr = S_OK; expect_hr = S_OK;
state = read_shader_directive(runner, state, line_buffer, line, &expect_hr); state = read_shader_directive(runner, state, line_buffer, line, &expect_hr);
} }
else if (match_directive_substring(line, "[effect", &line))
{
state = STATE_SHADER_EFFECT;
expect_hr = S_OK;
state = read_shader_directive(runner, state, line_buffer, line, &expect_hr);
}
else if (!strcmp(line, "[input layout]\n")) else if (!strcmp(line, "[input layout]\n"))
{ {
state = STATE_INPUT_LAYOUT; state = STATE_INPUT_LAYOUT;
...@@ -1355,6 +1392,8 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o ...@@ -1355,6 +1392,8 @@ void run_shader_tests(struct shader_runner *runner, const struct shader_runner_o
case STATE_SHADER_PIXEL_TODO: case STATE_SHADER_PIXEL_TODO:
case STATE_SHADER_VERTEX: case STATE_SHADER_VERTEX:
case STATE_SHADER_VERTEX_TODO: case STATE_SHADER_VERTEX_TODO:
case STATE_SHADER_EFFECT:
case STATE_SHADER_EFFECT_TODO:
{ {
size_t len = strlen(line); size_t len = strlen(line);
......
...@@ -44,6 +44,7 @@ enum shader_type ...@@ -44,6 +44,7 @@ enum shader_type
SHADER_TYPE_CS, SHADER_TYPE_CS,
SHADER_TYPE_PS, SHADER_TYPE_PS,
SHADER_TYPE_VS, SHADER_TYPE_VS,
SHADER_TYPE_FX,
}; };
const char *shader_type_string(enum shader_type type); const char *shader_type_string(enum shader_type type);
...@@ -118,6 +119,7 @@ struct shader_runner ...@@ -118,6 +119,7 @@ struct shader_runner
char *vs_source; char *vs_source;
char *ps_source; char *ps_source;
char *cs_source; char *cs_source;
char *fx_source;
enum shader_model minimum_shader_model; enum shader_model minimum_shader_model;
enum shader_model maximum_shader_model; enum shader_model maximum_shader_model;
......
...@@ -147,11 +147,11 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co ...@@ -147,11 +147,11 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co
resource->resource = create_default_texture2d(device, params->width, params->height, 1, params->level_count, resource->resource = create_default_texture2d(device, params->width, params->height, 1, params->level_count,
params->format, 0, D3D12_RESOURCE_STATE_COPY_DEST); params->format, 0, D3D12_RESOURCE_STATE_COPY_DEST);
upload_texture_data(resource->resource, resource_data, upload_texture_data_with_states(resource->resource, resource_data,
params->level_count, test_context->queue, test_context->list); params->level_count, test_context->queue, test_context->list,
reset_command_list(test_context->list, test_context->allocator); RESOURCE_STATE_DO_NOT_CHANGE,
transition_resource_state(test_context->list, resource->resource, D3D12_RESOURCE_STATE_COPY_DEST,
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE); D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
reset_command_list(test_context->list, test_context->allocator);
ID3D12Device_CreateShaderResourceView(device, resource->resource, ID3D12Device_CreateShaderResourceView(device, resource->resource,
NULL, get_cpu_descriptor_handle(test_context, runner->heap, resource->r.slot)); NULL, get_cpu_descriptor_handle(test_context, runner->heap, resource->r.slot));
break; break;
...@@ -163,11 +163,10 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co ...@@ -163,11 +163,10 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co
resource->resource = create_default_texture2d(device, params->width, params->height, 1, params->level_count, resource->resource = create_default_texture2d(device, params->width, params->height, 1, params->level_count,
params->format, D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_COPY_DEST); params->format, D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_COPY_DEST);
upload_texture_data(resource->resource, resource_data, upload_texture_data_with_states(resource->resource, resource_data,
params->level_count, test_context->queue, test_context->list); params->level_count, test_context->queue, test_context->list,
RESOURCE_STATE_DO_NOT_CHANGE, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
reset_command_list(test_context->list, test_context->allocator); reset_command_list(test_context->list, test_context->allocator);
transition_resource_state(test_context->list, resource->resource,
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
ID3D12Device_CreateUnorderedAccessView(device, resource->resource, ID3D12Device_CreateUnorderedAccessView(device, resource->resource,
NULL, NULL, get_cpu_descriptor_handle(test_context, runner->heap, resource->r.slot + MAX_RESOURCES)); NULL, NULL, get_cpu_descriptor_handle(test_context, runner->heap, resource->r.slot + MAX_RESOURCES));
break; break;
...@@ -182,11 +181,10 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co ...@@ -182,11 +181,10 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co
resource->resource = create_default_buffer(device, params->data_size, resource->resource = create_default_buffer(device, params->data_size,
D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_COPY_DEST); D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_COPY_DEST);
upload_buffer_data(resource->resource, 0, params->data_size, resource_data, upload_buffer_data_with_states(resource->resource, 0, params->data_size, resource_data,
test_context->queue, test_context->list); test_context->queue, test_context->list,
RESOURCE_STATE_DO_NOT_CHANGE, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
reset_command_list(test_context->list, test_context->allocator); reset_command_list(test_context->list, test_context->allocator);
transition_resource_state(test_context->list, resource->resource,
D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
uav_desc.Format = params->format; uav_desc.Format = params->format;
uav_desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER; uav_desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
...@@ -546,13 +544,9 @@ static struct resource_readback *d3d12_runner_get_resource_readback(struct shade ...@@ -546,13 +544,9 @@ static struct resource_readback *d3d12_runner_get_resource_readback(struct shade
else else
state = D3D12_RESOURCE_STATE_UNORDERED_ACCESS; state = D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
transition_resource_state(test_context->list, resource->resource, get_resource_readback_with_command_list_and_states(resource->resource, 0, rb,
state, D3D12_RESOURCE_STATE_COPY_SOURCE); test_context->queue, test_context->list, state, state);
get_resource_readback_with_command_list(resource->resource, 0, rb,
test_context->queue, test_context->list);
reset_command_list(test_context->list, test_context->allocator); reset_command_list(test_context->list, test_context->allocator);
transition_resource_state(test_context->list, resource->resource,
D3D12_RESOURCE_STATE_COPY_SOURCE, state);
return &rb->rb; return &rb->rb;
} }
......