// 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.

// https://www.khronos.org/registry/webgl/extensions/EXT_disjoint_timer_query/

typedef unsigned long long GLuint64EXT;

[
    DependentLifetime,
    DoNotCheckConstants,
    NoInterfaceObject
] 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(WebGLTimerQueryEXT? query);
    boolean isQueryEXT(WebGLTimerQueryEXT? query);
    void beginQueryEXT(GLenum target, WebGLTimerQueryEXT query);
    void endQueryEXT(GLenum target);
    void queryCounterEXT(WebGLTimerQueryEXT query, GLenum target);
    [CallWith=ScriptState] any getQueryEXT(GLenum target, GLenum pname);
    [CallWith=ScriptState] any getQueryObjectEXT(WebGLTimerQueryEXT query, GLenum pname);
};
