| 154 | } |
| 155 | |
| 156 | TEST(Smoke, Read) { |
| 157 | std::string shader1 = "A"; |
| 158 | std::string shader2 = "B"; |
| 159 | |
| 160 | SerializedCompiledModelBuilder builder; |
| 161 | builder.AddShader(shader1); |
| 162 | builder.AddShader(shader2); |
| 163 | |
| 164 | std::vector<Variable> parameters; |
| 165 | parameters.push_back({"1", int32_t(1)}); |
| 166 | parameters.push_back({"2", int2(1, 2)}); |
| 167 | parameters.push_back({"3", int4(1, 2, 3, 4)}); |
| 168 | parameters.push_back({"4", uint32_t(10)}); |
| 169 | parameters.push_back({"5", uint4(10, 20, 30, 40)}); |
| 170 | parameters.push_back({"6", -2.0f}); |
| 171 | parameters.push_back({"7", float2(1, -1)}); |
| 172 | parameters.push_back({"8", float4(1, -1, 2, -2)}); |
| 173 | parameters.push_back( |
| 174 | {"9", std::vector<int2>{int2(1, 2), int2(3, 4), int2(5, 6)}}); |
| 175 | |
| 176 | std::vector<Object> objects; |
| 177 | objects.push_back(MakeReadonlyBuffer(std::vector<float>{1, 2, 3, 4})); |
| 178 | objects.push_back(Object{AccessType::WRITE, DataType::FLOAT32, |
| 179 | ObjectType::TEXTURE, 5, uint3(1, 2, 3), 100}); |
| 180 | objects.push_back(Object{AccessType::READ_WRITE, DataType::INT8, |
| 181 | ObjectType::BUFFER, 6, uint2(2, 1), |
| 182 | std::vector<uint8_t>{7, 9}}); |
| 183 | uint3 num_workgroups(10, 20, 30); |
| 184 | uint3 workgroup_size(1, 2, 3); |
| 185 | builder.AddProgram(parameters, objects, workgroup_size, num_workgroups, 1); |
| 186 | |
| 187 | Handler handler; |
| 188 | CompiledModelOptions options; |
| 189 | options.dynamic_batch = true; |
| 190 | ASSERT_TRUE( |
| 191 | DeserializeCompiledModel(builder.Finalize(options), &handler).ok()); |
| 192 | EXPECT_EQ(num_workgroups.data_, handler.programs[0].num_workgroups.data_); |
| 193 | EXPECT_EQ(workgroup_size.data_, handler.programs[0].workgroup_size.data_); |
| 194 | EXPECT_THAT(handler.shaders, ::testing::ElementsAre(shader1, shader2)); |
| 195 | EXPECT_EQ(handler.programs[0].parameters.size(), parameters.size()); |
| 196 | for (int i = 0; i < parameters.size(); ++i) { |
| 197 | EXPECT_TRUE(Eq(parameters[i], handler.programs[0].parameters[i])) << i; |
| 198 | } |
| 199 | EXPECT_EQ(handler.programs[0].objects.size(), objects.size()); |
| 200 | for (int i = 0; i < objects.size(); ++i) { |
| 201 | EXPECT_TRUE(Eq(objects[i], handler.programs[0].objects[i])) << i; |
| 202 | } |
| 203 | EXPECT_TRUE(handler.options.dynamic_batch); |
| 204 | } |
| 205 | |
| 206 | } // namespace |
| 207 | } // namespace gl |
nothing calls this directly
no test coverage detected