Skip to content

Commit 4ed9c87

Browse files
committed
Fixed OpenCL memory leaks in radeon_rays_test_cl.h.
1 parent e3177fc commit 4ed9c87

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

UnitTest/radeon_rays_performance_test_cl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class ApiPerformance : public ::testing::Test
7575
queue_ = clCreateCommandQueue(rawcontext_, device, 0, &status);
7676
ASSERT_EQ(status, CL_SUCCESS);
7777

78-
ASSERT_NO_THROW(api_ = IntersectionApiCL::CreateFromOpenClContext(rawcontext_, device, queue_));
78+
ASSERT_NO_THROW(api_ = RadeonRays::CreateFromOpenClContext(rawcontext_, device, queue_));
7979

8080
// Load obj file
8181
std::string res = LoadObj(shapes_, materials_, "../Resources/bmw/i8.obj");

UnitTest/radeon_rays_test_cl.h

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,10 @@ TEST_F(ApiCl, ClBuffer)
189189
ASSERT_NO_THROW(apibuffer = RadeonRays::CreateFromOpenClBuffer(api_,buffer));
190190

191191
ASSERT_NO_THROW(api_->DeleteBuffer(apibuffer));
192+
193+
status = clReleaseMemObject(buffer);
194+
195+
ASSERT_EQ(status, CL_SUCCESS);
192196
}
193197

194198
// The test creates a single triangle mesh and tests attach/detach functionality
@@ -259,6 +263,12 @@ TEST_F(ApiCl, Intersection_1Ray_Buffer)
259263
ASSERT_NO_THROW(api_->DeleteBuffer(hitinfos));
260264
ASSERT_NO_THROW(api_->DetachShape(mesh));
261265
ASSERT_NO_THROW(api_->DeleteShape(mesh));
266+
267+
status = clReleaseMemObject(rays_buffer);
268+
ASSERT_EQ(status, CL_SUCCESS);
269+
270+
status = clReleaseMemObject(hitinfos_buffer);
271+
ASSERT_EQ(status, CL_SUCCESS);
262272
}
263273

264274

@@ -311,7 +321,6 @@ TEST_F(ApiCl, Intersection_3Rays_Buffer)
311321
ASSERT_EQ(status, CL_SUCCESS);
312322

313323
Buffer* rays = nullptr;
314-
Buffer* hits = nullptr;
315324
Buffer* hitinfos = nullptr;
316325

317326
// Create API objects
@@ -335,10 +344,15 @@ TEST_F(ApiCl, Intersection_3Rays_Buffer)
335344

336345
// Bail out
337346
ASSERT_NO_THROW(api_->DeleteBuffer(rays));
338-
ASSERT_NO_THROW(api_->DeleteBuffer(hits));
339347
ASSERT_NO_THROW(api_->DeleteBuffer(hitinfos));
340348
ASSERT_NO_THROW(api_->DetachShape(mesh));
341349
ASSERT_NO_THROW(api_->DeleteShape(mesh));
350+
351+
status = clReleaseMemObject(rays_buffer);
352+
ASSERT_EQ(status, CL_SUCCESS);
353+
354+
status = clReleaseMemObject(hitinfos_buffer);
355+
ASSERT_EQ(status, CL_SUCCESS);
342356
}
343357

344358
// The test creates a single triangle mesh and tests attach/detach functionality
@@ -395,7 +409,6 @@ TEST_F(ApiCl, Intersection_3Rays_Buffer_Indirect)
395409
ASSERT_EQ(status, CL_SUCCESS);
396410

397411
Buffer* rays = nullptr;
398-
Buffer* hits = nullptr;
399412
Buffer* hitinfos = nullptr;
400413
Buffer* numrays = nullptr;
401414

@@ -421,10 +434,19 @@ TEST_F(ApiCl, Intersection_3Rays_Buffer_Indirect)
421434

422435
// Bail out
423436
ASSERT_NO_THROW(api_->DeleteBuffer(rays));
424-
ASSERT_NO_THROW(api_->DeleteBuffer(hits));
425437
ASSERT_NO_THROW(api_->DeleteBuffer(hitinfos));
438+
ASSERT_NO_THROW(api_->DeleteBuffer(numrays));
426439
ASSERT_NO_THROW(api_->DetachShape(mesh));
427440
ASSERT_NO_THROW(api_->DeleteShape(mesh));
441+
442+
status = clReleaseMemObject(rays_buffer);
443+
ASSERT_EQ(status, CL_SUCCESS);
444+
445+
status = clReleaseMemObject(hitinfos_buffer);
446+
ASSERT_EQ(status, CL_SUCCESS);
447+
448+
status = clReleaseMemObject(numrays_buffer);
449+
ASSERT_EQ(status, CL_SUCCESS);
428450
}
429451

430452

@@ -505,6 +527,12 @@ TEST_F(ApiCl, Intersection_Events)
505527
ASSERT_NO_THROW(api_->DeleteBuffer(hitinfos));
506528
ASSERT_NO_THROW(api_->DetachShape(mesh));
507529
ASSERT_NO_THROW(api_->DeleteShape(mesh));
530+
531+
status = clReleaseMemObject(rays_buffer);
532+
ASSERT_EQ(status, CL_SUCCESS);
533+
534+
status = clReleaseMemObject(hitinfos_buffer);
535+
ASSERT_EQ(status, CL_SUCCESS);
508536
}
509537

510538

@@ -592,6 +620,12 @@ TEST_F(ApiCl, Intersection_DependencyEvents)
592620
ASSERT_NO_THROW(api_->DeleteBuffer(hitinfos));
593621
ASSERT_NO_THROW(api_->DetachShape(mesh));
594622
ASSERT_NO_THROW(api_->DeleteShape(mesh));
623+
624+
status = clReleaseMemObject(rays_buffer);
625+
ASSERT_EQ(status, CL_SUCCESS);
626+
627+
status = clReleaseMemObject(hitinfos_buffer);
628+
ASSERT_EQ(status, CL_SUCCESS);
595629
}
596630

597631
#endif // USE_OPENCL

0 commit comments

Comments
 (0)