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

// This file is read by build_raster_cmd_buffer.py to generate commands.

GL_APICALL void         GL_APIENTRY glFinish (void);
GL_APICALL void         GL_APIENTRY glFlush (void);
GL_APICALL GLenum       GL_APIENTRY glGetError (void);
GL_APICALL void         GL_APIENTRY glOrderingBarrierCHROMIUM (void);
GL_APICALL void         GL_APIENTRY glGenQueriesEXT (GLsizeiNotNegative n, GLuint* queries);
GL_APICALL void         GL_APIENTRY glDeleteQueriesEXT (GLsizeiNotNegative n, const GLuint* queries);
GL_APICALL void         GL_APIENTRY glBeginQueryEXT (GLenumQueryTarget target, GLidQuery id);
GL_APICALL void         GL_APIENTRY glEndQueryEXT (GLenumQueryTarget target);
GL_APICALL void         GL_APIENTRY glGetQueryObjectuivEXT (GLidQuery id, GLenumQueryObjectParameter pname, GLuint* params);

// Non-GL commands.
GL_APICALL void         GL_APIENTRY glLoseContextCHROMIUM (GLenumResetStatus current, GLenumResetStatus other);

// Extension KHR_robustness
GL_APICALL GLenum	GL_APIENTRY glGetGraphicsResetStatusKHR (void);

// Extension CHROMIUM_raster_transport
GL_APICALL void         GL_APIENTRY glBeginRasterCHROMIUM (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLboolean needs_clear, GLuint msaa_sample_count, gpu::raster::MsaaMode msaa_mode, GLboolean can_use_lcd_text, GLboolean visible, GLfloat hdr_headroom, const GLbyte* mailbox);
GL_APICALL void         GL_APIENTRY glRasterCHROMIUM (GLuint raster_shm_id, GLuint raster_shm_offset, GLuint raster_shm_size, GLuint font_shm_id, GLuint font_shm_offset, GLuint font_shm_size);
GL_APICALL void         GL_APIENTRY glEndRasterCHROMIUM (void);
GL_APICALL void         GL_APIENTRY glFlushTileRasterGraphiteCommandsCHROMIUM (void);
GL_APICALL void         GL_APIENTRY glCreateTransferCacheEntryINTERNAL (GLuint entry_type, GLuint entry_id, GLuint handle_shm_id, GLuint handle_shm_offset, GLuint data_shm_id, GLuint data_shm_offset, GLuint data_size);
GL_APICALL void         GL_APIENTRY glDeleteTransferCacheEntryINTERNAL (GLuint entry_type, GLuint entry_id);
GL_APICALL void         GL_APIENTRY glUnlockTransferCacheEntryINTERNAL (GLuint entry_type, GLuint entry_id);
GL_APICALL void         GL_APIENTRY glDeletePaintCachePathsINTERNAL (GLsizeiNotNegative n, const GLuint* ids);
GL_APICALL void         GL_APIENTRY glDeletePaintCacheEffectsINTERNAL (GLsizeiNotNegative n, const GLuint* ids);
GL_APICALL void         GL_APIENTRY glClearPaintCacheINTERNAL (void);

// TOOD(backer): Remove GL encoding. These are not GL functions.
// |mailboxes| argument is the concatenation of the source mailbox and the destination mailbox (32 bytes total)
GL_APICALL void         GL_APIENTRY glCopySharedImageINTERNAL (GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei src_width, GLsizei src_height, GLsizei dest_width, GLsizei dest_height, const GLbyte* mailboxes);
GL_APICALL void         GL_APIENTRY glWritePixelsINTERNAL (GLint x_offset, GLint y_offset, GLuint src_width, GLuint src_height, GLuint src_row_bytes, GLuint src_sk_color_type, GLuint src_sk_alpha_type, GLint shm_id, GLuint shm_offset, GLuint pixels_offset, const GLbyte* mailbox);
GL_APICALL void         GL_APIENTRY glWritePixelsYUVINTERNAL (GLuint src_width, GLuint src_height, GLuint src_row_bytes_plane1, GLuint src_row_bytes_plane2, GLuint src_row_bytes_plane3, GLuint src_row_bytes_plane4, GLuint src_yuv_plane_config, GLuint src_yuv_subsampling, GLuint src_yuv_datatype, GLint shm_id, GLuint shm_offset, GLuint plane2_offset, GLuint plane3_offset, GLuint plane4_offset, const GLbyte* mailbox);
GL_APICALL void         GL_APIENTRY glReadbackARGBImagePixelsINTERNAL (GLint src_x, GLint src_y, GLint plane_index, GLuint dst_width, GLuint dst_height, GLuint row_bytes, GLuint dst_sk_color_type, GLuint dst_sk_alpha_type, GLint shm_id, GLuint shm_offset, GLuint color_space_offset, GLuint pixels_offset, const GLbyte* mailbox);
GL_APICALL void         GL_APIENTRY glReadbackYUVImagePixelsINTERNAL (GLuint src_x, GLuint src_y, GLuint src_width, GLuint src_height, GLuint dst_width, GLuint dst_height, GLint shm_id, GLuint shm_offset, GLuint y_offset, GLuint y_stride, GLuint u_offset, GLuint u_stride, GLuint v_offset, GLuint v_stride, const GLbyte* mailbox);
GL_APICALL void         GL_APIENTRY glTraceBeginCHROMIUM (const char* category_name, const char* trace_name);
GL_APICALL void         GL_APIENTRY glTraceEndCHROMIUM (void);
GL_APICALL void         GL_APIENTRY glSetActiveURLCHROMIUM (const char* url);
