116f03928743b01638419874e2b6300b52da6eb4cJesse Hall/* void glDrawArraysIndirect ( GLenum mode, const void *indirect ) */
216f03928743b01638419874e2b6300b52da6eb4cJesse Hallstatic void android_glDrawArraysIndirect(JNIEnv *_env, jobject, int mode, jlong indirect) {
316f03928743b01638419874e2b6300b52da6eb4cJesse Hall    // In OpenGL ES, 'indirect' is a byte offset into a buffer, not a raw pointer.
416f03928743b01638419874e2b6300b52da6eb4cJesse Hall    // GL checks for too-large values. Here we only need to check for successful signed 64-bit
516f03928743b01638419874e2b6300b52da6eb4cJesse Hall    // to unsigned 32-bit conversion.
616f03928743b01638419874e2b6300b52da6eb4cJesse Hall    if (sizeof(void*) != sizeof(jlong) && indirect > UINTPTR_MAX) {
716f03928743b01638419874e2b6300b52da6eb4cJesse Hall        jniThrowException(_env, "java/lang/IllegalArgumentException", "indirect offset too large");
816f03928743b01638419874e2b6300b52da6eb4cJesse Hall        return;
916f03928743b01638419874e2b6300b52da6eb4cJesse Hall    }
1016f03928743b01638419874e2b6300b52da6eb4cJesse Hall    glDrawArraysIndirect(mode, (const void*)indirect);
1116f03928743b01638419874e2b6300b52da6eb4cJesse Hall}
1216f03928743b01638419874e2b6300b52da6eb4cJesse Hall
13