From f89e4f89a1afe30e6e34c16ca062115b3e7e61a3 Mon Sep 17 00:00:00 2001 From: foreman Date: Fri, 22 Jun 2018 17:50:28 -0400 Subject: [PATCH] P4 to Git Change 1571960 by skeely@skeely_LC_linux on 2018/06/22 17:44:33 SWDEV-155716 - Fetch backing buffer of texture buffers for use with GL buffer APIs. Don't assume that texture buffer names will be the same as the backing store's buffer name. It is illegal (but unchecked) in GL to use a texture object name in a buffer object API. Affected files ... ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_gl.cpp#60 edit --- opencl/api/opencl/amdocl/cl_gl.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/opencl/api/opencl/amdocl/cl_gl.cpp b/opencl/api/opencl/amdocl/cl_gl.cpp index a3b6318b69..e34c9e09a3 100644 --- a/opencl/api/opencl/amdocl/cl_gl.cpp +++ b/opencl/api/opencl/amdocl/cl_gl.cpp @@ -1696,7 +1696,16 @@ cl_mem clCreateFromGLTextureAMD(Context& amdContext, cl_mem_flags clFlags, GLenu GLint size; // In case target is GL_TEXTURE_BUFFER - amdContext.glenv()->glBindBuffer_(glTarget, texture); + GLint backingBuffer; + clearGLErrors(amdContext); + amdContext.glenv()->glGetTexLevelParameteriv_( + glTarget, 0, GL_TEXTURE_BUFFER_DATA_STORE_BINDING, &backingBuffer); + if (GL_NO_ERROR != (glErr = amdContext.glenv()->glGetError_())) { + *not_null(errcode_ret) = CL_INVALID_IMAGE_FORMAT_DESCRIPTOR; + LogWarning("Cannot get backing buffer for GL \"texture buffer\" object"); + return static_cast(0); + } + amdContext.glenv()->glBindBuffer_(glTarget, backingBuffer); // Get GL texture format and check if it's compatible with CL format clearGLErrors(amdContext);