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