aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quickcl/particles/particles.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-05-01 22:14:20 +0200
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-05-02 16:17:56 +0000
commit749f98c8f28ffd06d5caccffe60edc94f280f6f7 (patch)
treed7f58ae3ca6aed44d12d10a7db088bf76c7d4750 /examples/quickcl/particles/particles.cpp
parenta098fea659e9dd2cdb8d214c62cfe59f2aecb1a6 (diff)
Move helpers from item to context
Change-Id: I61ef7f15799af2cbd7e245285b7c04f2bfd04989 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'examples/quickcl/particles/particles.cpp')
-rw-r--r--examples/quickcl/particles/particles.cpp15
1 files changed, 9 insertions, 6 deletions
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);
}