MCPcopy Create free account
hub / github.com/KhronosGroup/OpenCL-CTS / test_buffer_kernel

Function test_buffer_kernel

test_conformance/gles/test_buffers.cpp:128–303  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126}
127
128int test_buffer_kernel(cl_context context, cl_command_queue queue, ExplicitType vecType, size_t vecSize, int numElements, int validate_only, MTdata d)
129{
130 clProgramWrapper program;
131 clKernelWrapper kernel;
132 clMemWrapper streams[ 3 ];
133 size_t dataSize = numElements * 16 * sizeof(cl_long);
134#if !(defined(_WIN32) && defined(_MSC_VER))
135 cl_long inData[numElements * 16], outDataCL[numElements * 16], outDataGL[ numElements * 16 ];
136#else
137 cl_long* inData = (cl_long*)_malloca(dataSize);
138 cl_long* outDataCL = (cl_long*)_malloca(dataSize);
139 cl_long* outDataGL = (cl_long*)_malloca(dataSize);
140#endif
141 glBufferWrapper inGLBuffer, outGLBuffer;
142 int i;
143 size_t bufferSize;
144
145 int error;
146 size_t threads[1], localThreads[1];
147 char kernelSource[10240];
148 char *programPtr;
149 char sizeName[4];
150
151 /* Create the source */
152 if( vecSize == 1 )
153 sizeName[ 0 ] = 0;
154 else
155 sprintf( sizeName, "%d", (int)vecSize );
156
157 sprintf( kernelSource, bufferKernelPattern, get_explicit_type_name( vecType ), sizeName,
158 get_explicit_type_name( vecType ), sizeName,
159 get_explicit_type_name( vecType ), sizeName,
160 get_explicit_type_name( vecType ), sizeName,
161 get_explicit_type_name( vecType ), sizeName );
162
163 /* Create kernels */
164 programPtr = kernelSource;
165 if( create_single_kernel_helper( context, &program, &kernel, 1, (const char **)&programPtr, "sample_test" ) )
166 {
167 return -1;
168 }
169
170 bufferSize = numElements * vecSize * get_explicit_type_size( vecType );
171
172 /* Generate some almost-random input data */
173 gen_input_data( vecType, vecSize * numElements, d, inData );
174 memset( outDataCL, 0, dataSize );
175 memset( outDataGL, 0, dataSize );
176
177 /* Generate some GL buffers to go against */
178 glGenBuffers( 1, &inGLBuffer );
179 glGenBuffers( 1, &outGLBuffer );
180
181 glBindBuffer( GL_ARRAY_BUFFER, inGLBuffer );
182 glBufferData( GL_ARRAY_BUFFER, bufferSize, inData, GL_STATIC_DRAW );
183
184 // Note: we need to bind the output buffer, even though we don't care about its values yet,
185 // because CL needs it to get the buffer size

Callers 2

test_buffersFunction · 0.70
test_buffers_getinfoFunction · 0.70

Calls 9

get_explicit_type_nameFunction · 0.85
get_explicit_type_sizeFunction · 0.85
CheckGLObjectInfoFunction · 0.85
GetDataVectorStringFunction · 0.85
gen_input_dataFunction · 0.70
get_incremented_valueFunction · 0.70
resetMethod · 0.45

Tested by

no test coverage detected