diff options
author | asuonpaa <34128694+asuonpaa@users.noreply.github.com> | 2020-03-19 14:50:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-19 08:50:24 -0400 |
commit | f4ea9d7ffdd88c0ea0fff58470ec521353e5e41c (patch) | |
tree | b5b9589db3ae2867f670af39c11f5a08b064e1c4 /src/amberscript/parser_run_test.cc | |
parent | c360eb6162d55cc80b33d48c6e03313fb3f5b072 (diff) | |
download | amber-f4ea9d7ffdd88c0ea0fff58470ec521353e5e41c.tar.gz |
Parser: Check index buffer size for indexed draws (#822)
Fixes #821
Diffstat (limited to 'src/amberscript/parser_run_test.cc')
-rw-r--r-- | src/amberscript/parser_run_test.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/amberscript/parser_run_test.cc b/src/amberscript/parser_run_test.cc index 4911414..4d2d69c 100644 --- a/src/amberscript/parser_run_test.cc +++ b/src/amberscript/parser_run_test.cc @@ -1404,6 +1404,64 @@ RUN my_pipeline DRAW_ARRAY AS TRIANGLE_LIST START_IDX 1 COUNT 9)"; r.Error()); } +TEST_F(AmberScriptParserTest, RunDrawArraysIndexedStartIdxTooLarge) { + std::string in = R"( +SHADER vertex my_shader PASSTHROUGH +SHADER fragment my_fragment GLSL +# GLSL Shader +END +BUFFER vtex_buf DATA_TYPE vec3<float> DATA +1 2 3 +END +BUFFER indices DATA_TYPE int32 DATA +0 1 2 1 2 0 +END + +PIPELINE graphics my_pipeline + ATTACH my_shader + ATTACH my_fragment + VERTEX_DATA vtex_buf LOCATION 0 + INDEX_DATA indices +END + +RUN my_pipeline DRAW_ARRAY AS TRIANGLE_LIST INDEXED START_IDX 6 COUNT 1)"; + + Parser parser; + Result r = parser.Parse(in); + ASSERT_FALSE(r.IsSuccess()); + EXPECT_EQ("20: START_IDX plus COUNT exceeds index buffer data size", + r.Error()); +} + +TEST_F(AmberScriptParserTest, RunDrawArraysIndexedCountTooLarge) { + std::string in = R"( +SHADER vertex my_shader PASSTHROUGH +SHADER fragment my_fragment GLSL +# GLSL Shader +END +BUFFER vtex_buf DATA_TYPE vec3<float> DATA +1 2 3 +END +BUFFER indices DATA_TYPE int32 DATA +0 1 2 1 2 0 +END + +PIPELINE graphics my_pipeline + ATTACH my_shader + ATTACH my_fragment + VERTEX_DATA vtex_buf LOCATION 0 + INDEX_DATA indices +END + +RUN my_pipeline DRAW_ARRAY AS TRIANGLE_LIST INDEXED START_IDX 1 COUNT 6)"; + + Parser parser; + Result r = parser.Parse(in); + ASSERT_FALSE(r.IsSuccess()); + EXPECT_EQ("20: START_IDX plus COUNT exceeds index buffer data size", + r.Error()); +} + TEST_F(AmberScriptParserTest, RunDrawArraysInvalidCountValueFormat) { std::string in = R"( SHADER vertex my_shader PASSTHROUGH |