| 2213 | } |
| 2214 | |
| 2215 | VerifyApplication::TestReturnValue run(VerifyApplication* state, bool silent) |
| 2216 | { |
| 2217 | std::string cfg = state->rtcore + ",isa="+stringOfISA(isa); |
| 2218 | RTCDeviceRef device = rtcNewDevice(cfg.c_str()); |
| 2219 | errorHandler(nullptr,rtcGetDeviceError(device)); |
| 2220 | |
| 2221 | size_t M = num_interpolation_vertices*N+16; // pads the arrays with some valid data |
| 2222 | |
| 2223 | RTCGeometry geom = rtcNewGeometry(device, RTC_GEOMETRY_TYPE_TRIANGLE); |
| 2224 | AssertNoError(device); |
| 2225 | rtcSetGeometryVertexAttributeCount(geom,2); |
| 2226 | |
| 2227 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT3, interpolation_triangle_indices, 0, 3*sizeof(unsigned int), num_interpolation_triangle_faces*3); |
| 2228 | AssertNoError(device); |
| 2229 | |
| 2230 | std::vector<float> vertices0(M); |
| 2231 | for (size_t i=0; i<M; i++) vertices0[i] = random_float(); |
| 2232 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT3, vertices0.data(), 0, N*sizeof(float), num_interpolation_vertices); |
| 2233 | AssertNoError(device); |
| 2234 | |
| 2235 | /*std::vector<float> vertices1(M); |
| 2236 | for (size_t i=0; i<M; i++) vertices1[i] = random_float(); |
| 2237 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX, 1, RTC_FORMAT_FLOAT3, vertices1.data(), 0, N*sizeof(float), num_interpolation_vertices); |
| 2238 | AssertNoError(device);*/ |
| 2239 | |
| 2240 | std::vector<float> user_vertices0(M); |
| 2241 | for (size_t i=0; i<M; i++) user_vertices0[i] = random_float(); |
| 2242 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 0, RTCFormat(RTC_FORMAT_FLOAT+N), user_vertices0.data(), 0, N*sizeof(float), num_interpolation_vertices); |
| 2243 | AssertNoError(device); |
| 2244 | |
| 2245 | std::vector<float> user_vertices1(M); |
| 2246 | for (size_t i=0; i<M; i++) user_vertices1[i] = random_float(); |
| 2247 | rtcSetSharedGeometryBuffer(geom, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 1, RTCFormat(RTC_FORMAT_FLOAT+N), user_vertices1.data(), 0, N*sizeof(float), num_interpolation_vertices); |
| 2248 | AssertNoError(device); |
| 2249 | |
| 2250 | rtcDisableGeometry(geom); |
| 2251 | AssertNoError(device); |
| 2252 | rtcCommitGeometry(geom); |
| 2253 | AssertNoError(device); |
| 2254 | |
| 2255 | bool passed = true; |
| 2256 | if (N >= 3) { |
| 2257 | passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,0,vertices0.data(),3,N); |
| 2258 | //passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,1,vertices1.data(),3,N); |
| 2259 | } |
| 2260 | passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,0,user_vertices0.data(),N,N); |
| 2261 | passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,1,user_vertices1.data(),N,N); |
| 2262 | |
| 2263 | passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,0,vertices0.data(),1,N); |
| 2264 | //passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX,1,vertices1.data(),1,N); |
| 2265 | passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,0,user_vertices0.data(),1,N); |
| 2266 | passed &= checkTriangleInterpolation(geom,RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE,1,user_vertices1.data(),1,N); |
| 2267 | |
| 2268 | rtcReleaseGeometry(geom); |
| 2269 | AssertNoError(device); |
| 2270 | |
| 2271 | return (VerifyApplication::TestReturnValue) passed; |
| 2272 | } |
nothing calls this directly
no test coverage detected