1/* 2 * Mesa 3-D graphics library 3 * 4 * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation 9 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 * and/or sell copies of the Software, and to permit persons to whom the 11 * Software is furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included 14 * in all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 * OTHER DEALINGS IN THE SOFTWARE. 23 */ 24 25 26#ifndef FBOBJECT_H 27#define FBOBJECT_H 28 29#include "glheader.h" 30#include <stdbool.h> 31 32struct gl_context; 33struct gl_texture_object; 34 35 36/** 37 * Is the given FBO a user-created FBO? 38 */ 39static inline GLboolean 40_mesa_is_user_fbo(const struct gl_framebuffer *fb) 41{ 42 return fb->Name != 0; 43} 44 45 46/** 47 * Is the given FBO a window system FBO (like an X window)? 48 */ 49static inline GLboolean 50_mesa_is_winsys_fbo(const struct gl_framebuffer *fb) 51{ 52 return fb->Name == 0; 53} 54 55 56 57extern struct gl_framebuffer * 58_mesa_get_incomplete_framebuffer(void); 59 60extern struct gl_renderbuffer * 61_mesa_lookup_renderbuffer(struct gl_context *ctx, GLuint id); 62 63extern struct gl_renderbuffer * 64_mesa_lookup_renderbuffer_err(struct gl_context *ctx, GLuint id, 65 const char *func); 66 67extern struct gl_framebuffer * 68_mesa_lookup_framebuffer(struct gl_context *ctx, GLuint id); 69 70extern struct gl_framebuffer * 71_mesa_lookup_framebuffer_err(struct gl_context *ctx, GLuint id, 72 const char *func); 73 74struct gl_framebuffer * 75_mesa_lookup_framebuffer_dsa(struct gl_context *ctx, GLuint id, 76 const char* func); 77 78 79void 80_mesa_update_texture_renderbuffer(struct gl_context *ctx, 81 struct gl_framebuffer *fb, 82 struct gl_renderbuffer_attachment *att); 83 84extern void 85_mesa_FramebufferRenderbuffer_sw(struct gl_context *ctx, 86 struct gl_framebuffer *fb, 87 GLenum attachment, 88 struct gl_renderbuffer *rb); 89 90extern void 91_mesa_framebuffer_renderbuffer(struct gl_context *ctx, 92 struct gl_framebuffer *fb, 93 GLenum attachment, 94 struct gl_renderbuffer *rb); 95 96extern void 97_mesa_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, 98 GLenum internalFormat, GLsizei width, 99 GLsizei height, GLsizei samples, 100 GLsizei storageSamples); 101 102extern void 103_mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb); 104 105extern GLboolean 106_mesa_has_depthstencil_combined(const struct gl_framebuffer *fb); 107 108extern void 109_mesa_test_framebuffer_completeness(struct gl_context *ctx, 110 struct gl_framebuffer *fb); 111 112extern GLboolean 113_mesa_is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat); 114 115extern GLenum 116_mesa_base_fbo_format(const struct gl_context *ctx, GLenum internalFormat); 117 118extern bool 119_mesa_detach_renderbuffer(struct gl_context *ctx, 120 struct gl_framebuffer *fb, 121 const void *att); 122 123extern struct gl_renderbuffer_attachment * 124_mesa_get_and_validate_attachment(struct gl_context *ctx, 125 struct gl_framebuffer *fb, 126 GLenum attachment, const char *caller); 127 128extern void 129_mesa_framebuffer_texture(struct gl_context *ctx, struct gl_framebuffer *fb, 130 GLenum attachment, 131 struct gl_renderbuffer_attachment *att, 132 struct gl_texture_object *texObj, GLenum textarget, 133 GLint level, GLsizei samples, 134 GLuint layer, GLboolean layered); 135 136extern GLenum 137_mesa_check_framebuffer_status(struct gl_context *ctx, 138 struct gl_framebuffer *fb); 139 140extern void 141_mesa_bind_framebuffers(struct gl_context *ctx, 142 struct gl_framebuffer *newDrawFb, 143 struct gl_framebuffer *newReadFb); 144 145extern GLboolean GLAPIENTRY 146_mesa_IsRenderbuffer(GLuint renderbuffer); 147 148extern void GLAPIENTRY 149_mesa_BindRenderbuffer(GLenum target, GLuint renderbuffer); 150 151extern void GLAPIENTRY 152_mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer); 153 154extern void GLAPIENTRY 155_mesa_DeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers); 156 157void GLAPIENTRY 158_mesa_GenRenderbuffers_no_error(GLsizei n, GLuint *renderbuffers); 159 160extern void GLAPIENTRY 161_mesa_GenRenderbuffers(GLsizei n, GLuint *renderbuffers); 162 163void GLAPIENTRY 164_mesa_CreateRenderbuffers_no_error(GLsizei n, GLuint *renderbuffers); 165 166extern void GLAPIENTRY 167_mesa_CreateRenderbuffers(GLsizei n, GLuint *renderbuffers); 168 169extern void GLAPIENTRY 170_mesa_RenderbufferStorage(GLenum target, GLenum internalformat, 171 GLsizei width, GLsizei height); 172 173extern void GLAPIENTRY 174_mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples, 175 GLenum internalformat, 176 GLsizei width, GLsizei height); 177 178extern void GLAPIENTRY 179_mesa_RenderbufferStorageMultisampleAdvancedAMD( 180 GLenum target, GLsizei samples, GLsizei storageSamples, 181 GLenum internalFormat, GLsizei width, GLsizei height); 182 183extern void GLAPIENTRY 184_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, 185 GLsizei width, GLsizei height); 186 187extern void GLAPIENTRY 188_mesa_NamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, 189 GLsizei width, GLsizei height); 190extern void GLAPIENTRY 191_mesa_NamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, 192 GLsizei width, GLsizei height); 193 194extern void GLAPIENTRY 195_mesa_NamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, 196 GLenum internalformat, 197 GLsizei width, GLsizei height); 198 199extern void GLAPIENTRY 200_mesa_NamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, 201 GLenum internalformat, 202 GLsizei width, GLsizei height); 203 204extern void GLAPIENTRY 205_mesa_NamedRenderbufferStorageMultisampleAdvancedAMD( 206 GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, 207 GLenum internalformat, GLsizei width, GLsizei height); 208 209extern void GLAPIENTRY 210_mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); 211 212extern void GLAPIENTRY 213_mesa_GetRenderbufferParameteriv(GLenum target, GLenum pname, 214 GLint *params); 215 216void GLAPIENTRY 217_mesa_GetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, 218 GLint *params); 219 220extern GLboolean GLAPIENTRY 221_mesa_IsFramebuffer(GLuint framebuffer); 222 223extern void GLAPIENTRY 224_mesa_BindFramebuffer(GLenum target, GLuint framebuffer); 225 226extern void GLAPIENTRY 227_mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer); 228 229extern void GLAPIENTRY 230_mesa_DeleteFramebuffers(GLsizei n, const GLuint *framebuffers); 231 232extern void GLAPIENTRY 233_mesa_GenFramebuffers(GLsizei n, GLuint *framebuffers); 234 235extern void GLAPIENTRY 236_mesa_CreateFramebuffers(GLsizei n, GLuint *framebuffers); 237 238GLenum GLAPIENTRY 239_mesa_CheckFramebufferStatus_no_error(GLenum target); 240 241extern GLenum GLAPIENTRY 242_mesa_CheckFramebufferStatus(GLenum target); 243 244extern GLenum GLAPIENTRY 245_mesa_CheckNamedFramebufferStatus(GLuint framebuffer, GLenum target); 246 247extern GLenum GLAPIENTRY 248_mesa_CheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target); 249 250extern void GLAPIENTRY 251_mesa_FramebufferTexture1D_no_error(GLenum target, GLenum attachment, 252 GLenum textarget, GLuint texture, 253 GLint level); 254extern void GLAPIENTRY 255_mesa_FramebufferTexture1D(GLenum target, GLenum attachment, 256 GLenum textarget, GLuint texture, GLint level); 257 258extern void GLAPIENTRY 259_mesa_FramebufferTexture2D_no_error(GLenum target, GLenum attachment, 260 GLenum textarget, GLuint texture, 261 GLint level); 262extern void GLAPIENTRY 263_mesa_FramebufferTexture2D(GLenum target, GLenum attachment, 264 GLenum textarget, GLuint texture, GLint level); 265 266void GLAPIENTRY 267_mesa_FramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, 268 GLenum textarget, GLuint texture, 269 GLint level, GLsizei samples); 270 271extern void GLAPIENTRY 272_mesa_FramebufferTexture3D_no_error(GLenum target, GLenum attachment, 273 GLenum textarget, GLuint texture, 274 GLint level, GLint layer); 275extern void GLAPIENTRY 276_mesa_FramebufferTexture3D(GLenum target, GLenum attachment, 277 GLenum textarget, GLuint texture, 278 GLint level, GLint layer); 279 280extern void GLAPIENTRY 281_mesa_FramebufferTextureLayer_no_error(GLenum target, GLenum attachment, 282 GLuint texture, GLint level, 283 GLint layer); 284extern void GLAPIENTRY 285_mesa_FramebufferTextureLayer(GLenum target, GLenum attachment, 286 GLuint texture, GLint level, GLint layer); 287 288extern void GLAPIENTRY 289_mesa_NamedFramebufferTextureLayer_no_error(GLuint framebuffer, 290 GLenum attachment, 291 GLuint texture, GLint level, 292 GLint layer); 293extern void GLAPIENTRY 294_mesa_NamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, 295 GLuint texture, GLint level, GLint layer); 296 297extern void GLAPIENTRY 298_mesa_FramebufferTexture_no_error(GLenum target, GLenum attachment, 299 GLuint texture, GLint level); 300extern void GLAPIENTRY 301_mesa_FramebufferTexture(GLenum target, GLenum attachment, 302 GLuint texture, GLint level); 303 304extern void GLAPIENTRY 305_mesa_NamedFramebufferTexture_no_error(GLuint framebuffer, GLenum attachment, 306 GLuint texture, GLint level); 307extern void GLAPIENTRY 308_mesa_NamedFramebufferTexture(GLuint framebuffer, GLenum attachment, 309 GLuint texture, GLint level); 310 311extern void GLAPIENTRY 312_mesa_NamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, 313 GLenum renderbuffertarget, 314 GLuint renderbuffer); 315 316extern void GLAPIENTRY 317_mesa_NamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum attachment, 318 GLenum textarget, GLuint texture, GLint level); 319 320extern void GLAPIENTRY 321_mesa_NamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum attachment, 322 GLenum textarget, GLuint texture, GLint level); 323 324extern void GLAPIENTRY 325_mesa_NamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, 326 GLenum textarget, GLuint texture, 327 GLint level, GLint zoffset); 328 329void GLAPIENTRY 330_mesa_FramebufferRenderbuffer_no_error(GLenum target, GLenum attachment, 331 GLenum renderbuffertarget, 332 GLuint renderbuffer); 333 334extern void GLAPIENTRY 335_mesa_FramebufferRenderbuffer(GLenum target, GLenum attachment, 336 GLenum renderbuffertarget, 337 GLuint renderbuffer); 338 339void GLAPIENTRY 340_mesa_NamedFramebufferRenderbuffer_no_error(GLuint framebuffer, 341 GLenum attachment, 342 GLenum renderbuffertarget, 343 GLuint renderbuffer); 344 345extern void GLAPIENTRY 346_mesa_NamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment, 347 GLenum renderbuffertarget, 348 GLuint renderbuffer); 349 350extern void GLAPIENTRY 351_mesa_GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, 352 GLenum pname, GLint *params); 353 354extern void GLAPIENTRY 355_mesa_GetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, 356 GLenum attachment, 357 GLenum pname, GLint *params); 358 359extern void GLAPIENTRY 360_mesa_GetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, 361 GLenum attachment, 362 GLenum pname, GLint *params); 363 364extern void GLAPIENTRY 365_mesa_NamedFramebufferParameteri(GLuint framebuffer, GLenum pname, 366 GLint param); 367 368extern void GLAPIENTRY 369_mesa_NamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, 370 GLint param); 371 372extern void GLAPIENTRY 373_mesa_GetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, 374 GLint *params); 375 376extern void GLAPIENTRY 377_mesa_GetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, 378 GLint *param); 379 380extern void GLAPIENTRY 381_mesa_GetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, 382 GLint *param); 383 384extern void GLAPIENTRY 385_mesa_GetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, 386 GLint *param); 387 388void GLAPIENTRY 389_mesa_InvalidateSubFramebuffer_no_error(GLenum target, GLsizei numAttachments, 390 const GLenum *attachments, GLint x, 391 GLint y, GLsizei width, GLsizei height); 392 393extern void GLAPIENTRY 394_mesa_InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, 395 const GLenum *attachments, GLint x, GLint y, 396 GLsizei width, GLsizei height); 397 398extern void GLAPIENTRY 399_mesa_InvalidateNamedFramebufferSubData(GLuint framebuffer, 400 GLsizei numAttachments, 401 const GLenum *attachments, 402 GLint x, GLint y, 403 GLsizei width, GLsizei height); 404void GLAPIENTRY 405_mesa_InvalidateFramebuffer_no_error(GLenum target, GLsizei numAttachments, 406 const GLenum *attachments); 407 408extern void GLAPIENTRY 409_mesa_InvalidateFramebuffer(GLenum target, GLsizei numAttachments, 410 const GLenum *attachments); 411 412extern void GLAPIENTRY 413_mesa_InvalidateNamedFramebufferData(GLuint framebuffer, 414 GLsizei numAttachments, 415 const GLenum *attachments); 416 417extern void GLAPIENTRY 418_mesa_DiscardFramebufferEXT(GLenum target, GLsizei numAttachments, 419 const GLenum *attachments); 420 421extern void GLAPIENTRY 422_mesa_FramebufferParameteri(GLenum target, GLenum pname, GLint param); 423 424extern void GLAPIENTRY 425_mesa_FramebufferParameteriMESA(GLenum target, GLenum pname, GLint param); 426 427extern void GLAPIENTRY 428_mesa_GetFramebufferParameteriv(GLenum target, GLenum pname, GLint *params); 429 430extern void GLAPIENTRY 431_mesa_GetFramebufferParameterivMESA(GLenum target, GLenum pname, GLint *params); 432 433extern void GLAPIENTRY 434_mesa_FramebufferSampleLocationsfvARB(GLenum target, GLuint start, 435 GLsizei count, const GLfloat *v); 436 437extern void GLAPIENTRY 438_mesa_NamedFramebufferSampleLocationsfvARB(GLuint framebuffer, GLuint start, 439 GLsizei count, const GLfloat *v); 440 441extern void GLAPIENTRY 442_mesa_FramebufferSampleLocationsfvARB_no_error(GLenum target, GLuint start, 443 GLsizei count, const GLfloat *v); 444 445extern void GLAPIENTRY 446_mesa_NamedFramebufferSampleLocationsfvARB_no_error(GLuint framebuffer, 447 GLuint start, GLsizei count, 448 const GLfloat *v); 449 450extern void GLAPIENTRY 451_mesa_EvaluateDepthValuesARB(void); 452 453#endif /* FBOBJECT_H */ 454