mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
Fix memory leaks in api test suite (#2363)
This commit fixes three tests that have memory leaks due to unreleased CL objects. - `kernel_local_memory_size` - `multi_queue_flush_on_release` - `queue_flush_on_release` Signed-off-by: Michael Rizkalla <michael.rizkalla@arm.com>
This commit is contained in:
@@ -153,6 +153,8 @@ REGISTER_TEST(kernel_local_memory_size)
|
|||||||
"kernel local mem size failed");
|
"kernel local mem size failed");
|
||||||
|
|
||||||
|
|
||||||
|
program.reset();
|
||||||
|
kernel.reset();
|
||||||
// Check memory needed to execute empty kernel with __local parameter with
|
// Check memory needed to execute empty kernel with __local parameter with
|
||||||
// setKernelArg
|
// setKernelArg
|
||||||
if (create_single_kernel_helper(context, &program, &kernel, 1,
|
if (create_single_kernel_helper(context, &program, &kernel, 1,
|
||||||
@@ -225,6 +227,8 @@ REGISTER_TEST(kernel_local_memory_size)
|
|||||||
"kernel local mem size failed");
|
"kernel local mem size failed");
|
||||||
|
|
||||||
|
|
||||||
|
program.reset();
|
||||||
|
kernel.reset();
|
||||||
// Check memory needed to execute kernel with __local variable and __local
|
// Check memory needed to execute kernel with __local variable and __local
|
||||||
// parameter with setKernelArg
|
// parameter with setKernelArg
|
||||||
if (create_single_kernel_helper(context, &program, &kernel, 1,
|
if (create_single_kernel_helper(context, &program, &kernel, 1,
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ REGISTER_TEST(queue_flush_on_release)
|
|||||||
cl_int err;
|
cl_int err;
|
||||||
|
|
||||||
// Create a command queue
|
// Create a command queue
|
||||||
cl_command_queue cmd_queue = clCreateCommandQueue(context, device, 0, &err);
|
clCommandQueueWrapper cmd_queue =
|
||||||
|
clCreateCommandQueue(context, device, 0, &err);
|
||||||
test_error(err, "Could not create command queue");
|
test_error(err, "Could not create command queue");
|
||||||
|
|
||||||
// Create a kernel
|
// Create a kernel
|
||||||
@@ -42,7 +43,7 @@ REGISTER_TEST(queue_flush_on_release)
|
|||||||
test_error(err, "Could not enqueue kernel");
|
test_error(err, "Could not enqueue kernel");
|
||||||
|
|
||||||
// Release the queue
|
// Release the queue
|
||||||
err = clReleaseCommandQueue(cmd_queue);
|
cmd_queue.reset();
|
||||||
|
|
||||||
// Wait for kernel to execute since the queue must flush on release
|
// Wait for kernel to execute since the queue must flush on release
|
||||||
bool success = poll_until(2000, 50, [&event]() {
|
bool success = poll_until(2000, 50, [&event]() {
|
||||||
@@ -64,11 +65,13 @@ REGISTER_TEST(multi_queue_flush_on_release)
|
|||||||
cl_int err;
|
cl_int err;
|
||||||
|
|
||||||
// Create A command queue
|
// Create A command queue
|
||||||
cl_command_queue queue_A = clCreateCommandQueue(context, device, 0, &err);
|
clCommandQueueWrapper queue_A =
|
||||||
|
clCreateCommandQueue(context, device, 0, &err);
|
||||||
test_error(err, "Could not create command queue A");
|
test_error(err, "Could not create command queue A");
|
||||||
|
|
||||||
// Create B command queue
|
// Create B command queue
|
||||||
cl_command_queue queue_B = clCreateCommandQueue(context, device, 0, &err);
|
clCommandQueueWrapper queue_B =
|
||||||
|
clCreateCommandQueue(context, device, 0, &err);
|
||||||
test_error(err, "Could not create command queue B");
|
test_error(err, "Could not create command queue B");
|
||||||
|
|
||||||
// Create a kernel
|
// Create a kernel
|
||||||
@@ -96,8 +99,7 @@ REGISTER_TEST(multi_queue_flush_on_release)
|
|||||||
|
|
||||||
// Release queue_A, which performs an implicit flush to issue any previously
|
// Release queue_A, which performs an implicit flush to issue any previously
|
||||||
// queued OpenCL commands
|
// queued OpenCL commands
|
||||||
err = clReleaseCommandQueue(queue_A);
|
queue_A.reset();
|
||||||
test_error(err, "clReleaseCommandQueue failed");
|
|
||||||
|
|
||||||
err = clFlush(queue_B);
|
err = clFlush(queue_B);
|
||||||
test_error(err, "clFlush failed");
|
test_error(err, "clFlush failed");
|
||||||
|
|||||||
Reference in New Issue
Block a user