// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

typedef unsigned long long GLuint64EXT;

[
    DoNotCheckConstants,
    NoInterfaceObject,
    GarbageCollected,
    SetWrapperReferenceFrom=canvas,
] interface EXTDisjointTimerQuery {
    const GLenum QUERY_COUNTER_BITS_EXT      = 0x8864;
    const GLenum CURRENT_QUERY_EXT           = 0x8865;
    const GLenum QUERY_RESULT_EXT            = 0x8866;
    const GLenum QUERY_RESULT_AVAILABLE_EXT  = 0x8867;
    const GLenum TIME_ELAPSED_EXT            = 0x88BF;
    const GLenum TIMESTAMP_EXT               = 0x8E28;
    const GLenum GPU_DISJOINT_EXT            = 0x8FBB;

    WebGLTimerQueryEXT createQueryEXT();
    void deleteQueryEXT([Default=Undefined] WebGLTimerQueryEXT? query);
    boolean isQueryEXT([Default=Undefined] WebGLTimerQueryEXT? query);
    void beginQueryEXT(GLenum target, [Default=Undefined] WebGLTimerQueryEXT? query);
    void endQueryEXT(GLenum target);
    void queryCounterEXT([Default=Undefined] WebGLTimerQueryEXT? query, GLenum target);
    [CallWith=ScriptState] any getQueryEXT(GLenum target, GLenum pname);
    [CallWith=ScriptState] any getQueryObjectEXT([Default=Undefined] WebGLTimerQueryEXT? query, GLenum pname);
};
