def get_gl_sharing_context_properties(): ctx_props = cl.context_properties from OpenGL import platform as gl_platform, GLX, WGL props = [] import sys if sys.platform in ["linux", "linux2"]: props.append( (ctx_props.GL_CONTEXT_KHR, gl_platform.GetCurrentContext())) props.append( (ctx_props.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) elif sys.platform == "win32": props.append( (ctx_props.GL_CONTEXT_KHR, gl_platform.GetCurrentContext())) props.append( (ctx_props.WGL_HDC_KHR, WGL.wglGetCurrentDC())) elif sys.platform == "darwin": props.append( (ctx_props.CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE, cl.get_apple_cgl_share_group())) else: raise NotImplementedError("platform '%s' not yet supported" % sys.platform) return props
def get_gl_sharing_context_properties(): ctx_props = cl.context_properties from OpenGL import platform as gl_platform props = [] import sys if sys.platform in ["linux", "linux2"]: from OpenGL import GLX props.append( (ctx_props.GL_CONTEXT_KHR, gl_platform.GetCurrentContext())) props.append((ctx_props.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) elif sys.platform == "win32": from OpenGL import WGL props.append( (ctx_props.GL_CONTEXT_KHR, gl_platform.GetCurrentContext())) props.append((ctx_props.WGL_HDC_KHR, WGL.wglGetCurrentDC())) elif sys.platform == "darwin": props.append((ctx_props.CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE, cl.get_apple_cgl_share_group())) else: raise NotImplementedError("platform '%s' not yet supported" % sys.platform) return props
def initialize(): plats = cl.get_platforms() ctx_props = cl.context_properties props = [(ctx_props.PLATFORM, plats[0]), (ctx_props.GL_CONTEXT_KHR, platform.GetCurrentContext())] import sys if sys.platform == "linux2": props.append((ctx_props.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) elif sys.platform == "win32": props.append((ctx_props.WGL_HDC_KHR, WGL.wglGetCurrentDC())) ctx = cl.Context(properties=props) glClearColor(1, 1, 1, 1) glColor(0, 0, 1) vbo = glGenBuffers(1) glBindBuffer(GL_ARRAY_BUFFER, vbo) rawGlBufferData(GL_ARRAY_BUFFER, n_vertices * 2 * 4, None, GL_STATIC_DRAW) glEnableClientState(GL_VERTEX_ARRAY) glVertexPointer(2, GL_FLOAT, 0, None) coords_dev = cl.GLBuffer(ctx, cl.mem_flags.READ_WRITE, int(vbo)) prog = cl.Program(ctx, src).build() queue = cl.CommandQueue(ctx) cl.enqueue_acquire_gl_objects(queue, [coords_dev]) prog.generate_sin(queue, (n_vertices, ), None, coords_dev) cl.enqueue_release_gl_objects(queue, [coords_dev]) queue.finish() glFlush()
def __init__(self): plats = cl.get_platforms() ctx_props = cl.context_properties self.props = [(ctx_props.PLATFORM, plats[0]), (ctx_props.GL_CONTEXT_KHR, platform.GetCurrentContext())] if sys.platform == "linux2": self.props.append((ctx_props.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) elif sys.platform == "win32": self.props.append((ctx_props.WGL_HDC_KHR, WGL.wglGetCurrentDC())) self.ctx = cl.Context(properties=self.props) self.cross4 = ElementwiseKernel( self.ctx, "__global const float4 *u, " "__global const float4 *v, " "__global const float4 *w, " "__global float4 *r", "r[i] = cross4(u[i],v[i],w[i])", "cross4_final", preamble=cross4_preamble) self.distance2 = ElementwiseKernel( self.ctx, "__global const float4 *a, " "__global const float4 *b, " "__global float4 *d", "d[i] = distance2(a[i],b[i])", "distance_final", preamble=distance_preamble) self.place_hyperspheres()
def initialize(): plats = cl.get_platforms() ctx_props = cl.context_properties props = [(ctx_props.PLATFORM, plats[0]), (ctx_props.GL_CONTEXT_KHR, platform.GetCurrentContext())] import sys if sys.platform == "linux2": props.append( (ctx_props.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) elif sys.platform == "win32": props.append( (ctx_props.WGL_HDC_KHR, WGL.wglGetCurrentDC())) ctx = cl.Context(properties=props) glClearColor(1, 1, 1, 1) glColor(0, 0, 1) vbo = glGenBuffers(1) glBindBuffer(GL_ARRAY_BUFFER, vbo) rawGlBufferData(GL_ARRAY_BUFFER, n_vertices * 2 * 4, None, GL_STATIC_DRAW) glEnableClientState(GL_VERTEX_ARRAY) glVertexPointer(2, GL_FLOAT, 0, None) coords_dev = cl.GLBuffer(ctx, cl.mem_flags.READ_WRITE, int(vbo)) prog = cl.Program(ctx, src).build() queue = cl.CommandQueue(ctx) cl.enqueue_acquire_gl_objects(queue, [coords_dev]) prog.generate_sin(queue, (n_vertices,), None, coords_dev) cl.enqueue_release_gl_objects(queue, [coords_dev]) queue.finish() glFlush()
def get_context_properties(self, plat): #reference context properties enumeration out = [] #link OpenCL context platform out.append((context_properties.PLATFORM, plat)) #link OpenGL context out.append((context_properties.GL_CONTEXT_KHR, platform.GetCurrentContext())) #link platform specific window contexts if "GLX" in globals(): out.append((context_properties.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) if "WGL" in globals(): out.append((context_properties.WGL_HDC_KHR, WGL.wglGetCurrentDC())) #return context properties return out
def clinit(self): plats = cl.get_platforms() ctx_props = cl.context_properties props = [(ctx_props.PLATFORM, plats[0]), (ctx_props.GL_CONTEXT_KHR, platform.GetCurrentContext())] import sys if sys.platform == "linux2": props.append( (ctx_props.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) elif sys.platform == "win32": props.append((ctx_props.WGL_HDC_KHR, WGL.wglGetCurrentDC())) self.ctx = cl.Context(properties=props) self.queue = cl.CommandQueue(self.ctx)
def clinit(self): plats = cl.get_platforms() ctx_props = cl.context_properties props = [(ctx_props.PLATFORM, plats[0]), (ctx_props.GL_CONTEXT_KHR, platform.GetCurrentContext())] import sys if sys.platform == "linux2": props.append((ctx_props.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) elif sys.platform == "win32": props.append((ctx_props.WGL_HDC_KHR, WGL.wglGetCurrentDC())) self.ctx = cl.Context(properties=props) self.queue = cl.CommandQueue(self.ctx)
def get_context_properties(self, plat): #reference context properties enumeration out = [] #link OpenCL context platform out.append((context_properties.PLATFORM, plat)) #link OpenGL context out.append( (context_properties.GL_CONTEXT_KHR, platform.GetCurrentContext())) #link platform specific window contexts if "GLX" in globals(): out.append((context_properties.GLX_DISPLAY_KHR, GLX.glXGetCurrentDisplay())) if "WGL" in globals(): out.append((context_properties.WGL_HDC_KHR, WGL.wglGetCurrentDC())) #return context properties return out
from OpenGL.GLUT import * from OpenGL.GLU import * from OpenGL.GL import * from OpenGL import platform as gl_platform from OpenGL import GLX from pycl import * import numpy as np glutInit() gl_window = glutCreateWindow("window") gl_ctx = gl_platform.GetCurrentContext() glx_display = GLX.glXGetCurrentDisplay() cl_ctx_props = { CL_GL_CONTEXT_KHR: gl_ctx, CL_GLX_DISPLAY_KHR: glx_display, } cl_ctx = clCreateContext(other_props=cl_ctx_props) cl_queue = clCreateCommandQueue(cl_ctx) def idle(): input_data = np.arange(20, dtype=np.float32) gl_buf = glGenBuffers(1) glBindBuffer(GL_ARRAY_BUFFER, gl_buf) glBufferData(GL_ARRAY_BUFFER, input_data, GL_STATIC_DRAW) glFinish() cl_buf = clCreateFromGLBuffer(cl_ctx, gl_buf) clEnqueueAcquireGLObjects(cl_queue, [cl_buf])
from OpenGL.GLUT import * from OpenGL.GLU import * from OpenGL.GL import * from OpenGL import platform as gl_platform from OpenGL import GLX from pycl import * import numpy as np glutInit() gl_window = glutCreateWindow("window") gl_ctx = gl_platform.GetCurrentContext() glx_display = GLX.glXGetCurrentDisplay() cl_ctx_props = { CL_GL_CONTEXT_KHR: gl_ctx, CL_GLX_DISPLAY_KHR: glx_display, } cl_ctx = clCreateContext(other_props=cl_ctx_props) cl_queue = clCreateCommandQueue(cl_ctx) def idle(): input_data = np.arange(20, dtype=np.float32) gl_buf = glGenBuffers(1) glBindBuffer(GL_ARRAY_BUFFER, gl_buf) glBufferData(GL_ARRAY_BUFFER, input_data, GL_STATIC_DRAW) glFinish() cl_buf = clCreateFromGLBuffer(cl_ctx, gl_buf)