From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- tests/shader_runner.c | 35 +++++++++++++++++++++++++++++++++++ tests/shader_runner.h | 1 + 2 files changed, 36 insertions(+)
diff --git a/tests/shader_runner.c b/tests/shader_runner.c index 383f5aca..4cf72fb6 100644 --- a/tests/shader_runner.c +++ b/tests/shader_runner.c @@ -85,6 +85,8 @@ enum parse_state STATE_SHADER_PIXEL, STATE_SHADER_PIXEL_TODO, STATE_SHADER_VERTEX, + STATE_EFFECT, + STATE_EFFECT_TODO, STATE_TEST, };
@@ -800,6 +802,17 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const shader_source_size = 0; break;
+ case STATE_EFFECT: + case STATE_EFFECT_TODO: + todo_if (state == STATE_EFFECT_TODO) + compile_shader(runner, shader_source, shader_source_len, "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: { ID3D10Blob *blob = NULL, *errors = NULL; @@ -995,6 +1008,26 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const { state = STATE_SHADER_VERTEX; } + else if (!strcmp(line, "[effect]\n")) + { + state = STATE_EFFECT; + expect_hr = S_OK; + } + else if (!strcmp(line, "[effect todo]\n")) + { + state = STATE_EFFECT_TODO; + expect_hr = S_OK; + } + else if (!strcmp(line, "[effect fail]\n")) + { + state = STATE_EFFECT; + expect_hr = E_FAIL; + } + else if (!strcmp(line, "[effect fail todo]\n")) + { + state = STATE_EFFECT_TODO; + expect_hr = E_FAIL; + } else if (!strcmp(line, "[input layout]\n")) { state = STATE_INPUT_LAYOUT; @@ -1025,6 +1058,8 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const case STATE_SHADER_PIXEL: case STATE_SHADER_PIXEL_TODO: case STATE_SHADER_VERTEX: + case STATE_EFFECT: + case STATE_EFFECT_TODO: { size_t len = strlen(line);
diff --git a/tests/shader_runner.h b/tests/shader_runner.h index 876a43ca..2e4ca506 100644 --- a/tests/shader_runner.h +++ b/tests/shader_runner.h @@ -105,6 +105,7 @@ struct shader_runner char *vs_source; char *ps_source; char *cs_source; + char *fx_source; enum shader_model minimum_shader_model; enum shader_model maximum_shader_model;