void piglit_init(int argc, char **argv) { bool pass = true; GLint64 data = -2; int i = 0; int stuff[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int size = sizeof(stuff); int offset = 1; int range = 5; GLuint buff = 0; glGenBuffers(1, &buff); for (i = 0; i < ARRAY_SIZE(buffers); i++) { glBindBuffer(buffers[i], buff); glBufferData(buffers[i], size, stuff, GL_STATIC_READ); glMapBufferRange(buffers[i], offset, range, GL_MAP_READ_BIT); glGetBufferParameteri64v(buffers[i], GL_BUFFER_SIZE, &data); if(data != size) { printf("GL_BUFFER_SIZE for %s expected %d, but %d " "was returned.\n", piglit_get_gl_enum_name(buffers[i]), size, (int)data); pass = false; } pass = piglit_check_gl_error(GL_NO_ERROR) && pass; glGetBufferParameteri64v(buffers[i], GL_BUFFER_MAP_OFFSET, &data); if(data != offset) { printf("GL_BUFFER_MAP_OFFSET for %s expected %d, but " "%d was returned.\n", piglit_get_gl_enum_name(buffers[i]), offset, (int)data); pass = false; } pass = piglit_check_gl_error(GL_NO_ERROR) && pass; glGetBufferParameteri64v(buffers[i], GL_BUFFER_MAP_LENGTH, &data); if(data != range) { printf("GL_BUFFER_MAP_LENGTH for %s expected %d, but " "%d was returned.\n", piglit_get_gl_enum_name(buffers[i]), range, (int)data); pass = false; } glUnmapBuffer(buffers[i]); pass = piglit_check_gl_error(GL_NO_ERROR) && pass; } pass = piglit_check_gl_error(GL_NO_ERROR) && pass; piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); }
EXTERN_C_ENTER JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL32C_nglGetBufferParameteri64v__IIJ(JNIEnv *__env, jclass clazz, jint target, jint pname, jlong paramsAddress) { glGetBufferParameteri64vPROC glGetBufferParameteri64v = (glGetBufferParameteri64vPROC)tlsGetFunction(647); intptr_t params = (intptr_t)paramsAddress; UNUSED_PARAM(clazz) glGetBufferParameteri64v(target, pname, params); }
/*------------------------------------- * Query a buffer's size on the GPU. -------------------------------------*/ GLint64 draw::get_buffer_size(const buffer_use_t bufferType) { GLint64 size = 0; glGetBufferParameteri64v(bufferType, GL_BUFFER_SIZE, &size); return size; }
/*------------------------------------- * Query the offset from the start of a mapped buffer. -------------------------------------*/ GLint64 draw::get_buffer_map_offset(const buffer_use_t bufferType) { GLint64 offset = 0; glGetBufferParameteri64v(bufferType, GL_BUFFER_MAP_OFFSET, &offset); return offset; }
/*------------------------------------- * Get the amount of bytes that have been mapped from the GPU to CPU. -------------------------------------*/ GLint64 draw::get_buffer_map_length(const buffer_use_t bufferType) { GLint64 mapLen = 0; glGetBufferParameteri64v(bufferType, GL_BUFFER_MAP_LENGTH, &mapLen); return mapLen; }