diff options
Diffstat (limited to 'examples/quickcl')
-rw-r--r-- | examples/quickcl/histogram/histogram.cpp | 10 | ||||
-rw-r--r-- | examples/quickcl/imageprocess/imageprocess.cpp | 6 | ||||
-rw-r--r-- | examples/quickcl/particles/particles.cpp | 15 |
3 files changed, 19 insertions, 12 deletions
diff --git a/examples/quickcl/histogram/histogram.cpp b/examples/quickcl/histogram/histogram.cpp index 6ba0b65..3bd062d 100644 --- a/examples/quickcl/histogram/histogram.cpp +++ b/examples/quickcl/histogram/histogram.cpp @@ -46,6 +46,7 @@ #include <QQmlEngine> #include <QQuickCLItem> #include <QQuickCLImageRunnable> +#include <QQuickCLContext> #include <QAbstractListModel> static bool profile = false; @@ -159,9 +160,10 @@ CLRunnable::CLRunnable(CLItem *item) m_sharedBuf(0), m_doneEvent(0) { - QByteArray platform = m_item->platformName(); + QQuickCLContext *clctx = m_item->context(); + QByteArray platform = clctx->platformName(); qDebug("Using platform %s", platform.constData()); - m_program = m_item->buildProgramFromFile(QStringLiteral(":/histogram.cl")); + m_program = clctx->buildProgramFromFile(QStringLiteral(":/histogram.cl")); if (!m_program) return; cl_int err; @@ -175,7 +177,7 @@ CLRunnable::CLRunnable(CLItem *item) qWarning("Failed to create sum histogram OpenCL kernel: %d", err); return; } - m_resultBuf = clCreateBuffer(m_item->context(), CL_MEM_WRITE_ONLY, 256 * sizeof(cl_uint), 0, &err); + m_resultBuf = clCreateBuffer(clctx->context(), CL_MEM_WRITE_ONLY, 256 * sizeof(cl_uint), 0, &err); if (!m_resultBuf) { qWarning("Failed to create OpenCL buffer: %d", err); return; @@ -235,7 +237,7 @@ void CLRunnable::runKernel(cl_mem inImage, cl_mem, const QSize &size) cl_int err; if (!m_sharedBuf) { const size_t sharedBufSize = num_groups * 256 * sizeof(cl_uint); - m_sharedBuf = clCreateBuffer(m_item->context(), CL_MEM_READ_WRITE, sharedBufSize, 0, &err); + m_sharedBuf = clCreateBuffer(m_item->context()->context(), CL_MEM_READ_WRITE, sharedBufSize, 0, &err); if (!m_sharedBuf) { qWarning("Failed to create shared buffer: %d", err); return; diff --git a/examples/quickcl/imageprocess/imageprocess.cpp b/examples/quickcl/imageprocess/imageprocess.cpp index 9738ea4..5534bbb 100644 --- a/examples/quickcl/imageprocess/imageprocess.cpp +++ b/examples/quickcl/imageprocess/imageprocess.cpp @@ -46,6 +46,7 @@ #include <QQmlEngine> #include <QQuickCLItem> #include <QQuickCLImageRunnable> +#include <QQuickCLContext> static bool profile = false; @@ -120,9 +121,10 @@ CLRunnable::CLRunnable(CLItem *item) m_clProgram(0), m_clKernel(0) { - QByteArray platform = m_item->platformName(); + QQuickCLContext *clctx = m_item->context(); + QByteArray platform = clctx->platformName(); qDebug("Using platform %s", platform.constData()); - m_clProgram = m_item->buildProgram(openclSrc); + m_clProgram = clctx->buildProgram(openclSrc); if (!m_clProgram) return; cl_int err; diff --git a/examples/quickcl/particles/particles.cpp b/examples/quickcl/particles/particles.cpp index e687084..c1e89df 100644 --- a/examples/quickcl/particles/particles.cpp +++ b/examples/quickcl/particles/particles.cpp @@ -49,6 +49,7 @@ #include <QOpenGLShaderProgram> #include <QQuickCLItem> #include <QQuickCLRunnable> +#include <QQuickCLContext> #include <time.h> const int PARTICLE_COUNT = 1024; @@ -219,16 +220,18 @@ CLRunnable::CLRunnable(CLItem *item) m_lastT(-1), m_clBufParticleInfo(0) { - qDebug() << "Platform" << m_item->platformName() << "Device extensions" << m_item->deviceExtensions(); + QQuickCLContext *clctx = m_item->context(); + + qDebug() << "Platform" << clctx->platformName() << "Device extensions" << clctx->deviceExtensions(); cl_int err; - m_queue = clCreateCommandQueue(m_item->context(), m_item->device(), 0, &err); + m_queue = clCreateCommandQueue(clctx->context(), clctx->device(), 0, &err); if (!m_queue) { qWarning("Failed to create OpenCL command queue: %d", err); return; } - m_program = m_item->buildProgramFromFile(QStringLiteral(":/particles.cl")); + m_program = clctx->buildProgramFromFile(QStringLiteral(":/particles.cl")); if (!m_program) return; m_kernel = clCreateKernel(m_program, "updateParticles", &err); @@ -237,11 +240,11 @@ CLRunnable::CLRunnable(CLItem *item) return; } - m_needsExplicitSync = !m_item->deviceExtensions().contains(QByteArrayLiteral("cl_khr_gl_event")); + m_needsExplicitSync = !clctx->deviceExtensions().contains(QByteArrayLiteral("cl_khr_gl_event")); // m_clBufParticleInfo is an ordinary OpenCL buffer. size_t velBufSize = PARTICLE_COUNT * sizeof(cl_float) * 4; - m_clBufParticleInfo = clCreateBuffer(m_item->context(), CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR, velBufSize, 0, &err); + m_clBufParticleInfo = clCreateBuffer(clctx->context(), CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR, velBufSize, 0, &err); if (!m_clBufParticleInfo) { qWarning("Failed to create CL buffer: %d", err); return; @@ -292,7 +295,7 @@ void CLRunnable::createBuffer() if (m_node->m_clBuf) clReleaseMemObject(m_node->m_clBuf); cl_int err; - m_node->m_clBuf = clCreateFromGLBuffer(m_item->context(), CL_MEM_READ_WRITE, buf, &err); + m_node->m_clBuf = clCreateFromGLBuffer(m_item->context()->context(), CL_MEM_READ_WRITE, buf, &err); if (!m_node->m_clBuf) qWarning("Failed to create OpenCL object for OpenGL buffer: %d", err); } |