mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
workgroups: fix program/kernel object leak (#1775)
`create_single_kernel_helper` is called in a loop, overwriting the objects contained in the wrapper classes. The wrapper class is not aware of this, as the overwriting happens through its `operator&`. Move the wrapper objects into the loop, so that the contained objects get released as soon as the program and kernel objects are no longer needed. Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
This commit is contained in:
committed by
GitHub
parent
845ec694bb
commit
9b0f78549a
@@ -221,8 +221,6 @@ int do_test_work_group_suggested_local_size(
|
|||||||
bool (*skip_cond)(size_t), size_t start, size_t end, size_t incr,
|
bool (*skip_cond)(size_t), size_t start, size_t end, size_t incr,
|
||||||
cl_ulong max_local_mem_size, size_t global_work_offset[], num_dims dim)
|
cl_ulong max_local_mem_size, size_t global_work_offset[], num_dims dim)
|
||||||
{
|
{
|
||||||
clProgramWrapper scan_program;
|
|
||||||
clKernelWrapper scan_kernel;
|
|
||||||
int err;
|
int err;
|
||||||
size_t test_values[] = { 1, 1, 1 };
|
size_t test_values[] = { 1, 1, 1 };
|
||||||
std::string kernel_names[6] = {
|
std::string kernel_names[6] = {
|
||||||
@@ -244,6 +242,8 @@ int do_test_work_group_suggested_local_size(
|
|||||||
for (int kernel_num = 0; kernel_num < 6; kernel_num++)
|
for (int kernel_num = 0; kernel_num < 6; kernel_num++)
|
||||||
{
|
{
|
||||||
if (max_local_mem_size < local_mem_size[kernel_num]) continue;
|
if (max_local_mem_size < local_mem_size[kernel_num]) continue;
|
||||||
|
clProgramWrapper scan_program;
|
||||||
|
clKernelWrapper scan_kernel;
|
||||||
// Create the kernel
|
// Create the kernel
|
||||||
err = create_single_kernel_helper(
|
err = create_single_kernel_helper(
|
||||||
context, &scan_program, &scan_kernel, 1,
|
context, &scan_program, &scan_kernel, 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user